OSDN Git Service

implement pmd import.
[meshio/meshio.git] / test / main.cpp
1 #include <gtest/gtest.h> 
2 #include <fstream>
3 #include <sstream>
4
5 #include <meshio.h>
6 using namespace meshio;
7
8 TEST(binary, FileReader)
9 {
10         binary::FileReader reader("cube.mqo");
11
12         char buf[1024];
13         while(reader.read(buf, 1024)){
14         }
15         EXPECT_EQ(1235, reader.getPos());
16 }
17
18 TEST(binary, MemoryReader)
19 {
20         std::vector<char> all;
21         binary::readAll("cube.mqo", all);
22         binary::MemoryReader reader(&all[0], all.size());
23         char buf[1024];
24         while(reader.read(buf, 1024)){
25         }
26         EXPECT_EQ(1235, reader.getPos());
27 }
28
29 TEST(text, LineReader)
30 {
31         binary::FileReader reader("cube.mqo");
32         text::LineReader<
33                 text::IsCRLF, 
34                 text::IsWhiteSpace, 
35                 text::IsEmpty> l(reader);
36         EXPECT_EQ("Metasequoia Document", l.getLine().str());
37         EXPECT_EQ("Format Text Ver 1.0", l.getLine().str());
38
39         {
40                 text::cstr line=l.getLine();
41                 text::LineSplitter<text::IsWhiteSpace> splitter(line);
42                 EXPECT_EQ("Scene", splitter.get().str());
43         }
44
45         {
46                 text::cstr line=l.getLine();
47                 text::LineSplitter<text::IsWhiteSpace> splitter(line);
48                 EXPECT_EQ("pos", splitter.get().str());
49                 EXPECT_EQ(0.0000f, splitter.getFloat());
50                 EXPECT_EQ(0.0000f, splitter.getFloat());
51                 EXPECT_EQ(1500.0000f, splitter.getFloat());
52         }
53   
54         while(true)
55         {
56                 text::cstr line=l.getLine();
57                 if(l.isEnd()){
58                         break;
59                 }
60         }
61         EXPECT_EQ(43, l.getLineCount());
62 }
63
64 TEST(mqo, read) 
65
66         mqo::IO io;
67         EXPECT_TRUE(io.read("cube.mqo"));
68         EXPECT_EQ(1, io.objects.size());
69         EXPECT_EQ(8, io.objects[0].vertices.size());
70         EXPECT_EQ(6, io.objects[0].faces.size());
71 }
72
73 TEST(pmd, read) 
74
75         std::locale::global(std::locale("japanese"));
76         pmd::IO io;
77         EXPECT_TRUE(io.read(L"\8f\89\89¹\83~\83NVer2.pmd"));
78         EXPECT_STREQ("\8f\89\89¹\83~\83N", io.name);
79         EXPECT_EQ(17, io.materials.size());
80         EXPECT_EQ(12354, io.vertices.size());
81         EXPECT_EQ(68883, io.indices.size());
82         EXPECT_EQ(45, io.rigidbodies.size());
83         EXPECT_EQ(27, io.constraints.size());
84 }
85
86 TEST(vmd, read)
87 {
88         vmd::IO io;
89         EXPECT_TRUE(io.read("mikumiku.vmd"));
90         EXPECT_EQ(122, io.boneMap.size());
91         EXPECT_EQ(16, io.morphMap.size());
92 }
93
94 int main(int argc, char **argv)
95 {
96         testing::InitGoogleTest(&argc, argv); 
97         RUN_ALL_TESTS();
98 }
99