OSDN Git Service

lexerに関係するソースをsrc/lexer配下に移動。
[simplecms/utakata.git] / src / test / encoding_reader_test.cpp
1 #include <iostream>
2 #include <algorithm>
3 #include <gtest/gtest.h>
4
5 #include "src/utf8_transcoder.h"
6 #include "src/string_reader.h"
7 #include "src/encoding_reader.h"
8
9 namespace reader = utakata::reader;
10 namespace transcoder = utakata::transcoder;
11
12 TEST(EncodingReaderTest, EncodingTest) {
13   reader::StringReader sr("UTF8");
14
15   reader::EncodingReader reader(&sr, new transcoder::UTF8Transcoder);
16   unsigned int checker = reader.Read();
17
18   EXPECT_EQ(checker, static_cast<unsigned int>('U'));
19   checker = reader.Peek();
20   EXPECT_EQ(checker, static_cast<unsigned int>('T'));
21   checker = reader.Read();
22   EXPECT_EQ(checker, static_cast<unsigned int>('T'));
23
24   std::vector<unsigned int> t = reader.Peek(2);
25   EXPECT_EQ(t[0], static_cast<unsigned int>('F'));
26   EXPECT_EQ(t[1], static_cast<unsigned int>('8'));
27
28   t = reader.Read(2);
29   EXPECT_EQ(t[0], static_cast<unsigned int>('F'));
30   EXPECT_EQ(t[1], static_cast<unsigned int>('8'));
31
32   EXPECT_NO_THROW(reader.Read());
33   EXPECT_TRUE(reader.IsEof());
34 }
35
36 TEST(EncodingReaderTest, MultiByteTest) {
37   reader::StringReader sr("あいuうえお");
38   reader::EncodingReader reader(&sr, new transcoder::UTF8Transcoder);
39   unsigned int checker = reader.Read();
40
41   EXPECT_EQ(checker, static_cast<unsigned int>(0x3042));
42   checker = reader.Peek();
43   EXPECT_EQ(checker, static_cast<unsigned int>(0x3044));
44   checker = reader.Read();
45   EXPECT_EQ(checker, static_cast<unsigned int>(0x3044));
46
47   std::vector<unsigned int> t = reader.Peek(2);
48   EXPECT_EQ(t[0], static_cast<unsigned int>('u'));
49   EXPECT_EQ(t[1], static_cast<unsigned int>(0x3046));
50
51   t = reader.Read(2);
52   EXPECT_EQ(t[0], static_cast<unsigned int>('u'));
53   EXPECT_EQ(t[1], static_cast<unsigned int>(0x3046));
54
55   checker = reader.Read();
56   EXPECT_EQ(checker, static_cast<unsigned int>(0x3048));
57   checker = reader.Read();
58   EXPECT_EQ(checker, static_cast<unsigned int>(0x304A));
59
60   EXPECT_NO_THROW(reader.Read());
61   EXPECT_TRUE(reader.IsEof());
62 }
63
64 int main(int argc, char** argv) {
65   testing::InitGoogleTest(&argc, argv);
66
67   return RUN_ALL_TESTS();
68 }