OSDN Git Service

implement pmx.writer
[meshio/pymeshio.git] / test / pmx_test.py
1 # coding: utf-8\r
2 import unittest\r
3 import io\r
4 import pymeshio.pmd\r
5 import pymeshio.pmx.reader\r
6 import pymeshio.pmx.writer\r
7 \r
8 \r
9 PMX_FILE=pymeshio.unicode('resources/初音ミクVer2.pmx')\r
10 \r
11 \r
12 class TestPmx(unittest.TestCase):\r
13     \r
14     def setUp(self):\r
15         pass\r
16 \r
17     def test_read(self):\r
18         model=pymeshio.pmx.reader.read_from_file(PMX_FILE)\r
19         self.assertEqual(pymeshio.pmx.Model,  model.__class__)\r
20         self.assertEqual(pymeshio.unicode('初音ミク'),  model.name)\r
21         self.assertEqual(pymeshio.unicode('Miku Hatsune'),  model.english_name)\r
22         self.assertEqual(pymeshio.unicode(\r
23                 "PolyMo用モデルデータ:初音ミク ver.2.3\r\n"+\r
24                 "(物理演算対応モデル)\r\n"+\r
25                 "\r\n"+\r
26                 "モデリング        :あにまさ氏\r\n"+\r
27                 "データ変換        :あにまさ氏\r\n"+\r
28                 "Copyright      :CRYPTON FUTURE MEDIA, INC"),\r
29                 model.comment)\r
30         self.assertEqual(pymeshio.unicode(\r
31                 "MMD Model: Miku Hatsune ver.2.3\r\n"+\r
32                 "(Physical Model)\r\n"+\r
33                 "\r\n"+\r
34                 "Modeling by    Animasa\r\n"+\r
35                 "Converted by   Animasa\r\n"+\r
36                 "Copyright              CRYPTON FUTURE MEDIA, INC"),\r
37                 model.english_comment)\r
38 \r
39         self.assertEqual(12354,  len(model.vertices))\r
40         self.assertEqual(22961 * 3,  len(model.indices))\r
41         print("{0} textures".format(len(model.textures)))\r
42         self.assertEqual(17,  len(model.materials))\r
43         self.assertEqual(140,  len(model.bones))\r
44         self.assertEqual(30,  len(model.morphs))\r
45         self.assertEqual(9,  len(model.display_slots))\r
46         self.assertEqual(45,  len(model.rigidbodies))\r
47         self.assertEqual(27,  len(model.joints))\r
48 \r
49     def test_write(self):\r
50         # read source file\r
51         buf=pymeshio.common.readall(PMX_FILE)\r
52         # read and write to out\r
53         model=pymeshio.pmx.reader.read(io.BytesIO(buf))\r
54         out=io.BytesIO()\r
55         pymeshio.pmx.writer.write(out, model)\r
56         # read out buffer again\r
57         model2=pymeshio.pmx.reader.read(io.BytesIO(out.getvalue()))\r
58         self.assertEqual(model, model2)\r
59 \r