def test_Raw(): v = Value.makeRaw(b"hello") assert NT_RAW == v.type assert b"hello" == v.value v = Value.makeRaw(b"goodbye") assert NT_RAW == v.type assert b"goodbye" == v.value
def storage_persistent(storage_empty, dispatcher, entry_notifier): storage = storage_empty entry_notifier.m_local_notifiers = False storage.setEntryTypeValue("boolean/true", Value.makeBoolean(True)) storage.setEntryTypeValue("boolean/false", Value.makeBoolean(False)) storage.setEntryTypeValue("double/neg", Value.makeDouble(-1.5)) storage.setEntryTypeValue("double/zero", Value.makeDouble(0.0)) storage.setEntryTypeValue("double/big", Value.makeDouble(1.3e8)) storage.setEntryTypeValue("string/empty", Value.makeString("")) storage.setEntryTypeValue("string/normal", Value.makeString("hello")) storage.setEntryTypeValue("string/special", Value.makeString("\0\3\5\n")) storage.setEntryTypeValue("string/quoted", Value.makeString('"a"')) storage.setEntryTypeValue("raw/empty", Value.makeRaw(b"")) storage.setEntryTypeValue("raw/normal", Value.makeRaw(b"hello")) storage.setEntryTypeValue("raw/special", Value.makeRaw(b"\0\3\5\n")) storage.setEntryTypeValue("booleanarr/empty", Value.makeBooleanArray([])) storage.setEntryTypeValue("booleanarr/one", Value.makeBooleanArray([True])) storage.setEntryTypeValue("booleanarr/two", Value.makeBooleanArray([True, False])) storage.setEntryTypeValue("doublearr/empty", Value.makeDoubleArray([])) storage.setEntryTypeValue("doublearr/one", Value.makeDoubleArray([0.5])) storage.setEntryTypeValue("doublearr/two", Value.makeDoubleArray([0.5, -0.25])) storage.setEntryTypeValue("stringarr/empty", Value.makeStringArray([])) storage.setEntryTypeValue("stringarr/one", Value.makeStringArray(["hello"])) storage.setEntryTypeValue("stringarr/two", Value.makeStringArray(["hello", "world\n"])) storage.setEntryTypeValue("\0\3\5\n", Value.makeBoolean(True)) storage.setEntryTypeValue("CaseSensitive/KeyName", Value.makeBoolean(True)) storage.setEntryTypeValue("=", Value.makeBoolean(True)) dispatcher.reset_mock() entry_notifier.reset_mock() entry_notifier.m_local_notifiers = True return storage
def test_bytearray(): v1 = Value.makeRaw(bytearray(b"\x01\x02\x00")) assert v1.type == NT_RAW assert v1.value == bytearray(b"\x01\x02\x00") assert v1.value == b"\x01\x02\x00"
def test_wire_raw2(v_round_trip): v_round_trip(Value.makeRaw(b"\x00\xff\x78"), minver=0x0300)
def test_wire_raw1(v_round_trip): v_round_trip(Value.makeRaw(b""), minver=0x0300)
def test_loadPersistent(storage_empty, dispatcher, entry_notifier): storage = storage_empty inp = "[NetworkTables Storage 3.0]\n" inp += 'boolean "\\x00\\x03\\x05\\n"=true\n' inp += 'boolean "CaseSensitive/KeyName"=true\n' inp += 'boolean "boolean/false"=false\n' inp += 'boolean "boolean/true"=true\n' inp += 'array boolean "booleanarr/empty"=\n' inp += 'array boolean "booleanarr/one"=true\n' inp += 'array boolean "booleanarr/two"=true,false\n' inp += 'double "double/big"=1.3e+08\n' inp += 'double "double/neg"=-1.5\n' inp += 'double "double/zero"=0\n' inp += 'array double "doublearr/empty"=\n' inp += 'array double "doublearr/one"=0.5\n' inp += 'array double "doublearr/two"=0.5,-0.25\n' inp += 'raw "raw/empty"=\n' inp += 'raw "raw/normal"=aGVsbG8=\n' inp += 'raw "raw/special"=AAMFCg==\n' inp += 'string "string/empty"=""\n' inp += 'string "string/normal"="hello"\n' inp += 'string "string/special"="\\x00\\x03\\x05\\n"\n' inp += 'string "string/quoted"="\\"a\\""\n' inp += 'array string "stringarr/empty"=\n' inp += 'array string "stringarr/one"="hello"\n' inp += 'array string "stringarr/two"="hello","world\\n"\n' fp = StringIO(inp) assert storage.loadPersistent(fp=fp) is None dispatcher._queueOutgoing.assert_has_calls([call(ANY, None, None)] * 23) entry_notifier.notifyEntry.assert_has_calls( [call(ANY, ANY, ANY, NT_NOTIFY_NEW | NT_NOTIFY_LOCAL)] * 23) assert Value.makeBoolean(True) == storage.getEntryValue("boolean/true") assert Value.makeBoolean(False) == storage.getEntryValue("boolean/false") assert Value.makeDouble(-1.5) == storage.getEntryValue("double/neg") assert Value.makeDouble(0.0) == storage.getEntryValue("double/zero") assert Value.makeDouble(1.3e8) == storage.getEntryValue("double/big") assert Value.makeString("") == storage.getEntryValue("string/empty") assert Value.makeString("hello") == storage.getEntryValue("string/normal") assert Value.makeString("\0\3\5\n") == storage.getEntryValue( "string/special") assert Value.makeString('"a"') == storage.getEntryValue("string/quoted") assert Value.makeRaw(b"") == storage.getEntryValue("raw/empty") assert Value.makeRaw(b"hello") == storage.getEntryValue("raw/normal") assert Value.makeRaw(b"\0\3\5\n") == storage.getEntryValue("raw/special") assert Value.makeBooleanArray( []) == storage.getEntryValue("booleanarr/empty") assert Value.makeBooleanArray( [True]) == storage.getEntryValue("booleanarr/one") assert Value.makeBooleanArray( [True, False]) == storage.getEntryValue("booleanarr/two") assert Value.makeDoubleArray( []) == storage.getEntryValue("doublearr/empty") assert Value.makeDoubleArray([0.5 ]) == storage.getEntryValue("doublearr/one") assert Value.makeDoubleArray([0.5, -0.25 ]) == storage.getEntryValue("doublearr/two") assert Value.makeStringArray( []) == storage.getEntryValue("stringarr/empty") assert Value.makeStringArray(["hello" ]) == storage.getEntryValue("stringarr/one") assert Value.makeStringArray(["hello", "world\n" ]) == storage.getEntryValue("stringarr/two") assert Value.makeBoolean(True) == storage.getEntryValue("\0\3\5\n") assert Value.makeBoolean(True) == storage.getEntryValue( "CaseSensitive/KeyName")