コード例 #1
1
ファイル: test_formats.py プロジェクト: haibocheng/fusion
def test_FloatValue_read():
    # Testing 16-bit float values.
    # Note that these are Flash's FLOAT16, with a different exponent
    # bias than the extended IEEE 754 spec.
    bits = BitStream("0100000000000000")
    result = bits.read(FloatFormat[16])
    assert result == 1
    assert bits.bits_available == 0

    bits = BitStream("0111110000000000")
    result = bits.read(FloatFormat[16])
    assert result == float("inf")
    assert bits.bits_available == 0

    bits = BitStream("1111110000000000")
    result = bits.read(FloatFormat[16])
    assert result == float("-inf")
    assert bits.bits_available == 0

    # Testing 32-bit float values.
    bits = BitStream("0 01111100 01000000000000000000000")
    result = bits.read(FloatFormat[32])
    assert result == 0.15625
    assert bits.bits_available == 0

    bits = BitStream("0 10000011 10010000000000000000000")
    result = bits.read(FloatFormat[32])
    assert result == 25
    assert bits.bits_available == 0

    bits = BitStream("0 11111111 00000000000000000000000")
    result = bits.read(FloatFormat[32])
    assert result == float("inf")
    assert bits.bits_available == 0

    bits = BitStream("1 11111111 00000000000000000000000")
    result = bits.read(FloatFormat[32])
    assert result == float("-inf")
    assert bits.bits_available == 0

    # Testing 32-bit float values.
    bits = BitStream("0011111111110000000000000000000000000000000000000000000000000000")
    result = bits.read(FloatFormat[64])
    assert result == 1
    assert bits.bits_available == 0

    bits = BitStream("0111111111110000000000000000000000000000000000000000000000000000")
    result = bits.read(FloatFormat[64])
    assert result == float("inf")
    assert bits.bits_available == 0

    bits = BitStream("1111111111110000000000000000000000000000000000000000000000000000")
    result = bits.read(FloatFormat[64])
    assert result == float("-inf")
    assert bits.bits_available == 0
コード例 #2
0
def test_Bit_read():
    bits = BitStream("1001")
    assert bits.read(Bit) == 1
    assert bits.read(Bit) == 0
    assert bits.read(Bit) == 0
    assert bits.read(Bit) == 1
    assert bits.bits_available == 0
    py.test.raises(IndexError, bits.read, Bit)
コード例 #3
0
ファイル: test_formats.py プロジェクト: haibocheng/fusion
def test_Bit_read():
    bits = BitStream("1001")
    assert bits.read(Bit) == 1
    assert bits.read(Bit) == 0
    assert bits.read(Bit) == 0
    assert bits.read(Bit) == 1
    assert bits.bits_available == 0
    py.test.raises(IndexError, bits.read, Bit)
コード例 #4
0
def test_FloatValue_read():
    # Testing 16-bit float values.
    # Note that these are Flash's FLOAT16, with a different exponent
    # bias than the extended IEEE 754 spec.
    bits = BitStream("0100000000000000")
    result = bits.read(FloatFormat[16])
    assert result == 1
    assert bits.bits_available == 0

    bits = BitStream("0111110000000000")
    result = bits.read(FloatFormat[16])
    assert result == float("inf")
    assert bits.bits_available == 0

    bits = BitStream("1111110000000000")
    result = bits.read(FloatFormat[16])
    assert result == float("-inf")
    assert bits.bits_available == 0

    # Testing 32-bit float values.
    bits = BitStream("0 01111100 01000000000000000000000")
    result = bits.read(FloatFormat[32])
    assert result == 0.15625
    assert bits.bits_available == 0

    bits = BitStream("0 10000011 10010000000000000000000")
    result = bits.read(FloatFormat[32])
    assert result == 25
    assert bits.bits_available == 0

    bits = BitStream("0 11111111 00000000000000000000000")
    result = bits.read(FloatFormat[32])
    assert result == float("inf")
    assert bits.bits_available == 0

    bits = BitStream("1 11111111 00000000000000000000000")
    result = bits.read(FloatFormat[32])
    assert result == float("-inf")
    assert bits.bits_available == 0

    # Testing 32-bit float values.
    bits = BitStream(
        "0011111111110000000000000000000000000000000000000000000000000000")
    result = bits.read(FloatFormat[64])
    assert result == 1
    assert bits.bits_available == 0

    bits = BitStream(
        "0111111111110000000000000000000000000000000000000000000000000000")
    result = bits.read(FloatFormat[64])
    assert result == float("inf")
    assert bits.bits_available == 0

    bits = BitStream(
        "1111111111110000000000000000000000000000000000000000000000000000")
    result = bits.read(FloatFormat[64])
    assert result == float("-inf")
    assert bits.bits_available == 0
