Convert collator test to cppunit.
This commit is contained in:
@@ -0,0 +1,80 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2014 Haiku, Inc.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
#include "CollatorTest.h"
|
||||||
|
|
||||||
|
#include <Collator.h>
|
||||||
|
#include <Locale.h>
|
||||||
|
#include <LocaleRoster.h>
|
||||||
|
|
||||||
|
#include <cppunit/TestCaller.h>
|
||||||
|
#include <cppunit/TestSuite.h>
|
||||||
|
|
||||||
|
|
||||||
|
CollatorTest::CollatorTest()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
CollatorTest::~CollatorTest()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void
|
||||||
|
CollatorTest::TestSortKeys()
|
||||||
|
{
|
||||||
|
struct Test {
|
||||||
|
char* first;
|
||||||
|
char* second;
|
||||||
|
int sign[3];
|
||||||
|
};
|
||||||
|
|
||||||
|
BCollator collator;
|
||||||
|
BLocaleRoster::Default()->GetDefaultLocale()->GetCollator(&collator);
|
||||||
|
const Test tests[] = {
|
||||||
|
{"gehen", "géhen", {0, -1, -1}},
|
||||||
|
{"aus", "äUß", {-1, -1, -1}},
|
||||||
|
{"auss", "äUß", {0, -1, -1}},
|
||||||
|
{"WO", "wÖ", {0, -1, -1}},
|
||||||
|
{"SO", "so", {0, 0, 1}},
|
||||||
|
{"açñ", "acn", {0, 1, 1}},
|
||||||
|
{NULL, NULL, {0, 0, 0}}
|
||||||
|
};
|
||||||
|
|
||||||
|
for (int32 i = 0; tests[i].first != NULL; i++) {
|
||||||
|
NextSubTest();
|
||||||
|
|
||||||
|
for (int32 strength = B_COLLATE_PRIMARY; strength < 4; strength++) {
|
||||||
|
BString a, b;
|
||||||
|
collator.GetSortKey(tests[i].first, &a, strength);
|
||||||
|
collator.GetSortKey(tests[i].second, &b, strength);
|
||||||
|
|
||||||
|
int difference = collator.Compare(tests[i].first, tests[i].second,
|
||||||
|
strength);
|
||||||
|
CPPUNIT_ASSERT_EQUAL(tests[i].sign[strength - 1], difference);
|
||||||
|
int keydiff = strcmp(a.String(), b.String());
|
||||||
|
// Check that the keys compare the same as the strings. Either both
|
||||||
|
// are 0, or both have the same sign.
|
||||||
|
if (difference == 0)
|
||||||
|
CPPUNIT_ASSERT_EQUAL(0, keydiff);
|
||||||
|
else
|
||||||
|
CPPUNIT_ASSERT(keydiff * difference > 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*static*/ void
|
||||||
|
CollatorTest::AddTests(BTestSuite& parent)
|
||||||
|
{
|
||||||
|
CppUnit::TestSuite& suite = *new CppUnit::TestSuite("CollatorTest");
|
||||||
|
|
||||||
|
suite.addTest(new CppUnit::TestCaller<CollatorTest>(
|
||||||
|
"CollatorTest::TestSortKeys", &CollatorTest::TestSortKeys));
|
||||||
|
|
||||||
|
parent.addTest("CollatorTest", &suite);
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2014 Haiku, Inc.
|
||||||
|
* Distributed under the terms of the MIT License.
|
||||||
|
*/
|
||||||
|
#ifndef COLLATOR_TEST_H
|
||||||
|
#define COLLATOR_TEST_H
|
||||||
|
|
||||||
|
|
||||||
|
#include <TestCase.h>
|
||||||
|
#include <TestSuite.h>
|
||||||
|
|
||||||
|
|
||||||
|
class CollatorTest: public BTestCase {
|
||||||
|
public:
|
||||||
|
CollatorTest();
|
||||||
|
virtual ~CollatorTest();
|
||||||
|
|
||||||
|
void TestSortKeys();
|
||||||
|
|
||||||
|
static void AddTests(BTestSuite& suite);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
#endif
|
||||||
@@ -51,6 +51,7 @@ Addon catalogTestAddOn
|
|||||||
UnitTestLib localekittest.so :
|
UnitTestLib localekittest.so :
|
||||||
LocaleKitTestAddon.cpp
|
LocaleKitTestAddon.cpp
|
||||||
|
|
||||||
|
CollatorTest.cpp
|
||||||
UnicodeCharTest.cpp
|
UnicodeCharTest.cpp
|
||||||
|
|
||||||
: be [ TargetLibstdc++ ]
|
: be [ TargetLibstdc++ ]
|
||||||
|
|||||||
@@ -7,6 +7,7 @@
|
|||||||
#include <TestSuite.h>
|
#include <TestSuite.h>
|
||||||
#include <TestSuiteAddon.h>
|
#include <TestSuiteAddon.h>
|
||||||
|
|
||||||
|
#include "CollatorTest.h"
|
||||||
#include "UnicodeCharTest.h"
|
#include "UnicodeCharTest.h"
|
||||||
|
|
||||||
|
|
||||||
@@ -15,6 +16,7 @@ getTestSuite()
|
|||||||
{
|
{
|
||||||
BTestSuite* suite = new BTestSuite("LocaleKit");
|
BTestSuite* suite = new BTestSuite("LocaleKit");
|
||||||
|
|
||||||
|
CollatorTest::AddTests(*suite);
|
||||||
UnicodeCharTest::AddTests(*suite);
|
UnicodeCharTest::AddTests(*suite);
|
||||||
|
|
||||||
return suite;
|
return suite;
|
||||||
|
|||||||
@@ -6,6 +6,7 @@
|
|||||||
|
|
||||||
#include <Collator.h>
|
#include <Collator.h>
|
||||||
#include <Locale.h>
|
#include <Locale.h>
|
||||||
|
#include <LocaleRoster.h>
|
||||||
#include <Message.h>
|
#include <Message.h>
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@@ -126,6 +127,9 @@ main(int argc, char **argv)
|
|||||||
bool ignorePunctuation = false;
|
bool ignorePunctuation = false;
|
||||||
char *addon = NULL;
|
char *addon = NULL;
|
||||||
|
|
||||||
|
BCollator defaultCollator;
|
||||||
|
BLocaleRoster::Default()->GetDefaultLocale()->GetCollator(&defaultCollator);
|
||||||
|
|
||||||
while ((++argv)[0]) {
|
while ((++argv)[0]) {
|
||||||
if (argv[0][0] == '-' && argv[0][1] != '-') {
|
if (argv[0][0] == '-' && argv[0][1] != '-') {
|
||||||
char *arg = argv[0] + 1;
|
char *arg = argv[0] + 1;
|
||||||
@@ -155,13 +159,12 @@ main(int argc, char **argv)
|
|||||||
|
|
||||||
// load the collator add-on if necessary
|
// load the collator add-on if necessary
|
||||||
|
|
||||||
if (addon != NULL) {
|
if (addon != NULL)
|
||||||
gCollator = new BCollator(addon, strength, true);
|
gCollator = new BCollator(addon, strength, true);
|
||||||
}
|
|
||||||
|
|
||||||
if (gCollator == NULL) {
|
if (gCollator == NULL) {
|
||||||
printf("--------- Use standard collator! -----------\n");
|
printf("--------- Use standard collator! -----------\n");
|
||||||
gCollator = be_locale->Collator();
|
gCollator = &defaultCollator;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf("test archiving/unarchiving collator\n");
|
printf("test archiving/unarchiving collator\n");
|
||||||
@@ -176,7 +179,7 @@ main(int argc, char **argv)
|
|||||||
fprintf(stderr, "Unarchiving failed!\n");
|
fprintf(stderr, "Unarchiving failed!\n");
|
||||||
|
|
||||||
delete unarchived;
|
delete unarchived;
|
||||||
gCollator = be_locale->Collator();
|
gCollator = &defaultCollator;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,29 +12,6 @@
|
|||||||
int
|
int
|
||||||
main()
|
main()
|
||||||
{
|
{
|
||||||
// Test BCollator class
|
|
||||||
|
|
||||||
BCollator collator;
|
|
||||||
BLocaleRoster::Default()->GetDefaultLocale()->GetCollator(&collator);
|
|
||||||
const char *strings[] = {"gehen", "géhen", "aus", "äUß", "auss", "äUß",
|
|
||||||
"WO", "wÖ", "SO", "so", "açñ", "acn", NULL};
|
|
||||||
const char *strengths[] = {"primary: ", "secondary:", "tertiary: "};
|
|
||||||
for (int32 i = 0; strings[i]; i += 2) {
|
|
||||||
for (int32 strength = B_COLLATE_PRIMARY; strength < 4; strength++) {
|
|
||||||
BString a, b;
|
|
||||||
collator.GetSortKey(strings[i], &a, strength);
|
|
||||||
collator.GetSortKey(strings[i + 1], &b, strength);
|
|
||||||
|
|
||||||
printf("%s sort keys: \"%s\" -> \"%s\", \"%s\" -> \"%s\"\n",
|
|
||||||
strengths[strength-1], strings[i], a.String(), strings[i+1],
|
|
||||||
b.String());
|
|
||||||
printf("\tcmp = %d (key compare = %d)\n",
|
|
||||||
collator.Compare(strings[i], strings[i + 1], strength),
|
|
||||||
strcmp(a.String(), b.String()));
|
|
||||||
}
|
|
||||||
putchar('\n');
|
|
||||||
}
|
|
||||||
|
|
||||||
// Tests the BLanguage class
|
// Tests the BLanguage class
|
||||||
|
|
||||||
BLanguage language;
|
BLanguage language;
|
||||||
|
|||||||
Reference in New Issue
Block a user