OSDN Git Service

implement mqo write.
[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(mqo, write) 
74
75         {
76                 mqo::IO io;
77                 EXPECT_TRUE(io.read("cube.mqo"));
78                 EXPECT_EQ(1, io.objects.size());
79                 EXPECT_EQ(8, io.objects[0].vertices.size());
80                 EXPECT_EQ(6, io.objects[0].faces.size());
81                 EXPECT_TRUE(io.write("cube2.mqo"));
82                 EXPECT_EQ(0, io.materials.size());
83         }
84
85         {
86                 mqo::IO io;
87                 EXPECT_TRUE(io.read("cube2.mqo"));
88                 EXPECT_EQ(1, io.objects.size());
89                 EXPECT_EQ(8, io.objects[0].vertices.size());
90                 EXPECT_EQ(6, io.objects[0].faces.size());
91         }
92 }
93
94 TEST(pmd, read) 
95
96         std::locale::global(std::locale("japanese"));
97         pmd::IO io;
98         EXPECT_TRUE(io.read(L"\8f\89\89¹\83~\83NVer2.pmd"));
99         EXPECT_STREQ("\8f\89\89¹\83~\83N", io.name);
100         EXPECT_EQ(17, io.materials.size());
101         EXPECT_EQ(12354, io.vertices.size());
102         EXPECT_EQ(68883, io.indices.size());
103         EXPECT_EQ(45, io.rigidbodies.size());
104         EXPECT_EQ(27, io.constraints.size());
105 }
106
107 TEST(vmd, read)
108 {
109         vmd::IO io;
110         EXPECT_TRUE(io.read("mikumiku.vmd"));
111         EXPECT_EQ(122, io.boneMap.size());
112         EXPECT_EQ(16, io.morphMap.size());
113 }
114
115 int main(int argc, char **argv)
116 {
117         testing::InitGoogleTest(&argc, argv); 
118         RUN_ALL_TESTS();
119 }
120