コード例 #5
0
ファイル: test_formats.py プロジェクト: haibocheng/fusion
def test_UB_read():
    bits = BitStream("101010")
    assert bits.read(UB[6]) == 42
    assert bits.bits_available == 0

    bits = BitStream("010 0111011001 101010 10001 10111")
    assert bits.read(UB[3]) == 2
    assert bits.bits_available == 26
    assert bits.read(UB[10]) == 0b0111011001
    assert bits.bits_available == 16
    assert bits.read(UB[6]) == 0b101010
    assert bits.bits_available == 10
    assert bits.read(UB[5]) == 0b10001
    assert bits.bits_available == 5
    assert bits.read(UB[5]) == 0b10111
    assert bits.bits_available == 0

    bits = BitStream()
    bits.write("\xDD\xEE\xFF", ByteString)

    bits.seek(0)
    result = bits.read(UB[24])
    assert result == 0xDDEEFF
    assert bits.bits_available == 0

    bits.seek(0)
    result = bits.read(UB[24:"<"])
    assert result == 0xFFEEDD
    assert bits.bits_available == 0
コード例 #6
0
def test_UB_read():
    bits = BitStream("101010")
    assert bits.read(UB[6]) == 42
    assert bits.bits_available == 0

    bits = BitStream("010 0111011001 101010 10001 10111")
    assert bits.read(UB[3]) == 2
    assert bits.bits_available == 26
    assert bits.read(UB[10]) == 0b0111011001
    assert bits.bits_available == 16
    assert bits.read(UB[6]) == 0b101010
    assert bits.bits_available == 10
    assert bits.read(UB[5]) == 0b10001
    assert bits.bits_available == 5
    assert bits.read(UB[5]) == 0b10111
    assert bits.bits_available == 0

    bits = BitStream()
    bits.write("\xDD\xEE\xFF", ByteString)

    bits.seek(0)
    result = bits.read(UB[24])
    assert result == 0xDDEEFF
    assert bits.bits_available == 0

    bits.seek(0)
    result = bits.read(UB[24:"<"])
    assert result == 0xFFEEDD
    assert bits.bits_available == 0
コード例 #7
0
ファイル: test_bitstream.py プロジェクト: the-one-/fusion
def test_BitStream_specialized_format_read():
    bits = BitStream("1011001")
    result = bits.read(BitStream[4])
    assert result == [True, False, True, True]
    assert bits.bits_available == 3
    py.test.raises(IndexError, bits.read, BitStream[4])

    bits = BitStream()
    bits.write("SWF", ByteString)

    bits.seek(0)
    result = bits.read(BitStream[24:"<"])
    result = result.read(ByteString[3])
    assert result == "FWS"
    assert bits.bits_available == 0
コード例 #8
0
ファイル: test_bitstream.py プロジェクト: the-one-/fusion
def test_BitStream_specialized_format_write():
    L = [1, 0, True, False]

    bits = BitStream()
    bits.write(L)
    assert str(bits) == "1010"

    bits = BitStream("11")
    bits.write(L)
    assert str(bits) == "1010"

    bits = BitStream()
    bits.write(L[3:], BitStream[1])
    bits.write(L[2:], BitStream[1])
    assert str(bits) == "01"

    test = BitStream()
    test.write("SWF", ByteString)
    test.seek(0)

    bits = BitStream()
    bits.write(test, BitStream["<"])
    bits.seek(0)

    result = bits.read(ByteString[3])
    assert result == "FWS"
    assert bits.bits_available == 0
