mirror of
https://github.com/VCMP-SqMod/SqMod.git
synced 2025-05-07 19:47:12 +02:00
Switched to POCO library for unified platform/library interface. Deprecated the external module API. It was creating more problems than solving. Removed most built-in libraries in favor of system libraries for easier maintenance. Cleaned and secured code with help from static analyzers.
128 lines
3.2 KiB
C++
128 lines
3.2 KiB
C++
//
|
|
// DoubleByteEncodingTest.cpp
|
|
//
|
|
// Copyright (c) 2018, Applied Informatics Software Engineering GmbH.
|
|
// and Contributors.
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
|
|
#include "DoubleByteEncodingTest.h"
|
|
#include "CppUnit/TestCaller.h"
|
|
#include "CppUnit/TestSuite.h"
|
|
#include "Poco/ISO8859_4Encoding.h"
|
|
#include "Poco/Windows950Encoding.h"
|
|
|
|
|
|
DoubleByteEncodingTest::DoubleByteEncodingTest(const std::string& name): CppUnit::TestCase(name)
|
|
{
|
|
}
|
|
|
|
|
|
DoubleByteEncodingTest::~DoubleByteEncodingTest()
|
|
{
|
|
}
|
|
|
|
|
|
void DoubleByteEncodingTest::testSingleByte()
|
|
{
|
|
Poco::ISO8859_4Encoding enc;
|
|
|
|
assertTrue (std::string(enc.canonicalName()) == "ISO-8859-4");
|
|
assertTrue (enc.isA("Latin4"));
|
|
|
|
unsigned char seq1[] = { 0xF8 }; // 0x00F8 LATIN SMALL LETTER O WITH STROKE
|
|
assertTrue (enc.convert(seq1) == 0x00F8);
|
|
assertTrue (enc.queryConvert(seq1, 1) == 0x00F8);
|
|
assertTrue (enc.sequenceLength(seq1, 1) == 1);
|
|
|
|
unsigned char seq2[] = { 0xF9 }; // 0x0173 LATIN SMALL LETTER U WITH OGONEK
|
|
assertTrue (enc.convert(seq2) == 0x0173);
|
|
assertTrue (enc.queryConvert(seq2, 1) == 0x0173);
|
|
assertTrue (enc.sequenceLength(seq2, 1) == 1);
|
|
}
|
|
|
|
|
|
void DoubleByteEncodingTest::testSingleByteReverse()
|
|
{
|
|
Poco::ISO8859_4Encoding enc;
|
|
|
|
unsigned char seq[2];
|
|
|
|
assertTrue (enc.convert(0x00F8, seq, 2) == 1);
|
|
assertTrue (seq[0] == 0xF8);
|
|
|
|
assertTrue (enc.convert(0x0173, seq, 2) == 1);
|
|
assertTrue (seq[0] == 0xF9);
|
|
|
|
assertTrue (enc.convert(0x3000, seq, 2) == 0);
|
|
}
|
|
|
|
|
|
void DoubleByteEncodingTest::testDoubleByte()
|
|
{
|
|
Poco::Windows950Encoding enc;
|
|
|
|
assertTrue (std::string(enc.canonicalName()) == "windows-950");
|
|
assertTrue (enc.isA("Windows-950"));
|
|
assertTrue (enc.isA("cp950"));
|
|
|
|
unsigned char seq1[] = { 0x41 }; // 0x0041 LATIN CAPITAL LETTER A
|
|
assertTrue (enc.convert(seq1) == 0x0041);
|
|
assertTrue (enc.queryConvert(seq1, 1) == 0x0041);
|
|
assertTrue (enc.sequenceLength(seq1, 1) == 1);
|
|
|
|
unsigned char seq2[] = { 0xA1, 0x40 }; // 0x3000 IDEOGRAPHIC SPACE
|
|
assertTrue (enc.convert(seq2) == 0x3000);
|
|
assertTrue (enc.queryConvert(seq2, 1) == -2);
|
|
assertTrue (enc.queryConvert(seq2, 2) == 0x3000);
|
|
assertTrue (enc.sequenceLength(seq2, 1) == 2);
|
|
assertTrue (enc.sequenceLength(seq2, 2) == 2);
|
|
|
|
unsigned char seq3[] = { 0x92 }; // invalid
|
|
assertTrue (enc.convert(seq3) == -1);
|
|
assertTrue (enc.queryConvert(seq3, 1) == -1);
|
|
assertTrue (enc.sequenceLength(seq3, 1) == -1);
|
|
}
|
|
|
|
|
|
void DoubleByteEncodingTest::testDoubleByteReverse()
|
|
{
|
|
Poco::Windows950Encoding enc;
|
|
|
|
unsigned char seq[2];
|
|
|
|
assertTrue (enc.convert(0x0041, seq, 2) == 1);
|
|
assertTrue (seq[0] == 0x41);
|
|
|
|
assertTrue (enc.convert(0x3000, seq, 2) == 2);
|
|
assertTrue (seq[0] == 0xA1);
|
|
assertTrue (seq[1] == 0x40);
|
|
|
|
assertTrue (enc.convert(0x3004, seq, 2) == 0);
|
|
}
|
|
|
|
|
|
void DoubleByteEncodingTest::setUp()
|
|
{
|
|
}
|
|
|
|
|
|
void DoubleByteEncodingTest::tearDown()
|
|
{
|
|
}
|
|
|
|
|
|
CppUnit::Test* DoubleByteEncodingTest::suite()
|
|
{
|
|
CppUnit::TestSuite* pSuite = new CppUnit::TestSuite("DoubleByteEncodingTest");
|
|
|
|
CppUnit_addTest(pSuite, DoubleByteEncodingTest, testSingleByte);
|
|
CppUnit_addTest(pSuite, DoubleByteEncodingTest, testSingleByteReverse);
|
|
CppUnit_addTest(pSuite, DoubleByteEncodingTest, testDoubleByte);
|
|
CppUnit_addTest(pSuite, DoubleByteEncodingTest, testDoubleByteReverse);
|
|
|
|
return pSuite;
|
|
}
|