OLD | NEW |
1 #region Copyright notice and license | 1 #region Copyright notice and license |
2 // Protocol Buffers - Google's data interchange format | 2 // Protocol Buffers - Google's data interchange format |
3 // Copyright 2015 Google Inc. All rights reserved. | 3 // Copyright 2015 Google Inc. All rights reserved. |
4 // https://developers.google.com/protocol-buffers/ | 4 // https://developers.google.com/protocol-buffers/ |
5 // | 5 // |
6 // Redistribution and use in source and binary forms, with or without | 6 // Redistribution and use in source and binary forms, with or without |
7 // modification, are permitted provided that the following conditions are | 7 // modification, are permitted provided that the following conditions are |
8 // met: | 8 // met: |
9 // | 9 // |
10 // * Redistributions of source code must retain the above copyright | 10 // * Redistributions of source code must retain the above copyright |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
68 public void Add_Sequence() | 68 public void Add_Sequence() |
69 { | 69 { |
70 var list = new RepeatedField<string>(); | 70 var list = new RepeatedField<string>(); |
71 list.Add(new[] { "foo", "bar" }); | 71 list.Add(new[] { "foo", "bar" }); |
72 Assert.AreEqual(2, list.Count); | 72 Assert.AreEqual(2, list.Count); |
73 Assert.AreEqual("foo", list[0]); | 73 Assert.AreEqual("foo", list[0]); |
74 Assert.AreEqual("bar", list[1]); | 74 Assert.AreEqual("bar", list[1]); |
75 } | 75 } |
76 | 76 |
77 [Test] | 77 [Test] |
78 public void AddRange_SlowPath() | 78 public void Add_RepeatedField() |
79 { | |
80 var list = new RepeatedField<string>(); | |
81 list.AddRange(new[] { "foo", "bar" }.Select(x => x)); | |
82 Assert.AreEqual(2, list.Count); | |
83 Assert.AreEqual("foo", list[0]); | |
84 Assert.AreEqual("bar", list[1]); | |
85 } | |
86 | |
87 [Test] | |
88 public void AddRange_SlowPath_NullsProhibited_ReferenceType() | |
89 { | |
90 var list = new RepeatedField<string>(); | |
91 // It's okay for this to throw ArgumentNullException if necessary. | |
92 // It's not ideal, but not awful. | |
93 Assert.Catch<ArgumentException>(() => list.AddRange(new[] { "foo", n
ull }.Select(x => x))); | |
94 } | |
95 | |
96 [Test] | |
97 public void AddRange_SlowPath_NullsProhibited_NullableValueType() | |
98 { | |
99 var list = new RepeatedField<int?>(); | |
100 // It's okay for this to throw ArgumentNullException if necessary. | |
101 // It's not ideal, but not awful. | |
102 Assert.Catch<ArgumentException>(() => list.AddRange(new[] { 20, (int
?)null }.Select(x => x))); | |
103 } | |
104 | |
105 [Test] | |
106 public void AddRange_Optimized_NonNullableValueType() | |
107 { | |
108 var list = new RepeatedField<int>(); | |
109 list.AddRange(new List<int> { 20, 30 }); | |
110 Assert.AreEqual(2, list.Count); | |
111 Assert.AreEqual(20, list[0]); | |
112 Assert.AreEqual(30, list[1]); | |
113 } | |
114 | |
115 [Test] | |
116 public void AddRange_Optimized_ReferenceType() | |
117 { | |
118 var list = new RepeatedField<string>(); | |
119 list.AddRange(new List<string> { "foo", "bar" }); | |
120 Assert.AreEqual(2, list.Count); | |
121 Assert.AreEqual("foo", list[0]); | |
122 Assert.AreEqual("bar", list[1]); | |
123 } | |
124 | |
125 [Test] | |
126 public void AddRange_Optimized_NullableValueType() | |
127 { | |
128 var list = new RepeatedField<int?>(); | |
129 list.AddRange(new List<int?> { 20, 30 }); | |
130 Assert.AreEqual(2, list.Count); | |
131 Assert.AreEqual((int?) 20, list[0]); | |
132 Assert.AreEqual((int?) 30, list[1]); | |
133 } | |
134 | |
135 [Test] | |
136 public void AddRange_Optimized_NullsProhibited_ReferenceType() | |
137 { | |
138 // We don't just trust that a collection with a nullable element typ
e doesn't contain nulls | |
139 var list = new RepeatedField<string>(); | |
140 // It's okay for this to throw ArgumentNullException if necessary. | |
141 // It's not ideal, but not awful. | |
142 Assert.Catch<ArgumentException>(() => list.AddRange(new List<string>
{ "foo", null })); | |
143 } | |
144 | |
145 [Test] | |
146 public void AddRange_Optimized_NullsProhibited_NullableValueType() | |
147 { | |
148 // We don't just trust that a collection with a nullable element typ
e doesn't contain nulls | |
149 var list = new RepeatedField<int?>(); | |
150 // It's okay for this to throw ArgumentNullException if necessary. | |
151 // It's not ideal, but not awful. | |
152 Assert.Catch<ArgumentException>(() => list.AddRange(new List<int?> {
20, null })); | |
153 } | |
154 | |
155 [Test] | |
156 public void AddRange_AlreadyNotEmpty() | |
157 { | |
158 var list = new RepeatedField<int> { 1, 2, 3 }; | |
159 list.AddRange(new List<int> { 4, 5, 6 }); | |
160 CollectionAssert.AreEqual(new[] { 1, 2, 3, 4, 5, 6 }, list); | |
161 } | |
162 | |
163 [Test] | |
164 public void AddRange_RepeatedField() | |
165 { | 79 { |
166 var list = new RepeatedField<string> { "original" }; | 80 var list = new RepeatedField<string> { "original" }; |
167 list.AddRange(new RepeatedField<string> { "foo", "bar" }); | 81 list.Add(new RepeatedField<string> { "foo", "bar" }); |
168 Assert.AreEqual(3, list.Count); | 82 Assert.AreEqual(3, list.Count); |
169 Assert.AreEqual("original", list[0]); | 83 Assert.AreEqual("original", list[0]); |
170 Assert.AreEqual("foo", list[1]); | 84 Assert.AreEqual("foo", list[1]); |
171 Assert.AreEqual("bar", list[2]); | 85 Assert.AreEqual("bar", list[2]); |
172 } | 86 } |
173 | 87 |
174 [Test] | 88 [Test] |
175 public void RemoveAt_Valid() | 89 public void RemoveAt_Valid() |
176 { | 90 { |
177 var list = new RepeatedField<string> { "first", "second", "third" }; | 91 var list = new RepeatedField<string> { "first", "second", "third" }; |
(...skipping 559 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
737 [Test] | 651 [Test] |
738 public void ToString_Struct() | 652 public void ToString_Struct() |
739 { | 653 { |
740 var message = new Struct { Fields = { { "foo", new Value { NumberVal
ue = 20 } } } }; | 654 var message = new Struct { Fields = { { "foo", new Value { NumberVal
ue = 20 } } } }; |
741 var list = new RepeatedField<Struct> { message }; | 655 var list = new RepeatedField<Struct> { message }; |
742 var text = list.ToString(); | 656 var text = list.ToString(); |
743 Assert.AreEqual(text, "[ { \"foo\": 20 } ]", message.ToString()); | 657 Assert.AreEqual(text, "[ { \"foo\": 20 } ]", message.ToString()); |
744 } | 658 } |
745 } | 659 } |
746 } | 660 } |
OLD | NEW |