Skip to content

Commit

Permalink
Convert BUnicodeChar tests to cppunit.
Browse files Browse the repository at this point in the history
  • Loading branch information
pulkomandy committed Sep 29, 2014
1 parent bd06441 commit af59f5c
Show file tree
Hide file tree
Showing 5 changed files with 233 additions and 55 deletions.
11 changes: 10 additions & 1 deletion src/tests/kits/locale/Jamfile
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@ Depends LocaleKitTests
collatorTest
localeTest
ICUTest
libNumberFormatTests.so
# libNumberFormatTests.so
localekittest.so
;

rule LocaleTest
Expand Down Expand Up @@ -47,4 +48,12 @@ Addon catalogTestAddOn
: be
;

UnitTestLib localekittest.so :
LocaleKitTestAddon.cpp

UnicodeCharTest.cpp

: be [ TargetLibstdc++ ]
;

# SubInclude HAIKU_TOP src tests kits locale number_format ;
21 changes: 21 additions & 0 deletions src/tests/kits/locale/LocaleKitTestAddon.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
/*
* Copyright 2014 Haiku, Inc.
* Distributed under the terms of the MIT License.
*/


#include <TestSuite.h>
#include <TestSuiteAddon.h>

#include "UnicodeCharTest.h"


BTestSuite*
getTestSuite()
{
BTestSuite* suite = new BTestSuite("LocaleKit");

UnicodeCharTest::AddTests(*suite);

return suite;
}
161 changes: 161 additions & 0 deletions src/tests/kits/locale/UnicodeCharTest.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,161 @@
/*
* Copyright 2014 Haiku, Inc.
* Distributed under the terms of the MIT License.
*/


#include "UnicodeCharTest.h"

#include <String.h>
#include <UnicodeChar.h>

#include <cppunit/TestCaller.h>
#include <cppunit/TestSuite.h>


UnicodeCharTest::UnicodeCharTest()
{
}


UnicodeCharTest::~UnicodeCharTest()
{
}


void
UnicodeCharTest::TestAscii()
{
Result results[] = {
{"\x1e", 0, 0, 0, 0, 1, 15, '\x1e', '\x1e'},
{"\x1f", 0, 0, 0, 0, 1, 15, '\x1f', '\x1f'},
{" ", 0, 0, 0, 0, 1, 12, ' ', ' '},
{"!", 0, 0, 0, 0, 1, 23, '!', '!'},
{"\"", 0, 0, 0, 0, 1, 23, '"', '"'},
{"#", 0, 0, 0, 0, 1, 23, '#', '#'},
{"$", 0, 0, 0, 0, 1, 25, '$', '$'},
{"%", 0, 0, 0, 0, 1, 23, '%', '%'},
{"&", 0, 0, 0, 0, 1, 23, '&', '&'},
{"'", 0, 0, 0, 0, 1, 23, '\'', '\''},
{"(", 0, 0, 0, 0, 1, 20, '(', '('},
{")", 0, 0, 0, 0, 1, 21, ')', ')'},
{"*", 0, 0, 0, 0, 1, 23, '*', '*'},
{"+", 0, 0, 0, 0, 1, 24, '+', '+'},
{",", 0, 0, 0, 0, 1, 23, ',', ','},
{"-", 0, 0, 0, 0, 1, 19, '-', '-'},
{".", 0, 0, 0, 0, 1, 23, '.', '.'},
{"/", 0, 0, 0, 0, 1, 23, '/', '/'},
{"0", 0, 1, 0, 0, 1, 9, '0', '0'},
{"1", 0, 1, 0, 0, 1, 9, '1', '1'},
{"2", 0, 1, 0, 0, 1, 9, '2', '2'},
{"3", 0, 1, 0, 0, 1, 9, '3', '3'},
{"4", 0, 1, 0, 0, 1, 9, '4', '4'},
{"5", 0, 1, 0, 0, 1, 9, '5', '5'},
{"6", 0, 1, 0, 0, 1, 9, '6', '6'},
{"7", 0, 1, 0, 0, 1, 9, '7', '7'},
{"8", 0, 1, 0, 0, 1, 9, '8', '8'},
{"9", 0, 1, 0, 0, 1, 9, '9', '9'},
{":", 0, 0, 0, 0, 1, 23, ':', ':'},
{";", 0, 0, 0, 0, 1, 23, ';', ';'},
{"<", 0, 0, 0, 0, 1, 24, '<', '<'},
{"=", 0, 0, 0, 0, 1, 24, '=', '='},
{">", 0, 0, 0, 0, 1, 24, '>', '>'},
{"?", 0, 0, 0, 0, 1, 23, '?', '?'},
{"@", 0, 0, 0, 0, 1, 23, '@', '@'},
{"A", 1, 1, 0, 1, 1, 1, 'A', 'a'},
{"B", 1, 1, 0, 1, 1, 1, 'B', 'b'},
{"C", 1, 1, 0, 1, 1, 1, 'C', 'c'},
{"D", 1, 1, 0, 1, 1, 1, 'D', 'd'},
{"E", 1, 1, 0, 1, 1, 1, 'E', 'e'}
};

for (int32 i = 30; i < 70; i++) {
NextSubTest();
_TestChar(i, results[i - 30]);
}
}


