Esempio n. 1
0
def test_decimal_largeexp_dec():
    buf = SBytes("2f f9 be b7 b0 88 89 1c")
    assert decode_decimal(buf,0,len(buf))     == Decimal('.123456789012345')
    buf = SBytes("30 13 95 82 a6 ef c7 9e 84 91 11")
    assert decode_decimal(buf,0,len(buf))     == Decimal('.1234567890123456789')
    buf = SBytes("70 13 95 82 a6 ef c7 9e 84 91 11")
    assert decode_decimal(buf,0,len(buf))     == Decimal('-.1234567890123456789')
Esempio n. 2
0
def test_sched_gen_date_enc():
    assert encode_sched_gen(TmDate("2020 01 16"), True,
                            False) == SBytes("80 c8 1f 01 10")
    assert encode_sched_gen(TmDate("1984 01 16"), True,
                            False) == SBytes("80 80 1f 01 10")
    assert encode_sched_gen(TmDate("-1984 01 16"), True,
                            False) == SBytes("80 ff 1e 01 10")
Esempio n. 3
0
def test_enc_gen_tzname():
    assert encode_sched_gen(
        None, False, False,
        tzname="Pacific/Auckland") == SBytes("10 b9 f8 32 9f")
    assert encode_sched_gen(
        None, False, False,
        tzname="America/Argentina/Buenos_Aires") == SBytes("10 1e 59 9d e4")
Esempio n. 4
0
def test_decimal_largeexp_enc():
    x = Decimal('.123456789012345')                                 # 0010 1111 & signif the rest
    assert encode_decimal( x )               == SBytes("2f f9 be b7 b0 88 89 1c")
    y = Decimal('.1234567890123456789')                             # 0011 0000 exp 13  & signif the rest
    assert encode_decimal( y )               == SBytes("30 13 95 82 a6 ef c7 9e 84 91 11")
    z = -y                                                          # 0111 0000 exp 13  & signif the rest
    assert encode_decimal( z )               == SBytes("70 13 95 82 a6 ef c7 9e 84 91 11")
Esempio n. 5
0
def test_enc_gen_offset_dst():
    assert encode_sched_gen(TMX(0, 0, 0, 0, 0, 0, 0),
                            False,
                            False,
                            offset="+0200") == SBytes("20 02")
    assert encode_sched_gen(TMX(0, 0, 0, 0, 0, 0, 1),
                            False,
                            False,
                            offset="+0200") == SBytes("20 42")
    assert encode_sched_gen(TMX(0, 0, 0, 0, 0, 0, -1),
                            False,
                            False,
                            offset="+0200") == SBytes("20 02")
Esempio n. 6
0
def test_schema_unpack_unwanted_incoming_field():
    bool2_buf = SBytes(
        "55 04 01 01")  # a second B3_BOOL with key=4, len=1, value=True
    unwantfield_buf = test1_buf + bool2_buf
    out2_data = schema_unpack(TEST_SCHEMA, unwantfield_buf, 0,
                              len(unwantfield_buf))
    assert out2_data == test1
Esempio n. 7
0
def test_schema_unpack_missing_incoming_field():
    missing_fields_buf = SBytes(
        "97 01")  # so only field 1 is present (and null)
    null_data = dict(
        bool1=None, number1=None,
        string1=None)  # missing incoming fields get created and null-valued.
    assert schema_unpack(TEST_SCHEMA, missing_fields_buf, 0,
                         len(missing_fields_buf)) == null_data
Esempio n. 8
0
def test_schema_unpack_bytes_yield():
    BYTES_SCHEMA = ((B3_BYTES, 'bytes1', 1), (B3_COMPOSITE_LIST, 'list1', 2))
    bytes1_hex = "53 01 03 66 6f 6f"  # b"foo"
    list1_hex = "52 02 03 66 6f 6f"  # (actually just b"foo" as well, not an encoded list)
    test_buf = SBytes(" ".join([bytes1_hex, list1_hex]))

    test_data = dict(bytes1=b"foo", list1=b"foo")
    assert schema_unpack(BYTES_SCHEMA, test_buf, 0, len(test_buf)) == test_data
