def test_state_vector_encode(): sv = StateVector() sv.set("one", 1) sv.set("two", 2) enc_sv = sv.encode() assert enc_sv == b'\xC9\x10\xCA\x03\x6F\x6E\x65\xCB\x01\x01\xCA\x03\x74\x77\x6F\xCB\x01\x02'
def test_state_vector_component_functionality(): sv = StateVector() sv.set("one", 1) sv.set("two", 2) name = Name.from_str("/state_vector/test") + [sv.to_component()] assert name == Name.from_str(Name.to_str(name))
def test_state_vector_decode(): enc_sv = b'\xCA\x03\x6F\x6E\x65\xCB\x01\x01\xCA\x03\x74\x77\x6F\xCB\x01\x02' enc_sv = Component.from_bytes(enc_sv, StateVectorModelTypes.VECTOR.value) sv = StateVector(enc_sv) assert sv.get("one") == 1 assert sv.get("two") == 2
def test_state_vector_has(): sv = StateVector() sv.set("b", 5) sv.set("a", 6) assert sv.has("a") assert sv.has("b")
def test_state_vector_get(): sv = StateVector() sv.set("b", 5) sv.set("a", 6) assert sv.get("a") == 6 assert sv.get("b") == 5
def test_state_vector_partition() -> None: sv: StateVector = StateVector(None) sv.set("c", 5) sv.set("a", 6) sv.set("B", 10) sv.set("z", 15) sv.set("x", 5225) nsv, osv = StateVector(sv.partition(0, 0)), StateVector(None) assert osv.to_str() == nsv.to_str()
def test_state_vector_component() -> None: sv: StateVector = StateVector() sv.set("c", 5) sv.set("a", 6) sv.set("B", 10) sv.set("z", 15) sv.set("x", 5225) svc: StateVector = StateVector(sv.to_component()) assert sv.to_str() == svc.to_str() assert sv.encode() == svc.encode()
def test_state_vector_ordering() -> None: sv1: StateVector = StateVector() sv1.set("c", 5) sv1.set("a", 6) sv1.set("B", 10) assert sv1.to_str() == "B:10 a:6 c:5"
def test_state_vector_set() -> None: sv: StateVector = StateVector() sv.set("a", 10) sv.set("a", 100) assert sv.get("a") == 100 assert sv.get("c") == None
def test_state_vector_has() -> None: sv: StateVector = StateVector() sv.set("b", 5) sv.set("a", 6) assert sv.has("a") assert sv.has("b")
def test_state_vector_component_functionality() -> None: sv: StateVector = StateVector() sv.set("one", 1) sv.set("two", 2) # does the state vector component act as a compoent in a name name: Name = Name.from_str("/state_vector/test") + [sv.to_component()] assert name == Name.from_str(Name.to_str(name))
def test_state_vector_encode() -> None: sv: StateVector = StateVector(None) sv.set("one", 1) sv.set("two", 2) enc_sv: bytes = sv.encode() # does this state vector's byte value equal a hard coded byte value based on the state vector's protocol assert enc_sv == b'\xc9\x10\xca\x03two\xcb\x01\x02\xca\x03one\xcb\x01\x01'
def test_state_vector_decode() -> None: # hard coded bytes of component vector based on SVS protocol enc_sv = b'\xCA\x03\x6F\x6E\x65\xCB\x01\x01\xCA\x03\x74\x77\x6F\xCB\x01\x02' enc_sv = Component.from_bytes(enc_sv, SVSyncTlvTypes.VECTOR.value) sv: StateVector = StateVector(enc_sv) assert sv.get("one") == 1 assert sv.get("two") == 2
def test_state_vector_total() -> None: sv: StateVector = StateVector(None) sv.set("c", 5) sv.set("a", 6) sv.set("B", 10) sv.set("z", 15) sv.set("x", 5225) assert sv.total() == 5261
def test_state_table_metadata() -> None: mynid: Name = Name.from_str("D") sv, st = StateVector(), StateTable(mynid) sv.set("c", 4) sv.set("a", 6) sv.set("B", 10) sv.set(Name.to_str(mynid), 55) ml: List[MissingData] = st.processStateVector(sv, True) st.updateMyState(56) st.updateMetaData() assert 76 == st.getMetaData().tseqno assert Name.to_str(mynid) == bytes(st.getMetaData().source).decode() assert 0 == st.getMetaData().nopcks
def test_state_table_metadata_change() -> None: mynid: Name = Name.from_str("D") sv, st = StateVector(), StateTable(mynid) sv.set("c", 4) sv.set("a", 6) sv.set("B", 10) sv.set(Name.to_str(mynid), 55) assert 0 == st.getMetaData().tseqno ml: List[MissingData] = st.processStateVector(sv, True) assert 0 == st.getMetaData().tseqno st.updateMetaData() assert 75 == st.getMetaData().tseqno st.updateMyState(56) assert 75 == st.getMetaData().tseqno st.updateMetaData() assert 76 == st.getMetaData().tseqno
def test_state_vector_set(): sv = StateVector() sv.set("a", 10) sv.set("a", 100) assert sv.get("a") == 100
def test_state_table_processing_order() -> None: mynid: Name = Name.from_str("D") sv, st = StateVector(), StateTable(mynid) sv.set("/c", 4) sv.set("/a", 6) sv.set("/B", 10) sv.set(Name.to_str(mynid), 55) ml: List[MissingData] = st.processStateVector(sv, False) nsv: StateVector = st.getCompleteStateVector() assert nsv.to_str() == "/D:55 /B:10 /a:6 /c:4" sv = StateVector() sv.set("/Z", 44) ml: List[MissingData] = st.processStateVector(sv, True) nsv: StateVector = st.getCompleteStateVector() assert nsv.to_str() == "/D:55 /B:10 /a:6 /c:4 /Z:44"
def test_state_vector_ordering(): sv1 = StateVector() sv1.set("c", 5) sv1.set("a", 6) sv1.set("B", 10) sv1.set("z", 15) sv1.set("x", 5225) sv2 = StateVector() sv2.set("z", 15) sv2.set("x", 5225) sv2.set("a", 6) sv2.set("B", 10) sv2.set("c", 5) assert sv1.to_str() == sv2.to_str() assert sv1.encode() == sv2.encode()