blob: 3e4324ff259e3c01233c5f87e74187ff903b8104 [file] [log] [blame]
Jon Skeet60c059b2008-10-23 21:17:56 +01001// Protocol Buffers - Google's data interchange format
2// Copyright 2008 Google Inc. All rights reserved.
3// http://github.com/jskeet/dotnet-protobufs/
4// Original C++/Java/Python code:
Jon Skeet68036862008-10-22 13:30:34 +01005// http://code.google.com/p/protobuf/
6//
Jon Skeet60c059b2008-10-23 21:17:56 +01007// Redistribution and use in source and binary forms, with or without
8// modification, are permitted provided that the following conditions are
9// met:
Jon Skeet68036862008-10-22 13:30:34 +010010//
Jon Skeet60c059b2008-10-23 21:17:56 +010011// * Redistributions of source code must retain the above copyright
12// notice, this list of conditions and the following disclaimer.
13// * Redistributions in binary form must reproduce the above
14// copyright notice, this list of conditions and the following disclaimer
15// in the documentation and/or other materials provided with the
16// distribution.
17// * Neither the name of Google Inc. nor the names of its
18// contributors may be used to endorse or promote products derived from
19// this software without specific prior written permission.
Jon Skeet68036862008-10-22 13:30:34 +010020//
Jon Skeet60c059b2008-10-23 21:17:56 +010021// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
22// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
23// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
24// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
25// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
26// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
27// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
28// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
29// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
30// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
31// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Jon Skeet68036862008-10-22 13:30:34 +010032using System;
33using System.Collections.Generic;
34using Google.ProtocolBuffers.Descriptors;
35using Google.ProtocolBuffers.TestProtos;
36using NUnit.Framework;
Jon Skeet8729cf42009-06-05 22:49:05 +010037using Google.ProtocolBuffers.Collections;
Jon Skeet68036862008-10-22 13:30:34 +010038
39namespace Google.ProtocolBuffers {
40 [TestFixture]
41 public class GeneratedMessageTest {
42 ReflectionTester reflectionTester;
43 ReflectionTester extensionsReflectionTester;
44
45 [SetUp]
46 public void SetUp() {
47 reflectionTester = ReflectionTester.CreateTestAllTypesInstance();
48 extensionsReflectionTester = ReflectionTester.CreateTestAllExtensionsInstance();
49 }
50
51 [Test]
52 public void RepeatedAddPrimitiveBeforeBuild() {
53 TestAllTypes message = new TestAllTypes.Builder { RepeatedInt32List = { 1, 2, 3 } }.Build();
54 TestUtil.AssertEqual(new int[]{1, 2, 3}, message.RepeatedInt32List);
55 }
56
57 [Test]
58 public void AddPrimitiveFailsAfterBuild() {
59 TestAllTypes.Builder builder = new TestAllTypes.Builder();
60 IList<int> list = builder.RepeatedInt32List;
61 list.Add(1); // Fine
62 builder.Build();
63
64 try {
65 list.Add(2);
66 Assert.Fail("List should be frozen");
67 } catch (NotSupportedException) {
68 // Expected
69 }
70 }
71
72 [Test]
73 public void RepeatedAddMessageBeforeBuild() {
74 TestAllTypes message = new TestAllTypes.Builder {
75 RepeatedNestedMessageList = { new TestAllTypes.Types.NestedMessage.Builder { Bb = 10 }.Build() } }.Build();
76 Assert.AreEqual(1, message.RepeatedNestedMessageCount);
77 Assert.AreEqual(10, message.RepeatedNestedMessageList[0].Bb);
78 }
79
80 [Test]
81 public void AddMessageFailsAfterBuild() {
82 TestAllTypes.Builder builder = new TestAllTypes.Builder();
83 IList<TestAllTypes.Types.NestedMessage> list = builder.RepeatedNestedMessageList;
84 builder.Build();
85
86 try {
87 list.Add(new TestAllTypes.Types.NestedMessage.Builder { Bb = 10 }.Build());
88 Assert.Fail("List should be frozen");
89 } catch (NotSupportedException) {
90 // Expected
91 }
92 }
93
94 [Test]
Jon Skeetc298c892009-05-30 10:07:09 +010095 public void DoubleBuildError() {
96 TestAllTypes.Builder builder = new TestAllTypes.Builder();
97 builder.Build();
98 try {
99 builder.Build();
100 Assert.Fail("Should have thrown exception.");
Jon Skeetdf67f142009-06-05 19:29:36 +0100101 } catch (InvalidOperationException) {
Jon Skeetc298c892009-05-30 10:07:09 +0100102 // Success.
103 }
104 }
105
106 [Test]
Jon Skeet68036862008-10-22 13:30:34 +0100107 public void DefaultInstance() {
108 Assert.AreSame(TestAllTypes.DefaultInstance, TestAllTypes.DefaultInstance.DefaultInstanceForType);
109 Assert.AreSame(TestAllTypes.DefaultInstance, TestAllTypes.CreateBuilder().DefaultInstanceForType);
110 }
111
112 [Test]
113 public void Accessors() {
114 TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
115 TestUtil.SetAllFields(builder);
116 TestAllTypes message = builder.Build();
117 TestUtil.AssertAllFieldsSet(message);
118 }
Jon Skeet642a8142009-01-27 12:25:21 +0000119
120 [Test]
121 public void SettersRejectNull() {
122 TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
123 TestUtil.AssertArgumentNullException(() => builder.SetOptionalString(null));
124 TestUtil.AssertArgumentNullException(() => builder.SetOptionalBytes(null));
125 TestUtil.AssertArgumentNullException(() => builder.SetOptionalNestedMessage((TestAllTypes.Types.NestedMessage)null));
126 TestUtil.AssertArgumentNullException(() => builder.SetOptionalNestedMessage((TestAllTypes.Types.NestedMessage.Builder)null));
127 TestUtil.AssertArgumentNullException(() => builder.AddRepeatedString(null));
128 TestUtil.AssertArgumentNullException(() => builder.AddRepeatedBytes(null));
129 TestUtil.AssertArgumentNullException(() => builder.AddRepeatedNestedMessage((TestAllTypes.Types.NestedMessage)null));
130 TestUtil.AssertArgumentNullException(() => builder.AddRepeatedNestedMessage((TestAllTypes.Types.NestedMessage.Builder)null));
131 }
132
Jon Skeet68036862008-10-22 13:30:34 +0100133 [Test]
134 public void RepeatedSetters() {
135 TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
136 TestUtil.SetAllFields(builder);
137 TestUtil.ModifyRepeatedFields(builder);
138 TestAllTypes message = builder.Build();
139 TestUtil.AssertRepeatedFieldsModified(message);
140 }
141
142 [Test]
143 public void RepeatedAppend() {
144 TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
145
146 builder.AddRangeRepeatedInt32(new int[]{1, 2, 3, 4});
147 builder.AddRangeRepeatedForeignEnum((new ForeignEnum[] { ForeignEnum.FOREIGN_BAZ }));
148
149 ForeignMessage foreignMessage = ForeignMessage.CreateBuilder().SetC(12).Build();
150 builder.AddRangeRepeatedForeignMessage(new ForeignMessage[] {foreignMessage});
151
152 TestAllTypes message = builder.Build();
153 TestUtil.AssertEqual(message.RepeatedInt32List, new int[]{1, 2, 3, 4});
154 TestUtil.AssertEqual(message.RepeatedForeignEnumList, new ForeignEnum[] {ForeignEnum.FOREIGN_BAZ});
155 Assert.AreEqual(1, message.RepeatedForeignMessageCount);
156 Assert.AreEqual(12, message.GetRepeatedForeignMessage(0).C);
157 }
158
159 [Test]
Jon Skeet642a8142009-01-27 12:25:21 +0000160 public void RepeatedAppendRejectsNull() {
161 TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
162
163 ForeignMessage foreignMessage = ForeignMessage.CreateBuilder().SetC(12).Build();
164 TestUtil.AssertArgumentNullException(() => builder.AddRangeRepeatedForeignMessage(new[] { foreignMessage, null }));
165 TestUtil.AssertArgumentNullException(() => builder.AddRangeRepeatedForeignMessage(null));
166 TestUtil.AssertArgumentNullException(() => builder.AddRangeRepeatedForeignEnum(null));
167 TestUtil.AssertArgumentNullException(() => builder.AddRangeRepeatedString(new[] { "one", null }));
168 TestUtil.AssertArgumentNullException(() => builder.AddRangeRepeatedBytes(new[] { TestUtil.ToBytes("one"), null }));
169 }
170
171 [Test]
Jon Skeet68036862008-10-22 13:30:34 +0100172 public void SettingForeignMessageUsingBuilder() {
173 TestAllTypes message = TestAllTypes.CreateBuilder()
174 // Pass builder for foreign message instance.
175 .SetOptionalForeignMessage(ForeignMessage.CreateBuilder().SetC(123))
176 .Build();
177 TestAllTypes expectedMessage = TestAllTypes.CreateBuilder()
178 // Create expected version passing foreign message instance explicitly.
179 .SetOptionalForeignMessage(ForeignMessage.CreateBuilder().SetC(123).Build())
180 .Build();
181 Assert.AreEqual(expectedMessage, message);
182 }
183
184 [Test]
185 public void SettingRepeatedForeignMessageUsingBuilder() {
186 TestAllTypes message = TestAllTypes.CreateBuilder()
187 // Pass builder for foreign message instance.
188 .AddRepeatedForeignMessage(ForeignMessage.CreateBuilder().SetC(456))
189 .Build();
190 TestAllTypes expectedMessage = TestAllTypes.CreateBuilder()
191 // Create expected version passing foreign message instance explicitly.
192 .AddRepeatedForeignMessage(ForeignMessage.CreateBuilder().SetC(456).Build())
193 .Build();
194 Assert.AreEqual(expectedMessage, message);
195 }
196
Jon Skeet8729cf42009-06-05 22:49:05 +0100197 [Test]
198 public void SettingRepeatedValuesUsingRangeInCollectionInitializer() {
199 int[] values = { 1, 2, 3 };
200 TestAllTypes message = new TestAllTypes.Builder {
201 RepeatedSint32List = { values }
202 }.Build();
203 Assert.IsTrue(Lists.Equals(values, message.RepeatedSint32List));
204 }
205
206 [Test]
207 public void SettingRepeatedValuesUsingIndividualValuesInCollectionInitializer() {
208 TestAllTypes message = new TestAllTypes.Builder {
209 RepeatedSint32List = { 6, 7 }
210 }.Build();
211 Assert.IsTrue(Lists.Equals(new int[] { 6, 7 }, message.RepeatedSint32List));
212 }
Jon Skeet68036862008-10-22 13:30:34 +0100213
214 [Test]
215 public void Defaults() {
216 TestUtil.AssertClear(TestAllTypes.DefaultInstance);
217 TestUtil.AssertClear(TestAllTypes.CreateBuilder().Build());
218
219 Assert.AreEqual("\u1234", TestExtremeDefaultValues.DefaultInstance.Utf8String);
220 }
221
222 [Test]
223 public void ReflectionGetters() {
224 TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
225 TestUtil.SetAllFields(builder);
226 TestAllTypes message = builder.Build();
227 reflectionTester.AssertAllFieldsSetViaReflection(message);
228 }
229
230 [Test]
231 public void ReflectionSetters() {
232 TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
233 reflectionTester.SetAllFieldsViaReflection(builder);
234 TestAllTypes message = builder.Build();
235 TestUtil.AssertAllFieldsSet(message);
236 }
237
238 [Test]
Jon Skeet642a8142009-01-27 12:25:21 +0000239 public void ReflectionSettersRejectNull() {
240 TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
241 reflectionTester.AssertReflectionSettersRejectNull(builder);
242 }
243 [Test]
Jon Skeet68036862008-10-22 13:30:34 +0100244 public void ReflectionRepeatedSetters() {
245 TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
246 reflectionTester.SetAllFieldsViaReflection(builder);
247 reflectionTester.ModifyRepeatedFieldsViaReflection(builder);
248 TestAllTypes message = builder.Build();
249 TestUtil.AssertRepeatedFieldsModified(message);
250 }
251
252 [Test]
Jon Skeet642a8142009-01-27 12:25:21 +0000253 public void TestReflectionRepeatedSettersRejectNull() {
254 TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
255 reflectionTester.AssertReflectionRepeatedSettersRejectNull(builder);
256 }
257
258 [Test]
Jon Skeet68036862008-10-22 13:30:34 +0100259 public void ReflectionDefaults() {
Jon Skeetd33bff02009-05-11 19:42:18 +0100260 TestUtil.TestInMultipleCultures(() => {
261 reflectionTester.AssertClearViaReflection(TestAllTypes.DefaultInstance);
262 reflectionTester.AssertClearViaReflection(TestAllTypes.CreateBuilder().Build());
263 });
Jon Skeet68036862008-10-22 13:30:34 +0100264 }
265 // =================================================================
266 // Extensions.
267
268 [Test]
269 public void ExtensionAccessors() {
270 TestAllExtensions.Builder builder = TestAllExtensions.CreateBuilder();
271 TestUtil.SetAllExtensions(builder);
272 TestAllExtensions message = builder.Build();
273 TestUtil.AssertAllExtensionsSet(message);
274 }
275
276 [Test]
277 public void ExtensionRepeatedSetters() {
278 TestAllExtensions.Builder builder = TestAllExtensions.CreateBuilder();
279 TestUtil.SetAllExtensions(builder);
280 TestUtil.ModifyRepeatedExtensions(builder);
281 TestAllExtensions message = builder.Build();
282 TestUtil.AssertRepeatedExtensionsModified(message);
283 }
284
285 [Test]
286 public void ExtensionDefaults() {
287 TestUtil.AssertExtensionsClear(TestAllExtensions.DefaultInstance);
288 TestUtil.AssertExtensionsClear(TestAllExtensions.CreateBuilder().Build());
289 }
290
291 [Test]
292 public void ExtensionReflectionGetters() {
293 TestAllExtensions.Builder builder = TestAllExtensions.CreateBuilder();
294 TestUtil.SetAllExtensions(builder);
295 TestAllExtensions message = builder.Build();
296 extensionsReflectionTester.AssertAllFieldsSetViaReflection(message);
297 }
298
299 [Test]
300 public void ExtensionReflectionSetters() {
301 TestAllExtensions.Builder builder = TestAllExtensions.CreateBuilder();
302 extensionsReflectionTester.SetAllFieldsViaReflection(builder);
303 TestAllExtensions message = builder.Build();
304 TestUtil.AssertAllExtensionsSet(message);
305 }
306
307 [Test]
Jon Skeet642a8142009-01-27 12:25:21 +0000308 public void ExtensionReflectionSettersRejectNull() {
309 TestAllExtensions.Builder builder = TestAllExtensions.CreateBuilder();
310 extensionsReflectionTester.AssertReflectionSettersRejectNull(builder);
311 }
312
313 [Test]
Jon Skeet68036862008-10-22 13:30:34 +0100314 public void ExtensionReflectionRepeatedSetters() {
315 TestAllExtensions.Builder builder = TestAllExtensions.CreateBuilder();
316 extensionsReflectionTester.SetAllFieldsViaReflection(builder);
317 extensionsReflectionTester.ModifyRepeatedFieldsViaReflection(builder);
318 TestAllExtensions message = builder.Build();
319 TestUtil.AssertRepeatedExtensionsModified(message);
320 }
321
322 [Test]
Jon Skeet642a8142009-01-27 12:25:21 +0000323 public void ExtensionReflectionRepeatedSettersRejectNull() {
324 TestAllExtensions.Builder builder = TestAllExtensions.CreateBuilder();
325 extensionsReflectionTester.AssertReflectionRepeatedSettersRejectNull(builder);
326 }
327
328 [Test]
Jon Skeet68036862008-10-22 13:30:34 +0100329 public void ExtensionReflectionDefaults() {
Jon Skeetd33bff02009-05-11 19:42:18 +0100330 TestUtil.TestInMultipleCultures(() => {
331 extensionsReflectionTester.AssertClearViaReflection(TestAllExtensions.DefaultInstance);
332 extensionsReflectionTester.AssertClearViaReflection(TestAllExtensions.CreateBuilder().Build());
333 });
Jon Skeet68036862008-10-22 13:30:34 +0100334 }
335
336 [Test]
337 public void ClearExtension() {
338 // ClearExtension() is not actually used in TestUtil, so try it manually.
339 Assert.IsFalse(TestAllExtensions.CreateBuilder()
340 .SetExtension(UnitTestProtoFile.OptionalInt32Extension, 1)
341 .ClearExtension(UnitTestProtoFile.OptionalInt32Extension)
342 .HasExtension(UnitTestProtoFile.OptionalInt32Extension));
343 Assert.AreEqual(0, TestAllExtensions.CreateBuilder()
344 .AddExtension(UnitTestProtoFile.RepeatedInt32Extension, 1)
345 .ClearExtension(UnitTestProtoFile.RepeatedInt32Extension)
346 .GetExtensionCount(UnitTestProtoFile.RepeatedInt32Extension));
347 }
348
Jon Skeet642a8142009-01-27 12:25:21 +0000349 [Test]
350 public void ExtensionMergeFrom() {
351 TestAllExtensions original = TestAllExtensions.CreateBuilder()
352 .SetExtension(UnitTestProtoFile.OptionalInt32Extension, 1).Build();
353 TestAllExtensions merged =
354 TestAllExtensions.CreateBuilder().MergeFrom(original).Build();
355 Assert.IsTrue((merged.HasExtension(UnitTestProtoFile.OptionalInt32Extension)));
356 Assert.AreEqual(1, (int)merged.GetExtension(UnitTestProtoFile.OptionalInt32Extension));
Jon Skeet49fcd4f2009-01-27 14:43:10 +0000357 }
Jon Skeet642a8142009-01-27 12:25:21 +0000358
Jon Skeet68036862008-10-22 13:30:34 +0100359 /* Removed multiple files option for the moment
360 [Test]
361 public void MultipleFilesOption() {
362 // We mostly just want to check that things compile.
363 MessageWithNoOuter message = MessageWithNoOuter.CreateBuilder()
364 .SetNested(MessageWithNoOuter.Types.NestedMessage.CreateBuilder().SetI(1))
365 .AddForeign(TestAllTypes.CreateBuilder().SetOptionalInt32(1))
366 .SetNestedEnum(MessageWithNoOuter.Types.NestedEnum.BAZ)
367 .SetForeignEnum(EnumWithNoOuter.BAR)
368 .Build();
369 Assert.AreEqual(message, MessageWithNoOuter.ParseFrom(message.ToByteString()));
370
371 Assert.AreEqual(MultiFileProto.Descriptor, MessageWithNoOuter.Descriptor.File);
372
373 FieldDescriptor field = MessageWithNoOuter.Descriptor.FindDescriptor<FieldDescriptor>("foreign_enum");
374 Assert.AreEqual(MultiFileProto.Descriptor.FindTypeByName<EnumDescriptor>("EnumWithNoOuter")
375 .FindValueByNumber((int)EnumWithNoOuter.BAR), message[field]);
376
377 Assert.AreEqual(MultiFileProto.Descriptor, ServiceWithNoOuter.Descriptor.File);
378
379 Assert.IsFalse(TestAllExtensions.DefaultInstance.HasExtension(MultiFileProto.ExtensionWithOuter));
380 }*/
381
382 [Test]
383 public void OptionalFieldWithRequiredSubfieldsOptimizedForSize() {
384 TestOptionalOptimizedForSize message = TestOptionalOptimizedForSize.DefaultInstance;
385 Assert.IsTrue(message.IsInitialized);
386
387 message = TestOptionalOptimizedForSize.CreateBuilder().SetO(
388 TestRequiredOptimizedForSize.CreateBuilder().BuildPartial()
389 ).BuildPartial();
390 Assert.IsFalse(message.IsInitialized);
391
392 message = TestOptionalOptimizedForSize.CreateBuilder().SetO(
393 TestRequiredOptimizedForSize.CreateBuilder().SetX(5).BuildPartial()
394 ).BuildPartial();
395 Assert.IsTrue(message.IsInitialized);
396 }
Jon Skeet20bfd9b2008-10-23 21:05:58 +0100397
398 [Test]
Jon Skeetc298c892009-05-30 10:07:09 +0100399 public void OptimizedForSizeMergeUsesAllFieldsFromTarget() {
Jon Skeet20bfd9b2008-10-23 21:05:58 +0100400 TestOptimizedForSize withFieldSet = new TestOptimizedForSize.Builder { I = 10 }.Build();
401 TestOptimizedForSize.Builder builder = new TestOptimizedForSize.Builder();
402 builder.MergeFrom(withFieldSet);
403 TestOptimizedForSize built = builder.Build();
404 Assert.AreEqual(10, built.I);
405 }
406
407 [Test]
408 public void UninitializedExtensionInOptimizedForSizeMakesMessageUninitialized() {
409 TestOptimizedForSize.Builder builder = new TestOptimizedForSize.Builder();
410 builder.SetExtension(TestOptimizedForSize.TestExtension2,
411 new TestRequiredOptimizedForSize.Builder().BuildPartial());
412 Assert.IsFalse(builder.IsInitialized);
413 Assert.IsFalse(builder.BuildPartial().IsInitialized);
414
415 builder = new TestOptimizedForSize.Builder();
416 builder.SetExtension(TestOptimizedForSize.TestExtension2,
417 new TestRequiredOptimizedForSize.Builder { X = 10 }.BuildPartial());
418 Assert.IsTrue(builder.IsInitialized);
419 Assert.IsTrue(builder.BuildPartial().IsInitialized);
420 }
Jon Skeete81a9d72009-02-24 16:50:56 +0000421
422 [Test]
423 public void ToBuilder() {
424 TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
425 TestUtil.SetAllFields(builder);
426 TestAllTypes message = builder.Build();
427 TestUtil.AssertAllFieldsSet(message.ToBuilder().Build());
428 }
Jon Skeet7ee85c42009-05-28 21:11:15 +0100429
430 [Test]
431 public void FieldConstantValues() {
432 Assert.AreEqual(TestAllTypes.Types.NestedMessage.BbFieldNumber, 1);
433 Assert.AreEqual(TestAllTypes.OptionalInt32FieldNumber, 1);
434 Assert.AreEqual(TestAllTypes.OptionalGroupFieldNumber, 16);
435 Assert.AreEqual(TestAllTypes.OptionalNestedMessageFieldNumber, 18);
436 Assert.AreEqual(TestAllTypes.OptionalNestedEnumFieldNumber, 21);
437 Assert.AreEqual(TestAllTypes.RepeatedInt32FieldNumber, 31);
438 Assert.AreEqual(TestAllTypes.RepeatedGroupFieldNumber, 46);
439 Assert.AreEqual(TestAllTypes.RepeatedNestedMessageFieldNumber, 48);
440 Assert.AreEqual(TestAllTypes.RepeatedNestedEnumFieldNumber, 51);
441 }
442
443 [Test]
444 public void ExtensionConstantValues() {
445 Assert.AreEqual(TestRequired.SingleFieldNumber, 1000);
446 Assert.AreEqual(TestRequired.MultiFieldNumber, 1001);
447 Assert.AreEqual(UnitTestProtoFile.OptionalInt32ExtensionFieldNumber, 1);
448 Assert.AreEqual(UnitTestProtoFile.OptionalGroupExtensionFieldNumber, 16);
449 Assert.AreEqual(UnitTestProtoFile.OptionalNestedMessageExtensionFieldNumber, 18);
450 Assert.AreEqual(UnitTestProtoFile.OptionalNestedEnumExtensionFieldNumber, 21);
451 Assert.AreEqual(UnitTestProtoFile.RepeatedInt32ExtensionFieldNumber, 31);
452 Assert.AreEqual(UnitTestProtoFile.RepeatedGroupExtensionFieldNumber, 46);
453 Assert.AreEqual(UnitTestProtoFile.RepeatedNestedMessageExtensionFieldNumber, 48);
454 Assert.AreEqual(UnitTestProtoFile.RepeatedNestedEnumExtensionFieldNumber, 51);
455 }
Jon Skeet68036862008-10-22 13:30:34 +0100456 }
457}