-
Notifications
You must be signed in to change notification settings - Fork 186
/
Copy pathmerge_test.dart
68 lines (55 loc) · 1.87 KB
/
merge_test.dart
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
// Copyright (c) 2018, the Dart project authors. Please see the AUTHORS file
// for details. 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:fixnum/fixnum.dart';
import 'package:test/test.dart' show expect, test;
import '../out/protos/foo.pb.dart' as pb;
void main() {
test('merges child message', () {
final top = pb.Outer()
..id = Int64(1)
..value = 'sss'
..strings.addAll(['s1', 's2'])
..inner = (pb.Inner()
..id = Int64(2)
..value = 'sub'
..strings.addAll(['sub1', 'sub2']));
final update = pb.Outer()
..id = Int64(1)
..value = 'new'
..inner = (pb.Inner()..id = Int64(3));
top.mergeFromMessage(update);
final expected = pb.Outer()
..id = Int64(1)
..value = 'new'
..strings.addAll(['s1', 's2'])
// This is properly merged.
..inner = (pb.Inner()
..id = Int64(3)
..value = 'sub'
..strings.addAll(['sub1', 'sub2']));
expect(top, expected);
});
test('merges grandchild message', () {
final empty = pb.Outer();
final mergeMe1 = pb.Outer()
..inner = (pb.Inner()..inner = (pb.Inner()..id = Int64(1)));
final mergeMe2 = pb.Outer()
..inner = (pb.Inner()..inner = (pb.Inner()..value = 'new'));
empty.mergeFromMessage(mergeMe1);
empty.mergeFromMessage(mergeMe2);
final expected = pb.Outer()
..inner = (pb.Inner()
..inner = (pb.Inner()
..id = Int64(1)
..value = 'new'));
expect(empty, expected);
});
test('merges repeated element of child', () {
final empty = pb.Outer();
final mergeMe = pb.Outer()..inner = (pb.Inner()..strings.add('one'));
empty.mergeFromMessage(mergeMe);
final expected = pb.Outer()..inner = (pb.Inner()..strings.add('one'));
expect(empty, expected);
});
}