@@ -14,22 +14,21 @@ import 'package:test/test.dart';
14
14
import 'mock_util.dart' show T, mockEnumValues;
15
15
16
16
void main () {
17
- final example =
18
- T ()
19
- ..val = 123
20
- ..str = 'hello'
21
- ..int32s.addAll (< int > [1 , 2 , 3 ]);
17
+ test ('mergeFromProto3Json unknown enum fields with names' , () {
18
+ final example = T ();
22
19
23
- test ('testProto3JsonEnum' , () {
24
20
// No enum value specified.
25
21
expect (example.hasEnm, isFalse);
22
+
26
23
// Defaults to first when it doesn't exist.
27
24
expect (example.enm, equals (mockEnumValues.first));
28
25
expect ((example..mergeFromProto3Json ({'enm' : 'a' })).enm.name, equals ('a' ));
26
+
29
27
// Now it's explicitly set after merging.
30
28
expect (example.hasEnm, isTrue);
31
29
32
30
expect ((example..mergeFromProto3Json ({'enm' : 'b' })).enm.name, equals ('b' ));
31
+
33
32
// "c" is not a legal enum value.
34
33
expect (
35
34
() => example..mergeFromProto3Json ({'enm' : 'c' }),
@@ -42,21 +41,26 @@ void main() {
42
41
),
43
42
),
44
43
);
44
+
45
45
// `example` hasn't changed.
46
46
expect (example.hasEnm, isTrue);
47
47
expect (example.enm.name, equals ('b' ));
48
48
49
49
// "c" is not a legal enum value, but we are ignoring unknown fields, so
50
- // default behavior is to unset `enm`, returning the default value "a"
50
+ // `enm` value shouldn't change.
51
51
expect (
52
52
(example..mergeFromProto3Json ({'enm' : 'c' }, ignoreUnknownFields: true ))
53
53
.enm
54
54
.name,
55
- equals ('a ' ),
55
+ equals ('b ' ),
56
56
);
57
- expect (example.hasEnm, isFalse);
57
+ expect (example.hasEnm, isTrue);
58
+ });
59
+
60
+ test ('mergeFromProto3Json unknown enum fields with indices' , () {
61
+ // Similar to above, but with indices.
62
+ final example = T ();
58
63
59
- // Same for index values...
60
64
expect ((example..mergeFromProto3Json ({'enm' : 2 })).enm.name, 'b' );
61
65
expect (
62
66
() => example..mergeFromProto3Json ({'enm' : 3 }),
@@ -69,34 +73,35 @@ void main() {
69
73
),
70
74
),
71
75
);
76
+
72
77
// `example` hasn't changed.
73
78
expect (example.hasEnm, isTrue);
74
79
expect (example.enm.name, equals ('b' ));
75
80
76
- // "c" is not a legal enum value, but we are ignoring unknown fields, so
77
- // default behavior is to unset `enm`, returning the default value "a"
81
+ // "c" is not a legal enum value, but we are ignoring unknown fields, so the
82
+ // value shouldn't change.
78
83
expect (
79
84
(example..mergeFromProto3Json ({'enm' : 3 }, ignoreUnknownFields: true ))
80
85
.enm
81
86
.name,
82
- equals ('a ' ),
87
+ equals ('b ' ),
83
88
);
84
- expect (example.hasEnm, isFalse );
89
+ expect (example.hasEnm, isTrue );
85
90
});
86
91
87
92
test ('testWriteToJson' , () {
88
- final json = example .writeToJson ();
93
+ final json = makeTestJson () .writeToJson ();
89
94
checkJsonMap (jsonDecode (json));
90
95
});
91
96
92
97
test ('testWriteFrozenToJson' , () {
93
- final frozen = example .clone ()..freeze ();
98
+ final frozen = makeTestJson () .clone ()..freeze ();
94
99
final json = frozen.writeToJson ();
95
100
checkJsonMap (jsonDecode (json));
96
101
});
97
102
98
103
test ('writeToJsonMap' , () {
99
- final Map m = example .writeToJsonMap ();
104
+ final Map m = makeTestJson () .writeToJsonMap ();
100
105
checkJsonMap (m);
101
106
});
102
107
@@ -134,13 +139,19 @@ void main() {
134
139
});
135
140
136
141
test ('testJsonMapWithUnknown' , () {
137
- final m = example .writeToJsonMap ();
142
+ final m = makeTestJson () .writeToJsonMap ();
138
143
m['9999' ] = 'world' ;
139
144
final t = T ()..mergeFromJsonMap (m);
140
145
checkJsonMap (t.writeToJsonMap (), unknownFields: {'9999' : 'world' });
141
146
});
142
147
}
143
148
149
+ T makeTestJson () =>
150
+ T ()
151
+ ..val = 123
152
+ ..str = 'hello'
153
+ ..int32s.addAll (< int > [1 , 2 , 3 ]);
154
+
144
155
void checkJsonMap (Map m, {Map <String , dynamic >? unknownFields}) {
145
156
expect (m.length, 3 + (unknownFields? .length ?? 0 ));
146
157
expect (m['1' ], 123 );
0 commit comments