Example #1
0
def test_read_write_one_player():
    """
    Read/rewrite info for an individual player
    """
    original_data = b'\t\x00Player 1\x00\x00\x00\xaaB\x00\x00lBH\x00H\x00\x00\t\x00\x01\x01\x03\x03\x03\x03\x03\x03\x03\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x00\x00\x80?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
    reader = ScnDataReader(original_data)
    structure = UnknownPlayerDataStructure.read(reader)
    # try to write it back
    writer = ScnDataWriter()
    structure.write(writer)
    new_data = writer.done()
    assert original_data == new_data
Example #2
0
def test_default():
    """
    Write then read back the default version of this data
    """
    writer = ScnDataWriter()
    scn_unknown_data_structure.default().write(writer)
    default_structure_binary = writer.done()
    assert len(default_structure_binary) == 708
    # try to read it back
    reader = ScnDataReader(default_structure_binary)
    structure = UnknownDataStructure.read(reader)
    assert structure.player_count == 9
    assert structure.unknown_player_data_structure[7].field1 == 'Player 8'
Example #3
0
def test_read_write():
    """
    Read/write entire 508 byte data structure found at the end of a blank scenario file.
    """
    original_data = b'\t\x00\x00\x00\t\x00Player 1\x00\x00\x00\xaaB\x00\x00lBH\x00H\x00\x00\t\x00\x01\x01\x03\x03\x03\x03\x03\x03\x03\x00\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x00\x00\x80?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\t\x00Player 2\x00\x00\x00\x90B\x00\x00\x90BH\x00H\x00\x00\t\x00\x01\x03\x01\x03\x03\x03\x03\x03\x03\x00\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x00\x00\x80?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\t\x00Player 3\x00\x00\x00\x90B\x00\x00\x90BH\x00H\x00\x00\t\x00\x01\x03\x03\x01\x03\x03\x03\x03\x03\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x00\x00\x80?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\t\x00Player 4\x00\x00\x00\x90B\x00\x00\x90BH\x00H\x00\x00\t\x00\x01\x03\x03\x03\x01\x03\x03\x03\x03\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x00\x00\x80?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\t\x00Player 5\x00\x00\x00\x90B\x00\x00\x90BH\x00H\x00\x00\t\x00\x01\x03\x03\x03\x03\x01\x03\x03\x03\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x00\x00\x80?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\t\x00Player 6\x00\x00\x00\x90B\x00\x00\x90BH\x00H\x00\x00\t\x00\x01\x03\x03\x03\x03\x03\x01\x03\x03\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x00\x00\x80?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\t\x00Player 7\x00\x00\x00\x90B\x00\x00\x90BH\x00H\x00\x00\t\x00\x01\x03\x03\x03\x03\x03\x03\x01\x03\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x04\x00\x00\x00\x00\x00\x80?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\t\x00Player 8\x00\x00\x00\x90B\x00\x00\x90BH\x00H\x00\x00\t\x00\x01\x03\x03\x03\x03\x03\x03\x03\x01\x00\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x04\x00\x00\x00\x01\x00\x00\x00\x00\x00\x80?\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
    # try to read it
    reader = ScnDataReader(original_data)
    structure = UnknownDataStructure.read(reader)
    assert structure.player_count == 9
    assert structure.unknown_player_data_structure[7].field1 == 'Player 8'
    # try to write it back
    writer = ScnDataWriter()
    structure.write(writer)
    # check it was the same
    new_data = writer.done()
    assert original_data == new_data
Example #4
0
def save(scenario: ScenarioFile, file_name: str):
    data = ScnDataWriter()
    scenario.write(data)
    result_bytes = data.done()
    with open(file_name, 'wb') as f:
        f.write(result_bytes)