コード例 #1
0
def test_encode_all_linear64_double_chunk():
    content = ((b"\x40\x00\x00\x40" * 127) + b"\x40\x00\x00") * 2
    result = varipacker.encode(content)
    assert result == "".join([
        varipacker.encode_chunk(content[0:511], varipacker.Encoding.LINEAR64),
        varipacker.encode_chunk(content[0:511], varipacker.Encoding.LINEAR64)
    ])
コード例 #2
0
def test_compare_different():
    clean_content = varipacker.encode(bytes(range(0, 100)))
    content1 = clean_content[:20] + "Z " + clean_content[
        20:30] + "\r\n" + clean_content[30:]
    content2 = "#comment1\n" + clean_content[:
                                             40] + "# coment 2 \r\n" + clean_content[
                                                 40:]
    assert varipacker.compare(content1, content2) == 20
コード例 #3
0
def test_encode_all_sextet_run_double_chunk():
    content = b"\x39" * 1022
    result = varipacker.encode(content)
    assert result == "".join([
        varipacker.encode_chunk(content[0:511],
                                varipacker.Encoding.SEXTET_RUN),
        varipacker.encode_chunk(content[0:511], varipacker.Encoding.SEXTET_RUN)
    ])
コード例 #4
0
def test_encode_alternating_sextet_octet_run():
    content = (b"\x39" * 10) + (b"\x40" * 10) + (b"\x39" * 10) + (b"\x40" * 10)
    result = varipacker.encode(content)
    assert result == "".join([
        varipacker.encode_chunk(b"\x39" * 10, varipacker.Encoding.SEXTET_RUN),
        varipacker.encode_chunk(b"\x40" * 10, varipacker.Encoding.OCTET_RUN),
        varipacker.encode_chunk(b"\x39" * 10, varipacker.Encoding.SEXTET_RUN),
        varipacker.encode_chunk(b"\x40" * 10, varipacker.Encoding.OCTET_RUN)
    ])
コード例 #5
0
def test_encode_sextet_octet_run_with_linear64():
    content = (b"\x39" * 10) + b"\x61\x62" + (b"\x40" * 10) + b"\x77" + (
        b"\x39" * 10) + (b"\x40" * 10)
    result = varipacker.encode(content)
    assert result == "".join([
        varipacker.encode_chunk(b"\x39" * 10, varipacker.Encoding.SEXTET_RUN),
        varipacker.encode_chunk(b"\x61\x62", varipacker.Encoding.LINEAR64),
        varipacker.encode_chunk(b"\x40" * 10, varipacker.Encoding.OCTET_RUN),
        varipacker.encode_chunk(b"\x77", varipacker.Encoding.LINEAR64),
        varipacker.encode_chunk(b"\x39" * 10, varipacker.Encoding.SEXTET_RUN),
        varipacker.encode_chunk(b"\x40" * 10, varipacker.Encoding.OCTET_RUN)
    ])
コード例 #6
0
def test_encode_all_but_sextet_stream():
    content = (b"\x39" * 10) + b"\x61\x62\x01\x02\x03\x04\x05\x06" + (
        b"\x40" * 10) + b"\x77" + (b"\x39" * 10) + (b"\x40" * 10)
    result = varipacker.encode(content)
    assert result == "".join([
        varipacker.encode_chunk(b"\x39" * 10, varipacker.Encoding.SEXTET_RUN),
        varipacker.encode_chunk(b"\x61\x62", varipacker.Encoding.LINEAR64),
        varipacker.encode_chunk(b"\x01\x02\x03\x04\x05\x06",
                                varipacker.Encoding.TRIAD_STREAM),
        varipacker.encode_chunk(b"\x40" * 10, varipacker.Encoding.OCTET_RUN),
        varipacker.encode_chunk(b"\x77", varipacker.Encoding.LINEAR64),
        varipacker.encode_chunk(b"\x39" * 10, varipacker.Encoding.SEXTET_RUN),
        varipacker.encode_chunk(b"\x40" * 10, varipacker.Encoding.OCTET_RUN)
    ])
