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)
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)))
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)
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)
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)
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)
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)
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)
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))
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)
def _get_test_proto(self): return text_format.Parse(_TEST_PROTO, test_pb2.Foo())
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)
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)
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)
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)
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)