void
UnicodeCharTest::TestISO8859()
{
uint32 chars[] = {(uint8)'\xe4', (uint8)'\xd6', (uint8)'\xdf',
(uint8)'\xe8', (uint8)'\xe1', (uint8)'\xe9', 0};

Result results[] = {
{"ä", 1, 1, 1, 0, 1, 2, 196, 228},
{"Ö", 1, 1, 0, 1, 1, 1, 214, 246},
{"ß", 1, 1, 1, 0, 1, 2, 223, 223},
{"è", 1, 1, 1, 0, 1, 2, 200, 232},
{"á", 1, 1, 1, 0, 1, 2, 193, 225},
{"é", 1, 1, 1, 0, 1, 2, 201, 233}
};

for(int i = 0; chars[i] != 0; i++) {
NextSubTest();
_TestChar(chars[i], results[i]);
}
}


void
UnicodeCharTest::TestUTF8()
{
const char *utf8chars[] = {"à", "ß", "ñ", "é", "ç", "ä", NULL};

Result results[] = {
{"à", 1, 1, 1, 0, 1, 2, 192, 224},
{"ß", 1, 1, 1, 0, 1, 2, 223, 223},
{"ñ", 1, 1, 1, 0, 1, 2, 209, 241},
{"é", 1, 1, 1, 0, 1, 2, 201, 233},
{"ç", 1, 1, 1, 0, 1, 2, 199, 231},
{"ä", 1, 1, 1, 0, 1, 2, 196, 228}
};

for(int i = 0; utf8chars[i] != 0; i++) {
NextSubTest();
_TestChar(BUnicodeChar::FromUTF8(utf8chars[i]), results[i]);
}
}


/*static*/ void
UnicodeCharTest::AddTests(BTestSuite& parent)
{
CppUnit::TestSuite& suite = *new CppUnit::TestSuite("UnicodeCharTest");

suite.addTest(new CppUnit::TestCaller<UnicodeCharTest>(
"UnicodeCharTest::TestAscii", &UnicodeCharTest::TestAscii));
suite.addTest(new CppUnit::TestCaller<UnicodeCharTest>(
"UnicodeCharTest::TestISO8859", &UnicodeCharTest::TestISO8859));
suite.addTest(new CppUnit::TestCaller<UnicodeCharTest>(
"UnicodeCharTest::TestUTF8", &UnicodeCharTest::TestUTF8));

parent.addTest("UnicodeCharTest", &suite);
}


void
UnicodeCharTest::_ToString(uint32 c, char *text)
{
BUnicodeChar::ToUTF8(c, &text);
text[0] = '\0';
}


