import unittest from gdsii import library, elements import os.path class TestLibraryLoad(unittest.TestCase): def setUp(self): file_name = os.path.join(os.path.dirname(__file__), 'data', 'test1.gds') with open(file_name, 'rb') as stream: self.library = library.Library.load(stream) def test_library(self): library = self.library self.assertEqual(library.version, 5) self.assertEqual(library.name, b'TEST.DB') self.assertEqual(library.mod_time.isoformat(), '2010-08-17T14:22:22') self.assertEqual(library.acc_time.isoformat(), '2010-08-17T14:36:21') self.assertAlmostEqual(library.physical_unit, 1e-9) self.assertAlmostEqual(library.logical_unit, 0.001) def test_structure(self): library = self.library self.assertEqual(len(library), 1) struc = library[0] self.assertEqual(struc.name, b'test_struc1') self.assertEqual(struc.mod_time.isoformat(), '1970-01-01T01:00:00') self.assertEqual(struc.acc_time.isoformat(), '2010-08-17T14:35:55') self.assertEqual(struc.strclass, None) def test_elements(self): struc = self.library[0] self.assertEqual(len(struc), 2) elem = struc[0] self.assertTrue(isinstance(elem, elements.Boundary)) self.assertEqual(elem.layer, 34) self.assertEqual(elem.data_type, 0) self.assertEqual(elem.xy, [(33100, -198900), (48100, -198900), (48100, -186800), (33100, -186800), (33100, -198900)]) self.assertEqual(elem.properties, []) # TODO it should not be so elem = struc[1] self.assertTrue(isinstance(elem, elements.Path)) self.assertEqual(elem.layer, 44) self.assertEqual(elem.data_type, 0) self.assertEqual(elem.path_type, 0) self.assertEqual(elem.width, 15000) self.assertEqual(elem.xy, [(-125000, 0), (-125000, -52000), (-52000, -125000), (13100, -125000)]) self.assertEqual(len(elem.properties), 2) self.assertEqual(elem.properties[0], (1, b'test property 1')) self.assertEqual(elem.properties[1], (2, b'test property 2')) test_cases = (TestLibraryLoad,) def load_tests(loader, tests, pattern): suite = unittest.TestSuite() for test_class in test_cases: tests = loader.loadTestsFromTestCase(test_class) suite.addTests(tests) return suite if __name__ == '__main__': unittest.main()