Esempio n. 9
0
def test_dec_gen_offset():
    assert decode_offset(SBytes("02"), 0) == ("+0200", False, 1)
    assert decode_offset(SBytes("82"), 0) == ("-0200", False, 1)
    assert decode_offset(SBytes("12"), 0) == ("+0215", False, 1)
    assert decode_offset(SBytes("a2"), 0) == ("-0230", False, 1)
    assert decode_offset(SBytes("32"), 0) == ("+0245", False, 1)
    assert decode_offset(SBytes("0b"), 0) == ("+1100", False, 1)
Esempio n. 10
0
def test_schema_pack_nesting():
    # Testing this buffer...
    bytes1_hex = "53 01 0a 6f 75 74 65 72 62 79 74 65 73"  # header + 'outerbytes'
    signed1_hex = "58 02 02 a3 13"  # header + encode_svarint(-1234)
    inner_buf_hex = "51 03 06 17 01 14 02 15 03"  # header + buffer output from the zeroval test
    test_outer_buf = SBytes(" ".join([bytes1_hex, signed1_hex, inner_buf_hex]))

    # ...against this data
    inner_data = dict(bool1=False, number1=0, string1=u"")
    inner1 = schema_pack(TEST_SCHEMA, inner_data)
    outer_data = dict(bytes1=b"outerbytes", signed1=-1234, inner1=inner1)
    outer_buf = schema_pack(OUTER_SCHEMA, outer_data)

    assert outer_buf == test_outer_buf
Esempio n. 11
0
def test_schema_pack_zeroval():
    # Testing this buffer...
    number1_zero_header = "17 01"
    string1_zero_header = "14 02"
    bool1_zero_header = "15 03"
    buf_zv_hex = " ".join(
        [number1_zero_header, string1_zero_header, bool1_zero_header])
    buf_zv = SBytes(buf_zv_hex)

    # ...against this data
    test_zv_data = dict(bool1=False, number1=0, string1=u"")

    buf = schema_pack(TEST_SCHEMA, test_zv_data)
    assert buf_zv == buf
Esempio n. 12
0
def test_header_keys_enc():
    assert encode_header(0, key=None) == SBytes("00")
    assert encode_header(0, key=4) == SBytes("10 04")
    assert encode_header(0, key=7777777777) == SBytes("10 f1 f0 dd fc 1c")
    assert encode_header(0, key=u"foo") == SBytes("20 03 66 6f 6f")
    assert encode_header(
        0,
        key=u"Виагра") == SBytes("20 0c d0 92 d0 b8 d0 b0 d0 b3 d1 80 d0 b0")
    assert encode_header(0, key=b"foo") == SBytes("30 03 66 6f 6f")
Esempio n. 13
0
def test_schema_unpack_nesting():
    # Testing this buffer...
    bytes1_hex = "53 01 0a 6f 75 74 65 72 62 79 74 65 73"  # header + 'outerbytes'
    signed1_hex = "58 02 02 a3 13"  # header + encode_svarint(-1234)
    inner_buf_hex = "51 03 06 17 01 14 02 15 03"  # header + buffer output from the zeroval test
    test_outer_buf = SBytes(" ".join([bytes1_hex, signed1_hex, inner_buf_hex]))

    # Note: It's up to the user to know - presumably using the defined schemas, that inner1 is a
    # Note: B3_COMPOSITE_DICT type, as the returned dict (outer_data) just has the encoded bytes in that field.
    outer_data = schema_unpack(OUTER_SCHEMA, test_outer_buf, 0,
                               len(test_outer_buf))
    inner_len = len(outer_data['inner1'])
    inner_data = schema_unpack(TEST_SCHEMA, outer_data['inner1'], 0, inner_len)

    assert inner_data == dict(bool1=False, number1=0, string1=u"")
