DAMASK_EICMD/python/tests/test_YAML.py

81 lines
2.7 KiB
Python

import pytest
import numpy as np
from damask import YAML
from damask import Rotation
from damask import Orientation
class TestYAML:
def test_init_keyword(self):
assert YAML(p=4)['p'] == 4
@pytest.mark.parametrize('config',[{'p':1},'{p: 1}'])
def test_init_config(self,config):
assert YAML(config)['p'] == 1
@pytest.mark.parametrize('config',[{'p':1},'{p: 1}'])
def test_init_both(self,config):
assert YAML(config,p=2)['p'] == 2
@pytest.mark.parametrize('flow_style',[None,True,False])
def test_load_save_str(self,tmp_path,flow_style):
config = YAML()
config['A'] = 1
config['B'] = [2,3]
config.save(tmp_path/'config.yaml',default_flow_style=flow_style)
assert YAML.load(tmp_path/'config.yaml') == config
def test_load_save_file(self,tmp_path):
config = YAML()
config['A'] = 1
config['B'] = [2,3]
with open(tmp_path/'config.yaml','w') as f:
config.save(f)
with open(tmp_path/'config.yaml') as f:
assert YAML.load(f) == config
def test_add_remove(self):
dummy = {'hello':'world','foo':'bar'}
config = YAML()
config |= dummy
assert config == YAML() | dummy
config = config.delete(dummy)
assert config == YAML()
assert (config | dummy ).delete( 'hello' ) == config | {'foo':'bar'}
assert (config | dummy ).delete([ 'hello', 'foo' ]) == config
assert (config | YAML(dummy)).delete({ 'hello':1,'foo':2 }) == config
assert (config | YAML(dummy)).delete(YAML({'hello':1 })) == config | {'foo':'bar'}
def test_repr(self,tmp_path):
config = YAML()
config['A'] = 1
config['B'] = [2,3]
with open(tmp_path/'config.yaml','w') as f:
f.write(config.__repr__())
assert YAML.load(tmp_path/'config.yaml') == config
def test_numpy(self,tmp_path):
assert YAML({'A':np.ones(3,'i'), 'B':np.ones(1)[0]}).__repr__() == \
YAML({'A':[1,1,1], 'B':1.0}).__repr__()
def test_abstract_is_valid(self):
with pytest.raises(NotImplementedError):
YAML().is_valid
def test_abstract_is_complete(self):
with pytest.raises(NotImplementedError):
YAML().is_complete
@pytest.mark.parametrize('data',[Rotation.from_random(),Orientation.from_random(lattice='cI')])
def test_rotation_orientation(self,data):
assert str(YAML(a=data)) == str(YAML(a=data.as_quaternion()))
def test_initialize(self):
yml = """
a:
- 1
- 2
"""
assert YAML(yml) == YAML('{"a":[1,2]}') == YAML(a=[1,2]) == YAML(dict(a=[1,2]))