Home | History | Annotate | Download | only in protobuf
      1 // Protocol Buffers - Google's data interchange format
      2 // Copyright 2008 Google Inc.  All rights reserved.
      3 // https://developers.google.com/protocol-buffers/
      4 //
      5 // Redistribution and use in source and binary forms, with or without
      6 // modification, are permitted provided that the following conditions are
      7 // met:
      8 //
      9 //     * Redistributions of source code must retain the above copyright
     10 // notice, this list of conditions and the following disclaimer.
     11 //     * Redistributions in binary form must reproduce the above
     12 // copyright notice, this list of conditions and the following disclaimer
     13 // in the documentation and/or other materials provided with the
     14 // distribution.
     15 //     * Neither the name of Google Inc. nor the names of its
     16 // contributors may be used to endorse or promote products derived from
     17 // this software without specific prior written permission.
     18 //
     19 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
     20 // "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
     21 // LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
     22 // A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
     23 // OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
     24 // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
     25 // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
     26 // DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
     27 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
     28 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
     29 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
     30 
     31 package com.google.protobuf;
     32 
     33 import static com.google.protobuf.UnittestLite.OptionalGroup_extension_lite;
     34 import static com.google.protobuf.UnittestLite.RepeatedGroup_extension_lite;
     35 import static com.google.protobuf.UnittestLite.defaultBoolExtensionLite;
     36 import static com.google.protobuf.UnittestLite.defaultBytesExtensionLite;
     37 import static com.google.protobuf.UnittestLite.defaultCordExtensionLite;
     38 import static com.google.protobuf.UnittestLite.defaultDoubleExtensionLite;
     39 import static com.google.protobuf.UnittestLite.defaultFixed32ExtensionLite;
     40 import static com.google.protobuf.UnittestLite.defaultFixed64ExtensionLite;
     41 import static com.google.protobuf.UnittestLite.defaultFloatExtensionLite;
     42 import static com.google.protobuf.UnittestLite.defaultForeignEnumExtensionLite;
     43 import static com.google.protobuf.UnittestLite.defaultImportEnumExtensionLite;
     44 import static com.google.protobuf.UnittestLite.defaultInt32ExtensionLite;
     45 import static com.google.protobuf.UnittestLite.defaultInt64ExtensionLite;
     46 import static com.google.protobuf.UnittestLite.defaultNestedEnumExtensionLite;
     47 import static com.google.protobuf.UnittestLite.defaultSfixed32ExtensionLite;
     48 import static com.google.protobuf.UnittestLite.defaultSfixed64ExtensionLite;
     49 import static com.google.protobuf.UnittestLite.defaultSint32ExtensionLite;
     50 import static com.google.protobuf.UnittestLite.defaultSint64ExtensionLite;
     51 import static com.google.protobuf.UnittestLite.defaultStringExtensionLite;
     52 import static com.google.protobuf.UnittestLite.defaultStringPieceExtensionLite;
     53 import static com.google.protobuf.UnittestLite.defaultUint32ExtensionLite;
     54 import static com.google.protobuf.UnittestLite.defaultUint64ExtensionLite;
     55 import static com.google.protobuf.UnittestLite.oneofBytesExtensionLite;
     56 import static com.google.protobuf.UnittestLite.oneofNestedMessageExtensionLite;
     57 import static com.google.protobuf.UnittestLite.oneofStringExtensionLite;
     58 import static com.google.protobuf.UnittestLite.oneofUint32ExtensionLite;
     59 import static com.google.protobuf.UnittestLite.optionalBoolExtensionLite;
     60 import static com.google.protobuf.UnittestLite.optionalBytesExtensionLite;
     61 import static com.google.protobuf.UnittestLite.optionalCordExtensionLite;
     62 import static com.google.protobuf.UnittestLite.optionalDoubleExtensionLite;
     63 import static com.google.protobuf.UnittestLite.optionalFixed32ExtensionLite;
     64 import static com.google.protobuf.UnittestLite.optionalFixed64ExtensionLite;
     65 import static com.google.protobuf.UnittestLite.optionalFloatExtensionLite;
     66 import static com.google.protobuf.UnittestLite.optionalForeignEnumExtensionLite;
     67 import static com.google.protobuf.UnittestLite.optionalForeignMessageExtensionLite;
     68 import static com.google.protobuf.UnittestLite.optionalGroupExtensionLite;
     69 import static com.google.protobuf.UnittestLite.optionalImportEnumExtensionLite;
     70 import static com.google.protobuf.UnittestLite.optionalImportMessageExtensionLite;
     71 import static com.google.protobuf.UnittestLite.optionalInt32ExtensionLite;
     72 import static com.google.protobuf.UnittestLite.optionalInt64ExtensionLite;
     73 import static com.google.protobuf.UnittestLite.optionalLazyMessageExtensionLite;
     74 import static com.google.protobuf.UnittestLite.optionalNestedEnumExtensionLite;
     75 import static com.google.protobuf.UnittestLite.optionalNestedMessageExtensionLite;
     76 import static com.google.protobuf.UnittestLite.optionalPublicImportMessageExtensionLite;
     77 import static com.google.protobuf.UnittestLite.optionalSfixed32ExtensionLite;
     78 import static com.google.protobuf.UnittestLite.optionalSfixed64ExtensionLite;
     79 import static com.google.protobuf.UnittestLite.optionalSint32ExtensionLite;
     80 import static com.google.protobuf.UnittestLite.optionalSint64ExtensionLite;
     81 import static com.google.protobuf.UnittestLite.optionalStringExtensionLite;
     82 import static com.google.protobuf.UnittestLite.optionalStringPieceExtensionLite;
     83 import static com.google.protobuf.UnittestLite.optionalUint32ExtensionLite;
     84 import static com.google.protobuf.UnittestLite.optionalUint64ExtensionLite;
     85 import static com.google.protobuf.UnittestLite.packedBoolExtensionLite;
     86 import static com.google.protobuf.UnittestLite.packedDoubleExtensionLite;
     87 import static com.google.protobuf.UnittestLite.packedEnumExtensionLite;
     88 import static com.google.protobuf.UnittestLite.packedFixed32ExtensionLite;
     89 import static com.google.protobuf.UnittestLite.packedFixed64ExtensionLite;
     90 import static com.google.protobuf.UnittestLite.packedFloatExtensionLite;
     91 import static com.google.protobuf.UnittestLite.packedInt32ExtensionLite;
     92 import static com.google.protobuf.UnittestLite.packedInt64ExtensionLite;
     93 import static com.google.protobuf.UnittestLite.packedSfixed32ExtensionLite;
     94 import static com.google.protobuf.UnittestLite.packedSfixed64ExtensionLite;
     95 import static com.google.protobuf.UnittestLite.packedSint32ExtensionLite;
     96 import static com.google.protobuf.UnittestLite.packedSint64ExtensionLite;
     97 import static com.google.protobuf.UnittestLite.packedUint32ExtensionLite;
     98 import static com.google.protobuf.UnittestLite.packedUint64ExtensionLite;
     99 import static com.google.protobuf.UnittestLite.repeatedBoolExtensionLite;
    100 import static com.google.protobuf.UnittestLite.repeatedBytesExtensionLite;
    101 import static com.google.protobuf.UnittestLite.repeatedCordExtensionLite;
    102 import static com.google.protobuf.UnittestLite.repeatedDoubleExtensionLite;
    103 import static com.google.protobuf.UnittestLite.repeatedFixed32ExtensionLite;
    104 import static com.google.protobuf.UnittestLite.repeatedFixed64ExtensionLite;
    105 import static com.google.protobuf.UnittestLite.repeatedFloatExtensionLite;
    106 import static com.google.protobuf.UnittestLite.repeatedForeignEnumExtensionLite;
    107 import static com.google.protobuf.UnittestLite.repeatedForeignMessageExtensionLite;
    108 import static com.google.protobuf.UnittestLite.repeatedGroupExtensionLite;
    109 import static com.google.protobuf.UnittestLite.repeatedImportEnumExtensionLite;
    110 import static com.google.protobuf.UnittestLite.repeatedImportMessageExtensionLite;
    111 import static com.google.protobuf.UnittestLite.repeatedInt32ExtensionLite;
    112 import static com.google.protobuf.UnittestLite.repeatedInt64ExtensionLite;
    113 import static com.google.protobuf.UnittestLite.repeatedLazyMessageExtensionLite;
    114 import static com.google.protobuf.UnittestLite.repeatedNestedEnumExtensionLite;
    115 import static com.google.protobuf.UnittestLite.repeatedNestedMessageExtensionLite;
    116 import static com.google.protobuf.UnittestLite.repeatedSfixed32ExtensionLite;
    117 import static com.google.protobuf.UnittestLite.repeatedSfixed64ExtensionLite;
    118 import static com.google.protobuf.UnittestLite.repeatedSint32ExtensionLite;
    119 import static com.google.protobuf.UnittestLite.repeatedSint64ExtensionLite;
    120 import static com.google.protobuf.UnittestLite.repeatedStringExtensionLite;
    121 import static com.google.protobuf.UnittestLite.repeatedStringPieceExtensionLite;
    122 import static com.google.protobuf.UnittestLite.repeatedUint32ExtensionLite;
    123 import static com.google.protobuf.UnittestLite.repeatedUint64ExtensionLite;
    124 
    125 import com.google.protobuf.UnittestImportLite.ImportEnumLite;
    126 import com.google.protobuf.UnittestImportLite.ImportMessageLite;
    127 import com.google.protobuf.UnittestImportPublicLite.PublicImportMessageLite;
    128 import com.google.protobuf.UnittestLite.ForeignEnumLite;
    129 import com.google.protobuf.UnittestLite.ForeignMessageLite;
    130 import com.google.protobuf.UnittestLite.TestAllExtensionsLite;
    131 import com.google.protobuf.UnittestLite.TestAllTypesLite;
    132 import com.google.protobuf.UnittestLite.TestPackedExtensionsLite;
    133 
    134 /**
    135  * Contains methods for setting fields of {@code TestAllTypesLite}, {@code TestAllExtensionsLite},
    136  * and {@code TestPackedExtensionsLite}. This is analogous to the functionality in TestUtil.java but
    137  * does not depend on the presence of any non-lite protos.
    138  *
    139  * <p>This code is not to be used outside of {@code com.google.protobuf} and
    140  * subpackages.
    141  */
    142 public final class TestUtilLite {
    143   private TestUtilLite() {}
    144 
    145   /** Helper to convert a String to ByteString. */
    146   static ByteString toBytes(String str) {
    147     return ByteString.copyFrom(str.getBytes(Internal.UTF_8));
    148   }
    149 
    150   /**
    151    * Get a {@code TestAllTypesLite.Builder} with all fields set as they would be by
    152    * {@link #setAllFields(TestAllTypesLite.Builder)}.
    153    */
    154   public static TestAllTypesLite.Builder getAllLiteSetBuilder() {
    155     TestAllTypesLite.Builder builder = TestAllTypesLite.newBuilder();
    156     setAllFields(builder);
    157     return builder;
    158   }
    159 
    160   /**
    161    * Get a {@code TestAllExtensionsLite} with all fields set as they would be by
    162    * {@link #setAllExtensions(TestAllExtensionsLite.Builder)}.
    163    */
    164   public static TestAllExtensionsLite getAllLiteExtensionsSet() {
    165     TestAllExtensionsLite.Builder builder = TestAllExtensionsLite.newBuilder();
    166     setAllExtensions(builder);
    167     return builder.build();
    168   }
    169 
    170   public static TestPackedExtensionsLite getLitePackedExtensionsSet() {
    171     TestPackedExtensionsLite.Builder builder = TestPackedExtensionsLite.newBuilder();
    172     setPackedExtensions(builder);
    173     return builder.build();
    174   }
    175 
    176   /**
    177    * Set every field of {@code builder} to the values expected by
    178    * {@code assertAllFieldsSet()}.
    179    */
    180   public static void setAllFields(TestAllTypesLite.Builder builder) {
    181     builder.setOptionalInt32   (101);
    182     builder.setOptionalInt64   (102);
    183     builder.setOptionalUint32  (103);
    184     builder.setOptionalUint64  (104);
    185     builder.setOptionalSint32  (105);
    186     builder.setOptionalSint64  (106);
    187     builder.setOptionalFixed32 (107);
    188     builder.setOptionalFixed64 (108);
    189     builder.setOptionalSfixed32(109);
    190     builder.setOptionalSfixed64(110);
    191     builder.setOptionalFloat   (111);
    192     builder.setOptionalDouble  (112);
    193     builder.setOptionalBool    (true);
    194     builder.setOptionalString  ("115");
    195     builder.setOptionalBytes   (toBytes("116"));
    196 
    197     builder.setOptionalGroup(
    198         TestAllTypesLite.OptionalGroup.newBuilder().setA(117).build());
    199     builder.setOptionalNestedMessage(
    200         TestAllTypesLite.NestedMessage.newBuilder().setBb(118).build());
    201     builder.setOptionalForeignMessage(
    202         ForeignMessageLite.newBuilder().setC(119).build());
    203     builder.setOptionalImportMessage(
    204         ImportMessageLite.newBuilder().setD(120).build());
    205     builder.setOptionalPublicImportMessage(
    206         PublicImportMessageLite.newBuilder().setE(126).build());
    207     builder.setOptionalLazyMessage(
    208         TestAllTypesLite.NestedMessage.newBuilder().setBb(127).build());
    209 
    210     builder.setOptionalNestedEnum (TestAllTypesLite.NestedEnum.BAZ);
    211     builder.setOptionalForeignEnum(ForeignEnumLite.FOREIGN_LITE_BAZ);
    212     builder.setOptionalImportEnum (ImportEnumLite.IMPORT_LITE_BAZ);
    213 
    214     builder.setOptionalStringPiece("124");
    215     builder.setOptionalCord("125");
    216 
    217     // -----------------------------------------------------------------
    218 
    219     builder.addRepeatedInt32   (201);
    220     builder.addRepeatedInt64   (202);
    221     builder.addRepeatedUint32  (203);
    222     builder.addRepeatedUint64  (204);
    223     builder.addRepeatedSint32  (205);
    224     builder.addRepeatedSint64  (206);
    225     builder.addRepeatedFixed32 (207);
    226     builder.addRepeatedFixed64 (208);
    227     builder.addRepeatedSfixed32(209);
    228     builder.addRepeatedSfixed64(210);
    229     builder.addRepeatedFloat   (211);
    230     builder.addRepeatedDouble  (212);
    231     builder.addRepeatedBool    (true);
    232     builder.addRepeatedString  ("215");
    233     builder.addRepeatedBytes   (toBytes("216"));
    234 
    235     builder.addRepeatedGroup(
    236         TestAllTypesLite.RepeatedGroup.newBuilder().setA(217).build());
    237     builder.addRepeatedNestedMessage(
    238         TestAllTypesLite.NestedMessage.newBuilder().setBb(218).build());
    239     builder.addRepeatedForeignMessage(
    240         ForeignMessageLite.newBuilder().setC(219).build());
    241     builder.addRepeatedImportMessage(
    242         ImportMessageLite.newBuilder().setD(220).build());
    243     builder.addRepeatedLazyMessage(
    244         TestAllTypesLite.NestedMessage.newBuilder().setBb(227).build());
    245 
    246     builder.addRepeatedNestedEnum (TestAllTypesLite.NestedEnum.BAR);
    247     builder.addRepeatedForeignEnum(ForeignEnumLite.FOREIGN_LITE_BAR);
    248     builder.addRepeatedImportEnum (ImportEnumLite.IMPORT_LITE_BAR);
    249 
    250     builder.addRepeatedStringPiece("224");
    251     builder.addRepeatedCord("225");
    252 
    253     // Add a second one of each field.
    254     builder.addRepeatedInt32   (301);
    255     builder.addRepeatedInt64   (302);
    256     builder.addRepeatedUint32  (303);
    257     builder.addRepeatedUint64  (304);
    258     builder.addRepeatedSint32  (305);
    259     builder.addRepeatedSint64  (306);
    260     builder.addRepeatedFixed32 (307);
    261     builder.addRepeatedFixed64 (308);
    262     builder.addRepeatedSfixed32(309);
    263     builder.addRepeatedSfixed64(310);
    264     builder.addRepeatedFloat   (311);
    265     builder.addRepeatedDouble  (312);
    266     builder.addRepeatedBool    (false);
    267     builder.addRepeatedString  ("315");
    268     builder.addRepeatedBytes   (toBytes("316"));
    269 
    270     builder.addRepeatedGroup(
    271         TestAllTypesLite.RepeatedGroup.newBuilder().setA(317).build());
    272     builder.addRepeatedNestedMessage(
    273         TestAllTypesLite.NestedMessage.newBuilder().setBb(318).build());
    274     builder.addRepeatedForeignMessage(
    275         ForeignMessageLite.newBuilder().setC(319).build());
    276     builder.addRepeatedImportMessage(
    277         ImportMessageLite.newBuilder().setD(320).build());
    278     builder.addRepeatedLazyMessage(
    279         TestAllTypesLite.NestedMessage.newBuilder().setBb(327).build());
    280 
    281     builder.addRepeatedNestedEnum (TestAllTypesLite.NestedEnum.BAZ);
    282     builder.addRepeatedForeignEnum(ForeignEnumLite.FOREIGN_LITE_BAZ);
    283     builder.addRepeatedImportEnum (ImportEnumLite.IMPORT_LITE_BAZ);
    284 
    285     builder.addRepeatedStringPiece("324");
    286     builder.addRepeatedCord("325");
    287 
    288     // -----------------------------------------------------------------
    289 
    290     builder.setDefaultInt32   (401);
    291     builder.setDefaultInt64   (402);
    292     builder.setDefaultUint32  (403);
    293     builder.setDefaultUint64  (404);
    294     builder.setDefaultSint32  (405);
    295     builder.setDefaultSint64  (406);
    296     builder.setDefaultFixed32 (407);
    297     builder.setDefaultFixed64 (408);
    298     builder.setDefaultSfixed32(409);
    299     builder.setDefaultSfixed64(410);
    300     builder.setDefaultFloat   (411);
    301     builder.setDefaultDouble  (412);
    302     builder.setDefaultBool    (false);
    303     builder.setDefaultString  ("415");
    304     builder.setDefaultBytes   (toBytes("416"));
    305 
    306     builder.setDefaultNestedEnum (TestAllTypesLite.NestedEnum.FOO);
    307     builder.setDefaultForeignEnum(ForeignEnumLite.FOREIGN_LITE_FOO);
    308     builder.setDefaultImportEnum (ImportEnumLite.IMPORT_LITE_FOO);
    309 
    310     builder.setDefaultStringPiece("424");
    311     builder.setDefaultCord("425");
    312 
    313     builder.setOneofUint32(601);
    314     builder.setOneofNestedMessage(
    315         TestAllTypesLite.NestedMessage.newBuilder().setBb(602).build());
    316     builder.setOneofString("603");
    317     builder.setOneofBytes(toBytes("604"));
    318   }
    319 
    320   /**
    321    * Get an unmodifiable {@link ExtensionRegistryLite} containing all the
    322    * extensions of {@code TestAllExtensionsLite}.
    323    */
    324   public static ExtensionRegistryLite getExtensionRegistryLite() {
    325     ExtensionRegistryLite registry = ExtensionRegistryLite.newInstance();
    326     registerAllExtensionsLite(registry);
    327     return registry.getUnmodifiable();
    328   }
    329 
    330   /**
    331    * Register all of {@code TestAllExtensionsLite}'s extensions with the
    332    * given {@link ExtensionRegistryLite}.
    333    */
    334   public static void registerAllExtensionsLite(ExtensionRegistryLite registry) {
    335     UnittestLite.registerAllExtensions(registry);
    336   }
    337 
    338   // ===================================================================
    339   // Lite extensions
    340 
    341   /**
    342    * Set every field of {@code message} to the values expected by
    343    * {@code assertAllExtensionsSet()}.
    344    */
    345   public static void setAllExtensions(TestAllExtensionsLite.Builder message) {
    346     message.setExtension(optionalInt32ExtensionLite   , 101);
    347     message.setExtension(optionalInt64ExtensionLite   , 102L);
    348     message.setExtension(optionalUint32ExtensionLite  , 103);
    349     message.setExtension(optionalUint64ExtensionLite  , 104L);
    350     message.setExtension(optionalSint32ExtensionLite  , 105);
    351     message.setExtension(optionalSint64ExtensionLite  , 106L);
    352     message.setExtension(optionalFixed32ExtensionLite , 107);
    353     message.setExtension(optionalFixed64ExtensionLite , 108L);
    354     message.setExtension(optionalSfixed32ExtensionLite, 109);
    355     message.setExtension(optionalSfixed64ExtensionLite, 110L);
    356     message.setExtension(optionalFloatExtensionLite   , 111F);
    357     message.setExtension(optionalDoubleExtensionLite  , 112D);
    358     message.setExtension(optionalBoolExtensionLite    , true);
    359     message.setExtension(optionalStringExtensionLite  , "115");
    360     message.setExtension(optionalBytesExtensionLite   , toBytes("116"));
    361 
    362     message.setExtension(optionalGroupExtensionLite,
    363       OptionalGroup_extension_lite.newBuilder().setA(117).build());
    364     message.setExtension(optionalNestedMessageExtensionLite,
    365       TestAllTypesLite.NestedMessage.newBuilder().setBb(118).build());
    366     message.setExtension(optionalForeignMessageExtensionLite,
    367       ForeignMessageLite.newBuilder().setC(119).build());
    368     message.setExtension(optionalImportMessageExtensionLite,
    369       ImportMessageLite.newBuilder().setD(120).build());
    370     message.setExtension(optionalPublicImportMessageExtensionLite,
    371       PublicImportMessageLite.newBuilder().setE(126).build());
    372     message.setExtension(optionalLazyMessageExtensionLite,
    373       TestAllTypesLite.NestedMessage.newBuilder().setBb(127).build());
    374 
    375     message.setExtension(optionalNestedEnumExtensionLite, TestAllTypesLite.NestedEnum.BAZ);
    376     message.setExtension(optionalForeignEnumExtensionLite, ForeignEnumLite.FOREIGN_LITE_BAZ);
    377     message.setExtension(optionalImportEnumExtensionLite, ImportEnumLite.IMPORT_LITE_BAZ);
    378 
    379     message.setExtension(optionalStringPieceExtensionLite, "124");
    380     message.setExtension(optionalCordExtensionLite, "125");
    381 
    382     // -----------------------------------------------------------------
    383 
    384     message.addExtension(repeatedInt32ExtensionLite   , 201);
    385     message.addExtension(repeatedInt64ExtensionLite   , 202L);
    386     message.addExtension(repeatedUint32ExtensionLite  , 203);
    387     message.addExtension(repeatedUint64ExtensionLite  , 204L);
    388     message.addExtension(repeatedSint32ExtensionLite  , 205);
    389     message.addExtension(repeatedSint64ExtensionLite  , 206L);
    390     message.addExtension(repeatedFixed32ExtensionLite , 207);
    391     message.addExtension(repeatedFixed64ExtensionLite , 208L);
    392     message.addExtension(repeatedSfixed32ExtensionLite, 209);
    393     message.addExtension(repeatedSfixed64ExtensionLite, 210L);
    394     message.addExtension(repeatedFloatExtensionLite   , 211F);
    395     message.addExtension(repeatedDoubleExtensionLite  , 212D);
    396     message.addExtension(repeatedBoolExtensionLite    , true);
    397     message.addExtension(repeatedStringExtensionLite  , "215");
    398     message.addExtension(repeatedBytesExtensionLite   , toBytes("216"));
    399 
    400     message.addExtension(repeatedGroupExtensionLite,
    401       RepeatedGroup_extension_lite.newBuilder().setA(217).build());
    402     message.addExtension(repeatedNestedMessageExtensionLite,
    403       TestAllTypesLite.NestedMessage.newBuilder().setBb(218).build());
    404     message.addExtension(repeatedForeignMessageExtensionLite,
    405       ForeignMessageLite.newBuilder().setC(219).build());
    406     message.addExtension(repeatedImportMessageExtensionLite,
    407       ImportMessageLite.newBuilder().setD(220).build());
    408     message.addExtension(repeatedLazyMessageExtensionLite,
    409       TestAllTypesLite.NestedMessage.newBuilder().setBb(227).build());
    410 
    411     message.addExtension(repeatedNestedEnumExtensionLite, TestAllTypesLite.NestedEnum.BAR);
    412     message.addExtension(repeatedForeignEnumExtensionLite, ForeignEnumLite.FOREIGN_LITE_BAR);
    413     message.addExtension(repeatedImportEnumExtensionLite, ImportEnumLite.IMPORT_LITE_BAR);
    414 
    415     message.addExtension(repeatedStringPieceExtensionLite, "224");
    416     message.addExtension(repeatedCordExtensionLite, "225");
    417 
    418     // Add a second one of each field.
    419     message.addExtension(repeatedInt32ExtensionLite   , 301);
    420     message.addExtension(repeatedInt64ExtensionLite   , 302L);
    421     message.addExtension(repeatedUint32ExtensionLite  , 303);
    422     message.addExtension(repeatedUint64ExtensionLite  , 304L);
    423     message.addExtension(repeatedSint32ExtensionLite  , 305);
    424     message.addExtension(repeatedSint64ExtensionLite  , 306L);
    425     message.addExtension(repeatedFixed32ExtensionLite , 307);
    426     message.addExtension(repeatedFixed64ExtensionLite , 308L);
    427     message.addExtension(repeatedSfixed32ExtensionLite, 309);
    428     message.addExtension(repeatedSfixed64ExtensionLite, 310L);
    429     message.addExtension(repeatedFloatExtensionLite   , 311F);
    430     message.addExtension(repeatedDoubleExtensionLite  , 312D);
    431     message.addExtension(repeatedBoolExtensionLite    , false);
    432     message.addExtension(repeatedStringExtensionLite  , "315");
    433     message.addExtension(repeatedBytesExtensionLite   , toBytes("316"));
    434 
    435     message.addExtension(repeatedGroupExtensionLite,
    436       RepeatedGroup_extension_lite.newBuilder().setA(317).build());
    437     message.addExtension(repeatedNestedMessageExtensionLite,
    438       TestAllTypesLite.NestedMessage.newBuilder().setBb(318).build());
    439     message.addExtension(repeatedForeignMessageExtensionLite,
    440       ForeignMessageLite.newBuilder().setC(319).build());
    441     message.addExtension(repeatedImportMessageExtensionLite,
    442       ImportMessageLite.newBuilder().setD(320).build());
    443     message.addExtension(repeatedLazyMessageExtensionLite,
    444       TestAllTypesLite.NestedMessage.newBuilder().setBb(327).build());
    445 
    446     message.addExtension(repeatedNestedEnumExtensionLite, TestAllTypesLite.NestedEnum.BAZ);
    447     message.addExtension(repeatedForeignEnumExtensionLite, ForeignEnumLite.FOREIGN_LITE_BAZ);
    448     message.addExtension(repeatedImportEnumExtensionLite, ImportEnumLite.IMPORT_LITE_BAZ);
    449 
    450     message.addExtension(repeatedStringPieceExtensionLite, "324");
    451     message.addExtension(repeatedCordExtensionLite, "325");
    452 
    453     // -----------------------------------------------------------------
    454 
    455     message.setExtension(defaultInt32ExtensionLite   , 401);
    456     message.setExtension(defaultInt64ExtensionLite   , 402L);
    457     message.setExtension(defaultUint32ExtensionLite  , 403);
    458     message.setExtension(defaultUint64ExtensionLite  , 404L);
    459     message.setExtension(defaultSint32ExtensionLite  , 405);
    460     message.setExtension(defaultSint64ExtensionLite  , 406L);
    461     message.setExtension(defaultFixed32ExtensionLite , 407);
    462     message.setExtension(defaultFixed64ExtensionLite , 408L);
    463     message.setExtension(defaultSfixed32ExtensionLite, 409);
    464     message.setExtension(defaultSfixed64ExtensionLite, 410L);
    465     message.setExtension(defaultFloatExtensionLite   , 411F);
    466     message.setExtension(defaultDoubleExtensionLite  , 412D);
    467     message.setExtension(defaultBoolExtensionLite    , false);
    468     message.setExtension(defaultStringExtensionLite  , "415");
    469     message.setExtension(defaultBytesExtensionLite   , toBytes("416"));
    470 
    471     message.setExtension(defaultNestedEnumExtensionLite, TestAllTypesLite.NestedEnum.FOO);
    472     message.setExtension(defaultForeignEnumExtensionLite, ForeignEnumLite.FOREIGN_LITE_FOO);
    473     message.setExtension(defaultImportEnumExtensionLite, ImportEnumLite.IMPORT_LITE_FOO);
    474 
    475     message.setExtension(defaultStringPieceExtensionLite, "424");
    476     message.setExtension(defaultCordExtensionLite, "425");
    477 
    478     message.setExtension(oneofUint32ExtensionLite, 601);
    479     message.setExtension(oneofNestedMessageExtensionLite,
    480       TestAllTypesLite.NestedMessage.newBuilder().setBb(602).build());
    481     message.setExtension(oneofStringExtensionLite, "603");
    482     message.setExtension(oneofBytesExtensionLite, toBytes("604"));
    483   }
    484 
    485   // -------------------------------------------------------------------
    486 
    487   /**
    488    * Modify the repeated extensions of {@code message} to contain the values
    489    * expected by {@code assertRepeatedExtensionsModified()}.
    490    */
    491   public static void modifyRepeatedExtensions(
    492       TestAllExtensionsLite.Builder message) {
    493     message.setExtension(repeatedInt32ExtensionLite   , 1, 501);
    494     message.setExtension(repeatedInt64ExtensionLite   , 1, 502L);
    495     message.setExtension(repeatedUint32ExtensionLite  , 1, 503);
    496     message.setExtension(repeatedUint64ExtensionLite  , 1, 504L);
    497     message.setExtension(repeatedSint32ExtensionLite  , 1, 505);
    498     message.setExtension(repeatedSint64ExtensionLite  , 1, 506L);
    499     message.setExtension(repeatedFixed32ExtensionLite , 1, 507);
    500     message.setExtension(repeatedFixed64ExtensionLite , 1, 508L);
    501     message.setExtension(repeatedSfixed32ExtensionLite, 1, 509);
    502     message.setExtension(repeatedSfixed64ExtensionLite, 1, 510L);
    503     message.setExtension(repeatedFloatExtensionLite   , 1, 511F);
    504     message.setExtension(repeatedDoubleExtensionLite  , 1, 512D);
    505     message.setExtension(repeatedBoolExtensionLite    , 1, true);
    506     message.setExtension(repeatedStringExtensionLite  , 1, "515");
    507     message.setExtension(repeatedBytesExtensionLite   , 1, toBytes("516"));
    508 
    509     message.setExtension(repeatedGroupExtensionLite, 1,
    510       RepeatedGroup_extension_lite.newBuilder().setA(517).build());
    511     message.setExtension(repeatedNestedMessageExtensionLite, 1,
    512       TestAllTypesLite.NestedMessage.newBuilder().setBb(518).build());
    513     message.setExtension(repeatedForeignMessageExtensionLite, 1,
    514       ForeignMessageLite.newBuilder().setC(519).build());
    515     message.setExtension(repeatedImportMessageExtensionLite, 1,
    516       ImportMessageLite.newBuilder().setD(520).build());
    517     message.setExtension(repeatedLazyMessageExtensionLite, 1,
    518       TestAllTypesLite.NestedMessage.newBuilder().setBb(527).build());
    519 
    520     message.setExtension(repeatedNestedEnumExtensionLite , 1, TestAllTypesLite.NestedEnum.FOO);
    521     message.setExtension(repeatedForeignEnumExtensionLite, 1, ForeignEnumLite.FOREIGN_LITE_FOO);
    522     message.setExtension(repeatedImportEnumExtensionLite , 1, ImportEnumLite.IMPORT_LITE_FOO);
    523 
    524     message.setExtension(repeatedStringPieceExtensionLite, 1, "524");
    525     message.setExtension(repeatedCordExtensionLite, 1, "525");
    526   }
    527 
    528   public static void setPackedExtensions(TestPackedExtensionsLite.Builder message) {
    529     message.addExtension(packedInt32ExtensionLite   , 601);
    530     message.addExtension(packedInt64ExtensionLite   , 602L);
    531     message.addExtension(packedUint32ExtensionLite  , 603);
    532     message.addExtension(packedUint64ExtensionLite  , 604L);
    533     message.addExtension(packedSint32ExtensionLite  , 605);
    534     message.addExtension(packedSint64ExtensionLite  , 606L);
    535     message.addExtension(packedFixed32ExtensionLite , 607);
    536     message.addExtension(packedFixed64ExtensionLite , 608L);
    537     message.addExtension(packedSfixed32ExtensionLite, 609);
    538     message.addExtension(packedSfixed64ExtensionLite, 610L);
    539     message.addExtension(packedFloatExtensionLite   , 611F);
    540     message.addExtension(packedDoubleExtensionLite  , 612D);
    541     message.addExtension(packedBoolExtensionLite    , true);
    542     message.addExtension(packedEnumExtensionLite, ForeignEnumLite.FOREIGN_LITE_BAR);
    543     // Add a second one of each field.
    544     message.addExtension(packedInt32ExtensionLite   , 701);
    545     message.addExtension(packedInt64ExtensionLite   , 702L);
    546     message.addExtension(packedUint32ExtensionLite  , 703);
    547     message.addExtension(packedUint64ExtensionLite  , 704L);
    548     message.addExtension(packedSint32ExtensionLite  , 705);
    549     message.addExtension(packedSint64ExtensionLite  , 706L);
    550     message.addExtension(packedFixed32ExtensionLite , 707);
    551     message.addExtension(packedFixed64ExtensionLite , 708L);
    552     message.addExtension(packedSfixed32ExtensionLite, 709);
    553     message.addExtension(packedSfixed64ExtensionLite, 710L);
    554     message.addExtension(packedFloatExtensionLite   , 711F);
    555     message.addExtension(packedDoubleExtensionLite  , 712D);
    556     message.addExtension(packedBoolExtensionLite    , false);
    557     message.addExtension(packedEnumExtensionLite, ForeignEnumLite.FOREIGN_LITE_BAZ);
    558   }
    559 }
    560