1 #region Copyright notice and license 2 // Protocol Buffers - Google's data interchange format 3 // Copyright 2015 Google Inc. All rights reserved. 4 // 5 // Use of this source code is governed by a BSD-style 6 // license that can be found in the LICENSE file or at 7 // https://developers.google.com/open-source/licenses/bsd 8 #endregion 9 10 using System; 11 using Google.Protobuf.TestProtos; 12 using Proto2 = Google.Protobuf.TestProtos.Proto2; 13 14 using static Google.Protobuf.TestProtos.Proto2.UnittestExtensions; 15 16 namespace Google.Protobuf 17 { 18 /// <summary> 19 /// Helper methods to create sample instances of types generated from unit test messages. 20 /// </summary> 21 public class SampleMessages 22 { 23 /// <summary> 24 /// Creates a new sample TestAllTypes message with all fields populated. 25 /// The "oneof" field is populated with the string property (OneofString). 26 /// </summary> CreateFullTestAllTypes()27 public static TestAllTypes CreateFullTestAllTypes() 28 { 29 return new TestAllTypes 30 { 31 SingleBool = true, 32 SingleBytes = ByteString.CopyFrom(1, 2, 3, 4), 33 SingleDouble = 23.5, 34 SingleFixed32 = 23, 35 SingleFixed64 = 1234567890123, 36 SingleFloat = 12.25f, 37 SingleForeignEnum = ForeignEnum.ForeignBar, 38 SingleForeignMessage = new ForeignMessage { C = 10 }, 39 SingleImportEnum = ImportEnum.ImportBaz, 40 SingleImportMessage = new ImportMessage { D = 20 }, 41 SingleInt32 = 100, 42 SingleInt64 = 3210987654321, 43 SingleNestedEnum = TestProtos.TestAllTypes.Types.NestedEnum.Foo, 44 SingleNestedMessage = new TestAllTypes.Types.NestedMessage { Bb = 35 }, 45 SinglePublicImportMessage = new PublicImportMessage { E = 54 }, 46 SingleSfixed32 = -123, 47 SingleSfixed64 = -12345678901234, 48 SingleSint32 = -456, 49 SingleSint64 = -12345678901235, 50 SingleString = "test", 51 SingleUint32 = UInt32.MaxValue, 52 SingleUint64 = UInt64.MaxValue, 53 RepeatedBool = { true, false }, 54 RepeatedBytes = { ByteString.CopyFrom(1, 2, 3, 4), ByteString.CopyFrom(5, 6), ByteString.CopyFrom(new byte[1000]) }, 55 RepeatedDouble = { -12.25, 23.5 }, 56 RepeatedFixed32 = { UInt32.MaxValue, 23 }, 57 RepeatedFixed64 = { UInt64.MaxValue, 1234567890123 }, 58 RepeatedFloat = { 100f, 12.25f }, 59 RepeatedForeignEnum = { ForeignEnum.ForeignFoo, ForeignEnum.ForeignBar }, 60 RepeatedForeignMessage = { new ForeignMessage(), new ForeignMessage { C = 10 } }, 61 RepeatedImportEnum = { ImportEnum.ImportBaz, ImportEnum.Unspecified }, 62 RepeatedImportMessage = { new ImportMessage { D = 20 }, new ImportMessage { D = 25 } }, 63 RepeatedInt32 = { 100, 200 }, 64 RepeatedInt64 = { 3210987654321, Int64.MaxValue }, 65 RepeatedNestedEnum = { TestProtos.TestAllTypes.Types.NestedEnum.Foo, TestProtos.TestAllTypes.Types.NestedEnum.Neg }, 66 RepeatedNestedMessage = { new TestAllTypes.Types.NestedMessage { Bb = 35 }, new TestAllTypes.Types.NestedMessage { Bb = 10 } }, 67 RepeatedPublicImportMessage = { new PublicImportMessage { E = 54 }, new PublicImportMessage { E = -1 } }, 68 RepeatedSfixed32 = { -123, 123 }, 69 RepeatedSfixed64 = { -12345678901234, 12345678901234 }, 70 RepeatedSint32 = { -456, 100 }, 71 RepeatedSint64 = { -12345678901235, 123 }, 72 RepeatedString = { "foo", "bar" }, 73 RepeatedUint32 = { UInt32.MaxValue, UInt32.MinValue }, 74 RepeatedUint64 = { UInt64.MaxValue, UInt32.MinValue }, 75 OneofString = "Oneof string" 76 }; 77 } 78 CreateFullTestAllTypesProto2()79 public static Proto2.TestAllTypes CreateFullTestAllTypesProto2() 80 { 81 return new Proto2.TestAllTypes 82 { 83 OptionalBool = true, 84 OptionalBytes = ByteString.CopyFrom(1, 2, 3, 4), 85 OptionalDouble = 23.5, 86 OptionalFixed32 = 23, 87 OptionalFixed64 = 1234567890123, 88 OptionalFloat = 12.25f, 89 OptionalForeignEnum = Proto2.ForeignEnum.ForeignBar, 90 OptionalForeignMessage = new Proto2.ForeignMessage { C = 10 }, 91 OptionalImportEnum = Proto2.ImportEnum.ImportBaz, 92 OptionalImportMessage = new Proto2.ImportMessage { D = 20 }, 93 OptionalInt32 = 100, 94 OptionalInt64 = 3210987654321, 95 OptionalNestedEnum = Proto2.TestAllTypes.Types.NestedEnum.Foo, 96 OptionalNestedMessage = new Proto2.TestAllTypes.Types.NestedMessage { Bb = 35 }, 97 OptionalPublicImportMessage = new Proto2.PublicImportMessage { E = 54 }, 98 OptionalSfixed32 = -123, 99 OptionalSfixed64 = -12345678901234, 100 OptionalSint32 = -456, 101 OptionalSint64 = -12345678901235, 102 OptionalString = "test", 103 OptionalUint32 = UInt32.MaxValue, 104 OptionalUint64 = UInt64.MaxValue, 105 OptionalGroup = new Proto2.TestAllTypes.Types.OptionalGroup { A = 10 }, 106 RepeatedBool = { true, false }, 107 RepeatedBytes = { ByteString.CopyFrom(1, 2, 3, 4), ByteString.CopyFrom(5, 6), ByteString.CopyFrom(new byte[1000]) }, 108 RepeatedDouble = { -12.25, 23.5 }, 109 RepeatedFixed32 = { UInt32.MaxValue, 23 }, 110 RepeatedFixed64 = { UInt64.MaxValue, 1234567890123 }, 111 RepeatedFloat = { 100f, 12.25f }, 112 RepeatedForeignEnum = { Proto2.ForeignEnum.ForeignFoo, Proto2.ForeignEnum.ForeignBar }, 113 RepeatedForeignMessage = { new Proto2.ForeignMessage(), new Proto2.ForeignMessage { C = 10 } }, 114 RepeatedImportEnum = { Proto2.ImportEnum.ImportBaz, Proto2.ImportEnum.ImportFoo }, 115 RepeatedImportMessage = { new Proto2.ImportMessage { D = 20 }, new Proto2.ImportMessage { D = 25 } }, 116 RepeatedInt32 = { 100, 200 }, 117 RepeatedInt64 = { 3210987654321, Int64.MaxValue }, 118 RepeatedNestedEnum = { Proto2.TestAllTypes.Types.NestedEnum.Foo, Proto2.TestAllTypes.Types.NestedEnum.Neg }, 119 RepeatedNestedMessage = { new Proto2.TestAllTypes.Types.NestedMessage { Bb = 35 }, new Proto2.TestAllTypes.Types.NestedMessage { Bb = 10 } }, 120 RepeatedSfixed32 = { -123, 123 }, 121 RepeatedSfixed64 = { -12345678901234, 12345678901234 }, 122 RepeatedSint32 = { -456, 100 }, 123 RepeatedSint64 = { -12345678901235, 123 }, 124 RepeatedString = { "foo", "bar" }, 125 RepeatedUint32 = { UInt32.MaxValue, UInt32.MinValue }, 126 RepeatedUint64 = { UInt64.MaxValue, UInt32.MinValue }, 127 RepeatedGroup = { new Proto2.TestAllTypes.Types.RepeatedGroup { A = 10 }, new Proto2.TestAllTypes.Types.RepeatedGroup { A = 20 } }, 128 OneofString = "Oneof string" 129 }; 130 } 131 CreateFullTestAllExtensions()132 public static Proto2.TestAllExtensions CreateFullTestAllExtensions() 133 { 134 var message = new Proto2.TestAllExtensions(); 135 message.SetExtension(OptionalBoolExtension, true); 136 message.SetExtension(OptionalBytesExtension, ByteString.CopyFrom(1, 2, 3, 4)); 137 message.SetExtension(OptionalDoubleExtension, 23.5); 138 message.SetExtension(OptionalFixed32Extension, 23u); 139 message.SetExtension(OptionalFixed64Extension, 1234567890123u); 140 message.SetExtension(OptionalFloatExtension, 12.25f); 141 message.SetExtension(OptionalForeignEnumExtension, Proto2.ForeignEnum.ForeignBar); 142 message.SetExtension(OptionalForeignMessageExtension, new Proto2.ForeignMessage { C = 10 }); 143 message.SetExtension(OptionalImportEnumExtension, Proto2.ImportEnum.ImportBaz); 144 message.SetExtension(OptionalImportMessageExtension, new Proto2.ImportMessage { D = 20 }); 145 message.SetExtension(OptionalInt32Extension, 100); 146 message.SetExtension(OptionalInt64Extension, 3210987654321); 147 message.SetExtension(OptionalNestedEnumExtension, Proto2.TestAllTypes.Types.NestedEnum.Foo); 148 message.SetExtension(OptionalNestedMessageExtension, new Proto2.TestAllTypes.Types.NestedMessage { Bb = 35 }); 149 message.SetExtension(OptionalPublicImportMessageExtension, new Proto2.PublicImportMessage { E = 54 }); 150 message.SetExtension(OptionalSfixed32Extension, -123); 151 message.SetExtension(OptionalSfixed64Extension, -12345678901234); 152 message.SetExtension(OptionalSint32Extension, -456); 153 message.SetExtension(OptionalSint64Extension, -12345678901235); 154 message.SetExtension(OptionalStringExtension, "test"); 155 message.SetExtension(OptionalUint32Extension, UInt32.MaxValue); 156 message.SetExtension(OptionalUint64Extension, UInt64.MaxValue); 157 message.SetExtension(OptionalGroupExtension, new Proto2.OptionalGroup_extension { A = 10 }); 158 message.GetOrInitializeExtension(RepeatedBoolExtension).AddRange(new[] { true, false }); 159 message.GetOrInitializeExtension(RepeatedBytesExtension).AddRange(new[] { ByteString.CopyFrom(1, 2, 3, 4), ByteString.CopyFrom(5, 6), ByteString.CopyFrom(new byte[1000]) }); 160 message.GetOrInitializeExtension(RepeatedDoubleExtension).AddRange(new[] { -12.25, 23.5 }); 161 message.GetOrInitializeExtension(RepeatedFixed32Extension).AddRange(new[] { UInt32.MaxValue, 23u }); 162 message.GetOrInitializeExtension(RepeatedFixed64Extension).AddRange(new[] { UInt64.MaxValue, 1234567890123ul }); 163 message.GetOrInitializeExtension(RepeatedFloatExtension).AddRange(new[] { 100f, 12.25f }); 164 message.GetOrInitializeExtension(RepeatedForeignEnumExtension).AddRange(new[] { Proto2.ForeignEnum.ForeignFoo, Proto2.ForeignEnum.ForeignBar }); 165 message.GetOrInitializeExtension(RepeatedForeignMessageExtension).AddRange(new[] { new Proto2.ForeignMessage(), new Proto2.ForeignMessage { C = 10 } }); 166 message.GetOrInitializeExtension(RepeatedImportEnumExtension).AddRange(new[] { Proto2.ImportEnum.ImportBaz, Proto2.ImportEnum.ImportFoo }); 167 message.GetOrInitializeExtension(RepeatedImportMessageExtension).AddRange(new[] { new Proto2.ImportMessage { D = 20 }, new Proto2.ImportMessage { D = 25 } }); 168 message.GetOrInitializeExtension(RepeatedInt32Extension).AddRange(new[] { 100, 200 }); 169 message.GetOrInitializeExtension(RepeatedInt64Extension).AddRange(new[] { 3210987654321, Int64.MaxValue }); 170 message.GetOrInitializeExtension(RepeatedNestedEnumExtension).AddRange(new[] { Proto2.TestAllTypes.Types.NestedEnum.Foo, Proto2.TestAllTypes.Types.NestedEnum.Neg }); 171 message.GetOrInitializeExtension(RepeatedNestedMessageExtension).AddRange(new[] { new Proto2.TestAllTypes.Types.NestedMessage { Bb = 35 }, new Proto2.TestAllTypes.Types.NestedMessage { Bb = 10 } }); 172 message.GetOrInitializeExtension(RepeatedSfixed32Extension).AddRange(new[] { -123, 123 }); 173 message.GetOrInitializeExtension(RepeatedSfixed64Extension).AddRange(new[] { -12345678901234, 12345678901234 }); 174 message.GetOrInitializeExtension(RepeatedSint32Extension).AddRange(new[] { -456, 100 }); 175 message.GetOrInitializeExtension(RepeatedSint64Extension).AddRange(new[] { -12345678901235, 123 }); 176 message.GetOrInitializeExtension(RepeatedStringExtension).AddRange(new[] { "foo", "bar" }); 177 message.GetOrInitializeExtension(RepeatedUint32Extension).AddRange(new[] { UInt32.MaxValue, UInt32.MinValue }); 178 message.GetOrInitializeExtension(RepeatedUint64Extension).AddRange(new[] { UInt64.MaxValue, UInt32.MinValue }); 179 message.GetOrInitializeExtension(RepeatedGroupExtension).AddRange(new[] { new Proto2.RepeatedGroup_extension { A = 10 }, new Proto2.RepeatedGroup_extension { A = 20 } }); 180 message.SetExtension(OneofStringExtension, "Oneof string"); 181 return message; 182 } 183 } 184 }