1
0
mirror of https://github.com/VCMP-SqMod/SqMod.git synced 2025-05-07 19:47:12 +02:00
SqMod/vendor/POCO/Encodings/testsuite/src/DoubleByteEncodingTest.cpp
Sandu Liviu Catalin 4a6bfc086c Major plugin refactor and cleanup.
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.
2021-01-30 08:51:39 +02:00

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;
}