コード例 #9
0
ファイル: test_formats.py プロジェクト: haibocheng/fusion
def test_CString_write():
    # Testing basics.
    bits = BitStream()
    bits.write("FWS", CString)
    assert bits.bits_available == 0
    assert len(bits) == 32
    bits.seek(0)
    result = bits.read(Byte)
    assert result == ord("F")
    assert bits.bits_available == 24
    result = bits.read(Byte)
    assert result == ord("W")
    assert bits.bits_available == 16
    result = bits.read(Byte)
    assert result == ord("S")
    assert bits.bits_available == 8
    result = bits.read(Byte)
    assert result == 0
    assert bits.bits_available == 0
コード例 #10
0
def test_CString_write():
    # Testing basics.
    bits = BitStream()
    bits.write("FWS", CString)
    assert bits.bits_available == 0
    assert len(bits) == 32
    bits.seek(0)
    result = bits.read(Byte)
    assert result == ord("F")
    assert bits.bits_available == 24
    result = bits.read(Byte)
    assert result == ord("W")
    assert bits.bits_available == 16
    result = bits.read(Byte)
    assert result == ord("S")
    assert bits.bits_available == 8
    result = bits.read(Byte)
    assert result == 0
    assert bits.bits_available == 0
コード例 #11
0
def test_UB_write():
    bits = BitStream()
    bits.write(0b1111, UB[4])
    assert len(bits) == 4 and str(bits) == "1111"

    bits = BitStream()
    bits.write(0b1111, UB[8])
    assert len(bits) == 8 and str(bits) == "00001111"

    bits = BitStream()
    bits.write(0xDDEEFF, UB)
    bits.seek(0)
    result = bits.read(ByteString[3])
    assert result == "\xDD\xEE\xFF"
    assert bits.bits_available == 0

    bits = BitStream()
    bits.write(0xDDEEFF, UB["<"])
    bits.seek(0)
    result = bits.read(ByteString[3])
    assert result == "\xFF\xEE\xDD"
    assert bits.bits_available == 0
コード例 #12
0
ファイル: test_formats.py プロジェクト: haibocheng/fusion
def test_UB_write():
    bits = BitStream()
    bits.write(0b1111, UB[4])
    assert len(bits) == 4 and str(bits) == "1111"

    bits = BitStream()
    bits.write(0b1111, UB[8])
    assert len(bits) == 8 and str(bits) == "00001111"

    bits = BitStream()
    bits.write(0xDDEEFF, UB)
    bits.seek(0)
    result = bits.read(ByteString[3])
    assert result == "\xDD\xEE\xFF"
    assert bits.bits_available == 0

    bits = BitStream()
    bits.write(0xDDEEFF, UB["<"])
    bits.seek(0)
    result = bits.read(ByteString[3])
    assert result == "\xFF\xEE\xDD"
    assert bits.bits_available == 0
コード例 #13
0
ファイル: test_formats.py プロジェクト: haibocheng/fusion
def test_ByteString_read():
    # Testing basics.
    bits = BitStream("00101010 00101111")
    result = bits.read(ByteString[1])
    assert result == chr(0b00101010)
    assert bits.bits_available == 8

    # Testing length.
    bits.seek(0)
    result = bits.read(ByteString[2])
    assert result == chr(0b00101010) + chr(0b00101111)
    assert bits.bits_available == 0

    # Testing endianness.
    bits.seek(0)
    result = bits.read(ByteString[2:"<"])
    assert result == chr(0b00101111) + chr(0b00101010)
    assert bits.bits_available == 0

    # Testing with no length provided.
    bits.seek(0)
    result = bits.read(ByteString)
    assert result == chr(0b00101010) + chr(0b00101111)


    # Testing non-flush length.

    # Make length not divisible by 8.
    bits.seek(0, os.SEEK_END)
    bits.write(Zero)

    bits.seek(0)
    result = bits.read(ByteString[2]) # This should still work.
    assert result == chr(0b00101010) + chr(0b00101111)
    assert bits.bits_available == 1

    bits.seek(0)
    py.test.raises(ValueError, bits.read, ByteString) # But this should fail.
