def METHOD_NAME(self, _type, a_value, b_value):
    a_data = {'ttl': 30, 'value': a_value}
    a = _type(self.zone, 'a', a_data)
    self.assertEqual('a', a.name)
    self.assertEqual('a.unit.tests.', a.fqdn)
    self.assertEqual(30, a.ttl)
    self.assertEqual(a_value, a.value)
    self.assertEqual(a_data, a.data)
    b_data = {'ttl': 30, 'value': b_value}
    b = _type(self.zone, 'b', b_data)
    self.assertEqual(b_value, b.value)
    self.assertEqual(b_data, b.data)
    target = SimpleProvider()
    # No changes with self
    self.assertFalse(a.changes(a, target))
    # Diff in value causes change
    other = _type(self.zone, 'a', {'ttl': 30, 'value': b_value})
    change = a.changes(other, target)
    self.assertEqual(change.existing, a)
    self.assertEqual(change.new, other)
    # __repr__ doesn't blow up
    a.__repr__()