3 #include <gtest/gtest.h>
5 #include "src/utf8_transcoder.h"
6 #include "src/string_reader.h"
7 #include "src/encoding_reader.h"
9 namespace reader = utakata::reader;
10 namespace transcoder = utakata::transcoder;
12 TEST(EncodingReaderTest, EncodingTest) {
13 reader::StringReader sr("UTF8");
15 reader::EncodingReader reader(&sr, new transcoder::UTF8Transcoder);
16 unsigned int checker = reader.Read();
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'));
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'));
29 EXPECT_EQ(t[0], static_cast<unsigned int>('F'));
30 EXPECT_EQ(t[1], static_cast<unsigned int>('8'));
32 EXPECT_NO_THROW(reader.Read());
33 EXPECT_TRUE(reader.IsEof());
36 TEST(EncodingReaderTest, MultiByteTest) {
37 reader::StringReader sr("あいuうえお");
38 reader::EncodingReader reader(&sr, new transcoder::UTF8Transcoder);
39 unsigned int checker = reader.Read();
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));
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));
52 EXPECT_EQ(t[0], static_cast<unsigned int>('u'));
53 EXPECT_EQ(t[1], static_cast<unsigned int>(0x3046));
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));
60 EXPECT_NO_THROW(reader.Read());
61 EXPECT_TRUE(reader.IsEof());
64 int main(int argc, char** argv) {
65 testing::InitGoogleTest(&argc, argv);
67 return RUN_ALL_TESTS();