コード例 #14
0
def test_ByteString_read():
    # Testing basics.
    bits = BitStream("00101010 00101111")
    result = bits.read(ByteString[1])
    assert result == chr(0b00101010)
    assert bits.bits_available == 8

    # Testing length.
    bits.seek(0)
    result = bits.read(ByteString[2])
    assert result == chr(0b00101010) + chr(0b00101111)
    assert bits.bits_available == 0

    # Testing endianness.
    bits.seek(0)
    result = bits.read(ByteString[2:"<"])
    assert result == chr(0b00101111) + chr(0b00101010)
    assert bits.bits_available == 0

    # Testing with no length provided.
    bits.seek(0)
    result = bits.read(ByteString)
    assert result == chr(0b00101010) + chr(0b00101111)

    # Testing non-flush length.

    # Make length not divisible by 8.
    bits.seek(0, os.SEEK_END)
    bits.write(Zero)

    bits.seek(0)
    result = bits.read(ByteString[2])  # This should still work.
    assert result == chr(0b00101010) + chr(0b00101111)
    assert bits.bits_available == 1

    bits.seek(0)
    py.test.raises(ValueError, bits.read, ByteString)  # But this should fail.
コード例 #15
0
ファイル: test_formats.py プロジェクト: haibocheng/fusion
def test_CString_read():
    # Testing basics.
    bits = BitStream()
    test_data = "test 123\x01\xFF"
    bits.write(test_data, ByteString)
    bits.write(Zero[8])
    bits.seek(0)
    result = bits.read(CString)
    assert result == test_data

    # Testing error-handling.
    bits = BitStream()
    bits.write("adsfasfdgjklhrgokrjygaosaf", ByteString)
    bits.seek(0)
    py.test.raises(ValueError, bits.read, CString)
コード例 #16
0
def test_CString_read():
    # Testing basics.
    bits = BitStream()
    test_data = "test 123\x01\xFF"
    bits.write(test_data, ByteString)
    bits.write(Zero[8])
    bits.seek(0)
    result = bits.read(CString)
    assert result == test_data

    # Testing error-handling.
    bits = BitStream()
    bits.write("adsfasfdgjklhrgokrjygaosaf", ByteString)
    bits.seek(0)
    py.test.raises(ValueError, bits.read, CString)
コード例 #17
0
def test_Byte_read():
    # Testing basics.
    bits = BitStream("10101010 11001100")
    result = bits.read(Byte[1])
    assert result == 0b10101010
    assert bits.bits_available == 8

    result = bits.read(Byte[1])
    assert result == 0b11001100
    assert bits.bits_available == 0

    # Testing out-of-bounds checking.
    py.test.raises(ValueError, bits.read, Byte)

    # Testing length.
    bits.seek(0)
    result = bits.read(Byte[2])
    assert result == 0b1010101011001100
    assert bits.bits_available == 0

    # Testing endianness.
    bits.seek(0)
    result = bits.read(Byte[2:"<"])
    assert result == 0b1100110010101010
    assert bits.bits_available == 0

    # Testing length behavior.
    bits.seek(0)
    result = bits.read(Byte)  # This should read one byte.
    assert result == 0b10101010
    assert bits.bits_available == 8

    # Make length not divisible by 8.
    bits.seek(0, os.SEEK_END)
    bits.write(Zero)

    bits.seek(0)
    result = bits.read(Byte)  # But this should still work.
    assert result == 0b10101010
    assert bits.bits_available == 9
コード例 #18
0
ファイル: test_formats.py プロジェクト: haibocheng/fusion
def test_Byte_read():
    # Testing basics.
    bits = BitStream("10101010 11001100")
    result = bits.read(Byte[1])
    assert result == 0b10101010
    assert bits.bits_available == 8

    result = bits.read(Byte[1])
    assert result == 0b11001100
    assert bits.bits_available == 0

    # Testing out-of-bounds checking.
    py.test.raises(ValueError, bits.read, Byte)

    # Testing length.
    bits.seek(0)
    result = bits.read(Byte[2])
    assert result == 0b1010101011001100
    assert bits.bits_available == 0

    # Testing endianness.
    bits.seek(0)
    result = bits.read(Byte[2:"<"])
    assert result == 0b1100110010101010
    assert bits.bits_available == 0

    # Testing length behavior.
    bits.seek(0)
    result = bits.read(Byte) # This should read one byte.
    assert result == 0b10101010
    assert bits.bits_available == 8

    # Make length not divisible by 8.
    bits.seek(0, os.SEEK_END)
    bits.write(Zero)

    bits.seek(0)
    result = bits.read(Byte) # But this should still work.
    assert result == 0b10101010
    assert bits.bits_available == 9
