Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(490)

Unified Diff: test/event_test.dart

Issue 1282103003: fix inconsistent firing of events for extension fields (Closed) Base URL: git@github.com:dart-lang/dart-protobuf.git@fieldtype
Patch Set: tweak a comment Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: test/event_test.dart
diff --git a/test/event_test.dart b/test/event_test.dart
index dda4b4c53ab532a6de43a5f8ac00d952bb72f551..93c2de386a72607d816a8f2a8bc631610229ca63 100644
--- a/test/event_test.dart
+++ b/test/event_test.dart
@@ -7,7 +7,8 @@ library event_test;
import 'dart:typed_data' show Uint8List;
-import 'package:protobuf/protobuf.dart' show GeneratedMessage;
+import 'package:protobuf/protobuf.dart'
+ show GeneratedMessage, Extension, ExtensionRegistry, FieldType;
import 'package:protobuf/src/protobuf/mixins/event_mixin.dart'
show PbEventMixin, PbFieldChange;
import 'package:test/test.dart' show test, expect, predicate, same;
@@ -19,6 +20,8 @@ class Rec extends MockMessage with PbEventMixin {
Rec create() => new Rec();
}
+Extension comment = new Extension("Rec", "comment", 5, FieldType.OS);
+
main() {
test('Events are sent when setting and clearing a non-repeated field', () {
var log = makeLog();
@@ -43,9 +46,9 @@ main() {
r.deliverChanges();
checkLog(log, [[[1, 456, 42]]]);
- r.clearField(1);
+ r.clearField(1); // no change
r.deliverChanges();
- checkLog(log, []); // no change
+ checkLog(log, []);
});
test('Events are sent when creating and clearing a repeated field', () {
@@ -154,6 +157,57 @@ main() {
[[1, 42, 123], [2, '', "hello"], [3, "<msg>", "<msg>"], [4, [], [456]]]
]);
});
+
+ test('Events are not sent (yet) for extensions', () {
+ var log = makeLog();
+ var r = new Rec();
+ r.changes.listen((List<PbFieldChange> changes) {
+ log.add(changes);
+ });
+
+ r.setExtension(comment, "hello");
+ expect(r.getExtension(comment), "hello");
+ r.deliverChanges();
+ checkLog(log, []);
+
+ r.clearExtension(comment);
+ r.deliverChanges();
+ checkLog(log, []);
+
+ r.setExtension(comment, "hello");
+ expect(r.getExtension(comment), "hello");
+ r.clear();
+ r.deliverChanges();
+ checkLog(log, []);
+
+ r.setExtension(comment, "hello");
+ expect(r.getExtension(comment), "hello");
+ r.clearField(comment.tagNumber);
+ r.deliverChanges();
+ checkLog(log, []);
+
+ var registry = new ExtensionRegistry()..add(comment);
+ r.mergeFromJson('{"5": "hello"}', registry);
+ expect(r.getExtension(comment), "hello");
+ r.clear();
+ r.deliverChanges();
+ checkLog(log, []);
+
+ var src = new Rec()..setExtension(comment, "hello");
+ r.mergeFromMessage(src);
+ expect(r.getExtension(comment), "hello");
+ r.clear();
+ r.deliverChanges();
+ checkLog(log, []);
+
+ Uint8List bytes = src.writeToBuffer();
+ r.mergeFromBuffer(bytes, registry);
+ expect(r.getExtension(comment), "hello");
+ r.clear();
+ r.deliverChanges();
+ checkLog(log, []);
+ });
+
}
List<List<PbFieldChange>> makeLog() => <List<PbFieldChange>>[];
« lib/src/protobuf/generated_message.dart ('K') | « lib/src/protobuf/readonly_message.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698