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
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'
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
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)