labs-edaf30/lab2/test_edit_distance.cc

40 lines
1.2 KiB
C++
Raw Permalink Normal View History

/* A sketch of unit tests for an edit_distance function.
*
* The function is assumed to be
* int edit_distance(const std::string&, const std::string&);
* and it is assumed to be declared in edit_distance.h
*/
#include "edit_distance.h"
#include <iostream>
2024-11-21 08:47:51 +01:00
bool do_test(const std::string &x, const std::string &y, int expected) {
auto actual = edit_distance(x, y);
if (actual != expected) {
std::cout << "*** WRONG: distance(" << x << ", " << y << ") was "
<< actual << ", expected " << expected << '\n';
return true;
}
return false;
}
2024-11-21 08:47:51 +01:00
int main() {
int res = do_test("foobar", "foobar", 0);
res += do_test("x", "x", 0);
res += do_test("baz", "bar", 1);
res += do_test("separate", "seperate", 1);
res += do_test("separate", "seprate", 1);
res += do_test("separate", "sepeate", 2);
res += do_test("separate", "desperate", 3);
res += do_test("separate", "federate", 3);
res += do_test("separate", "generate", 3);
res += do_test("color", "colour", 1);
res += do_test("color", "colr", 1);
res += do_test("volor", "colour", 2);
if (!res)
std::cout << "\nPassed\n";
else
std::cout << "\nFailed " << res << " tests\n";
}