コード例 #1
0
class TestLoadSaveOdml(unittest.TestCase):
    """
    class to test loading the odml
    """

    def setUp(self):
        self.test_table = OdmlTable()
        self.expected_odmldict = [{'PropertyDefinition': None,
                                   'SectionName': 'section1',
                                   'PropertyName': 'property1',
                                   'Value': 'bla',
                                   'odmlDatatype': 'text',
                                   'DataUnit': None,
                                   'SectionType': 'undefined',
                                   'ValueDefinition': None,
                                   'DataUncertainty': None,
                                   'SectionDefinition': None,
                                   'Path': '/section1'}]

    def test_load_from_file(self):
        """
        test loading the odml-dictionary from an odml-file
        """
        filename = 'tmp_testfile.odml'
        doc = create_small_test_odml()
        odml.tools.xmlparser.XMLWriter(doc).write_file(filename)
        self.test_table.load_from_file(filename)
        os.remove(filename)
        self.assertEqual(self.test_table._odmldict, self.expected_odmldict)

    def test_load_from_function(self):
        """
        test loading the odml-dictionary from a function that generates an
        odml-document in python
        """
        self.test_table.load_from_function(create_small_test_odml)
        self.assertEqual(self.test_table._odmldict, self.expected_odmldict)

    def test_load_from_odmldoc(self):
        """
        test loading the odml-dictionary from an odml-document in python
        """
        doc = create_small_test_odml()
        self.test_table.load_from_odmldoc(doc)
        self.assertEqual(self.test_table._odmldict, self.expected_odmldict)

    def test_write2odml(self):
        """
        test writing the odmldict back to an odml-file
        """
        file1 = 'test.odml'
        file2 = 'test2.odml'
        doc = create_showall_test_odml()
        self.test_table.load_from_odmldoc(doc)
        odml.tools.xmlparser.XMLWriter(doc).write_file(file1)

        self.test_table.change_header(Path=1, SectionName=2, SectionType=3,
                                      SectionDefinition=4, PropertyName=5,
                                      PropertyDefinition=6, Value=7,
                                      ValueDefinition=8, DataUnit=9,
                                      DataUncertainty=10, odmlDatatype=11)
        self.test_table.write2odml(file2)

        self.test_table.load_from_file(file1)
        expected = self.test_table._odmldict
        self.test_table.load_from_file(file2)
        self.assertEqual(expected, self.test_table._odmldict)

        os.remove(file1)
        os.remove(file2)
コード例 #2
0
class TestChangeHeader(unittest.TestCase):

    def setUp(self):
        self.test_table = OdmlTable()

    def test_simple_change(self):
        """
        Tests simple changing of the header
        """
        self.test_table.change_header(Path=1, SectionType=2, Value=3)
        self.assertEqual(self.test_table._header, ["Path", "SectionType",
                                                   "Value"])

    def test_index_zero(self):
        """
        Test change_header with using the index 0
        """
        # TODO: change as exception is changed
        with self.assertRaises(Exception):
            self.test_table.change_header(Path=0, SectionType=1, Value=2)

    def test_negative_index(self):
        """
        Test change_header with using a negative index
        """
        # TODO: change Exception
        with self.assertRaises(Exception):
            self.test_table.change_header(Path=-1)

    def test_empty_cols_allowed(self):
        """
        Test change_header leaving empty columns, while it is allowed
        """
        self.test_table.allow_empty_columns = True
        self.test_table.change_header(Path=1, SectionType=3, Value=4)
        self.assertEqual(self.test_table._header, ["Path", None, "SectionType",
                                                   "Value"])

    # def test_empty_cols_forbidden(self):
    #     """
    #     Test change_header leaving empty columns, while this is forbidden
    #     """
    #     self.test_table.allow_empty_columns = False
    #     # TODO: exception
    #     with self.assertRaises(Exception):
    #         self.test_table.change_header(Path=1, SectionType=3, Value=4)

    def test_same_indizes(self):
        """
        Test change_header with two columns with same indizes
        """
        # TODO: Exception
        with self.assertRaises(Exception):
            self.test_table.change_header(Path=1, SectionType=1, Value=2)

    def test_wrong_keyword(self):
        """
        Test using change_header with a wrong keyword
        """
        # TODO: Exception
        with self.assertRaises(Exception):
            self.test_table.change_header(Path=1, Sectionname=2, Value=3)
