"""Pure contract tests: object member order is not array or binding order."""
import unittest
from integrate_20261011_batch85 import semantic_equal

class JsonSemanticParityTest(unittest.TestCase):
    def test_object_member_order_is_not_a_value_difference(self):
        self.assertTrue(semantic_equal({'a': 1, 'b': '2'}, {'b': '2', 'a': 1}))

    def test_scalar_json_types_are_strict(self):
        for a, b in [(1, 1.0), (0, False), ('1.00', 1.0), (None, '')]:
            with self.subTest(a=a, b=b):
                self.assertFalse(semantic_equal(a, b))

    def test_empty_array_and_object_are_distinct(self):
        self.assertFalse(semantic_equal([], {}))

    def test_array_order_remains_a_contract(self):
        self.assertFalse(semantic_equal([{'id': 1}, {'id': 2}], [{'id': 2}, {'id': 1}]))

    def test_nested_objects_preserve_all_values_and_types(self):
        self.assertTrue(semantic_equal({'data': [{'x': '1', 'y': None}]}, {'data': [{'y': None, 'x': '1'}]}))
        self.assertFalse(semantic_equal({'data': [{'x': '1'}]}, {'data': [{'x': 1}]}))

    def test_field_presence_and_date_representation_are_not_normalized(self):
        self.assertFalse(semantic_equal({'data': []}, {}))
        self.assertFalse(semantic_equal('2099-01-01 00:00:00', '2099-01-01 00:00:00.000000'))

if __name__ == '__main__':
    unittest.main()
