OSDN Git Service

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