コード例 #3
0
class TestOdmlTable(unittest.TestCase):
    """
    class to test the other functions of the OdmlTable-class
    """

    def setUp(self):
        self.test_table = OdmlTable()

    def test_change_titles(self):
        """
        changing the header_titles
        """
        expected = {"Path": "Pfad",
                    "SectionName": "Section Name",
                    "SectionType": "Section Type",
                    "SectionDefinition": "Section Definition",
                    "PropertyName": "Eigenschaft",
                    "PropertyDefinition": "Property Definition",
                    "Value": "Wert",
                    "ValueDefinition": "Value Definition",
                    "DataUnit": "Einheit",
                    "DataUncertainty": "Data Uncertainty",
                    "odmlDatatype": "Datentyp"}
        self.test_table.change_header_titles(Path="Pfad",
                                             PropertyName="Eigenschaft",
                                             Value="Wert", DataUnit="Einheit",
                                             odmlDatatype="Datentyp")
        self.assertEqual(self.test_table._header_titles, expected)

    # def test_change_allow_free_cols(self):
    #     """
    #     set allow_free_columns
    #     """
    #
    #     # self.test_table.allow_empty_columns = True
    #     # self.assertEqual(self.test_table._allow_empty_columns, True)
    #     # self.test_table.allow_empty_columns = False
    #     # self.assertEqual(self.test_table._allow_empty_columns, False)
    #     # # TODO: Exception
    #     # with self.assertRaises(Exception):
    #     #     self.test_table.allow_empty_columns = 4

    def test_forbid_free_cols(self):
        """
        test forbidding free columns while there are already free columns in
        the header
        """

        self.test_table.allow_empty_columns = True
        self.test_table.change_header(Path=1, PropertyDefinition=3, Value=4)
        # TODO: Exception aendern
        # with self.assertRaises(Exception):
        #     self.test_table.allow_empty_columns = False

    def test_merge(self):
        doc1 = create_compare_test(sections=2,properties=2,levels=2)
        # generate one additional Property, which is not present in doc2
        doc1.sections[0].append(odml.Property(name='Doc1Property2',value=5))
        #generate one additional Section, which is not present in doc2
        new_prop = odml.Property(name='Doc1Property2',value=10)
        new_sec = odml.Section(name='Doc1Section')
        new_sec.append(new_prop)
        doc1.sections[0].append(new_sec)
        self.test_table.load_from_odmldoc(doc1)

        doc2 = create_compare_test(sections=3,properties=3,levels=3)
        table2 = OdmlTable()
        table2.load_from_odmldoc(doc2)

        backup_table = copy.deepcopy(self.test_table)

        self.test_table.merge(doc2)
        backup_table.merge(table2)

        self.assertListEqual(self.test_table._odmldict,backup_table._odmldict)

        expected = len(table2._odmldict) + 2

        self.assertEqual(len(self.test_table._odmldict),expected)

        pass
コード例 #4
0
class TestChangeHeader(unittest.TestCase):
    def setUp(self):
        self.test_table = OdmlTable()

    def test_simple_change(self):
        """
        Tests simple changing of the header
        """
        self.test_table.change_header(Path=1, SectionType=2, Value=3)
        self.assertListEqual(self.test_table._header,
                             ["Path", "SectionType", "Value"])

    def test_shortcut_change(self):
        self.test_table.change_header('full')
        expected_entries = [
            'Path', 'SectionName', 'SectionType', 'SectionDefinition',
            'PropertyName', 'PropertyDefinition', 'Value', 'DataUnit',
            'DataUncertainty', 'odmlDatatype'
        ]
        self.assertEqual(len(self.test_table._header), len(expected_entries))
        for entry in expected_entries:
            self.assertIn(entry, self.test_table._header)

        self.test_table.change_header('minimal')
        self.assertListEqual(self.test_table._header,
                             ['Path', 'PropertyName', 'Value', 'odmlDatatype'])

    def test_index_zero(self):
        """
        Test change_header with using the index 0
        """
        # TODO: change as exception is changed
        with self.assertRaises(Exception):
            self.test_table.change_header(Path=0, SectionType=1, Value=2)

    def test_negative_index(self):
        """
        Test change_header with using a negative index
        """
        # TODO: change Exception
        with self.assertRaises(Exception):
            self.test_table.change_header(Path=-1)

    def test_empty_cols_allowed(self):
        """
        Test change_header leaving empty columns, while it is allowed
        """
        self.test_table.allow_empty_columns = True
        self.test_table.change_header(Path=1, SectionType=3, Value=4)
        self.assertEqual(self.test_table._header,
                         ["Path", None, "SectionType", "Value"])

    def test_same_indizes(self):
        """
        Test change_header with two columns with same indizes
        """
        # TODO: Exception
        with self.assertRaises(Exception):
            self.test_table.change_header(Path=1, SectionType=1, Value=2)

    def test_wrong_keyword(self):
        """
        Test using change_header with a wrong keyword
        """
        # TODO: Exception
        with self.assertRaises(Exception):
            self.test_table.change_header(Path=1, Sectionname=2, Value=3)
