# coding: utf-8\r
-import pymeshio.pmx.loader\r
-\r
-\r
-PMX_MODEL='resources/初音ミクVer2.pmx'\r
-\r
-def test_read():\r
- model=pymeshio.pmx.loader.load(PMX_MODEL)\r
- assert model.__class__==pymeshio.pmx.Model\r
- assert model.name=='初音ミク'\r
- assert model.english_name=='Miku Hatsune'\r
- assert model.comment==(\r
- "PolyMo用モデルデータ:初音ミク ver.2.3\r\n"+\r
- "(物理演算対応モデル)\r\n"+\r
- "\r\n"+\r
- "モデリング :あにまさ氏\r\n"+\r
- "データ変換 :あにまさ氏\r\n"+\r
- "Copyright :CRYPTON FUTURE MEDIA, INC"\r
- )\r
- assert model.english_comment==(\r
- "MMD Model: Miku Hatsune ver.2.3\r\n"+\r
- "(Physical Model)\r\n"+\r
- "\r\n"+\r
- "Modeling by Animasa\r\n"+\r
- "Converted by Animasa\r\n"+\r
- "Copyright CRYPTON FUTURE MEDIA, INC"\r
- )\r
-\r
- assert len(model.vertices)==12354\r
- assert len(model.indices)==22961 * 3\r
- # texture\r
- assert len(model.materials)==17\r
- assert len(model.bones)==140\r
- assert len(model.morphs)==30\r
- assert len(model.display_slots)==9\r
- assert len(model.rigidbodies)==45\r
+import unittest\r
+import io\r
+import pymeshio.common\r
+import pymeshio.pmd.reader\r
+import pymeshio.pmx.reader\r
+import pymeshio.pmx.writer\r
+import pymeshio.converter\r
+\r
+\r
+PMD_FILE=pymeshio.common.unicode('resources/初音ミクVer2.pmd')\r
+PMX_FILE=pymeshio.common.unicode('resources/初音ミクVer2.pmx')\r
+\r
+\r
+class TestPmx(unittest.TestCase):\r
+ \r
+ def setUp(self):\r
+ pass\r
+\r
+ def test_read(self):\r
+ model=pymeshio.pmx.reader.read_from_file(PMX_FILE)\r
+ self.assertEqual(pymeshio.pmx.Model, model.__class__)\r
+ self.assertEqual(pymeshio.common.unicode('初音ミク'), model.name)\r
+ self.assertEqual(pymeshio.common.unicode('Miku Hatsune'), model.english_name)\r
+ self.assertEqual(pymeshio.common.unicode(\r
+ "PolyMo用モデルデータ:初音ミク ver.2.3\r\n"+\r
+ "(物理演算対応モデル)\r\n"+\r
+ "\r\n"+\r
+ "モデリング :あにまさ氏\r\n"+\r
+ "データ変換 :あにまさ氏\r\n"+\r
+ "Copyright :CRYPTON FUTURE MEDIA, INC"),\r
+ model.comment)\r
+ self.assertEqual(pymeshio.common.unicode(\r
+ "MMD Model: Miku Hatsune ver.2.3\r\n"+\r
+ "(Physical Model)\r\n"+\r
+ "\r\n"+\r
+ "Modeling by Animasa\r\n"+\r
+ "Converted by Animasa\r\n"+\r
+ "Copyright CRYPTON FUTURE MEDIA, INC"),\r
+ model.english_comment)\r
+\r
+ self.assertEqual(12354, len(model.vertices))\r
+ self.assertEqual(22961 * 3, len(model.indices))\r
+ print("{0} textures".format(len(model.textures)))\r
+ self.assertEqual(17, len(model.materials))\r
+ self.assertEqual(140, len(model.bones))\r
+ self.assertEqual(30, len(model.morphs))\r
+ self.assertEqual(9, len(model.display_slots))\r
+ self.assertEqual(45, len(model.rigidbodies))\r
+ self.assertEqual(27, len(model.joints))\r
+\r
+ def test_write(self):\r
+ # read source file\r
+ buf=pymeshio.common.readall(PMX_FILE)\r
+ # read and write to out\r
+ model=pymeshio.pmx.reader.read(io.BytesIO(buf))\r
+ out=io.BytesIO()\r
+ pymeshio.pmx.writer.write(out, model)\r
+ # read out buffer again\r
+ model2=pymeshio.pmx.reader.read(io.BytesIO(out.getvalue()))\r
+ self.assertEqual(model, model2)\r
+\r
+ def test_convert(self):\r
+ # convert\r
+ pmd=pymeshio.pmd.reader.read_from_file(PMD_FILE)\r
+ converted=pymeshio.converter.pmd_to_pmx(pmd)\r
+ # validate\r
+ pmx=pymeshio.pmx.reader.read_from_file(PMX_FILE)\r
+ # check diffference\r
+ pmx.diff(converted)\r
+ #self.assertEqual(pmx, converted)\r
+ pymeshio.pmx.writer.write(io.open("tmp.pmx", "wb"), converted)\r
+\r