Esempio n. 14
0
def test_schema_pack_field_missing():
    # Testing this buffer...
    bool1_header_null_value = u"95 03"  # encode_header(B3_BOOL, key=3, is_null=True)
    bool1_nulled_hex = " ".join([
        number1_header, number1_data, string1_header, string1_data,
        bool1_header_null_value
    ])  # note no data for bool1
    bool1_nulled_buf = SBytes(bool1_nulled_hex)

    # ...against this data
    test2 = copy.copy(test1)
    del test2[
        'bool1']  # Missing field should be sent out as present but with a null value.

    buf = schema_pack(TEST_SCHEMA, test2)
    assert buf == bool1_nulled_buf
Esempio n. 15
0
def test_header_keys_dec():
    assert decode_header(SBytes("00"), 0) == (0, None, False, 0, 1)
    assert decode_header(SBytes("10 04"), 0) == (0, 4, False, 0, 2)
    assert decode_header(SBytes("10 f1 f0 dd fc 1c"),
                         0) == (0, 7777777777, False, 0, 6)
    assert decode_header(SBytes("20 03 66 6f 6f"),
                         0) == (0, u"foo", False, 0, 5)
    assert decode_header(SBytes("20 0c d0 92 d0 b8 d0 b0 d0 b3 d1 80 d0 b0"),
                         0) == (0, u"Виагра", False, 0, 14)
    assert decode_header(SBytes("30 03 66 6f 6f"),
                         0) == (0, b"foo", False, 0, 5)
Esempio n. 16
0
def test_enc_gen_offset():
    assert encode_sched_gen(None, False, False,
                            offset="+0200") == SBytes("20 02")
    assert encode_sched_gen(None, False, False,
                            offset="-0200") == SBytes("20 82")
    assert encode_sched_gen(None, False, False,
                            offset="+0215") == SBytes("20 12")
    assert encode_sched_gen(None, False, False,
                            offset="-0230") == SBytes("20 a2")
    assert encode_sched_gen(None, False, False,
                            offset="+0245") == SBytes("20 32")
    assert encode_sched_gen(None, False, False,
                            offset="+1100") == SBytes("20 0b")
Esempio n. 17
0
def test_enc_gen_subsec():
    assert encode_sched_gen(None, False, False, sub_exp=0,
                            sub=69) == SBytes("00")  # no sub_exp
    assert encode_sched_gen(None, False, False, sub_exp=3,
                            sub=0) == SBytes("00")  # no sub
    assert encode_sched_gen(None, False, False, sub_exp=3,
                            sub=69) == SBytes("01 45")  # 69 ms
    assert encode_sched_gen(None, False, False, sub_exp=-3, sub=69) == SBytes(
        "01 45"
    )  # 69 ms (exponent always -ve so we dont actually need the sign)
    assert encode_sched_gen(None, False, False, sub_exp=6,
                            sub=69) == SBytes("02 45")  # 69 us
    assert encode_sched_gen(None, False, False, sub_exp=9,
                            sub=69) == SBytes("03 45")  # 69 ns
Esempio n. 18
0
def test_base_stamp64_enc():
    assert encode_stamp64(timFlo) == SBytes("00 22 46 6c ad d1 13 16")
    assert encode_stamp64(timNano) == SBytes("00 22 46 6c ad d1 13 16")
    assert encode_stamp64(timZero) == SBytes("")
Esempio n. 19
0
def test_base_float64_dec():
    for tflo, tbytes in TEST_FLOAT64S:
        assert decode_float64(tbytes, 0, len(tbytes)) == tflo
    assert decode_float64(SBytes("00 00 00 00 00 00 00 00"), 0,
                          8) == 0.0  # check non-compact zero value too
