2015-05-22 14:58:56 +02:00
|
|
|
#include "unit_tests.hh"
|
|
|
|
|
2012-03-21 20:27:36 +01:00
|
|
|
#include "assert.hh"
|
2015-05-13 00:41:35 +02:00
|
|
|
#include "diff.hh"
|
2015-05-22 14:58:56 +02:00
|
|
|
#include "utf8.hh"
|
|
|
|
#include "string.hh"
|
2012-03-21 20:27:36 +01:00
|
|
|
|
2015-05-22 14:58:56 +02:00
|
|
|
namespace Kakoune
|
2012-03-21 20:27:36 +01:00
|
|
|
{
|
2014-01-16 23:07:42 +01:00
|
|
|
|
2015-05-22 14:58:56 +02:00
|
|
|
UnitTest test_utf8{[]()
|
2012-10-22 01:05:56 +02:00
|
|
|
{
|
2015-05-22 14:58:56 +02:00
|
|
|
StringView str = "maïs mélange bientôt";
|
|
|
|
kak_assert(utf8::distance(std::begin(str), std::end(str)) == 20);
|
|
|
|
kak_assert(utf8::codepoint(std::begin(str) + 2, std::end(str)) == 0x00EF);
|
|
|
|
}};
|
2013-01-30 19:16:36 +01:00
|
|
|
|
2015-05-22 14:58:56 +02:00
|
|
|
UnitTest test_diff{[]()
|
2015-05-13 00:41:35 +02:00
|
|
|
{
|
2015-05-14 14:57:03 +02:00
|
|
|
auto eq = [](const Diff& lhs, const Diff& rhs) {
|
|
|
|
return lhs.mode == rhs.mode and lhs.len == rhs.len and lhs.posB == rhs.posB;
|
|
|
|
};
|
|
|
|
|
|
|
|
{
|
|
|
|
StringView s1 = "mais que fais la police";
|
|
|
|
StringView s2 = "mais ou va la police";
|
|
|
|
|
|
|
|
auto diff = find_diff(s1.begin(), (int)s1.length(), s2.begin(), (int)s2.length());
|
2015-05-18 23:59:59 +02:00
|
|
|
kak_assert(diff.size() == 11);
|
2015-05-14 14:57:03 +02:00
|
|
|
}
|
2015-05-13 00:41:35 +02:00
|
|
|
|
2015-05-14 14:57:03 +02:00
|
|
|
{
|
2017-07-18 12:14:52 +02:00
|
|
|
auto diff = find_diff("a?", 2, "!", 1);
|
2015-05-14 14:57:03 +02:00
|
|
|
kak_assert(diff.size() == 3 and
|
|
|
|
eq(diff[0], {Diff::Remove, 1, 0}) and
|
|
|
|
eq(diff[1], {Diff::Add, 1, 0}) and
|
|
|
|
eq(diff[2], {Diff::Remove, 1, 0}));
|
|
|
|
}
|
2017-07-18 12:14:52 +02:00
|
|
|
|
|
|
|
{
|
|
|
|
auto diff = find_diff("abcd", 4, "c", 1);
|
|
|
|
kak_assert(diff.size() == 3 and
|
|
|
|
eq(diff[0], {Diff::Remove, 2, 0}) and
|
|
|
|
eq(diff[1], {Diff::Keep, 1, 0}) and
|
|
|
|
eq(diff[2], {Diff::Remove, 1, 0}));
|
|
|
|
}
|
|
|
|
|
|
|
|
{
|
|
|
|
auto diff = find_diff("abcd", 4, "cdef", 4);
|
|
|
|
kak_assert(diff.size() == 3 and
|
|
|
|
eq(diff[0], {Diff::Remove, 2, 0}) and
|
|
|
|
eq(diff[1], {Diff::Keep, 2, 0}) and
|
|
|
|
eq(diff[2], {Diff::Add, 2, 2}));
|
|
|
|
}
|
2015-05-22 14:58:56 +02:00
|
|
|
}};
|
|
|
|
|
2015-05-24 23:34:05 +02:00
|
|
|
UnitTest* UnitTest::list = nullptr;
|
2015-05-13 00:41:35 +02:00
|
|
|
|
2015-05-24 23:34:05 +02:00
|
|
|
void UnitTest::run_all_tests()
|
2012-03-21 20:27:36 +01:00
|
|
|
{
|
2015-05-24 23:34:05 +02:00
|
|
|
for (const UnitTest* test = UnitTest::list; test; test = test->next)
|
2015-05-22 14:58:56 +02:00
|
|
|
test->func();
|
|
|
|
}
|
|
|
|
|
2012-03-21 20:27:36 +01:00
|
|
|
}
|