OSDN Git Service

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