-
Notifications
You must be signed in to change notification settings - Fork 4
/
test_encoder.cpp
118 lines (86 loc) · 3.2 KB
/
test_encoder.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
#include "settings.h"
#include <string>
#include <fstream>
#include <iterator>
#include <cppunit/TestFixture.h>
#include <cppunit/extensions/HelperMacros.h>
#include "xscript/util.h"
#include "xscript/encoder.h"
#ifdef HAVE_DMALLOC_H
#include <dmalloc.h>
#endif
class EncoderTest : public CppUnit::TestFixture {
public:
void testEmpty();
void testLatin();
void testMixedDefault();
void testMixedStrict();
void testMixedStrictError();
void testMixedIgnoring();
void testMixedEscaping();
private:
CPPUNIT_TEST_SUITE(EncoderTest);
CPPUNIT_TEST(testEmpty);
CPPUNIT_TEST(testLatin);
CPPUNIT_TEST(testMixedDefault);
CPPUNIT_TEST(testMixedStrict);
CPPUNIT_TEST_EXCEPTION(testMixedStrictError, std::exception);
CPPUNIT_TEST(testMixedIgnoring);
CPPUNIT_TEST(testMixedEscaping);
CPPUNIT_TEST_SUITE_END();
};
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(EncoderTest, "encoder");
CPPUNIT_REGISTRY_ADD("encoder", "xscript");
void
EncoderTest::testEmpty() {
using namespace xscript;
std::string str;
std::auto_ptr<Encoder> conv = Encoder::createEscaping("utf-8", "koi8-r");
CPPUNIT_ASSERT_EQUAL(str, conv->encode(str));
}
void
EncoderTest::testLatin() {
using namespace xscript;
std::string str("12345 abcde");
std::auto_ptr<Encoder> conv = Encoder::createEscaping("koi8-r", "utf-8");
CPPUNIT_ASSERT_EQUAL(str, conv->encode(str));
}
void
EncoderTest::testMixedDefault() {
using namespace xscript;
std::auto_ptr<Encoder> conv = Encoder::createDefault("utf-8", "cp1251");
CPPUNIT_ASSERT_EQUAL(std::string("?stone"), conv->encode("¹stone"));
CPPUNIT_ASSERT_EQUAL(std::string("r?sum?"), conv->encode("résumé"));
CPPUNIT_ASSERT_EQUAL(std::string("??????"), conv->encode("ტექსტი"));
CPPUNIT_ASSERT_EQUAL(std::string("deportaci?n"), conv->encode("deportación"));
}
void
EncoderTest::testMixedStrict() {
using namespace xscript;
std::auto_ptr<Encoder> conv = Encoder::createStrict("utf-8", "cp1251");
CPPUNIT_ASSERT_EQUAL(std::string("stone"), conv->encode("stone"));
}
void
EncoderTest::testMixedStrictError() {
using namespace xscript;
std::auto_ptr<Encoder> conv = Encoder::createStrict("utf-8", "cp1251");
conv->encode("¹stone");
}
void
EncoderTest::testMixedIgnoring() {
using namespace xscript;
std::auto_ptr<Encoder> conv = Encoder::createIgnoring("utf-8", "cp1251");
CPPUNIT_ASSERT_EQUAL(std::string("stone"), conv->encode("¹stone"));
CPPUNIT_ASSERT_EQUAL(std::string("rsum"), conv->encode("résumé"));
CPPUNIT_ASSERT_EQUAL(std::string(""), conv->encode("ტექსტი"));
CPPUNIT_ASSERT_EQUAL(std::string("deportacin"), conv->encode("deportación"));
}
void
EncoderTest::testMixedEscaping() {
using namespace xscript;
std::auto_ptr<Encoder> conv = Encoder::createEscaping("utf-8", "cp1251");
CPPUNIT_ASSERT_EQUAL(std::string("¹stone"), conv->encode("¹stone"));
CPPUNIT_ASSERT_EQUAL(std::string("résumé"), conv->encode("résumé"));
CPPUNIT_ASSERT_EQUAL(std::string("ტექსტი"), conv->encode("ტექსტი"));
CPPUNIT_ASSERT_EQUAL(std::string("deportación"), conv->encode("deportación"));
}