46 lines
1.5 KiB
Python
46 lines
1.5 KiB
Python
#!/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, "", "<redacted>", "z" * 48, "41" * 25):
|
|
self.assertEqual(classify_sig3(value), Sig3Shape.UNKNOWN)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|