~ubuntu-branches/debian/stretch/protobuf/stretch

« back to all changes in this revision

Viewing changes to java/src/test/java/com/google/protobuf/UnknownFieldSetTest.java

  • Committer: Package Import Robot
  • Author(s): Robert S. Edmonds
  • Date: 2014-09-11 22:50:10 UTC
  • mfrom: (10.1.9 experimental)
  • Revision ID: package-import@ubuntu.com-20140911225010-wt4yo9dpc1fzuq5g
Tags: 2.6.0-3
Upload to unstable.

Show diffs side-by-side

added added

removed removed

Lines of Context:
31
31
package com.google.protobuf;
32
32
 
33
33
import protobuf_unittest.UnittestProto;
 
34
import protobuf_unittest.UnittestProto.ForeignEnum;
34
35
import protobuf_unittest.UnittestProto.TestAllExtensions;
35
36
import protobuf_unittest.UnittestProto.TestAllTypes;
36
37
import protobuf_unittest.UnittestProto.TestEmptyMessage;
37
38
import protobuf_unittest.UnittestProto.TestEmptyMessageWithExtensions;
 
39
import protobuf_unittest.UnittestProto.TestPackedExtensions;
 
40
import protobuf_unittest.UnittestProto.TestPackedTypes;
38
41
 
39
42
import junit.framework.TestCase;
40
43
 
204
207
      TestEmptyMessage.newBuilder().mergeFrom(emptyMessage).clear().build();
205
208
    assertEquals(0, message.getSerializedSize());
206
209
  }
 
210
  
 
211
  public void testClearField() throws Exception {
 
212
    int fieldNumber = unknownFields.asMap().keySet().iterator().next();
 
213
    UnknownFieldSet fields =
 
214
        UnknownFieldSet.newBuilder().mergeFrom(unknownFields).clearField(fieldNumber).build();
 
215
    assertFalse(fields.hasField(fieldNumber));
 
216
  }
207
217
 
208
218
  public void testParseKnownAndUnknown() throws Exception {
209
219
    // Test mixing known and unknown fields when parsing.
434
444
    assertEquals(copy, set);
435
445
    assertEquals(set.hashCode(), copy.hashCode());
436
446
  }
 
447
 
 
448
  // =================================================================
 
449
 
 
450
  public void testSerializeLite() throws Exception {
 
451
    UnittestLite.TestEmptyMessageLite emptyMessageLite =
 
452
        UnittestLite.TestEmptyMessageLite.parseFrom(allFieldsData);
 
453
    assertEquals(allFieldsData.size(), emptyMessageLite.getSerializedSize());
 
454
    ByteString data = emptyMessageLite.toByteString();
 
455
    TestAllTypes message = TestAllTypes.parseFrom(data);
 
456
    TestUtil.assertAllFieldsSet(message);
 
457
    assertEquals(allFieldsData, data);
 
458
  }
 
459
 
 
460
  public void testAllExtensionsLite() throws Exception {
 
461
    TestAllExtensions allExtensions = TestUtil.getAllExtensionsSet();
 
462
    ByteString allExtensionsData = allExtensions.toByteString();
 
463
    UnittestLite.TestEmptyMessageLite emptyMessageLite =
 
464
        UnittestLite.TestEmptyMessageLite.PARSER.parseFrom(allExtensionsData);
 
465
    ByteString data = emptyMessageLite.toByteString();
 
466
    TestAllExtensions message =
 
467
        TestAllExtensions.parseFrom(data, TestUtil.getExtensionRegistry());
 
468
    TestUtil.assertAllExtensionsSet(message);
 
469
    assertEquals(allExtensionsData, data);
 
470
  }
 
471
 
 
472
  public void testAllPackedFieldsLite() throws Exception {
 
473
    TestPackedTypes allPackedFields = TestUtil.getPackedSet();
 
474
    ByteString allPackedData = allPackedFields.toByteString();
 
475
    UnittestLite.TestEmptyMessageLite emptyMessageLite =
 
476
        UnittestLite.TestEmptyMessageLite.parseFrom(allPackedData);
 
477
    ByteString data = emptyMessageLite.toByteString();
 
478
    TestPackedTypes message =
 
479
        TestPackedTypes.parseFrom(data, TestUtil.getExtensionRegistry());
 
480
    TestUtil.assertPackedFieldsSet(message);
 
481
    assertEquals(allPackedData, data);
 
482
  }
 
