def rr_instance(rr_temp_dir): return dat.RelationalReader( path_or_file_system=rr_temp_dir, read_options={ 'specification': load(os.path.join( spec_dir, 'rr_test.py' )), 'use_dat_value': False, }, )
def test_runtime_rowsize_mismatch(self, rr_temp_dir): df = dat.DatFile('Main.dat') with pytest.raises(dat.SpecificationError) as e: dr = df.read( os.path.join(rr_temp_dir, 'Data', 'Main.dat'), specification=load(os.path.join( spec_dir, 'runtime_rowsize_mismatch.py' )), ) assert e.value.code == \ dat.SpecificationError.ERRORS.RUNTIME_ROWSIZE_MISMATCH
def test_enums(self, rr_temp_dir, use_dat_value): rr = dat.RelationalReader( path_or_file_system=rr_temp_dir, read_options={ 'specification': load(os.path.join( spec_dir, 'rr_test.py' )), 'use_dat_value': use_dat_value, }, ) for column, values in self.enums_expected.items(): for i, row in enumerate(rr['Main.dat']): assert row[column] == values[i], 'Testing against expected enum'
def pytest_generate_tests(metafunc): global run if run: dat.set_default_spec(version=get_version(metafunc.config)) run = False if 'dat_file_name' in metafunc.fixturenames: file_names = [fn for fn in load(version=get_version(metafunc.config))] metafunc.parametrize('dat_file_name', file_names) elif 'unique_dat_file_name' in metafunc.fixturenames and \ 'unique_dat_field_name' in metafunc.fixturenames: tests = [] for file_name, file_section in load( version=get_version(metafunc.config)).items(): for field_name, field_section in file_section['fields'].items(): if not field_section['unique']: continue tests.append((file_name, field_name)) metafunc.parametrize( ('unique_dat_file_name', 'unique_dat_field_name'), tests, )
def test_runtime_missing_foreign_key(self, rr_temp_dir, spec_name): rr = dat.RelationalReader( path_or_file_system=rr_temp_dir, raise_error_on_missing_relation=True, read_options={ 'specification': load(os.path.join( spec_dir, spec_name )), 'use_dat_value': False, }, ) with pytest.raises(dat.SpecificationError) as e: rr.get_file('Data/Main.dat') assert e.value.code == \ dat.SpecificationError.ERRORS.RUNTIME_MISSING_FOREIGN_KEY
def set_default_spec(version=constants.VERSION.DEFAULT, reload=False): """ Sets the default specification to use for the dat reader. See :py:mod:`PyPoE.poe.file.specification.__init__` for more info Parameters ---------- version : constants.VERSION Version of the game to load the default specification for. reload : bool Whether to reload the version. """ global _default_spec _default_spec = load(version=version, reload=reload)
def test_relations(self, rr_temp_dir, use_dat_value): rr = dat.RelationalReader( path_or_file_system=rr_temp_dir, read_options={ 'specification': load(os.path.join( spec_dir, 'rr_test.py' )), 'use_dat_value': use_dat_value, }, ) for column, values in self.relations_expected.items(): for i, row in enumerate(rr['Main.dat']): expected = values[i] if expected is not None: expected = rr['Other.dat'][expected] else: expected = None assert row[column] == expected, 'Testing against expected row'
def files(poe_version): return [ section for section in load(version=poe_version) ]
def test_validation_errors(self, file_name, error): with pytest.raises(dat.SpecificationError) as e: load(os.path.join(spec_dir, file_name)) assert e.value.code == error
def test_load(): return load(os.path.join(spec_dir, 'dat_testspec.py'))