Files
digital-drosophila/models/male-cns-lif/author-fullgraph-lab-v1/test_protocol.py
T

38 lines
2.0 KiB
Python

"""Pure audit-format tests; no neural trajectory or GPU required."""
import hashlib
import struct
import unittest
import numpy as np
from oracle_full import queue_summary,QUEUE_HEADER
from compare_trial import bit_equal
class ProtocolTests(unittest.TestCase):
def test_queue_chunk_independence_and_readonly(self):
edges=np.array([0,4,2,2,19000000],dtype=np.int64);mask=np.array([1,0,1,1,0],dtype=np.uint8)
edges.flags.writeable=False;mask.flags.writeable=False
expected=hashlib.sha256(QUEUE_HEADER+struct.pack('<qq',18,len(edges))+edges.astype('<i8').tobytes()+mask.tobytes()).hexdigest()
a=queue_summary(18,edges,mask,chunk_bytes=16)
b=queue_summary(18,edges,lambda x,y:mask[x:y],chunk_bytes=24)
self.assertEqual(a,b);self.assertEqual(a['joint_sha256'],expected)
self.assertEqual(a['accepted_count'],3);self.assertEqual(a['count'],5)
self.assertNotEqual(a['joint_sha256'],queue_summary(19,edges,mask)['joint_sha256'])
def test_empty_coverage(self):
e=np.empty(0,np.int64);m=np.empty(0,np.uint8)
a,b=queue_summary(0,e,m),queue_summary(1,e,m)
self.assertEqual(a['count'],0);self.assertEqual(a['ordered_edge_sha256'],hashlib.sha256(b'').hexdigest())
self.assertNotEqual(a['joint_sha256'],b['joint_sha256'])
def test_order_and_guard_not_ignored(self):
e=np.array([5,1,9],np.int64);m=np.array([1,1,0],np.uint8)
original=queue_summary(20,e,m)
self.assertNotEqual(original['joint_sha256'],queue_summary(20,e[::-1],m)['joint_sha256'])
self.assertNotEqual(original['joint_sha256'],queue_summary(20,e,1-m)['joint_sha256'])
def test_signed_zero_is_not_equal(self):
self.assertFalse(bit_equal(np.array([0.],np.float64),np.array([-0.],np.float64)))
self.assertFalse(bit_equal(np.array([1.],np.float64),np.array([1.],np.float32)))
self.assertTrue(bit_equal(np.array([1.,-0.],np.float64),np.array([1.,-0.],np.float64)))
if __name__=='__main__':unittest.main()