예제 #1
0
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,
        },
    )
예제 #2
0
    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
예제 #3
0
 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'
예제 #4
0
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,
        )
예제 #5
0
 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
예제 #6
0
파일: dat.py 프로젝트: imbi7py/poe_stash
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)
예제 #7
0
    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'
예제 #8
0
def files(poe_version):
    return [
        section for section in load(version=poe_version)
    ]
예제 #9
0
 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
예제 #10
0
def test_load():
    return load(os.path.join(spec_dir, 'dat_testspec.py'))