Skip to content

Commit

Permalink
[pigeon] Fixed decoding code for null-safe classes.
Browse files Browse the repository at this point in the history
  • Loading branch information
gaaclarke committed Feb 22, 2021
1 parent f17b20a commit 97ab024
Show file tree
Hide file tree
Showing 8 changed files with 122 additions and 4 deletions.
8 changes: 4 additions & 4 deletions packages/pigeon/lib/dart_generator.dart
Original file line number Diff line number Diff line change
Expand Up @@ -178,11 +178,11 @@ void _writeFlutterApi(
String _addGenericTypes(String dataType, String nullTag) {
switch (dataType) {
case 'List':
return 'List<Object$nullTag>';
return 'List<Object$nullTag>$nullTag';
case 'Map':
return 'Map<Object$nullTag, Object$nullTag>';
return 'Map<Object$nullTag, Object$nullTag>$nullTag';
default:
return dataType;
return '$dataType$nullTag';
}
}

Expand Down Expand Up @@ -212,7 +212,7 @@ void generateDart(DartOptions opt, Root root, StringSink sink) {
indent.scoped('{', '}', () {
for (Field field in klass.fields) {
final String datatype =
'${_addGenericTypes(field.dataType, nullTag)}$nullTag';
'${_addGenericTypes(field.dataType, nullTag)}';
indent.writeln('$datatype ${field.name};');
}
if (klass.fields.isNotEmpty) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Miscellaneous
*.class
*.log
*.pyc
*.swp
.DS_Store
.atom/
.buildlog/
.history
.svn/

# IntelliJ related
*.iml
*.ipr
*.iws
.idea/

# The .vscode folder contains launch configuration and tasks you configure in
# VS Code which you may wish to be included in version control, so this line
# is commented out by default.
#.vscode/

# Flutter/Dart/Pub related
**/doc/api/
**/ios/Flutter/.last_build_id
.dart_tool/
.flutter-plugins
.flutter-plugins-dependencies
.packages
.pub-cache/
.pub/
/build/

# Web related
lib/generated_plugin_registrant.dart

# Symbolication related
app.*.symbols

# Obfuscation related
app.*.map.json

# Android Studio will place build artifacts here
/android/app/debug
/android/app/profile
/android/app/release
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
# This file tracks properties of this Flutter project.
# Used by Flutter tool to assess capabilities and perform upgrades etc.
#
# This file should be version controlled and should not be manually edited.

version:
revision: 6db3d61ed4a58ba89140d7fe1fd294b598cc29c5
channel: master

project_type: app
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# flutter_unit_tests

Unit test scaffold for null safe Flutter projects.
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
null_safe_pigeon.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
name: flutter_unit_tests
description: Unit test scaffold for null safe Flutter projects.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev
version: 1.0.0+1
environment:
sdk: ">=2.12.0 <3.0.0"

dependencies:
flutter:
sdk: flutter

dev_dependencies:
flutter_test:
sdk: flutter

flutter:
uses-material-design: true
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
// Copyright 2020 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import 'package:flutter_unit_tests/null_safe_pigeon.dart';
import 'package:flutter_test/flutter_test.dart';

void main() {
test('with values filled', () {
final SearchReply reply = SearchReply()
..result = 'foo'
..error = 'bar';
final Object encoded = reply.encode();
final SearchReply decoded = SearchReply.decode(encoded);
expect(reply.result, decoded.result);
expect(reply.error, decoded.error);
});

test('with null value', () {
final SearchReply reply = SearchReply()
..result = 'foo'
..error = null;
final Object encoded = reply.encode();
final SearchReply decoded = SearchReply.decode(encoded);
expect(reply.result, decoded.result);
expect(reply.error, decoded.error);
});
}
13 changes: 13 additions & 0 deletions packages/pigeon/run_tests.sh
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,19 @@ pub run test test/
###############################################################################
pub run pigeon 1> /dev/null

###############################################################################
# Run unit tests on generated Dart code.
###############################################################################
pushd $PWD
pub run pigeon \
--input pigeons/message.dart \
--dart_null_safety \
--dart_out platform_tests/flutter_null_safe_unit_tests/lib/null_safe_pigeon.dart
cd platform_tests/flutter_null_safe_unit_tests
flutter pub get
flutter test test/null_safe_test.dart
popd

###############################################################################
# Mock handler flutter tests.
###############################################################################
Expand Down

0 comments on commit 97ab024

Please sign in to comment.