Esempio n. 20
0
def test_base_int64_dec():
    for tint, tbytes in TEST_INT64S:
        assert decode_int64(tbytes, 0, len(tbytes)) == tint
    assert decode_int64(SBytes("00 00 00 00 00 00 00 00"), 0,
                        8) == 0  # check non-compact zero value too
Esempio n. 21
0
def test_base_bool_dec():
    assert decode_bool(SBytes("01"), 0, 1) is True
    assert decode_bool(SBytes("00"), 0, 1) is False  # normal zero-value
    assert decode_bool(SBytes(""), 0, 0) is False  # compact zero-value mode
Esempio n. 22
0
def test_base_complex_dec():
    assert decode_complex(tcplx_bytes, 0, 16) == tcplx
    assert decode_complex(SBytes(""), 0, 0) == 0j
    assert decode_complex(
        SBytes("00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00"), 0, 16) == 0j
Esempio n. 23
0
def test_base_complex_enc():
    assert encode_complex(tcplx) == tcplx_bytes
    assert encode_complex(0j) == SBytes("")
Esempio n. 24
0
def test_dyna_unpack_recurse_invalid_container():
    with pytest.raises(TypeError):
        unpack_into(None, SBytes("93 0e"), 0,
                    2)  # passing None instead of a list or dict.
Esempio n. 25
0
def test_dyna_unpack_header_only_invalid_type():
    hdr_buf = SBytes("05")  # no key, no data, bool type. (Error!)
    with pytest.raises(TypeError):
        assert unpack(hdr_buf, 0) == {}
Esempio n. 26
0
def test_dyna_unpack_header_only_dict():
    hdr_buf = SBytes("01")  # no key, no data, dict type.
    assert unpack(hdr_buf, 0) == {}
Esempio n. 27
0
def test_dyna_unpack_header_only_list():
    hdr_buf = SBytes("02")  # no key, no data, list type.
    assert unpack(hdr_buf, 0) == []
Esempio n. 28
0
def test_base_bool_enc():
    assert encode_bool(True) == SBytes("01")
    assert encode_bool(False) == b""  # compact zero-value mode
Esempio n. 29
0
def test_base_stamp64_dec():
    assert decode_stamp64(SBytes("00 22 46 6c ad d1 13 16"), 0, 8) == timNano
    assert decode_stamp64(SBytes(""), 0,
                          0) == timZero  # compact zero-value mode
    assert decode_stamp64(SBytes("00 00 00 00 00 00 00 00"), 0,
                          8) == timZero  # non-compact zero value too
Esempio n. 30
0
def test_base_bool_enc():
    assert encode_bool(True) == SBytes("01")
    assert encode_bool(False) == b""  # compact zero-value mode


def test_base_bool_dec():
    assert decode_bool(SBytes("01"), 0, 1) is True
    assert decode_bool(SBytes("00"), 0, 1) is False  # normal zero-value
    assert decode_bool(SBytes(""), 0, 0) is False  # compact zero-value mode


# BMP 0000-FFFF,  SMP 10000-1FFFF,  SIP 20000-2FFFF,  TIP 30000-3FFFF
# Went and got the utf8 bytes from the equivalent golang script
TEST_UNISTRS = (
    (u"hello world", SBytes("68 65 6c 6c 6f 20 77 6f 72 6c 64")),
    (u"Виагра",
     SBytes("d0 92 d0 b8 d0 b0 d0 b3 d1 80 d0 b0")),  # Viagra OWEN
    (u"✈✉🚀🚸🚼🚽",
     SBytes("e2 9c 88 e2 9c 89 f0 9f 9a 80 f0 9f 9a b8 f0 9f 9a bc f0 9f 9a bd"
            )),  # SMP
    (u"", b"")  # zero-length strings
)


def test_base_utf8_enc():
    for tstr, tbytes in TEST_UNISTRS:
        assert encode_utf8(tstr) == tbytes


def test_base_utf8_dec():