Example #1
0
 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')
Example #2
0
 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()
Example #3
0
 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()
Example #4
0
 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
Example #7
0
 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")
Example #12
0
 def setup(self):
     self.fmf_object = FMF()
Example #13
0
 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
Example #14
0
 def test_add_meta_section_invalid_name(self):
     FMF.add_meta_section(self.fmf_object, '*Name')
Example #15
0
 def __initialize__(self):
     """Set up an empty FMF object"""
     # pylint: disable=attribute-defined-outside-init
     self.fmf_object = FMF()
Example #16
0
 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)
Example #17
0
 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
Example #18
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()
Example #20
0
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
Example #21
0
 def test_initialize_empty(self):
     fmf0 = FMF()
     fmf = fmf0.initialize()
     assert fmf != None
     assert isinstance(fmf, FMF)
     assert fmf0 == fmf
Example #22
0
    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