⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test.py

📁 利用C
💻 PY
字号:
""" Tests for the meshconvert module."""from unittest import TestCase as _TestCaseimport unittestimport os.pathimport tempfilefrom dolfin import meshconvertfrom dolfin.meshconvert import DataHandlerclass TestCase(_TestCase):    def _get_tempfname(self, suffix=None):        fd, fname = tempfile.mkstemp(suffix=suffix)        os.close(fd)        return fnameclass _TestHandler(DataHandler):    def __init__(self, cell_type, mesh_dim, test):        DataHandler.__init__(self)        self.vertices, self.cells, self.functions = [], [], {}        self.vertices_ended = self.cells_ended = self.closed = False        self.__type, self.__dim = cell_type, mesh_dim        self.__test = test        test.assertEqual(self._state, self.State_Invalid)        self.test_warnings = []    def set_mesh_type(self, *args):        DataHandler.set_mesh_type(self, *args)        test = self.__test        test.assertEqual(self._state, self.State_Init)        test.assertEqual(self._cell_type, self.__type)        test.assertEqual(self._dim, self.__dim)    def start_vertices(self, num_vertices):        DataHandler.start_vertices(self, num_vertices)        self.vertices = []        for i in range(num_vertices):            self.vertices.append(None)    def add_vertex(self, vertex, coords):        DataHandler.add_vertex(self, vertex, coords)        self.vertices[vertex] = tuple(coords)    def end_vertices(self):        DataHandler.end_vertices(self)        self.vertices_ended = True    def start_cells(self, num_cells):        DataHandler.start_cells(self, num_cells)        for i in range(num_cells):            self.cells.append(None)    def add_cell(self, cell, nodes):        DataHandler.add_cell(self, cell, nodes)        self.cells[cell] = tuple(nodes)    def end_cells(self):        DataHandler.end_cells(self)        self.cells_ended = True    def start_meshfunction(self, name, dim, sz):        DataHandler.start_meshfunction(self, name, dim, sz)        entries = []        for i in range(sz):            entries.append(None)        self.__curfunc = self.functions[name] = [dim, sz, entries, False]    def add_entity_meshfunction(self, index, value):        DataHandler.add_entity_meshfunction(self, index, value)        self.__curfunc[2][index] = value    def end_meshfunction(self):        DataHandler.end_meshfunction(self)        self.__curfunc[-1] = True    def warn(self, msg):        self.test_warnings.append(msg)    def close(self):        DataHandler.close(self)        self.__test.assertEqual(self._state, self.State_Invalid)        self.closed = Trueclass _ConverterTest(TestCase):    """ Base converter test class.    """class AbaqusTest(_ConverterTest):    """ Test AbaqusConverter.    """    def test_success(self):        """ Test success case.        """        handler = self.__convert("abaqus.inp")        # Verify vertices        self.assertEqual(handler.vertices, [            (0, 0, 0),            (1, 0., 0),            (10, 10, 10),            (10, 10, 11),            (0, 1, 0),            (1, 1, 0),            (0., 0., 0),            (1., 0., 0),            (0., 1., 0),            (1., 1., 0),            (10., 10., 10),            (10., 10., 11),            ])        self.assert_(handler.vertices_ended)        # Verify cells        self.assertEqual(handler.cells, [            (0, 1, 4, 5),            (0, 1, 2, 3),            (4, 5, 2, 3),            ])        self.assert_(handler.cells_ended)        # Verify materials        self.assertEqual(handler.functions.keys(), ["material"])        dim, sz, entries, ended = handler.functions["material"]        self.assertEqual(dim, 3)        self.assertEqual(sz, 2)        # Cell 0 should have material 0, cell 1 material 1        self.assertEqual(entries, [0, 1])        self.assert_(ended)        self.assert_(handler.closed)    def test_error(self):        """ Test various cases of erroneus input.        """        def convert(fname, text, error=False):            f = file(fname, "w")            f.write(text)            f.close()            if not error:                handler = self.__convert(fname)                self.assert_(handler.test_warnings)            else:                self.assertRaises(meshconvert.ParseError, self.__convert, fname)        fname = self._get_tempfname(suffix=".inp")        # Too few coordinates        convert(fname, """*NODE1, 0, 0""")        # Non-numeric index        convert(fname, """*NODEa, 0, 0, 0""")        # Non-numeric coordinate        convert(fname, """*NODE1, 0, 0, a""")        # Unsupported element type, also the body should be ignored        convert(fname, """*ELEMENT, TYPE=sometype0""")        # Bad parameter syntax        convert(fname, "*ELEMENT, TYPE=sometype, BAD")        # Missing type specifier        convert(fname, "*ELEMENT", error=True)        # Non-existent node        convert(fname, """*NODE1, 0, 0, 02, 0, 0, 03, 0, 0, 0*ELEMENT, TYPE=C3D41, 1, 2, 3, 4""", error=True)        # Too few nodes        convert(fname, """*NODE1, 0, 0, 02, 0, 0, 03, 0, 0, 0*ELEMENT, TYPE=C3D41, 1, 2, 3""", error=True)        # Non-existent element set        convert(fname, """*MATERIAL, NAME=MAT*SOLID SECTION, ELSET=NONE, MATERIAL=MAT""", error=True)    def __convert(self, fname):        handler = _TestHandler(DataHandler.CellType_Tetrahedron, 3, self)        if not os.path.isabs(fname):            fname = os.path.join("data", fname)        meshconvert.convert(fname, handler)        return handlerif __name__ == "__main__":    unittest.main()

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -