#!/usr/bin/env python3 # -*- coding: utf-8 -*- from __future__ import annotations import unittest from core.sig3_shape import ( API_10418_SIG3_HEX_LENGTH, H5_SIG3_HEX_LENGTH, Sig3Shape, classify_sig3, is_api_10418_sig3, is_h5_sig3, ) class Sig3ShapeTests(unittest.TestCase): def test_classifies_native_api_10418_sig3(self) -> None: value = "fdec99bfa02f5feeadb4b6b74fea2e5174b9e0c5a8a4aabc" self.assertEqual(len(value), API_10418_SIG3_HEX_LENGTH) self.assertEqual(classify_sig3(value), Sig3Shape.API_10418) self.assertTrue(is_api_10418_sig3(value)) self.assertFalse(is_h5_sig3(value)) def test_classifies_h5_envelope_sig3(self) -> None: value = "c1d196a640dbd8d9029de89e9998ac137d863bcbcdcb1c8399448e8e88888b8ab595" self.assertEqual(len(value), H5_SIG3_HEX_LENGTH) self.assertEqual(classify_sig3(value), Sig3Shape.H5_ENVELOPE) self.assertTrue(is_h5_sig3(value)) self.assertFalse(is_api_10418_sig3(value)) def test_bytes_are_classified_by_hex_wire_shape(self) -> None: self.assertEqual(classify_sig3(bytes.fromhex("41" * 24)), Sig3Shape.API_10418) self.assertEqual(classify_sig3(bytes.fromhex("54" * 34)), Sig3Shape.H5_ENVELOPE) def test_unknown_values(self) -> None: for value in (None, "", "", "z" * 48, "41" * 25): self.assertEqual(classify_sig3(value), Sig3Shape.UNKNOWN) if __name__ == "__main__": unittest.main()