1 #include "../misc/levenshtein.h" 2 #include "../misc/multiarray.h" 4 #include "../conversion/stringbuilder.h" 6 #include "../io/misc.h" 8 #include "../tests/testutils.h" 10 #include <cppunit/TestFixture.h> 11 #include <cppunit/extensions/HelperMacros.h> 29 CPPUNIT_TEST(testMultiArray);
30 CPPUNIT_TEST(testLevenshtein);
31 CPPUNIT_TEST(testTestUtilities);
32 CPPUNIT_TEST_SUITE_END();
42 void testMultiArray();
43 void testLevenshtein();
44 void testTestUtilities();
51 static_assert(decltype(makeMultiArray<char>(3))::dimensionCount() == 1,
"dimension count 1D");
52 static_assert(decltype(makeMultiArray<char>(3, 2))::dimensionCount() == 2,
"dimension count 2D");
53 static_assert(decltype(makeMultiArray<char>(3, 2, 3))::dimensionCount() == 3,
"dimension count 3D");
55 auto array1d(makeMultiArray<char>(3));
56 CPPUNIT_ASSERT_EQUAL(3_st, array1d.dimensionSize<0>());
57 CPPUNIT_ASSERT_EQUAL(3_st, array1d.totalSize());
61 CPPUNIT_ASSERT_EQUAL(
"abc"s,
string(array1d.data(), 3));
63 auto array2d(makeMultiArray<char>(3, 2));
64 CPPUNIT_ASSERT_EQUAL(3_st, array2d.dimensionSize<0>());
65 CPPUNIT_ASSERT_EQUAL(2_st, array2d.dimensionSize<1>());
66 CPPUNIT_ASSERT_EQUAL(6_st, array2d.totalSize());
67 const char *
const data(array2d.data());
68 array2d.at(0, 0) =
'a';
69 array2d.at(0, 1) =
'b';
70 array2d.at(1, 0) =
'c';
71 array2d.at(1, 1) =
'd';
72 array2d.at(2, 0) =
'e';
73 array2d.at(2, 1) =
'f';
74 CPPUNIT_ASSERT_EQUAL(
"abcdef"s,
string(data, 6));
76 auto array3d(makeMultiArray<char>(3, 2, 3));
77 CPPUNIT_ASSERT_EQUAL(3_st, array3d.dimensionSize<0>());
78 CPPUNIT_ASSERT_EQUAL(2_st, array3d.dimensionSize<1>());
79 CPPUNIT_ASSERT_EQUAL(3_st, array3d.dimensionSize<2>());
80 CPPUNIT_ASSERT_EQUAL(18_st, array3d.totalSize());
81 array3d.at(0, 0, 0) =
'a';
82 array3d.at(0, 0, 1) =
'b';
83 array3d.at(0, 0, 2) =
'c';
84 array3d.at(0, 1, 0) =
'd';
85 array3d.at(0, 1, 1) =
'e';
86 array3d.at(0, 1, 2) =
'f';
87 array3d.at(1, 0, 0) =
'g';
88 array3d.at(1, 0, 1) =
'h';
89 array3d.at(1, 0, 2) =
'i';
90 array3d.at(1, 1, 0) =
'j';
91 array3d.at(1, 1, 1) =
'k';
92 array3d.at(1, 1, 2) =
'l';
93 array3d.at(2, 0, 0) =
'm';
94 array3d.at(2, 0, 1) =
'n';
95 array3d.at(2, 0, 2) =
'o';
96 array3d.at(2, 1, 0) =
'p';
97 array3d.at(2, 1, 1) =
'q';
98 array3d.at(2, 1, 2) =
'r';
99 CPPUNIT_ASSERT_EQUAL(
"abcdefghijklmnopqr"s,
string(array3d.data(), 18));
101 auto stackMultiArray(makeFixedSizeMultiArray<char, 9>(3, 3));
102 CPPUNIT_ASSERT_EQUAL(3_st, stackMultiArray.dimensionSize<0>());
103 CPPUNIT_ASSERT_EQUAL(3_st, stackMultiArray.dimensionSize<1>());
104 CPPUNIT_ASSERT_EQUAL(9_st, stackMultiArray.totalSize());
105 stackMultiArray.at(0, 0) =
'a';
106 stackMultiArray.at(0, 1) =
'b';
107 stackMultiArray.at(0, 2) =
'c';
108 stackMultiArray.at(1, 0) =
'd';
109 stackMultiArray.at(1, 1) =
'e';
110 stackMultiArray.at(1, 2) =
'f';
111 stackMultiArray.at(2, 0) =
'g';
112 stackMultiArray.at(2, 1) =
'h';
113 stackMultiArray.at(2, 2) =
'i';
114 CPPUNIT_ASSERT_EQUAL(
"abcdefghi"s,
string(stackMultiArray.data(), 9));
144 const auto workingCopyPathForNestedTestFile =
workingCopyPath(
"subdir/nested-testfile.txt");
145 CPPUNIT_ASSERT_EQUAL_MESSAGE(
"creation of subdirectories in working dir",
"some file\n"s,
readFile(workingCopyPathForNestedTestFile));
149 CPPUNIT_ASSERT_EQUAL_MESSAGE(
"printing hex numbers",
"0x10"s, ss.str());
CPPUNIT_TEST_SUITE_REGISTRATION(MiscTests)
#define TESTUTILS_ASSERT_LIKE(message, expectedRegex, actualString)
Asserts whether the specified string matches the specified regex.
Contains literals to ease asserting with CPPUNIT_ASSERT_EQUAL.
CPP_UTILITIES_EXPORT std::string readFile(const std::string &path, std::string::size_type maxSize=std::string::npos)
Reads all contents of the specified file in a single call.
Contains utility classes helping to read and write streams.
Contains classes and functions utilizing creating of test applications.
Contains several functions providing conversions between different data types.
CPP_UTILITIES_EXPORT std::string workingCopyPath(const std::string &name)
Convenience function which returns the full path to a working copy of the test file with the specifie...
AsHexNumber< T > asHexNumber(const T &value)
Wraps a value to be printed using the hex system in the error case when asserted with cppunit (or sim...
CPP_UTILITIES_EXPORT std::size_t computeDamerauLevenshteinDistance(const char *str1, std::size_t size1, const char *str2, std::size_t size2)
Contains various utilities such as computing Damerau–Levenshtein distance and N-dimensional arrays...
void testTestUtilities()
Tests helper from TestUtilities namespace which aren't used in other tests anyways.
The MiscTests class tests misc functions and classes (mainly of files contained by the misc directory...