OSDN Git Service

ShellExtension: Change the encoding of *.rc and *.po files to UTF-8
[winmerge-jp/winmerge-jp.git] / Testing / GoogleTest / Encoding / codepage_detect_test.cpp
1 #include <gtest/gtest.h>
2 #include "codepage_detect.h"
3 #include "charsets.h"
4
5 namespace
6 {
7         // The fixture for testing paths functions.
8         class CodepageDetectTest : public testing::Test
9         {
10         protected:
11                 // You can remove any or all of the following functions if its body
12                 // is   empty.
13
14                 CodepageDetectTest()
15                 {
16                         // You can do set-up work for each test here.
17                         charsets_init();
18                 }
19
20                 virtual ~CodepageDetectTest()
21                 {
22                         // You can do clean-up work     that doesn't throw exceptions here.
23                         charsets_cleanup();
24                 }
25
26                 // If   the     constructor     and     destructor are not enough for setting up
27                 // and cleaning up each test, you can define the following methods:
28
29                 virtual void SetUp()
30                 {
31                         // Code here will be called     immediately     after the constructor (right
32                         // before each test).
33                 }
34
35                 virtual void TearDown()
36                 {
37                         // Code here will be called     immediately     after each test (right
38                         // before the destructor).
39                 }
40
41                 // Objects declared here can be used by all tests in the test case for Foo.
42         };
43
44         TEST_F(CodepageDetectTest, GuessCodepageEncoding0)
45         {
46                 FileTextEncoding enc;
47                 enc = GuessCodepageEncoding(_T("../../Data/Unicode/UCS-2LE/DiffItem.h"), 0);
48                 EXPECT_EQ(1200, enc.m_codepage);
49                 EXPECT_EQ(true, enc.m_bom);
50                 EXPECT_EQ(ucr::UCS2LE, enc.m_unicoding);
51                 enc = GuessCodepageEncoding(_T("../../Data/Unicode/UCS-2BE/DiffItem.h"), 0);
52                 EXPECT_EQ(1201, enc.m_codepage);
53                 EXPECT_EQ(true, enc.m_bom);
54                 EXPECT_EQ(ucr::UCS2BE, enc.m_unicoding);
55                 enc = GuessCodepageEncoding(_T("../../Data/Unicode/UTF-8/DiffItem.h"), 0);
56                 EXPECT_EQ(65001, enc.m_codepage);
57                 EXPECT_EQ(true, enc.m_bom);
58                 EXPECT_EQ(ucr::UTF8, enc.m_unicoding);
59                 enc = GuessCodepageEncoding(_T("../../Data/Unicode/UTF-8-NOBOM/DiffItem.h"), 0);
60                 EXPECT_EQ(ucr::getDefaultCodepage(), enc.m_codepage);
61                 EXPECT_EQ(false, enc.m_bom);
62                 EXPECT_EQ(ucr::NONE, enc.m_unicoding);
63
64                 enc = GuessCodepageEncoding(_T("abcdefg12345"), 0);
65                 EXPECT_EQ(ucr::getDefaultCodepage(), enc.m_codepage);
66                 EXPECT_EQ(false, enc.m_bom);
67                 EXPECT_EQ(ucr::NONE, enc.m_unicoding);
68         }
69
70         TEST_F(CodepageDetectTest, GuessCodepageEncoding1)
71         {
72                 FileTextEncoding enc;
73                 enc = GuessCodepageEncoding(_T("../../Data/Unicode/UTF-8-NOBOM/DiffItem.h"), 1);
74                 EXPECT_EQ(65001, enc.m_codepage);
75                 EXPECT_EQ(false, enc.m_bom);
76                 EXPECT_EQ(ucr::UTF8, enc.m_unicoding);
77
78                 enc = GuessCodepageEncoding(_T("../../../Docs/Users/Manual/About_Doc.xml"), 1);
79                 EXPECT_EQ(65001, enc.m_codepage);
80                 EXPECT_EQ(false, enc.m_bom);
81                 EXPECT_EQ(ucr::UTF8, enc.m_unicoding);
82
83                 enc = GuessCodepageEncoding(_T("../../../Docs/Developers/readme-developers.html"), 1);
84                 EXPECT_EQ(28591, enc.m_codepage);
85                 EXPECT_EQ(false, enc.m_bom);
86                 EXPECT_EQ(ucr::NONE, enc.m_unicoding);
87
88                 enc = GuessCodepageEncoding(_T("../../../ShellExtension/Languages/ShellExtensionRussian.rc"), 1);
89                 EXPECT_EQ(65001, enc.m_codepage);
90                 EXPECT_EQ(true, enc.m_bom);
91                 EXPECT_EQ(ucr::UTF8, enc.m_unicoding);
92         }
93
94
95 }  // namespace