483
 
 
484
  public void testAllPackedExtensionsLite() throws Exception {
 
485
    TestPackedExtensions allPackedExtensions = TestUtil.getPackedExtensionsSet();
 
486
    ByteString allPackedExtensionsData = allPackedExtensions.toByteString();
 
487
    UnittestLite.TestEmptyMessageLite emptyMessageLite =
 
488
        UnittestLite.TestEmptyMessageLite.parseFrom(allPackedExtensionsData);
 
489
    ByteString data = emptyMessageLite.toByteString();
 
490
    TestPackedExtensions message =
 
491
        TestPackedExtensions.parseFrom(data, TestUtil.getExtensionRegistry());
 
492
    TestUtil.assertPackedExtensionsSet(message);
 
493
    assertEquals(allPackedExtensionsData, data);
 
494
  }
 
495
 
 
496
  public void testCopyFromLite() throws Exception {
 
497
    UnittestLite.TestEmptyMessageLite emptyMessageLite =
 
498
        UnittestLite.TestEmptyMessageLite.parseFrom(allFieldsData);
 
499
    UnittestLite.TestEmptyMessageLite emptyMessageLite2 =
 
500
        UnittestLite.TestEmptyMessageLite.newBuilder()
 
501
        .mergeFrom(emptyMessageLite).build();
 
502
    assertEquals(emptyMessageLite.toByteString(), emptyMessageLite2.toByteString());
 
503
  }
 
504
 
 
505
  public void testMergeFromLite() throws Exception {
 
506
    TestAllTypes message1 = TestAllTypes.newBuilder()
 
507
        .setOptionalInt32(1)
 
508
        .setOptionalString("foo")
 
509
        .addRepeatedString("bar")
 
510
        .setOptionalNestedEnum(TestAllTypes.NestedEnum.BAZ)
 
511
        .build();
 
512
 
 
513
    TestAllTypes message2 = TestAllTypes.newBuilder()
 
514
        .setOptionalInt64(2)
 
515
        .setOptionalString("baz")
 
516
        .addRepeatedString("qux")
 
517
        .setOptionalForeignEnum(ForeignEnum.FOREIGN_BAZ)
 
518
        .build();
 
519
 
 
520
    ByteString data1 = message1.toByteString();
 
521
    UnittestLite.TestEmptyMessageLite emptyMessageLite1 =
 
522
        UnittestLite.TestEmptyMessageLite.parseFrom(data1);
 
523
    ByteString data2 = message2.toByteString();
 
524
    UnittestLite.TestEmptyMessageLite emptyMessageLite2 =
 
525
        UnittestLite.TestEmptyMessageLite.parseFrom(data2);
 
526
 
 
527
    message1 = TestAllTypes.newBuilder(message1).mergeFrom(message2).build();
 
528
    emptyMessageLite1 = UnittestLite.TestEmptyMessageLite.newBuilder(emptyMessageLite1)
 
529
                        .mergeFrom(emptyMessageLite2).build();
 
530
 
 
531
    data1 = emptyMessageLite1.toByteString();
 
532
    message2 = TestAllTypes.parseFrom(data1);
 
533
 
 
534
    assertEquals(message1, message2);
 
535
  }
 
536
 
 
537
  public void testWrongTypeTreatedAsUnknownLite() throws Exception {
 
538
    // Test that fields of the wrong wire type are treated like unknown fields
 
539
    // when parsing.
 
540
 
 
541
    ByteString bizarroData = getBizarroData();
 
542
    TestAllTypes allTypesMessage = TestAllTypes.parseFrom(bizarroData);
 
543
    UnittestLite.TestEmptyMessageLite emptyMessageLite =
 
544
        UnittestLite.TestEmptyMessageLite.parseFrom(bizarroData);
 
545
    ByteString data = emptyMessageLite.toByteString();
 
546
    TestAllTypes allTypesMessage2 = TestAllTypes.parseFrom(data);
 
547
 
 
548
    assertEquals(allTypesMessage.toString(), allTypesMessage2.toString());
 
549
  }
 
550
 
 
551
  public void testUnknownExtensionsLite() throws Exception {
 
552
    // Make sure fields are properly parsed to the UnknownFieldSet even when
 
553
    // they are declared as extension numbers.
 
554
 
 
555
    UnittestLite.TestEmptyMessageWithExtensionsLite message =
 
556
      UnittestLite.TestEmptyMessageWithExtensionsLite.parseFrom(allFieldsData);
 
557
 
 
558
    assertEquals(allFieldsData, message.toByteString());
 
559
  }
 
