예제 #1
0
 def test_basic_partial_equality(self):
     expected = text_format.Parse(_TEST_PROTO, test_pb2.Foo())
     actual = text_format.Parse(_TEST_PROTO, test_pb2.Foo())
     opts = compare.ProtoComparisonOptions(
         scope=compare.ProtoComparisonScope.PARTIAL)
     self.assertProtoCompareToBe(
         compare.proto_compare(actual, expected, opts=opts), True)
예제 #2
0
    def test_ignore_field_single(self):
        expected = text_format.Parse('baz { status: ERROR }', test_pb2.Foo())
        actual = text_format.Parse('', test_pb2.Foo())
        assert_that(actual, not_(equals_proto(expected)))

        assert_that(actual,
                    ignoring_field_paths({('baz',)}, equals_proto(expected)))
예제 #3
0
    def test_ignore_field_single(self):
        expected = text_format.Parse('baz { status: ERROR }', test_pb2.Foo())
        actual = text_format.Parse('', test_pb2.Foo())
        self.assertProtoCompareToBe(compare.proto_compare(actual, expected),
                                    False)

        opts = compare.ProtoComparisonOptions(ignore_field_paths={('baz', )})
        self.assertProtoCompareToBe(
            compare.proto_compare(actual, expected, opts=opts), True)
예제 #4
0
    def test_repeated_field_partial_inequality(self):
        expected = text_format.Parse(_TEST_PROTO, test_pb2.Foo())
        actual = text_format.Parse(_TEST_PROTO, test_pb2.Foo())
        expected.bars.add().progress = 0.1

        opts = compare.ProtoComparisonOptions(
            scope=compare.ProtoComparisonScope.PARTIAL)
        self.assertProtoCompareToBe(
            compare.proto_compare(actual, expected, opts=opts), False)
예제 #5
0
    def test_partial_inequality_missing_field(self):
        expected = text_format.Parse(_TEST_PROTO, test_pb2.Foo())
        actual = text_format.Parse(_TEST_PROTO, test_pb2.Foo())
        actual.baz.Clear()

        opts = compare.ProtoComparisonOptions(
            scope=compare.ProtoComparisonScope.PARTIAL)
        self.assertProtoCompareToBe(
            compare.proto_compare(actual, expected, opts=opts), False)
예제 #6
0
    def test_ignore_field_repeated(self):
        expected = text_format.Parse(_TEST_PROTO, test_pb2.Foo())
        actual = text_format.Parse(_TEST_PROTO, test_pb2.Foo())
        del actual.bars[:]
        self.assertProtoCompareToBe(compare.proto_compare(actual, expected),
                                    False)

        opts = compare.ProtoComparisonOptions(ignore_field_paths={('bars', )})
        self.assertProtoCompareToBe(
            compare.proto_compare(actual, expected, opts=opts), True)
예제 #7
0
    def test_aproximate_modified_equality_double(self):
        expected = text_format.Parse(_TEST_PROTO, test_pb2.Foo())
        actual = text_format.Parse(_TEST_PROTO, test_pb2.Foo())
        expected.bars[0].precision = 2.3 + 1.1e-15
        actual.bars[0].precision = 2.3 + 1.2e-15
        self.assertProtoCompareToBe(compare.proto_compare(actual, expected),
                                    False)

        opts = compare.ProtoComparisonOptions(
            float_comp=compare.ProtoFloatComparison.APPROXIMATE)
        self.assertProtoCompareToBe(
            compare.proto_compare(actual, expected, opts=opts), True)
예제 #8
0
    def test_compare_proto_repeated_fields_ignoring_order(self):
        expected = text_format.Parse(_TEST_PROTO, test_pb2.Foo())
        actual = text_format.Parse(_TEST_PROTO, test_pb2.Foo())
        reversed_bars = actual.bars[::-1]
        del actual.bars[:]
        actual.bars.extend(reversed_bars)
        self.assertProtoCompareToBe(compare.proto_compare(actual, expected),
                                    False)

        opts = compare.ProtoComparisonOptions(
            repeated_field_comp=compare.RepeatedFieldComparison.AS_SET)
        self.assertProtoCompareToBe(
            compare.proto_compare(actual, expected, opts=opts), True)
