diff options
| author | Maxime Coste <frrrwww@gmail.com> | 2015-05-22 13:58:56 +0100 |
|---|---|---|
| committer | Maxime Coste <frrrwww@gmail.com> | 2015-05-22 13:58:56 +0100 |
| commit | dd25dcc36185a890194d09e4d0430567e76bf722 (patch) | |
| tree | b2d0ba706878bbd30b933d0dd5ecdb6a73f7df4e /src/buffer.cc | |
| parent | c38a7f3ca4d63c7da94c48afa47006315deee244 (diff) | |
Move unit test functions in next to the code they are testing
Diffstat (limited to 'src/buffer.cc')
| -rw-r--r-- | src/buffer.cc | 68 |
1 files changed, 67 insertions, 1 deletions
diff --git a/src/buffer.cc b/src/buffer.cc index 8b5f6ee5..065288fe 100644 --- a/src/buffer.cc +++ b/src/buffer.cc @@ -5,11 +5,12 @@ #include "client.hh" #include "containers.hh" #include "context.hh" +#include "diff.hh" #include "file.hh" #include "shared_string.hh" +#include "unit_tests.hh" #include "utils.hh" #include "window.hh" -#include "diff.hh" #include <algorithm> @@ -579,4 +580,69 @@ String Buffer::debug_description() const content_size, additional_size); } +UnitTest test_buffer{[]() +{ + Buffer empty_buffer("empty", Buffer::Flags::None, {}); + + Buffer buffer("test", Buffer::Flags::None, { "allo ?\n"_ss, "mais que fais la police\n"_ss, " hein ?\n"_ss, " youpi\n"_ss }); + kak_assert(buffer.line_count() == 4); + + BufferIterator pos = buffer.begin(); + kak_assert(*pos == 'a'); + pos += 6; + kak_assert(pos.coord() == ByteCoord{0 COMMA 6}); + ++pos; + kak_assert(pos.coord() == ByteCoord{1 COMMA 0}); + --pos; + kak_assert(pos.coord() == ByteCoord{0 COMMA 6}); + pos += 1; + kak_assert(pos.coord() == ByteCoord{1 COMMA 0}); + buffer.insert(pos, "tchou kanaky\n"); + kak_assert(buffer.line_count() == 5); + BufferIterator pos2 = buffer.end(); + pos2 -= 9; + kak_assert(*pos2 == '?'); + + String str = buffer.string({ 4, 1 }, buffer.next({ 4, 5 })); + kak_assert(str == "youpi"); + + // check insert at end behaviour: auto add end of line if necessary + pos = buffer.end()-1; + buffer.insert(pos, "tchou"); + kak_assert(buffer.string(pos.coord(), buffer.end_coord()) == StringView{"tchou\n"}); + + pos = buffer.end()-1; + buffer.insert(buffer.end(), "kanaky\n"); + kak_assert(buffer.string((pos+1).coord(), buffer.end_coord()) == StringView{"kanaky\n"}); + + buffer.commit_undo_group(); + buffer.erase(pos+1, buffer.end()); + buffer.insert(buffer.end(), "mutch\n"); + buffer.commit_undo_group(); + buffer.undo(); + kak_assert(buffer.string(buffer.advance(buffer.end_coord(), -7), buffer.end_coord()) == StringView{"kanaky\n"}); + buffer.redo(); + kak_assert(buffer.string(buffer.advance(buffer.end_coord(), -6), buffer.end_coord()) == StringView{"mutch\n"}); +}}; + +UnitTest test_undo{[]() +{ + BufferLines lines = { "allo ?\n"_ss, "mais que fais la police\n"_ss, " hein ?\n"_ss, " youpi\n"_ss }; + Buffer buffer("test", Buffer::Flags::None, lines); + auto pos = buffer.insert(buffer.end(), "kanaky\n"); + buffer.erase(pos, buffer.end()); + buffer.insert(buffer.iterator_at(2_line), "tchou\n"); + buffer.insert(buffer.iterator_at(2_line), "mutch\n"); + buffer.erase(buffer.iterator_at({2, 1}), buffer.iterator_at({2, 5})); + buffer.erase(buffer.iterator_at(2_line), buffer.end()); + buffer.insert(buffer.end(), "youpi"); + buffer.undo(); + buffer.redo(); + buffer.undo(); + + kak_assert((int)buffer.line_count() == lines.size()); + for (size_t i = 0; i < lines.size(); ++i) + kak_assert(SharedString{lines[i]} == buffer[LineCount((int)i)]); +}}; + } |