コード例 #19
0
def test_FormatArray_read():
    bits = BitStream("010101")

    result = bits.read(Bit[:][6])
    assert result == [False, True] * 3
コード例 #20
0
ファイル: test_formats.py プロジェクト: haibocheng/fusion
def test_ByteString_write():
    # Testing basics.
    bits = BitStream()
    bits.write("SWF", ByteString)
    assert bits.bits_available == 0
    assert len(bits) == 24

    bits.seek(0)
    for i, char in enumerate("SWF"):
        result = bits.read(Byte)
        assert result == ord(char)
        assert bits.bits_available + i*8 == 16

    # Testing explicit length.
    bits = BitStream()
    bits.write("SWF", ByteString[3])
    assert bits.bits_available == 0
    assert len(bits) == 24

    bits.seek(0)
    for i, char in enumerate("SWF"):
        result = bits.read(Byte)
        assert result == ord(char)
        assert bits.bits_available + i*8 == 16

    # Testing leftover > 0.
    bits = BitStream()
    bits.write("SWF", ByteString[4])
    assert bits.bits_available == 0
    assert len(bits) == 32

    bits.seek(0)
    for i, char in enumerate("\0SWF"):
        result = bits.read(Byte)
        assert result == ord(char)
        assert bits.bits_available + i*8 == 24

    # Testing leftover < 0.
    bits = BitStream()
    py.test.raises(ValueError, bits.write, "SWF", ByteString[1])

    # Testing endianness.
    bits = BitStream()
    bits.write("SWF", ByteString["<"])
    assert bits.bits_available == 0
    assert len(bits) == 24

    bits.seek(0)
    for i, char in enumerate("FWS"):
        result = bits.read(Byte)
        assert result == ord(char)
        assert bits.bits_available + i*8 == 16

    # Testing leftover > 0 and endianness.
    bits = BitStream()
    bits.write("SWF", ByteString[5:"<"])
    assert bits.bits_available == 0
    assert len(bits) == 40

    bits.seek(0)
    for i, char in enumerate("FWS\0\0"):
        result = bits.read(Byte)
        assert result == ord(char)
        assert bits.bits_available + i*8 == 32
コード例 #21
0
def test_ByteString_write():
    # Testing basics.
    bits = BitStream()
    bits.write("SWF", ByteString)
    assert bits.bits_available == 0
    assert len(bits) == 24

    bits.seek(0)
    for i, char in enumerate("SWF"):
        result = bits.read(Byte)
        assert result == ord(char)
        assert bits.bits_available + i * 8 == 16

    # Testing explicit length.
    bits = BitStream()
    bits.write("SWF", ByteString[3])
    assert bits.bits_available == 0
    assert len(bits) == 24

    bits.seek(0)
    for i, char in enumerate("SWF"):
        result = bits.read(Byte)
        assert result == ord(char)
        assert bits.bits_available + i * 8 == 16

    # Testing leftover > 0.
    bits = BitStream()
    bits.write("SWF", ByteString[4])
    assert bits.bits_available == 0
    assert len(bits) == 32

    bits.seek(0)
    for i, char in enumerate("\0SWF"):
        result = bits.read(Byte)
        assert result == ord(char)
        assert bits.bits_available + i * 8 == 24

    # Testing leftover < 0.
    bits = BitStream()
    py.test.raises(ValueError, bits.write, "SWF", ByteString[1])

    # Testing endianness.
    bits = BitStream()
    bits.write("SWF", ByteString["<"])
    assert bits.bits_available == 0
    assert len(bits) == 24

    bits.seek(0)
    for i, char in enumerate("FWS"):
        result = bits.read(Byte)
        assert result == ord(char)
        assert bits.bits_available + i * 8 == 16

    # Testing leftover > 0 and endianness.
    bits = BitStream()
    bits.write("SWF", ByteString[5:"<"])
    assert bits.bits_available == 0
    assert len(bits) == 40

    bits.seek(0)
    for i, char in enumerate("FWS\0\0"):
        result = bits.read(Byte)
        assert result == ord(char)
        assert bits.bits_available + i * 8 == 32
コード例 #22
0
ファイル: test_formats.py プロジェクト: haibocheng/fusion
def test_FormatArray_read():
    bits = BitStream("010101")

    result = bits.read(Bit[:][6])
    assert result == [False, True]*3