blob: aee11d84fab01235d6b5f9487542f3e203e3080f [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;
Jon Skeetad748532009-06-25 16:55:58 +010034using Google.ProtocolBuffers.Collections;
Jon Skeet68036862008-10-22 13:30:34 +010035using Google.ProtocolBuffers.TestProtos;
36using NUnit.Framework;
37
38namespace Google.ProtocolBuffers {
39 [TestFixture]
40 public class GeneratedMessageTest {
41 ReflectionTester reflectionTester;
42 ReflectionTester extensionsReflectionTester;
43
44 [SetUp]
45 public void SetUp() {
46 reflectionTester = ReflectionTester.CreateTestAllTypesInstance();
47 extensionsReflectionTester = ReflectionTester.CreateTestAllExtensionsInstance();
48 }
49
50 [Test]
51 public void RepeatedAddPrimitiveBeforeBuild() {
52 TestAllTypes message = new TestAllTypes.Builder { RepeatedInt32List = { 1, 2, 3 } }.Build();
53 TestUtil.AssertEqual(new int[]{1, 2, 3}, message.RepeatedInt32List);
54 }
55
56 [Test]
57 public void AddPrimitiveFailsAfterBuild() {
58 TestAllTypes.Builder builder = new TestAllTypes.Builder();
59 IList<int> list = builder.RepeatedInt32List;
60 list.Add(1); // Fine
61 builder.Build();
62
63 try {
64 list.Add(2);
65 Assert.Fail("List should be frozen");
66 } catch (NotSupportedException) {
67 // Expected
68 }
69 }
70
71 [Test]
72 public void RepeatedAddMessageBeforeBuild() {
73 TestAllTypes message = new TestAllTypes.Builder {
74 RepeatedNestedMessageList = { new TestAllTypes.Types.NestedMessage.Builder { Bb = 10 }.Build() } }.Build();
75 Assert.AreEqual(1, message.RepeatedNestedMessageCount);
76 Assert.AreEqual(10, message.RepeatedNestedMessageList[0].Bb);
77 }
78
79 [Test]
80 public void AddMessageFailsAfterBuild() {
81 TestAllTypes.Builder builder = new TestAllTypes.Builder();
82 IList<TestAllTypes.Types.NestedMessage> list = builder.RepeatedNestedMessageList;
83 builder.Build();
84
85 try {
86 list.Add(new TestAllTypes.Types.NestedMessage.Builder { Bb = 10 }.Build());
87 Assert.Fail("List should be frozen");
88 } catch (NotSupportedException) {
89 // Expected
90 }
91 }
92
93 [Test]
Jon Skeetc298c892009-05-30 10:07:09 +010094 public void DoubleBuildError() {
95 TestAllTypes.Builder builder = new TestAllTypes.Builder();
96 builder.Build();
97 try {
98 builder.Build();
99 Assert.Fail("Should have thrown exception.");
Jon Skeetdf67f142009-06-05 19:29:36 +0100100 } catch (InvalidOperationException) {
Jon Skeetc298c892009-05-30 10:07:09 +0100101 // Success.
102 }
103 }
104
105 [Test]
Jon Skeet68036862008-10-22 13:30:34 +0100106 public void DefaultInstance() {
107 Assert.AreSame(TestAllTypes.DefaultInstance, TestAllTypes.DefaultInstance.DefaultInstanceForType);
108 Assert.AreSame(TestAllTypes.DefaultInstance, TestAllTypes.CreateBuilder().DefaultInstanceForType);
109 }
110
111 [Test]
112 public void Accessors() {
113 TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
114 TestUtil.SetAllFields(builder);
115 TestAllTypes message = builder.Build();
116 TestUtil.AssertAllFieldsSet(message);
117 }
Jon Skeet642a8142009-01-27 12:25:21 +0000118
119 [Test]
120 public void SettersRejectNull() {
121 TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
122 TestUtil.AssertArgumentNullException(() => builder.SetOptionalString(null));
123 TestUtil.AssertArgumentNullException(() => builder.SetOptionalBytes(null));
124 TestUtil.AssertArgumentNullException(() => builder.SetOptionalNestedMessage((TestAllTypes.Types.NestedMessage)null));
125 TestUtil.AssertArgumentNullException(() => builder.SetOptionalNestedMessage((TestAllTypes.Types.NestedMessage.Builder)null));
126 TestUtil.AssertArgumentNullException(() => builder.AddRepeatedString(null));
127 TestUtil.AssertArgumentNullException(() => builder.AddRepeatedBytes(null));
128 TestUtil.AssertArgumentNullException(() => builder.AddRepeatedNestedMessage((TestAllTypes.Types.NestedMessage)null));
129 TestUtil.AssertArgumentNullException(() => builder.AddRepeatedNestedMessage((TestAllTypes.Types.NestedMessage.Builder)null));
130 }
131
Jon Skeet68036862008-10-22 13:30:34 +0100132 [Test]
133 public void RepeatedSetters() {
134 TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
135 TestUtil.SetAllFields(builder);
136 TestUtil.ModifyRepeatedFields(builder);
137 TestAllTypes message = builder.Build();
138 TestUtil.AssertRepeatedFieldsModified(message);
139 }
140
141 [Test]
142 public void RepeatedAppend() {
143 TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
144
145 builder.AddRangeRepeatedInt32(new int[]{1, 2, 3, 4});
146 builder.AddRangeRepeatedForeignEnum((new ForeignEnum[] { ForeignEnum.FOREIGN_BAZ }));
147
148 ForeignMessage foreignMessage = ForeignMessage.CreateBuilder().SetC(12).Build();
149 builder.AddRangeRepeatedForeignMessage(new ForeignMessage[] {foreignMessage});
150
151 TestAllTypes message = builder.Build();
152 TestUtil.AssertEqual(message.RepeatedInt32List, new int[]{1, 2, 3, 4});
153 TestUtil.AssertEqual(message.RepeatedForeignEnumList, new ForeignEnum[] {ForeignEnum.FOREIGN_BAZ});
154 Assert.AreEqual(1, message.RepeatedForeignMessageCount);
155 Assert.AreEqual(12, message.GetRepeatedForeignMessage(0).C);
156 }
157
158 [Test]
Jon Skeet642a8142009-01-27 12:25:21 +0000159 public void RepeatedAppendRejectsNull() {
160 TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
161
162 ForeignMessage foreignMessage = ForeignMessage.CreateBuilder().SetC(12).Build();
163 TestUtil.AssertArgumentNullException(() => builder.AddRangeRepeatedForeignMessage(new[] { foreignMessage, null }));
164 TestUtil.AssertArgumentNullException(() => builder.AddRangeRepeatedForeignMessage(null));
165 TestUtil.AssertArgumentNullException(() => builder.AddRangeRepeatedForeignEnum(null));
166 TestUtil.AssertArgumentNullException(() => builder.AddRangeRepeatedString(new[] { "one", null }));
167 TestUtil.AssertArgumentNullException(() => builder.AddRangeRepeatedBytes(new[] { TestUtil.ToBytes("one"), null }));
168 }
169
170 [Test]
Jon Skeet68036862008-10-22 13:30:34 +0100171 public void SettingForeignMessageUsingBuilder() {
172 TestAllTypes message = TestAllTypes.CreateBuilder()
173 // Pass builder for foreign message instance.
174 .SetOptionalForeignMessage(ForeignMessage.CreateBuilder().SetC(123))
175 .Build();
176 TestAllTypes expectedMessage = TestAllTypes.CreateBuilder()
177 // Create expected version passing foreign message instance explicitly.
178 .SetOptionalForeignMessage(ForeignMessage.CreateBuilder().SetC(123).Build())
179 .Build();
180 Assert.AreEqual(expectedMessage, message);
181 }
182
183 [Test]
184 public void SettingRepeatedForeignMessageUsingBuilder() {
185 TestAllTypes message = TestAllTypes.CreateBuilder()
186 // Pass builder for foreign message instance.
187 .AddRepeatedForeignMessage(ForeignMessage.CreateBuilder().SetC(456))
188 .Build();
189 TestAllTypes expectedMessage = TestAllTypes.CreateBuilder()
190 // Create expected version passing foreign message instance explicitly.
191 .AddRepeatedForeignMessage(ForeignMessage.CreateBuilder().SetC(456).Build())
192 .Build();
193 Assert.AreEqual(expectedMessage, message);
194 }
195
Jon Skeet8729cf42009-06-05 22:49:05 +0100196 [Test]
197 public void SettingRepeatedValuesUsingRangeInCollectionInitializer() {
198 int[] values = { 1, 2, 3 };
199 TestAllTypes message = new TestAllTypes.Builder {
200 RepeatedSint32List = { values }
201 }.Build();
202 Assert.IsTrue(Lists.Equals(values, message.RepeatedSint32List));
203 }
204
205 [Test]
206 public void SettingRepeatedValuesUsingIndividualValuesInCollectionInitializer() {
207 TestAllTypes message = new TestAllTypes.Builder {
208 RepeatedSint32List = { 6, 7 }
209 }.Build();
210 Assert.IsTrue(Lists.Equals(new int[] { 6, 7 }, message.RepeatedSint32List));
211 }
Jon Skeet68036862008-10-22 13:30:34 +0100212
213 [Test]
214 public void Defaults() {
215 TestUtil.AssertClear(TestAllTypes.DefaultInstance);
216 TestUtil.AssertClear(TestAllTypes.CreateBuilder().Build());
217
218 Assert.AreEqual("\u1234", TestExtremeDefaultValues.DefaultInstance.Utf8String);
219 }
220
221 [Test]
222 public void ReflectionGetters() {
223 TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
224 TestUtil.SetAllFields(builder);
225 TestAllTypes message = builder.Build();
226 reflectionTester.AssertAllFieldsSetViaReflection(message);
227 }
228
229 [Test]
230 public void ReflectionSetters() {
231 TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
232 reflectionTester.SetAllFieldsViaReflection(builder);
233 TestAllTypes message = builder.Build();
234 TestUtil.AssertAllFieldsSet(message);
235 }
236
237 [Test]
Jon Skeet642a8142009-01-27 12:25:21 +0000238 public void ReflectionSettersRejectNull() {
239 TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
240 reflectionTester.AssertReflectionSettersRejectNull(builder);
241 }
242 [Test]
Jon Skeet68036862008-10-22 13:30:34 +0100243 public void ReflectionRepeatedSetters() {
244 TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
245 reflectionTester.SetAllFieldsViaReflection(builder);
246 reflectionTester.ModifyRepeatedFieldsViaReflection(builder);
247 TestAllTypes message = builder.Build();
248 TestUtil.AssertRepeatedFieldsModified(message);
249 }
250
251 [Test]
Jon Skeet642a8142009-01-27 12:25:21 +0000252 public void TestReflectionRepeatedSettersRejectNull() {
253 TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
254 reflectionTester.AssertReflectionRepeatedSettersRejectNull(builder);
255 }
256
257 [Test]
Jon Skeet68036862008-10-22 13:30:34 +0100258 public void ReflectionDefaults() {
Jon Skeetd33bff02009-05-11 19:42:18 +0100259 TestUtil.TestInMultipleCultures(() => {
260 reflectionTester.AssertClearViaReflection(TestAllTypes.DefaultInstance);
261 reflectionTester.AssertClearViaReflection(TestAllTypes.CreateBuilder().Build());
262 });
Jon Skeet68036862008-10-22 13:30:34 +0100263 }
264 // =================================================================
265 // Extensions.
266
267 [Test]
268 public void ExtensionAccessors() {
269 TestAllExtensions.Builder builder = TestAllExtensions.CreateBuilder();
270 TestUtil.SetAllExtensions(builder);
271 TestAllExtensions message = builder.Build();
272 TestUtil.AssertAllExtensionsSet(message);
273 }
274
275 [Test]
276 public void ExtensionRepeatedSetters() {
277 TestAllExtensions.Builder builder = TestAllExtensions.CreateBuilder();
278 TestUtil.SetAllExtensions(builder);
279 TestUtil.ModifyRepeatedExtensions(builder);
280 TestAllExtensions message = builder.Build();
281 TestUtil.AssertRepeatedExtensionsModified(message);
282 }
283
284 [Test]
285 public void ExtensionDefaults() {
286 TestUtil.AssertExtensionsClear(TestAllExtensions.DefaultInstance);
287 TestUtil.AssertExtensionsClear(TestAllExtensions.CreateBuilder().Build());
288 }
289
290 [Test]
291 public void ExtensionReflectionGetters() {
292 TestAllExtensions.Builder builder = TestAllExtensions.CreateBuilder();
293 TestUtil.SetAllExtensions(builder);
294 TestAllExtensions message = builder.Build();
295 extensionsReflectionTester.AssertAllFieldsSetViaReflection(message);
296 }
297
298 [Test]
299 public void ExtensionReflectionSetters() {
300 TestAllExtensions.Builder builder = TestAllExtensions.CreateBuilder();
301 extensionsReflectionTester.SetAllFieldsViaReflection(builder);
302 TestAllExtensions message = builder.Build();
303 TestUtil.AssertAllExtensionsSet(message);
304 }
305
306 [Test]
Jon Skeet642a8142009-01-27 12:25:21 +0000307 public void ExtensionReflectionSettersRejectNull() {
308 TestAllExtensions.Builder builder = TestAllExtensions.CreateBuilder();
309 extensionsReflectionTester.AssertReflectionSettersRejectNull(builder);
310 }
311
312 [Test]
Jon Skeet68036862008-10-22 13:30:34 +0100313 public void ExtensionReflectionRepeatedSetters() {
314 TestAllExtensions.Builder builder = TestAllExtensions.CreateBuilder();
315 extensionsReflectionTester.SetAllFieldsViaReflection(builder);
316 extensionsReflectionTester.ModifyRepeatedFieldsViaReflection(builder);
317 TestAllExtensions message = builder.Build();
318 TestUtil.AssertRepeatedExtensionsModified(message);
319 }
320
321 [Test]
Jon Skeet642a8142009-01-27 12:25:21 +0000322 public void ExtensionReflectionRepeatedSettersRejectNull() {
323 TestAllExtensions.Builder builder = TestAllExtensions.CreateBuilder();
324 extensionsReflectionTester.AssertReflectionRepeatedSettersRejectNull(builder);
325 }
326
327 [Test]
Jon Skeet68036862008-10-22 13:30:34 +0100328 public void ExtensionReflectionDefaults() {
Jon Skeetd33bff02009-05-11 19:42:18 +0100329 TestUtil.TestInMultipleCultures(() => {
330 extensionsReflectionTester.AssertClearViaReflection(TestAllExtensions.DefaultInstance);
331 extensionsReflectionTester.AssertClearViaReflection(TestAllExtensions.CreateBuilder().Build());
332 });
Jon Skeet68036862008-10-22 13:30:34 +0100333 }
334
335 [Test]
336 public void ClearExtension() {
337 // ClearExtension() is not actually used in TestUtil, so try it manually.
338 Assert.IsFalse(TestAllExtensions.CreateBuilder()
339 .SetExtension(UnitTestProtoFile.OptionalInt32Extension, 1)
340 .ClearExtension(UnitTestProtoFile.OptionalInt32Extension)
341 .HasExtension(UnitTestProtoFile.OptionalInt32Extension));
342 Assert.AreEqual(0, TestAllExtensions.CreateBuilder()
343 .AddExtension(UnitTestProtoFile.RepeatedInt32Extension, 1)
344 .ClearExtension(UnitTestProtoFile.RepeatedInt32Extension)
345 .GetExtensionCount(UnitTestProtoFile.RepeatedInt32Extension));
346 }
347
Jon Skeet642a8142009-01-27 12:25:21 +0000348 [Test]
349 public void ExtensionMergeFrom() {
350 TestAllExtensions original = TestAllExtensions.CreateBuilder()
351 .SetExtension(UnitTestProtoFile.OptionalInt32Extension, 1).Build();
352 TestAllExtensions merged =
353 TestAllExtensions.CreateBuilder().MergeFrom(original).Build();
354 Assert.IsTrue((merged.HasExtension(UnitTestProtoFile.OptionalInt32Extension)));
355 Assert.AreEqual(1, (int)merged.GetExtension(UnitTestProtoFile.OptionalInt32Extension));
Jon Skeet49fcd4f2009-01-27 14:43:10 +0000356 }
Jon Skeet642a8142009-01-27 12:25:21 +0000357
Jon Skeet68036862008-10-22 13:30:34 +0100358 /* Removed multiple files option for the moment
359 [Test]
360 public void MultipleFilesOption() {
361 // We mostly just want to check that things compile.
362 MessageWithNoOuter message = MessageWithNoOuter.CreateBuilder()
363 .SetNested(MessageWithNoOuter.Types.NestedMessage.CreateBuilder().SetI(1))
364 .AddForeign(TestAllTypes.CreateBuilder().SetOptionalInt32(1))
365 .SetNestedEnum(MessageWithNoOuter.Types.NestedEnum.BAZ)
366 .SetForeignEnum(EnumWithNoOuter.BAR)
367 .Build();
368 Assert.AreEqual(message, MessageWithNoOuter.ParseFrom(message.ToByteString()));
369
370 Assert.AreEqual(MultiFileProto.Descriptor, MessageWithNoOuter.Descriptor.File);
371
372 FieldDescriptor field = MessageWithNoOuter.Descriptor.FindDescriptor<FieldDescriptor>("foreign_enum");
373 Assert.AreEqual(MultiFileProto.Descriptor.FindTypeByName<EnumDescriptor>("EnumWithNoOuter")
374 .FindValueByNumber((int)EnumWithNoOuter.BAR), message[field]);
375
376 Assert.AreEqual(MultiFileProto.Descriptor, ServiceWithNoOuter.Descriptor.File);
377
378 Assert.IsFalse(TestAllExtensions.DefaultInstance.HasExtension(MultiFileProto.ExtensionWithOuter));
379 }*/
380
381 [Test]
382 public void OptionalFieldWithRequiredSubfieldsOptimizedForSize() {
383 TestOptionalOptimizedForSize message = TestOptionalOptimizedForSize.DefaultInstance;
384 Assert.IsTrue(message.IsInitialized);
385
386 message = TestOptionalOptimizedForSize.CreateBuilder().SetO(
387 TestRequiredOptimizedForSize.CreateBuilder().BuildPartial()
388 ).BuildPartial();
389 Assert.IsFalse(message.IsInitialized);
390
391 message = TestOptionalOptimizedForSize.CreateBuilder().SetO(
392 TestRequiredOptimizedForSize.CreateBuilder().SetX(5).BuildPartial()
393 ).BuildPartial();
394 Assert.IsTrue(message.IsInitialized);
395 }
Jon Skeet20bfd9b2008-10-23 21:05:58 +0100396
397 [Test]
Jon Skeetc298c892009-05-30 10:07:09 +0100398 public void OptimizedForSizeMergeUsesAllFieldsFromTarget() {
Jon Skeet20bfd9b2008-10-23 21:05:58 +0100399 TestOptimizedForSize withFieldSet = new TestOptimizedForSize.Builder { I = 10 }.Build();
400 TestOptimizedForSize.Builder builder = new TestOptimizedForSize.Builder();
401 builder.MergeFrom(withFieldSet);
402 TestOptimizedForSize built = builder.Build();
403 Assert.AreEqual(10, built.I);
404 }
405
406 [Test]
407 public void UninitializedExtensionInOptimizedForSizeMakesMessageUninitialized() {
408 TestOptimizedForSize.Builder builder = new TestOptimizedForSize.Builder();
409 builder.SetExtension(TestOptimizedForSize.TestExtension2,
410 new TestRequiredOptimizedForSize.Builder().BuildPartial());
411 Assert.IsFalse(builder.IsInitialized);
412 Assert.IsFalse(builder.BuildPartial().IsInitialized);
413
414 builder = new TestOptimizedForSize.Builder();
415 builder.SetExtension(TestOptimizedForSize.TestExtension2,
416 new TestRequiredOptimizedForSize.Builder { X = 10 }.BuildPartial());
417 Assert.IsTrue(builder.IsInitialized);
418 Assert.IsTrue(builder.BuildPartial().IsInitialized);
419 }
Jon Skeete81a9d72009-02-24 16:50:56 +0000420
421 [Test]
422 public void ToBuilder() {
423 TestAllTypes.Builder builder = TestAllTypes.CreateBuilder();
424 TestUtil.SetAllFields(builder);
425 TestAllTypes message = builder.Build();
426 TestUtil.AssertAllFieldsSet(message.ToBuilder().Build());
427 }
Jon Skeet7ee85c42009-05-28 21:11:15 +0100428
429 [Test]
430 public void FieldConstantValues() {
431 Assert.AreEqual(TestAllTypes.Types.NestedMessage.BbFieldNumber, 1);
432 Assert.AreEqual(TestAllTypes.OptionalInt32FieldNumber, 1);
433 Assert.AreEqual(TestAllTypes.OptionalGroupFieldNumber, 16);
434 Assert.AreEqual(TestAllTypes.OptionalNestedMessageFieldNumber, 18);
435 Assert.AreEqual(TestAllTypes.OptionalNestedEnumFieldNumber, 21);
436 Assert.AreEqual(TestAllTypes.RepeatedInt32FieldNumber, 31);
437 Assert.AreEqual(TestAllTypes.RepeatedGroupFieldNumber, 46);
438 Assert.AreEqual(TestAllTypes.RepeatedNestedMessageFieldNumber, 48);
439 Assert.AreEqual(TestAllTypes.RepeatedNestedEnumFieldNumber, 51);
440 }
441
442 [Test]
443 public void ExtensionConstantValues() {
444 Assert.AreEqual(TestRequired.SingleFieldNumber, 1000);
445 Assert.AreEqual(TestRequired.MultiFieldNumber, 1001);
446 Assert.AreEqual(UnitTestProtoFile.OptionalInt32ExtensionFieldNumber, 1);
447 Assert.AreEqual(UnitTestProtoFile.OptionalGroupExtensionFieldNumber, 16);
448 Assert.AreEqual(UnitTestProtoFile.OptionalNestedMessageExtensionFieldNumber, 18);
449 Assert.AreEqual(UnitTestProtoFile.OptionalNestedEnumExtensionFieldNumber, 21);
450 Assert.AreEqual(UnitTestProtoFile.RepeatedInt32ExtensionFieldNumber, 31);
451 Assert.AreEqual(UnitTestProtoFile.RepeatedGroupExtensionFieldNumber, 46);
452 Assert.AreEqual(UnitTestProtoFile.RepeatedNestedMessageExtensionFieldNumber, 48);
453 Assert.AreEqual(UnitTestProtoFile.RepeatedNestedEnumExtensionFieldNumber, 51);
454 }
Jon Skeet68036862008-10-22 13:30:34 +0100455 }
456}