예제 #9
0
    def test_proto_comparable(self):
        self.assertTrue(
            compare.proto_comparable(test_pb2.Foo(), test_pb2.Foo()))
        self.assertFalse(
            compare.proto_comparable(test_pb2.Foo(), test_pb2.Bar()))
        self.assertFalse(
            compare.proto_comparable(test_pb2.Baz(), test_pb2.Bar()))

        foo1 = test_pb2.Foo()
        foo1.baz.status = test_pb2.Baz.OK
        foo2 = test_pb2.Foo()
        bar = test_pb2.Bar()
        bar.progress = 0.75
        foo2.bars.append(bar)
        self.assertTrue(compare.proto_comparable(foo1, foo1))
        self.assertTrue(compare.proto_comparable(foo1, foo2))
        self.assertFalse(compare.proto_comparable(foo1, bar))
예제 #10
0
    def test_within_fraction_or_margin_float(self):
        expected = text_format.Parse(_TEST_PROTO, test_pb2.Foo())
        actual = text_format.Parse(_TEST_PROTO, test_pb2.Foo())
        expected.bars[0].progress = 100.0
        actual.bars[0].progress = 109.9
        self.assertProtoCompareToBe(compare.proto_compare(actual, expected),
                                    False)

        # fraction and margin do not matter when |float_comp| is EXACT.
        opts = compare.ProtoComparisonOptions(float_fraction=0.0,
                                              float_margin=10.0)
        self.assertProtoCompareToBe(
            compare.proto_compare(actual, expected, opts=opts), False)

        opts = compare.ProtoComparisonOptions(
            float_fraction=0.0,
            float_margin=10.0,
            float_comp=compare.ProtoFloatComparison.APPROXIMATE)
        self.assertProtoCompareToBe(
            compare.proto_compare(actual, expected, opts=opts), True)

        opts = compare.ProtoComparisonOptions(
            float_fraction=0.2,
            float_margin=0.0,
            float_comp=compare.ProtoFloatComparison.APPROXIMATE)
        self.assertProtoCompareToBe(
            compare.proto_compare(actual, expected, opts=opts), True)

        opts = compare.ProtoComparisonOptions(
            float_fraction=0.01,
            float_margin=0.0,
            float_comp=compare.ProtoFloatComparison.APPROXIMATE)
        self.assertProtoCompareToBe(
            compare.proto_compare(actual, expected, opts=opts), False)

        opts = compare.ProtoComparisonOptions(
            float_fraction=0.10,
            float_margin=10.0,
            float_comp=compare.ProtoFloatComparison.APPROXIMATE)
        self.assertProtoCompareToBe(
            compare.proto_compare(actual, expected, opts=opts), True)
예제 #11
0
 def _get_test_proto(self):
     return text_format.Parse(_TEST_PROTO, test_pb2.Foo())
예제 #12
0
 def test_map_field_inequality(self):
     expected = text_format.Parse(_TEST_PROTO, test_pb2.Foo())
     actual = text_format.Parse(_TEST_PROTO, test_pb2.Foo())
     expected.mapping[15] = 'luck'
     self.assertProtoCompareToBe(compare.proto_compare(actual, expected),
                                 False)
예제 #13
0
 def test_repeated_field_inequality(self):
     expected = text_format.Parse(_TEST_PROTO, test_pb2.Foo())
     actual = text_format.Parse(_TEST_PROTO, test_pb2.Foo())
     expected.bars.add().progress = 0.1
     self.assertProtoCompareToBe(compare.proto_compare(actual, expected),
                                 False)
예제 #14
0
 def test_basic_inequality(self):
     expected = text_format.Parse(_TEST_PROTO, test_pb2.Foo())
     actual = text_format.Parse(_TEST_PROTO, test_pb2.Foo())
     expected.baz.Clear()
     self.assertProtoCompareToBe(compare.proto_compare(actual, expected),
                                 False)
예제 #15
0
 def test_basic_equality(self):
     expected = text_format.Parse(_TEST_PROTO, test_pb2.Foo())
     actual = text_format.Parse(_TEST_PROTO, test_pb2.Foo())
     self.assertProtoCompareToBe(compare.proto_compare(actual, expected),
                                 True)
예제 #16
0
 def test_oneof_inequality(self):
     expected = text_format.Parse(_TEST_PROTO, test_pb2.Foo())
     actual = text_format.Parse(_TEST_PROTO, test_pb2.Foo())
     expected.bars[0].long_id = expected.bars[0].short_id
     self.assertProtoCompareToBe(compare.proto_compare(actual, expected),
                                 False)