def test_get_table_by_symbol(self): fmf = FMF() table = FMFTable().initialize('table', 'tab') fmf.tables = [table] fmftable = fmf.get_table('tab') assert fmftable == table with pytest.raises(UndefinedObject) as e_info: fmf.get_table('tub')
def test_get_table_iteratively(self): fmf = FMF() table = FMFTable() fmf.tables = [table] fmftable = fmf.get_table() assert fmftable == table with pytest.raises(UndefinedObject) as e_info: fmf.get_table()
def test_get_table_mixed(self): fmf = FMF() table1 = FMFTable().initialize('table1', 'tab1') table2 = FMFTable().initialize('table2', 'tab2') fmf.tables = [table1, table2] fmftable = fmf.get_table('tab1') assert fmftable == table1 with pytest.raises(AmbigousObject) as e_info: fmf.get_table()
def test_set_reference(self): fmf = FMF() fmf.set_reference('test title', 'me', \ 'aldebaran, universe', '1970-01-01') assert fmf != None assert isinstance(fmf, FMF) assert len(fmf.meta_sections) == 1 ref = fmf.meta_sections[0] assert ref.entries == ['test title', 'me', \ 'aldebaran, universe', '1970-01-01']
def test_fmf_reader_tablesec_entr(self): """Test number of table section entries""" abs_path = os.path.abspath(os.path.dirname(__file__)) fmf_file = abs_path + '/files/sample_fmf_file.fmf' fmf_file_pointer = open(fmf_file, "r") fmf_object_return = FMF() fmf_object_return = self.fmf_object.read(fmf_file_pointer) assert len(self.fmf_object.table_sections) == len( fmf_object_return.table_sections)
def test_fmf_reader_table_comments(self): """Test content of table comments""" abs_path = os.path.abspath(os.path.dirname(__file__)) fmf_file = abs_path + '/files/sample_fmf_file.fmf' fmf_file_pointer = open(fmf_file, "r") fmf_object_return = FMF() fmf_object_return = self.fmf_object.read(fmf_file_pointer) assert self.fmf_object.table_sections.comments == fmf_object_return.\ table_sections.comments
def test_set_reference_full(self): fmf = FMF() fmf.set_reference('test title', 'me', \ 'aldebaran, universe', '1970-01-01', \ '*****@*****.**') assert fmf != None assert isinstance(fmf, FMF) assert len(fmf.meta_sections) == 1 ref = fmf.meta_sections[0] assert ref.entries == ['test title', 'me', \ 'aldebaran, universe', '1970-01-01', \ '*****@*****.**'] fmf.set_reference('Why to always carry a towel', 'me', \ 'earth, universe', '1970-01-01', \ '*****@*****.**') assert len(fmf.meta_sections) == 1 ref = fmf.meta_sections[0] assert ref.entries == ['Why to always carry a towel', 'me', \ 'earth, universe', '1970-01-01', \ '*****@*****.**']
def setup(self): """Populate the whole FMF object""" # pylint: disable=attribute-defined-outside-init self.fmf_object = FMF() # pylint: enable=attribute-defined-outside-init misc_params = {'fmf_version': 1.0} self.fmf_object.set_header(None, None, None, misc_params) self.fmf_object.add_comment("comment after header section") self.fmf_object.set_reference( 'Measurement of Faradays constant', 'Andreas W. Liehr and Andreas J. Holtmann', 'Physikalisches Institut, Universitaet Muenster', '1995-01-10', '*****@*****.**') meta_section1 = self.fmf_object.add_meta_section('measurement') meta_section1.add_entry('room temperature', r'T = (292 \pm 1) K') meta_section1.add_entry('barometric pressure', r'p = 1.0144 bar \pm 10 mbar') meta_section1.add_entry('current', r'I = (171 \pm 1) mA') meta_section_2 = self.fmf_object.add_meta_section('Analysis') meta_section_2.add_entry('estimation method', 'line of best fit') table1 = self.fmf_object.add_table('analysis', 'A') table1.add_column('Gas', 'G', '%s') table1.add_column('number of electrons', 'N_e', '%d') table1.add_column('volume per time interval', 'V', '%5.3f') table1.add_column('uncertainty of ratio', r"\Delta_{V'}", '%.3f') table1.add_column('Faraday constant', 'Fa', '%d') table1.add_column('error of Faraday constant', r'\Delta_{Fa}', '%d') table1.add_comment(r"G\tN_e\tV'\t\Delta_{V'} Fa\t\Delta_{Fa}") table1.add_data_row(['H_2', '2', '1.256', '0.065', '91400', '5500']) table1.add_data_row(['O_2', '4', '0.562', '0.04', '102200', '7800']) table2 = self.fmf_object.add_table('primary', 'P') table2.add_column('time', r't [min] \pm 5 [s]', '%.1f') table2.add_column('hydrogen volume', r'V_{H_2}(t) \pm 0.2 [cm^3]', '%.1f') table2.add_column('oxygen volume', r'V_{O_2}(t) \pm 0.2 [cm^3]', '%.1f') table2.add_data_column(['2.5', '4', '6']) table2.add_data_column(['2.0', '4.0', '6.6']) table2.add_data_column(['2.1', '2.4', '3.7'])
def test_fmf_read_and_write(self): """Compare output of read and write""" abs_path = os.path.abspath(os.path.dirname(__file__)) fmf_file = abs_path + '/files/sample_fmf_file.fmf' fmf_file_pointer = open(fmf_file, "r") fmf_object_return = FMF() fmf_object_return = self.fmf_object.read(fmf_file_pointer) assert fmf_object_return is not None stream = StringIO() stream.write(fmf_file_pointer.read()) output = StringIO() output.write(self.fmf_object) assert stream.getvalue().strip() == output.getvalue().strip()
def test_fmf_reader_table_def_entr(self): """Test table definition entries (keys and values)""" abs_path = os.path.abspath(os.path.dirname(__file__)) fmf_file = abs_path + '/files/sample_fmf_file.fmf' fmf_file_pointer = open(fmf_file, "r") fmf_object_return = FMF() fmf_object_return = self.fmf_object.read(fmf_file_pointer) for key, val in self.fmf_object.table_sections.table_definitions.\ items(): if key not in fmf_object_return.table_sections.table_definitions.\ keys(): raise Exception("Table definition keys do not match") if fmf_object_return.table_sections.table_definitions.get( key, None) != val: raise Exception("Table definition values do not match")
def test_fmf_reader_metasec_entries(self): """Test meta section entries (key and values)""" abs_path = os.path.abspath(os.path.dirname(__file__)) fmf_file = abs_path + '/files/sample_fmf_file.fmf' fmf_file_pointer = open(fmf_file, "r") fmf_object_return = FMF() fmf_object_return = self.fmf_object.read(fmf_file_pointer) assert len(self.fmf_object.meta_sections) == len( fmf_object_return.meta_sections) if len(self.fmf_object.meta_sections) == len( fmf_object_return.meta_sections): for key, val in self.fmf_object.meta_sections.entries.items(): if key not in fmf_object_return.meta_sections.entries.keys(): raise Exception("Meta section keys do not match") if fmf_object_return.meta_sections.entries.get(key, None) \ != val: raise Exception("Meta section values do not match")
def setup(self): self.fmf_object = FMF()
def test_create_fmf_meta_section(self): meta_section = FMF.add_meta_section(self.fmf_object, 'Name') self.fmf_object.meta_sections.append(meta_section) assert self.fmf_object.meta_sections is not None assert len(self.fmf_object.meta_sections) > 0
def test_add_meta_section_invalid_name(self): FMF.add_meta_section(self.fmf_object, '*Name')
def __initialize__(self): """Set up an empty FMF object""" # pylint: disable=attribute-defined-outside-init self.fmf_object = FMF()
def test_add_meta_section_existing_name(self): meta_section = FMF.add_meta_section(self.fmf_object, 'Name') self.fmf_object.meta_sections.append(meta_section) meta_section2 = FMF.add_meta_section(self.fmf_object, 'Name') self.fmf_object.meta_sections.append(meta_section2)
def test_create_fmf_with_table(self): self.fmf_object.table_sections.append(\ FMF.add_table(self.fmf_object, 'Table Name', \ 'Table Symbol')) assert self.fmf_object.table_sections is not None assert len(self.fmf_object.table_sections) > 0
def test_get_meta_section(self): meta_section = FMF.add_meta_section(self.fmf_object, 'Name') self.fmf_object.meta_sections.append(meta_section) meta_section_returned = FMF.get_meta_section(self.fmf_object, 'Name1') print meta_section_returned.name assert meta_section_returned is not None
class TestFmfWriterReader(object): """Class containing the setup and the tests for FMF read and write methods""" def setup(self): """Populate the whole FMF object""" # pylint: disable=attribute-defined-outside-init self.fmf_object = FMF() # pylint: enable=attribute-defined-outside-init misc_params = {'fmf_version': 1.0} self.fmf_object.set_header(None, None, None, misc_params) self.fmf_object.add_comment("comment after header section") self.fmf_object.set_reference( 'Measurement of Faradays constant', 'Andreas W. Liehr and Andreas J. Holtmann', 'Physikalisches Institut, Universitaet Muenster', '1995-01-10', '*****@*****.**') meta_section1 = self.fmf_object.add_meta_section('measurement') meta_section1.add_entry('room temperature', r'T = (292 \pm 1) K') meta_section1.add_entry('barometric pressure', r'p = 1.0144 bar \pm 10 mbar') meta_section1.add_entry('current', r'I = (171 \pm 1) mA') meta_section_2 = self.fmf_object.add_meta_section('Analysis') meta_section_2.add_entry('estimation method', 'line of best fit') table1 = self.fmf_object.add_table('analysis', 'A') table1.add_column('Gas', 'G', '%s') table1.add_column('number of electrons', 'N_e', '%d') table1.add_column('volume per time interval', 'V', '%5.3f') table1.add_column('uncertainty of ratio', r"\Delta_{V'}", '%.3f') table1.add_column('Faraday constant', 'Fa', '%d') table1.add_column('error of Faraday constant', r'\Delta_{Fa}', '%d') table1.add_comment(r"G\tN_e\tV'\t\Delta_{V'} Fa\t\Delta_{Fa}") table1.add_data_row(['H_2', '2', '1.256', '0.065', '91400', '5500']) table1.add_data_row(['O_2', '4', '0.562', '0.04', '102200', '7800']) table2 = self.fmf_object.add_table('primary', 'P') table2.add_column('time', r't [min] \pm 5 [s]', '%.1f') table2.add_column('hydrogen volume', r'V_{H_2}(t) \pm 0.2 [cm^3]', '%.1f') table2.add_column('oxygen volume', r'V_{O_2}(t) \pm 0.2 [cm^3]', '%.1f') table2.add_data_column(['2.5', '4', '6']) table2.add_data_column(['2.0', '4.0', '6.6']) table2.add_data_column(['2.1', '2.4', '3.7']) def test_fmf_writer(self): """Test fmf write method""" output = StringIO() # Write the fmf object to memory output.write(self.fmf_object) self.fmf_object.write(output) # Location of fmf file abs_path = os.path.abspath(os.path.dirname(__file__)) fmf_file = abs_path + '/files/sample_fmf_file.fmf' # Read from file and write to stream stream = StringIO() stream.write(open(fmf_file).read()) stream = StringIO() stream.write(open(fmf_file).read()) assert output.getvalue().strip() == stream.getvalue().strip() def test_fmf_writer_no_argument(self): """Write method without filepointer""" with raises(MissingSubmission): self.fmf_object.write(None) def test_fmf_reader_no_argument(self): """Read method without filepointer""" with raises(MissingSubmission): self.fmf_object.read(None) def test_fmf_reader_metasec_entries(self): """Test meta section entries (key and values)""" abs_path = os.path.abspath(os.path.dirname(__file__)) fmf_file = abs_path + '/files/sample_fmf_file.fmf' fmf_file_pointer = open(fmf_file, "r") fmf_object_return = FMF() fmf_object_return = self.fmf_object.read(fmf_file_pointer) assert len(self.fmf_object.meta_sections) == len( fmf_object_return.meta_sections) if len(self.fmf_object.meta_sections) == len( fmf_object_return.meta_sections): for key, val in self.fmf_object.meta_sections.entries.items(): if key not in fmf_object_return.meta_sections.entries.keys(): raise Exception("Meta section keys do not match") if fmf_object_return.meta_sections.entries.get(key, None) \ != val: raise Exception("Meta section values do not match") def test_fmf_reader_tablesec_entr(self): """Test number of table section entries""" abs_path = os.path.abspath(os.path.dirname(__file__)) fmf_file = abs_path + '/files/sample_fmf_file.fmf' fmf_file_pointer = open(fmf_file, "r") fmf_object_return = FMF() fmf_object_return = self.fmf_object.read(fmf_file_pointer) assert len(self.fmf_object.table_sections) == len( fmf_object_return.table_sections) def test_fmf_reader_data_def_entr(self): """Test data definition entries (keys and values)""" abs_path = os.path.abspath(os.path.dirname(__file__)) fmf_file = abs_path + '/files/sample_fmf_file.fmf' fmf_file_pointer = open(fmf_file, "r") fmf_object_return = FMF() fmf_object_return = self.fmf_object.read(fmf_file_pointer) for key, val in self.fmf_object.table_sections.data_definitions.\ items(): if key not in fmf_object_return.table_sections.data_definitions.\ keys(): raise Exception("Data definition keys do not match") if fmf_object_return.table_sections.data_definitions.\ get(key, None) != val: raise Exception("Data definition values do not match") def test_fmf_reader_table_def_entr(self): """Test table definition entries (keys and values)""" abs_path = os.path.abspath(os.path.dirname(__file__)) fmf_file = abs_path + '/files/sample_fmf_file.fmf' fmf_file_pointer = open(fmf_file, "r") fmf_object_return = FMF() fmf_object_return = self.fmf_object.read(fmf_file_pointer) for key, val in self.fmf_object.table_sections.table_definitions.\ items(): if key not in fmf_object_return.table_sections.table_definitions.\ keys(): raise Exception("Table definition keys do not match") if fmf_object_return.table_sections.table_definitions.get( key, None) != val: raise Exception("Table definition values do not match") def test_fmf_reader_table_data(self): """Test content of table data""" abs_path = os.path.abspath(os.path.dirname(__file__)) fmf_file = abs_path + '/files/sample_fmf_file.fmf' fmf_file_pointer = open(fmf_file, "r") fmf_object_return = FMF() fmf_object_return = self.fmf_object.read(fmf_file_pointer) assert self.fmf_object.table_sections.data == fmf_object_return.\ table_sections.data def test_fmf_reader_global_comments(self): """Test content of global comments""" abs_path = os.path.abspath(os.path.dirname(__file__)) fmf_file = abs_path + '/files/sample_fmf_file.fmf' fmf_file_pointer = open(fmf_file, "r") fmf_object_return = FMF() fmf_object_return = self.fmf_object.read(fmf_file_pointer) assert self.fmf_object.global_comments == fmf_object_return.\ global_comments def test_fmf_reader_table_comments(self): """Test content of table comments""" abs_path = os.path.abspath(os.path.dirname(__file__)) fmf_file = abs_path + '/files/sample_fmf_file.fmf' fmf_file_pointer = open(fmf_file, "r") fmf_object_return = FMF() fmf_object_return = self.fmf_object.read(fmf_file_pointer) assert self.fmf_object.table_sections.comments == fmf_object_return.\ table_sections.comments def test_fmf_read_and_write(self): """Compare output of read and write""" abs_path = os.path.abspath(os.path.dirname(__file__)) fmf_file = abs_path + '/files/sample_fmf_file.fmf' fmf_file_pointer = open(fmf_file, "r") fmf_object_return = FMF() fmf_object_return = self.fmf_object.read(fmf_file_pointer) assert fmf_object_return is not None stream = StringIO() stream.write(fmf_file_pointer.read()) output = StringIO() output.write(self.fmf_object) assert stream.getvalue().strip() == output.getvalue().strip()
class TestFMF: def setup(self): self.fmf_object = FMF() # strict API example def test_initialize_empty(self): fmf0 = FMF() fmf = fmf0.initialize() assert fmf != None assert isinstance(fmf, FMF) assert fmf0 == fmf def test_initialize_reference(self): fmf = FMF().initialize('test title', 'me', \ 'aldebaran, universe', '1970-01-01') assert fmf != None assert isinstance(fmf, FMF) assert len(fmf.meta_sections) == 1 ref = fmf.meta_sections[0] assert ref.entries == ['test title', 'me', \ 'aldebaran, universe', '1970-01-01'] def test_initialize_reference_full(self): fmf = FMF().initialize('test title', 'me', \ 'aldebaran, universe', '1970-01-01', \ '*****@*****.**') assert fmf != None assert isinstance(fmf, FMF) assert len(fmf.meta_sections) == 1 ref = fmf.meta_sections[0] assert ref.entries == ['test title', 'me', \ 'aldebaran, universe', '1970-01-01', \ '*****@*****.**'] def test_set_reference(self): fmf = FMF() fmf.set_reference('test title', 'me', \ 'aldebaran, universe', '1970-01-01') assert fmf != None assert isinstance(fmf, FMF) assert len(fmf.meta_sections) == 1 ref = fmf.meta_sections[0] assert ref.entries == ['test title', 'me', \ 'aldebaran, universe', '1970-01-01'] def test_set_reference_full(self): fmf = FMF() fmf.set_reference('test title', 'me', \ 'aldebaran, universe', '1970-01-01', \ '*****@*****.**') assert fmf != None assert isinstance(fmf, FMF) assert len(fmf.meta_sections) == 1 ref = fmf.meta_sections[0] assert ref.entries == ['test title', 'me', \ 'aldebaran, universe', '1970-01-01', \ '*****@*****.**'] fmf.set_reference('Why to always carry a towel', 'me', \ 'earth, universe', '1970-01-01', \ '*****@*****.**') assert len(fmf.meta_sections) == 1 ref = fmf.meta_sections[0] assert ref.entries == ['Why to always carry a towel', 'me', \ 'earth, universe', '1970-01-01', \ '*****@*****.**'] def test_get_table_iteratively(self): fmf = FMF() table = FMFTable() fmf.tables = [table] fmftable = fmf.get_table() assert fmftable == table with pytest.raises(UndefinedObject) as e_info: fmf.get_table() def test_get_table_by_symbol(self): fmf = FMF() table = FMFTable().initialize('table', 'tab') fmf.tables = [table] fmftable = fmf.get_table('tab') assert fmftable == table with pytest.raises(UndefinedObject) as e_info: fmf.get_table('tub') def test_get_table_mixed(self): fmf = FMF() table1 = FMFTable().initialize('table1', 'tab1') table2 = FMFTable().initialize('table2', 'tab2') fmf.tables = [table1, table2] fmftable = fmf.get_table('tab1') assert fmftable == table1 with pytest.raises(AmbigousObject) as e_info: fmf.get_table() # strict API example def test_empty_fmf(self): assert self.fmf_object is not None def test_empty_fmf_instance(self): assert isinstance(self.fmf_object, FMF) def test_create_fmf_with_reference(self): self.fmf_object.reference_section = \ self.fmf_object.set_reference(self, 'title', \ 'Creator', 'Created', 'Place') self.fmf_object.meta_sections.append(self.fmf_object.reference_section) assert self.fmf_object.meta_sections is not None assert len(self.fmf_object.meta_sections) > 0 # assert isinstance(self.fmf_object, Fmf.FMF) def test_create_fmf_meta_section(self): meta_section = FMF.add_meta_section(self.fmf_object, 'Name') self.fmf_object.meta_sections.append(meta_section) assert self.fmf_object.meta_sections is not None assert len(self.fmf_object.meta_sections) > 0 def test_add_meta_section_invalid_name(self): FMF.add_meta_section(self.fmf_object, '*Name') def test_add_meta_section_existing_name(self): meta_section = FMF.add_meta_section(self.fmf_object, 'Name') self.fmf_object.meta_sections.append(meta_section) meta_section2 = FMF.add_meta_section(self.fmf_object, 'Name') self.fmf_object.meta_sections.append(meta_section2) def test_create_fmf_with_table(self): self.fmf_object.table_sections.append(\ FMF.add_table(self.fmf_object, 'Table Name', \ 'Table Symbol')) assert self.fmf_object.table_sections is not None assert len(self.fmf_object.table_sections) > 0 def test_get_meta_section(self): meta_section = FMF.add_meta_section(self.fmf_object, 'Name') self.fmf_object.meta_sections.append(meta_section) meta_section_returned = FMF.get_meta_section(self.fmf_object, 'Name1') print meta_section_returned.name assert meta_section_returned is not None
def test_initialize_empty(self): fmf0 = FMF() fmf = fmf0.initialize() assert fmf != None assert isinstance(fmf, FMF) assert fmf0 == fmf
def test_add_meta_section_to_fmf(self): fmf_object = FMF() fmf_object.meta_sections = [fmf_object.add_meta_section(self.meta_section.name)] assert fmf_object.meta_sections is not None