1 #include "../misc/levenshtein.h" 2 #include "../misc/multiarray.h" 3 #include "../tests/testutils.h" 5 #include <cppunit/TestFixture.h> 6 #include <cppunit/extensions/HelperMacros.h> 19 CPPUNIT_TEST(testMultiArray);
20 CPPUNIT_TEST(testLevenshtein);
21 CPPUNIT_TEST_SUITE_END();
31 void testMultiArray();
32 void testLevenshtein();
39 static_assert(decltype(makeMultiArray<char>(3))::dimensionCount() == 1,
"dimension count 1D");
40 static_assert(decltype(makeMultiArray<char>(3, 2))::dimensionCount() == 2,
"dimension count 2D");
41 static_assert(decltype(makeMultiArray<char>(3, 2, 3))::dimensionCount() == 3,
"dimension count 3D");
43 auto array1d(makeMultiArray<char>(3));
44 CPPUNIT_ASSERT_EQUAL(3_st, array1d.dimensionSize<0>());
45 CPPUNIT_ASSERT_EQUAL(3_st, array1d.totalSize());
49 CPPUNIT_ASSERT_EQUAL(
"abc"s,
string(array1d.data(), 3));
51 auto array2d(makeMultiArray<char>(3, 2));
52 CPPUNIT_ASSERT_EQUAL(3_st, array2d.dimensionSize<0>());
53 CPPUNIT_ASSERT_EQUAL(2_st, array2d.dimensionSize<1>());
54 CPPUNIT_ASSERT_EQUAL(6_st, array2d.totalSize());
55 const char *
const data(array2d.data());
56 array2d.at(0, 0) =
'a';
57 array2d.at(0, 1) =
'b';
58 array2d.at(1, 0) =
'c';
59 array2d.at(1, 1) =
'd';
60 array2d.at(2, 0) =
'e';
61 array2d.at(2, 1) =
'f';
62 CPPUNIT_ASSERT_EQUAL(
"abcdef"s,
string(data, 6));
64 auto array3d(makeMultiArray<char>(3, 2, 3));
65 CPPUNIT_ASSERT_EQUAL(3_st, array3d.dimensionSize<0>());
66 CPPUNIT_ASSERT_EQUAL(2_st, array3d.dimensionSize<1>());
67 CPPUNIT_ASSERT_EQUAL(3_st, array3d.dimensionSize<2>());
68 CPPUNIT_ASSERT_EQUAL(18_st, array3d.totalSize());
69 array3d.at(0, 0, 0) =
'a';
70 array3d.at(0, 0, 1) =
'b';
71 array3d.at(0, 0, 2) =
'c';
72 array3d.at(0, 1, 0) =
'd';
73 array3d.at(0, 1, 1) =
'e';
74 array3d.at(0, 1, 2) =
'f';
75 array3d.at(1, 0, 0) =
'g';
76 array3d.at(1, 0, 1) =
'h';
77 array3d.at(1, 0, 2) =
'i';
78 array3d.at(1, 1, 0) =
'j';
79 array3d.at(1, 1, 1) =
'k';
80 array3d.at(1, 1, 2) =
'l';
81 array3d.at(2, 0, 0) =
'm';
82 array3d.at(2, 0, 1) =
'n';
83 array3d.at(2, 0, 2) =
'o';
84 array3d.at(2, 1, 0) =
'p';
85 array3d.at(2, 1, 1) =
'q';
86 array3d.at(2, 1, 2) =
'r';
87 CPPUNIT_ASSERT_EQUAL(
"abcdefghijklmnopqr"s,
string(array3d.data(), 18));
89 auto stackMultiArray(makeFixedSizeMultiArray<char, 9>(3, 3));
90 CPPUNIT_ASSERT_EQUAL(3_st, stackMultiArray.dimensionSize<0>());
91 CPPUNIT_ASSERT_EQUAL(3_st, stackMultiArray.dimensionSize<1>());
92 CPPUNIT_ASSERT_EQUAL(9_st, stackMultiArray.totalSize());
93 stackMultiArray.at(0, 0) =
'a';
94 stackMultiArray.at(0, 1) =
'b';
95 stackMultiArray.at(0, 2) =
'c';
96 stackMultiArray.at(1, 0) =
'd';
97 stackMultiArray.at(1, 1) =
'e';
98 stackMultiArray.at(1, 2) =
'f';
99 stackMultiArray.at(2, 0) =
'g';
100 stackMultiArray.at(2, 1) =
'h';
101 stackMultiArray.at(2, 2) =
'i';
102 CPPUNIT_ASSERT_EQUAL(
"abcdefghi"s,
string(stackMultiArray.data(), 9));
CPPUNIT_TEST_SUITE_REGISTRATION(MiscTests)
Contains literals to ease asserting with CPPUNIT_ASSERT_EQUAL.
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...
The MiscTests class tests functions and classes from the misc directory.