void
UnicodeCharTest::_TestChar(uint32 i, Result result)
{
char text[16];

_ToString(i, text);
CPPUNIT_ASSERT_EQUAL(BString(result.value), text);
CPPUNIT_ASSERT_EQUAL(result.isAlpha, BUnicodeChar::IsAlpha(i));
CPPUNIT_ASSERT_EQUAL(result.isAlNum, BUnicodeChar::IsAlNum(i));
CPPUNIT_ASSERT_EQUAL(result.isLower, BUnicodeChar::IsLower(i));
CPPUNIT_ASSERT_EQUAL(result.isUpper, BUnicodeChar::IsUpper(i));
CPPUNIT_ASSERT_EQUAL(result.isDefined, BUnicodeChar::IsDefined(i));
CPPUNIT_ASSERT_EQUAL(result.type, BUnicodeChar::Type(i));
CPPUNIT_ASSERT_EQUAL(result.toUpper, BUnicodeChar::ToUpper(i));
CPPUNIT_ASSERT_EQUAL(result.toLower, BUnicodeChar::ToLower(i));
}
41 changes: 41 additions & 0 deletions src/tests/kits/locale/UnicodeCharTest.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/*
* Copyright 2014 Haiku, Inc.
* Distributed under the terms of the MIT License.
*/
#ifndef UNICODE_CHAR_TEST_H
#define UNICODE_CHAR_TEST_H


#include <TestCase.h>
#include <TestSuite.h>


class UnicodeCharTest: public BTestCase {
public:
UnicodeCharTest();
virtual ~UnicodeCharTest();

void TestAscii();
void TestISO8859();
void TestUTF8();

static void AddTests(BTestSuite& suite);

private:
struct Result {
const char* value;
bool isAlpha;
bool isAlNum;
bool isLower;
bool isUpper;
bool isDefined;
int type;
int32 toUpper;
int32 toLower;
};

void _ToString(uint32 c, char* text);
void _TestChar(uint32 c, Result result);
};

#endif
54 changes: 0 additions & 54 deletions src/tests/kits/locale/localeTest.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,63 +9,9 @@
#include <stdio.h>


void
unicode_char_to_string(uint32 c, char *text)
{
BUnicodeChar::ToUTF8(c, &text);
text[0] = '\0';
}


int
main()
{
// Test BUnicodeChar class

char text[16];

for (int32 i = 30; i < 70; i++) {
unicode_char_to_string(i, text);
printf("%s: alpha == %d, alNum == %d, lower == %d, upper == %d, "
"defined == %d, charType == %d\n", text,
BUnicodeChar::IsAlpha(i), BUnicodeChar::IsAlNum(i),
BUnicodeChar::IsLower(i), BUnicodeChar::IsUpper(i),
BUnicodeChar::IsDefined(i), BUnicodeChar::Type(i));
}

uint32 chars[] = {(uint8)'\xe4', (uint8)'\xd6', (uint8)'\xdf',
(uint8)'\xe8', (uint8)'\xe1', (uint8)'\xe9', 0};
for (int32 j = 0, i; (i = chars[j]) != 0; j++) {
unicode_char_to_string(i, text);
printf("%s: alpha == %d, alNum == %d, lower == %d, upper == %d, "
"defined == %d, charType == %d\n", text,
BUnicodeChar::IsAlpha(i), BUnicodeChar::IsAlNum(i),
BUnicodeChar::IsLower(i), BUnicodeChar::IsUpper(i),
BUnicodeChar::IsDefined(i), BUnicodeChar::Type(i));

unicode_char_to_string(BUnicodeChar::ToUpper(i), text);
printf("toUpper == %s, ", text);
unicode_char_to_string(BUnicodeChar::ToLower(i), text);
printf("toLower == %s\n", text);
}

const char *utf8chars[] = {"à", "ß", "ñ", "é", "ç", "ä", NULL};
for (int32 j = 0; utf8chars[j] != 0; j++) {
int32 i = BUnicodeChar::FromUTF8(utf8chars[j]);
unicode_char_to_string(i, text);
printf("%s: alpha == %d, alNum == %d, lower == %d, upper == %d, "
"defined == %d, charType == %d\n", text,
BUnicodeChar::IsAlpha(i), BUnicodeChar::IsAlNum(i),
BUnicodeChar::IsLower(i), BUnicodeChar::IsUpper(i),
BUnicodeChar::IsDefined(i), BUnicodeChar::Type(i));

unicode_char_to_string(BUnicodeChar::ToUpper(i), text);
printf("toUpper == %s, ", text);
unicode_char_to_string(BUnicodeChar::ToLower(i), text);
printf("toLower == %s\n", text);
}
printf("%c: digitValue == %ld\n", '8', BUnicodeChar::DigitValue('8'));

// Test BCollator class

BCollator collator;
Expand Down

0 comments on commit af59f5c

Please sign in to comment.