def test_input(): from numpy import array, all, abs from pylada.error import ValueError from pylada.gulp import Functional functional = Functional() functional.morse['Ti', 'O'] = [1.0279493, 3.640737, 1.88265, 0, 25] functional.morse['Ti', 'Ti'] = [0.00567139, 1.5543, 4.18784, 0, 25] functional.morse['O', 'O'] = [0.00567139, 1.5543, 4.18784, 0, 25] # should fail since no interaction enabled yet. try: functional.input_string() except ValueError: pass else: raise Exception() functional.morse.enabled = True string = functional.input_string().splitlines() assert string[:2] == [''] * 2 assert string[2] == 'morse' assert string[3].split()[:4] == ['O', 'core'] * 2 assert all(abs(array( string[3].split()[4:], dtype='float64') - functional.morse['O', 'O'] ) < 1e-3) assert string[4].split()[:4] == ['Ti', 'core'] * 2 assert all(abs(array( string[4].split()[4:], dtype='float64') - functional.morse['Ti', 'Ti'] ) < 1e-3) assert string[5].split()[:4] == ['O', 'core', 'Ti', 'core'] assert all(abs(array( string[5].split()[4:], dtype='float64') - functional.morse['Ti', 'O'] ) < 1e-3)