NumericalOS

tests/test_canonical.py

back to source

import unittest
from numos.canonical import canonical_body, content_hash


class TestCanonical(unittest.TestCase):
    def test_body_joins_with_lf_and_trailing_newline(self):
        self.assertEqual(canonical_body(["V 1", "A x86_64"]), "V 1\nA x86_64\n")

    def test_body_excludes_the_c_line(self):
        self.assertEqual(canonical_body(["V 1", "C deadbeef", "A x86_64"]), "V 1\nA x86_64\n")

    def test_hash_is_64_lowercase_hex_chars(self):
        h = content_hash(["V 1"])
        self.assertEqual(len(h), 64)
        self.assertTrue(all(c in "0123456789abcdef" for c in h),
                        "non-lowercase-hex character in %r" % h)

    def test_hash_is_stable_across_calls(self):
        self.assertEqual(content_hash(["V 1", "A x86_64"]), content_hash(["V 1", "A x86_64"]))

    def test_hash_ignores_existing_c_line(self):
        self.assertEqual(content_hash(["V 1", "C 00"]), content_hash(["V 1"]))

    def test_hash_changes_when_body_changes(self):
        self.assertNotEqual(content_hash(["V 1"]), content_hash(["V 2"]))


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