コード例 #7
0
def test_encode_all():
    content = b"\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e" + (
        b"\x39" * 10) + b"\x61\x62\x01\x02\x03\x04\x05\x06" + (
            b"\x40" * 10) + b"\x77" + (b"\x39" * 10) + (b"\x40" * 10)
    result = varipacker.encode(content)
    assert result == "".join([
        varipacker.encode_chunk(
            b"\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e",
            varipacker.Encoding.SEXTET_STREAM),
        varipacker.encode_chunk(b"\x39" * 10, varipacker.Encoding.SEXTET_RUN),
        varipacker.encode_chunk(b"\x61\x62", varipacker.Encoding.LINEAR64),
        varipacker.encode_chunk(b"\x01\x02\x03\x04\x05\x06",
                                varipacker.Encoding.TRIAD_STREAM),
        varipacker.encode_chunk(b"\x40" * 10, varipacker.Encoding.OCTET_RUN),
        varipacker.encode_chunk(b"\x77", varipacker.Encoding.LINEAR64),
        varipacker.encode_chunk(b"\x39" * 10, varipacker.Encoding.SEXTET_RUN),
        varipacker.encode_chunk(b"\x40" * 10, varipacker.Encoding.OCTET_RUN)
    ])
コード例 #8
0
ファイル: varipack.py プロジェクト: angrydill/ItsyBitser
def main():
    """ Program entry point """

    parser = argparse.ArgumentParser(
        description="Packs/unpacks Hextream content to/from the Varipacker format"
    )
    commands = parser.add_mutually_exclusive_group(required=True)
    commands.add_argument("-p", "--pack", action="store_true",
                          help="Pack Hextream content into Varipacker format")
    commands.add_argument("-u", "--unpack", action="store_true",
                          help="Unpack Varipacker content into Hextream format")
    parser.add_argument('infile', nargs='?', type=argparse.FileType('r', encoding="UTF-8"),
                        help="Name of file with content to be packed/unpacked",
                        default=sys.stdin)
    parser.add_argument('outfile', nargs='?', type=argparse.FileType('w', encoding="UTF-8"),
                        help="Name of file in which to write packed/unpacked content",
                        default=sys.stdout)
    parser.add_argument("-c", "--comment", type=str,
                        help="Prepend the output with specified comment string")
    parser.add_argument("-n", "--omit-newline", action="store_true",
                        help="The ending newline character(s) will be omitted from the output")
    args = parser.parse_args()

    source_content = args.infile.read()

    if args.pack:
        binary_content = hextream.decode(source_content)
        output_content = varipacker.encode(binary_content)
    else:
        binary_content = varipacker.decode(varipacker.distill(source_content))
        output_content = hextream.encode(binary_content)

    if args.comment:
        args.outfile.write("# {}\n".format(args.comment))
    args.outfile.write(output_content)
    if not args.omit_newline:
        args.outfile.write("\n")
コード例 #9
0
def test_distill_comments():
    clean_content = varipacker.encode(bytes(range(0, 100)))
    dirty_content = "#comment1\n" + clean_content[:
                                                  40] + "# coment 2 \r\n" + clean_content[
                                                      40:]
    assert varipacker.distill(dirty_content) == clean_content
コード例 #10
0
def test_distill_whitespace():
    clean_content = varipacker.encode(bytes(range(0, 100)))
    dirty_content = clean_content[:20] + " " + clean_content[
        20:30] + "\r\n" + clean_content[30:]
    assert varipacker.distill(dirty_content) == clean_content
コード例 #11
0
def test_encode_all_sextet_run_single_chunk():
    content = b"\x39" * 511
    result = varipacker.encode(content)
    assert result == "".join(
        [varipacker.encode_chunk(content, varipacker.Encoding.SEXTET_RUN)])
コード例 #12
0
def test_encode_all_linear64_single_chunk():
    content = (b"\x40\x00\x00\x40" * 127) + b"\x40\x00\x00"
    result = varipacker.encode(content)
    assert result == "".join(
        [varipacker.encode_chunk(content, varipacker.Encoding.LINEAR64)])
コード例 #13
0
def test_encode_empty():
    result = varipacker.encode(b"")
    assert result == ""