--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/searchengine/util/tsrc/cpixtoolsunittest/src/conversiontests.cpp Mon Apr 19 14:40:16 2010 +0300
@@ -0,0 +1,366 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#include <wchar.h>
+
+#include <string>
+#include <iostream>
+
+#include "itk.h"
+
+#include "cpixstrtools.h"
+
+
+template<typename V>
+void testConvertDefault(Itk::TestMgr * testMgr,
+ V * v,
+ const wchar_t * pass[],
+ const wchar_t * fail[])
+{
+ using namespace Cpt;
+ using namespace std;
+
+ wcout << L"pass:" << endl;
+ for (const wchar_t ** p = pass; *p != NULL; ++p)
+ {
+ const char
+ * result = wconvert(v,
+ *p);
+
+ ITK_EXPECT(testMgr,
+ result == NULL,
+ "Should have passed: %S",
+ *p);
+
+ wcout << L"SUCCESS: " << *p << ": ";
+ wcout << *v << endl;
+ }
+
+ wcout << L"fail:" << endl;
+ for (const wchar_t ** p = fail; *p != NULL; ++p)
+ {
+ const char
+ * result = wconvert(v,
+ *p);
+
+ ITK_EXPECT(testMgr,
+ result != NULL,
+ "Should NOT have passed: %S",
+ *p);
+
+ wcout << L"FAILURE: " << *p << ": " << flush;
+ cout << result << endl << flush;
+ }
+}
+
+
+template<typename UINT>
+void testConvertOctal(Itk::TestMgr * testMgr,
+ UINT * v,
+ const wchar_t * pass[],
+ const wchar_t * fail[])
+{
+ using namespace Cpt;
+ using namespace std;
+
+ wcout << L"pass:" << endl;
+ for (const wchar_t ** p = pass; *p != NULL; ++p)
+ {
+ const char
+ * result = wconvertOctal(v,
+ *p);
+
+ ITK_EXPECT(testMgr,
+ result == NULL,
+ "Should have passed: %S",
+ *p);
+
+ wcout << L"SUCCESS: " << *p << ": ";
+ wcout << *v << endl;
+ }
+
+ wcout << L"fail:" << endl;
+ for (const wchar_t ** p = fail; *p != NULL; ++p)
+ {
+ const char
+ * result = wconvertOctal(v,
+ *p);
+
+ ITK_EXPECT(testMgr,
+ result != NULL,
+ "Should NOT have passed: %S",
+ *p);
+
+ wcout << L"FAILURE: " << *p << ": " << flush;
+ cout << result << endl << flush;
+ }
+}
+
+
+template<typename UINT>
+void testConvertHexadecimal(Itk::TestMgr * testMgr,
+ UINT * v,
+ const wchar_t * pass[],
+ const wchar_t * fail[])
+{
+ using namespace Cpt;
+ using namespace std;
+
+ wcout << L"pass:" << endl;
+ for (const wchar_t ** p = pass; *p != NULL; ++p)
+ {
+ const char
+ * result = wconvertHexadecimal(v,
+ *p);
+
+ ITK_EXPECT(testMgr,
+ result == NULL,
+ "Should have passed: %S",
+ *p);
+
+ wcout << L"SUCCESS: " << *p << ": ";
+ wcout << *v << endl;
+ }
+
+ wcout << L"fail:" << endl;
+ for (const wchar_t ** p = fail; *p != NULL; ++p)
+ {
+ const char
+ * result = wconvertHexadecimal(v,
+ *p);
+
+ ITK_EXPECT(testMgr,
+ result != NULL,
+ "Should NOT have passed: %S",
+ *p);
+
+ wcout << L"FAILURE: " << *p << ": ";
+ wcout << result << endl << flush;
+ }
+}
+
+
+
+void testConvertInteger(Itk::TestMgr * testMgr)
+{
+ printf("TESTING integer (generic, default) formatting. Target: int\n");
+
+ static const wchar_t * pass[] = {
+ L"0",
+ L"123",
+ L"-123",
+ L"0xdead",
+ L"0x100",
+ L"0100",
+ L"100",
+ NULL
+ };
+
+
+ static const wchar_t * fail[] = {
+ L"0a",
+ L"123a",
+ L"-123a",
+ L"0xdeadg",
+ L"0x100g",
+ L"01009",
+ L"100.",
+ NULL
+ };
+
+ int
+ v;
+
+ testConvertDefault(testMgr,
+ &v,
+ pass,
+ fail);
+}
+
+
+void testConvertInteger_8(Itk::TestMgr * testMgr)
+{
+ printf("TESTING integer (octal) formatting. Target: unsigned int\n");
+
+ static const wchar_t * pass[] = {
+ L"0",
+ L"123",
+ L"0100",
+ L"100",
+ NULL
+ };
+
+
+ static const wchar_t * fail[] = {
+ L"0a",
+ L"123a",
+ L"01009",
+ L"100.",
+ NULL
+ };
+
+ unsigned int
+ v;
+
+ testConvertOctal(testMgr,
+ &v,
+ pass,
+ fail);
+}
+
+void testConvertInteger_16(Itk::TestMgr * testMgr)
+{
+ printf("TESTING integer (hexadecimal) formatting. Target: unsigned int\n");
+
+ static const wchar_t * pass[] = {
+ L"ff",
+ L"beef",
+ L"123",
+ L"0100",
+ L"100",
+ NULL
+ };
+
+
+ static const wchar_t * fail[] = {
+ L"0z",
+ L"123g",
+ L"0100g",
+ L"100.",
+ NULL
+ };
+
+ unsigned int
+ v;
+
+ testConvertHexadecimal(testMgr,
+ &v,
+ pass,
+ fail);
+}
+
+
+void testConvertFloat(Itk::TestMgr * testMgr)
+{
+ printf("TESTING float (generic, default) formatting. Target: float\n");
+
+ static const wchar_t * pass[] = {
+ L"0",
+ L"0.5",
+ L".5",
+ L"-.5",
+ L"+.5",
+ L"+12.345",
+ NULL
+ };
+
+
+ static const wchar_t * fail[] = {
+ L"a",
+ L".-5",
+ L"zaza",
+ L"3.1415a",
+ NULL
+ };
+
+ float
+ v;
+
+ testConvertDefault(testMgr,
+ &v,
+ pass,
+ fail);
+}
+
+
+void testConvertDouble(Itk::TestMgr * testMgr)
+{
+ printf("TESTING double (generic, default) formatting. Target: double\n");
+
+ static const wchar_t * pass[] = {
+ L"0",
+ L"0.5",
+ L".5",
+ L"-.5",
+ L"+.5",
+ L"+12.345",
+ NULL
+ };
+
+
+ static const wchar_t * fail[] = {
+ L"a",
+ L".-5",
+ L"zaza",
+ L"3.1415a",
+ NULL
+ };
+
+ double
+ v;
+
+ testConvertDefault(testMgr,
+ &v,
+ pass,
+ fail);
+}
+
+
+Itk::TesterBase * CreateConversionTests()
+{
+ using namespace Itk;
+
+ SuiteTester
+ * conversionTests = new SuiteTester("conversion");
+
+#define TEST "integer"
+ conversionTests->add(TEST,
+ testConvertInteger,
+ TEST);
+#undef TEST
+
+#define TEST "integer_8"
+ conversionTests->add(TEST,
+ testConvertInteger_8,
+ TEST);
+#undef TEST
+
+#define TEST "integer_16"
+ conversionTests->add(TEST,
+ testConvertInteger_16,
+ TEST);
+#undef TEST
+
+#define TEST "float"
+ conversionTests->add(TEST,
+ testConvertFloat,
+ TEST);
+#undef TEST
+
+#define TEST "double"
+ conversionTests->add(TEST,
+ testConvertDouble,
+ TEST);
+#undef TEST
+
+
+
+ // ... add more tests to suite
+
+ return conversionTests;
+}
+