コード例 #5
0
class TestLoadSaveOdml(unittest.TestCase):
    """
    class to test loading the odml
    """
    def setUp(self):
        self.test_table = OdmlTable()
        self.expected_odmldict = [{
            'PropertyDefinition': None,
            'Value': ['bla'],
            'odmlDatatype': 'text',
            'DataUnit': None,
            'SectionType': 'n.s.',
            'DataUncertainty': None,
            'SectionDefinition': None,
            'Path': '/section1:property1'
        }]

    def test_load_from_file(self):
        """
        test loading the odml-dictionary from an odml-file
        """
        filename = 'tmp_testfile.odml'
        doc = create_small_test_odml()
        odml.tools.xmlparser.XMLWriter(doc).write_file(filename)
        self.test_table.load_from_file(filename)
        os.remove(filename)
        self.assertDictEqual(self.test_table._odmldict[0],
                             self.expected_odmldict[0])

    def test_load_from_function(self):
        """
        test loading the odml-dictionary from a function that generates an
        odml-document in python
        """
        self.test_table.load_from_function(create_small_test_odml)
        self.assertEqual(self.test_table._odmldict, self.expected_odmldict)

    def test_load_from_odmldoc(self):
        """
        test loading the odml-dictionary from an odml-document in python
        """
        doc = create_small_test_odml()
        self.test_table.load_from_odmldoc(doc)
        self.assertEqual(self.test_table._odmldict, self.expected_odmldict)

    def test_write2odml(self):
        """
        test writing the odmldict back to an odml-file
        """
        file1 = 'test.odml'
        file2 = 'test2.odml'
        doc = create_showall_test_odml()
        self.test_table.load_from_odmldoc(doc)
        odml.tools.xmlparser.XMLWriter(doc).write_file(file1)

        self.test_table.change_header(Path=1,
                                      SectionName=2,
                                      SectionType=3,
                                      SectionDefinition=4,
                                      PropertyName=5,
                                      PropertyDefinition=6,
                                      Value=7,
                                      DataUnit=9,
                                      DataUncertainty=10,
                                      odmlDatatype=11)
        self.test_table.write2odml(file2)

        self.test_table.load_from_file(file1)
        expected = self.test_table._odmldict
        self.test_table.load_from_file(file2)
        self.assertEqual(expected, self.test_table._odmldict)

        os.remove(file1)
        os.remove(file2)
コード例 #6
0
class TestLoadSaveOdml(unittest.TestCase):
    """
    class to test loading the odml
    """

    def setUp(self):
        self.test_table = OdmlTable()
        self.expected_odmldict = [
            {
                "PropertyDefinition": None,
                "SectionName": "section1",
                "PropertyName": "property1",
                "Value": "bla",
                "odmlDatatype": "text",
                "DataUnit": None,
                "SectionType": "undefined",
                "ValueDefinition": None,
                "DataUncertainty": None,
                "SectionDefinition": None,
                "Path": "/section1",
            }
        ]

    def test_load_from_file(self):
        """
        test loading the odml-dictionary from an odml-file
        """
        filename = "tmp_testfile.odml"
        doc = create_small_test_odml()
        odml.tools.xmlparser.XMLWriter(doc).write_file(filename)
        self.test_table.load_from_file(filename)
        os.remove(filename)
        self.assertEqual(self.test_table._odmldict, self.expected_odmldict)

    def test_load_from_function(self):
        """
        test loading the odml-dictionary from a function that generates an
        odml-document in python
        """
        self.test_table.load_from_function(create_small_test_odml)
        self.assertEqual(self.test_table._odmldict, self.expected_odmldict)

    def test_load_from_odmldoc(self):
        """
        test loading the odml-dictionary from an odml-document in python
        """
        doc = create_small_test_odml()
        self.test_table.load_from_odmldoc(doc)
        self.assertEqual(self.test_table._odmldict, self.expected_odmldict)

    def test_write2odml(self):
        """
        test writing the odmldict back to an odml-file
        """
        file1 = "test.odml"
        file2 = "test2.odml"
        doc = create_showall_test_odml()
        self.test_table.load_from_odmldoc(doc)
        odml.tools.xmlparser.XMLWriter(doc).write_file(file1)

        self.test_table.change_header(
            Path=1,
            SectionName=2,
            SectionType=3,
            SectionDefinition=4,
            PropertyName=5,
            PropertyDefinition=6,
            Value=7,
            ValueDefinition=8,
            DataUnit=9,
            DataUncertainty=10,
            odmlDatatype=11,
        )
        self.test_table.write2odml(file2)

        self.test_table.load_from_file(file1)
        expected = self.test_table._odmldict
        self.test_table.load_from_file(file2)
        self.assertEqual(expected, self.test_table._odmldict)

        os.remove(file1)
        os.remove(file2)