def test_grf_open_empty_file(data_files): expected = b'' # encoding.grf contains only empty files grf = open_grf(data_files['encoding.grf']) name = list(grf.files()).pop() opened_file = grf.open(name) assert opened_file.data == expected
def test_grf_files_has_correct_length(data_files, name, expected): grf = open_grf(data_files[name]) files_length = len(list(grf.files())) assert files_length == expected
def test_grf_raises_invalid_grf_error(data_files, name): with pytest.raises(GRFParseError): open_grf(data_files[name])
def test_grf_has_correct_encryption(data_files, name, expected): grf = open_grf(data_files[name]) assert grf.allow_encryption == expected
def test_grf_has_correct_version(data_files, name, expected): grf = open_grf(data_files[name]) assert grf.version == expected
def test_grf_decodes_filenames(data_files): expected = open(data_files['encoding.txt'], encoding='utf8') expected = {line.strip() for line in expected} grf = open_grf(data_files['encoding.grf']) names = {f.filename.replace('\\', '/') for f in grf} assert names == expected
def test_grf_iterator_contains_opened_files(data_files): grf = open_grf(data_files['ab.grf']) for f in grf: assert f == grf.open(f.filename)
def test_grf_iterator_has_correct_files(data_files, name, expected): grf = open_grf(data_files[name]) names = {f.filename for f in grf} assert names == expected
def test_grf_open_known_filetypes(data_files, name, filetype): grf = open_grf(data_files['filetypes.grf']) opened_file = grf.open(name) assert isinstance(opened_file, filetype)
def test_grf_open_file_is_io_object(data_files): grf = open_grf(data_files['ab.grf']) opened_file = grf.open('b.dat') assert isinstance(opened_file, io.IOBase)
def test_grf_open_file_has_correct_data(data_files, name): expected = open(data_files[name], 'rb').read() grf = open_grf(data_files['ab.grf']) opened_file = grf.open(name) assert opened_file.data == expected
def test_grf_has_correct_length(data_files, name, expected): grf = open_grf(data_files[name]) length = len(grf) assert length == expected
def test_grf_open_file_has_correct_filename(data_files, name): grf = open_grf(data_files['ab.grf']) opened_file = grf.open(name) assert opened_file.filename == name
def test_grf_files_has_correct_files(data_files, name, expected): grf = open_grf(data_files[name]) names = set(grf.files()) assert names == expected
def test_grf_extract_creates_correct_file(tmpdir, data_files, name): expected_path = os.path.join(tmpdir.strpath, 'data', name) grf = open_grf(data_files['ab.grf']) grf.extract(name, tmpdir.strpath) assert os.path.exists(expected_path)
def test_grf_iterator_has_correct_length(data_files, name, expected): grf = open_grf(data_files[name]) iterator_length = len(list(grf)) assert iterator_length == expected
def test_grf_extract_created_file_has_correct_data(tmpdir, data_files, name): original_path = data_files[name] expected_path = os.path.join(tmpdir.strpath, 'data', name) grf = open_grf(data_files['ab.grf']) grf.extract(name, tmpdir.strpath) assert filecmp.cmp(original_path, expected_path, False)
def test_grf_iterates_twice(data_files, name): grf = open_grf(data_files[name]) first = {f.filename for f in grf} second = {f.filename for f in grf} assert first == second
def test_grf_extract_raises_file_not_found_error(data_files): grf = open_grf(data_files['ab.grf']) with pytest.raises(FileNotFoundError): grf.extract('invalid file name')
def test_grf_decodes_filenames(data_files): expected = {line.strip() for line in open(data_files['encoding.txt'])} grf = open_grf(data_files['encoding.grf']) names = {f.filename for f in grf} assert names == expected
def test_grf_has_correct_version(data_files, name): grf = open_grf(data_files[name]) assert grf.version == 0x200