560
 
 
561
  public void testWrongExtensionTypeTreatedAsUnknownLite() throws Exception {
 
562
    // Test that fields of the wrong wire type are treated like unknown fields
 
563
    // when parsing extensions.
 
564
 
 
565
    ByteString bizarroData = getBizarroData();
 
566
    TestAllExtensions allExtensionsMessage =
 
567
      TestAllExtensions.parseFrom(bizarroData);
 
568
    UnittestLite.TestEmptyMessageLite emptyMessageLite =
 
569
        UnittestLite.TestEmptyMessageLite.parseFrom(bizarroData);
 
570
 
 
571
    // All fields should have been interpreted as unknown, so the byte strings
 
572
    // should be the same.
 
573
    assertEquals(emptyMessageLite.toByteString(),
 
574
                 allExtensionsMessage.toByteString());
 
575
  }
 
576
 
 
577
  public void testParseUnknownEnumValueLite() throws Exception {
 
578
    Descriptors.FieldDescriptor singularField =
 
579
      TestAllTypes.getDescriptor().findFieldByName("optional_nested_enum");
 
580
    Descriptors.FieldDescriptor repeatedField =
 
581
      TestAllTypes.getDescriptor().findFieldByName("repeated_nested_enum");
 
582
    assertNotNull(singularField);
 
583
    assertNotNull(repeatedField);
 
584
 
 
585
    ByteString data =
 
586
      UnknownFieldSet.newBuilder()
 
587
        .addField(singularField.getNumber(),
 
588
          UnknownFieldSet.Field.newBuilder()
 
589
            .addVarint(TestAllTypes.NestedEnum.BAR.getNumber())
 
590
            .addVarint(5)   // not valid
 
591
            .build())
 
592
        .addField(repeatedField.getNumber(),
 
593
          UnknownFieldSet.Field.newBuilder()
 
594
            .addVarint(TestAllTypes.NestedEnum.FOO.getNumber())
 
595
            .addVarint(4)   // not valid
 
596
            .addVarint(TestAllTypes.NestedEnum.BAZ.getNumber())
 
597
            .addVarint(6)   // not valid
 
598
            .build())
 
599
        .build()
 
600
        .toByteString();
 
601
 
 
602
    UnittestLite.TestEmptyMessageLite emptyMessageLite =
 
603
        UnittestLite.TestEmptyMessageLite.parseFrom(data);
 
604
    data = emptyMessageLite.toByteString();
 
605
 
 
606
    {
 
607
      TestAllTypes message = TestAllTypes.parseFrom(data);
 
608
      assertEquals(TestAllTypes.NestedEnum.BAR,
 
609
                   message.getOptionalNestedEnum());
 
610
      assertEquals(
 
611
        Arrays.asList(TestAllTypes.NestedEnum.FOO, TestAllTypes.NestedEnum.BAZ),
 
612
        message.getRepeatedNestedEnumList());
 
613
      assertEquals(Arrays.asList(5L),
 
614
                   message.getUnknownFields()
 
615
                          .getField(singularField.getNumber())
 
616
                          .getVarintList());
 
617
      assertEquals(Arrays.asList(4L, 6L),
 
618
                   message.getUnknownFields()
 
619
                          .getField(repeatedField.getNumber())
 
620
                          .getVarintList());
 
621
    }
 
622
 
 
623
    {
 
624
      TestAllExtensions message =
 
625
        TestAllExtensions.parseFrom(data, TestUtil.getExtensionRegistry());
 
626
      assertEquals(TestAllTypes.NestedEnum.BAR,
 
627
        message.getExtension(UnittestProto.optionalNestedEnumExtension));
 
628
      assertEquals(
 
629
        Arrays.asList(TestAllTypes.NestedEnum.FOO, TestAllTypes.NestedEnum.BAZ),
 
630
        message.getExtension(UnittestProto.repeatedNestedEnumExtension));
 
631
      assertEquals(Arrays.asList(5L),
 
632
                   message.getUnknownFields()
 
633
                          .getField(singularField.getNumber())
 
634
                          .getVarintList());
 
635
      assertEquals(Arrays.asList(4L, 6L),
 
636
                   message.getUnknownFields()
 
637
                          .getField(repeatedField.getNumber())
 
638
                          .getVarintList());
 
639
    }
 
640
  }
 
641
 
 
642
  public void testClearLite() throws Exception {
 
643
    UnittestLite.TestEmptyMessageLite emptyMessageLite1 =
 
644
        UnittestLite.TestEmptyMessageLite.parseFrom(allFieldsData);
 
645
    UnittestLite.TestEmptyMessageLite emptyMessageLite2 =
 
646
        UnittestLite.TestEmptyMessageLite.newBuilder()
 
647
        .mergeFrom(emptyMessageLite1).clear().build();
 
648
    assertEquals(0, emptyMessageLite2.getSerializedSize());
 
649
    ByteString data = emptyMessageLite2.toByteString();
 
650
    assertEquals(0, data.size());
 
651
  }
 
652
 
437
653
}