From 71171a7d8c65354c131944d9e37d5010054d228c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Wed, 22 Feb 2012 23:33:54 +0100 Subject: [PATCH] Added unit tests for NaturalCompare() that currently fail. --- src/tests/kits/shared/Jamfile | 10 ++ src/tests/kits/shared/NaturalCompareTest.cpp | 106 +++++++++++++++++++ src/tests/kits/shared/NaturalCompareTest.h | 33 ++++++ src/tests/kits/shared/SharedTestAddon.cpp | 21 ++++ 4 files changed, 170 insertions(+) create mode 100644 src/tests/kits/shared/NaturalCompareTest.cpp create mode 100644 src/tests/kits/shared/NaturalCompareTest.h create mode 100644 src/tests/kits/shared/SharedTestAddon.cpp diff --git a/src/tests/kits/shared/Jamfile b/src/tests/kits/shared/Jamfile index d9aa2dda0c..f3754a4311 100644 --- a/src/tests/kits/shared/Jamfile +++ b/src/tests/kits/shared/Jamfile @@ -3,4 +3,14 @@ SubDir HAIKU_TOP src tests kits shared ; SetSubDirSupportedPlatformsBeOSCompatible ; AddSubDirSupportedPlatforms libbe_test ; +UsePrivateHeaders shared ; + +UnitTestLib libsharedtest.so : + SharedTestAddon.cpp + + NaturalCompareTest.cpp + + : be libshared.a $(TARGET_LIBSTDC++) $(TARGET_LIBSUPC++) +; + SubInclude HAIKU_TOP src tests kits shared shake_filter ; diff --git a/src/tests/kits/shared/NaturalCompareTest.cpp b/src/tests/kits/shared/NaturalCompareTest.cpp new file mode 100644 index 0000000000..f3b958019c --- /dev/null +++ b/src/tests/kits/shared/NaturalCompareTest.cpp @@ -0,0 +1,106 @@ +/* + * Copyright 2012, Axel Dörfler, axeld@pinc-software.de. + * Distributed under the terms of the MIT License. + */ + + +#include "NaturalCompareTest.h" + +#include + +#include +#include + + +using namespace BPrivate; + + +struct Sample { + const char* a; + const char* b; + int expectedResult; +}; + + +NaturalCompareTest::NaturalCompareTest() +{ +} + + +NaturalCompareTest::~NaturalCompareTest() +{ +} + + +void +NaturalCompareTest::TestSome() +{ + static const Sample samples[] = { + {NULL, NULL, 0}, + {NULL, "A", -1}, + {"a", "A", 0}, + {"ä", "a", 1}, + {"3", "99", -1}, + {"9", "19", -1}, + {"13", "99", -1}, + {"9", "111", -1}, + {"00000009", "111", -1}, + {"Hallo2", "hallo12", -1}, + {"Hallo 2", "hallo12", -1}, + {"Hallo 2", "hallo12", -1}, + {"Hallo 2 ", "hallo12", -1}, + {"12 äber 42", "12aber42", 1}, + {"12 äber 42", "12aber43", 1}, + {"12 äber 44", "12aber43", 1}, + {"12 äber 44", "12 aber45", 1}, + }; + _RunTests(samples, sizeof(samples) / sizeof(Sample)); +} + + +/*static*/ void +NaturalCompareTest::AddTests(BTestSuite& parent) +{ + CppUnit::TestSuite& suite = *new CppUnit::TestSuite("NaturalCompareTest"); + + suite.addTest(new CppUnit::TestCaller( + "NaturalCompareTest::TestSome", &NaturalCompareTest::TestSome)); + + parent.addTest("NaturalCompareTest", &suite); +} + + +void +NaturalCompareTest::_RunTests(const Sample* samples, int count) +{ + for (int i = 0; i < count; i++) { + const Sample& sample = samples[i]; + + _RunTest(sample.a, sample.b, sample.expectedResult); + _RunTest(sample.b, sample.a, -sample.expectedResult); + } +} + + +void +NaturalCompareTest::_RunTest(const char* a, const char* b, int expectedResult) +{ + int result = _Normalize(NaturalCompare(a, b)); + + char message[256]; + snprintf(message, sizeof(message), "\"%s\" vs. \"%s\" == %d, expected %d", + a, b, result, expectedResult); + + CppUnit::Asserter::failIf(result != expectedResult, message); +} + + +int +NaturalCompareTest::_Normalize(int result) +{ + if (result > 0) + return 1; + if (result < 0) + return -1; + return 0; +} diff --git a/src/tests/kits/shared/NaturalCompareTest.h b/src/tests/kits/shared/NaturalCompareTest.h new file mode 100644 index 0000000000..db8ae14e94 --- /dev/null +++ b/src/tests/kits/shared/NaturalCompareTest.h @@ -0,0 +1,33 @@ +/* + * Copyright 2012, Axel Dörfler, axeld@pinc-software.de. + * Distributed under the terms of the MIT License. + */ +#ifndef NATURAL_COMPARE_TEST_H +#define NATURAL_COMPARE_TEST_H + + +#include +#include + + +class Sample; + + +class NaturalCompareTest : public CppUnit::TestCase { +public: + NaturalCompareTest(); + virtual ~NaturalCompareTest(); + + void TestSome(); + + static void AddTests(BTestSuite& suite); + +private: + void _RunTests(const Sample* samples, int count); + void _RunTest(const char* a, const char* b, + int expectedResult); + int _Normalize(int result); +}; + + +#endif // NATURAL_COMPARE_TEST_H diff --git a/src/tests/kits/shared/SharedTestAddon.cpp b/src/tests/kits/shared/SharedTestAddon.cpp new file mode 100644 index 0000000000..4a698aeea7 --- /dev/null +++ b/src/tests/kits/shared/SharedTestAddon.cpp @@ -0,0 +1,21 @@ +/* + * Copyright 2012, Axel Dörfler, axeld@pinc-software.de. + * Distributed under the terms of the MIT License. + */ + + +#include +#include + +#include "NaturalCompareTest.h" + + +BTestSuite* +getTestSuite() +{ + BTestSuite* suite = new BTestSuite("Shared"); + + NaturalCompareTest::AddTests(*suite); + + return suite; +}