| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189 |
- #include "TextEditor.h"
- void TextEditor::UnitTests()
- {
- SetText(" \t \t \t \t\n");
- // --- GetCharacterColumn --- //
- {
- // Returns column given line and character index in that line.
- // Column is on the left side of character
- assert(GetCharacterColumn(0, 0) == 0);
- assert(GetCharacterColumn(0, 1) == 1);
- assert(GetCharacterColumn(0, 2) == 4);
- assert(GetCharacterColumn(0, 3) == 5);
- assert(GetCharacterColumn(0, 4) == 6);
- assert(GetCharacterColumn(0, 5) == 8);
- assert(GetCharacterColumn(0, 6) == 9);
- assert(GetCharacterColumn(0, 7) == 10);
- assert(GetCharacterColumn(0, 8) == 11);
- assert(GetCharacterColumn(0, 9) == 12);
- assert(GetCharacterColumn(0, 10) == 13);
- assert(GetCharacterColumn(0, 11) == 16);
- assert(GetCharacterColumn(0, 12) == 16); // out of range
- // empty line
- assert(GetCharacterColumn(1, 0) == 0);
- assert(GetCharacterColumn(1, 1) == 0); // out of range
- assert(GetCharacterColumn(1, 2) == 0); // out of range
- // nonexistent line
- assert(GetCharacterColumn(2, 0) == 0);
- assert(GetCharacterColumn(2, 1) == 0);
- assert(GetCharacterColumn(2, 2) == 0);
- }
- // --- GetCharacterIndexL --- //
- {
- // Returns character index from coordinates, if coordinates are in the middle of a tab character it returns character index of that tab character
- assert(GetCharacterIndexL({ 0, 0 }) == 0);
- assert(GetCharacterIndexL({ 0, 1 }) == 1);
- assert(GetCharacterIndexL({ 0, 2 }) == 1);
- assert(GetCharacterIndexL({ 0, 3 }) == 1);
- assert(GetCharacterIndexL({ 0, 4 }) == 2);
- assert(GetCharacterIndexL({ 0, 5 }) == 3);
- assert(GetCharacterIndexL({ 0, 6 }) == 4);
- assert(GetCharacterIndexL({ 0, 7 }) == 4);
- assert(GetCharacterIndexL({ 0, 8 }) == 5);
- assert(GetCharacterIndexL({ 0, 9 }) == 6);
- assert(GetCharacterIndexL({ 0, 10 }) == 7);
- assert(GetCharacterIndexL({ 0, 11 }) == 8);
- assert(GetCharacterIndexL({ 0, 12 }) == 9);
- assert(GetCharacterIndexL({ 0, 13 }) == 10);
- assert(GetCharacterIndexL({ 0, 14 }) == 10);
- assert(GetCharacterIndexL({ 0, 15 }) == 10);
- assert(GetCharacterIndexL({ 0, 16 }) == 11);
- assert(GetCharacterIndexL({ 0, 17 }) == 11); // out of range
- assert(GetCharacterIndexL({ 0, 18 }) == 11); // out of range
- // empty line
- assert(GetCharacterIndexL({ 1, 0 }) == 0);
- assert(GetCharacterIndexL({ 1, 1 }) == 0); // out of range
- assert(GetCharacterIndexL({ 1, 2 }) == 0); // out of range
- // nonexistent line
- assert(GetCharacterIndexL({ 2, 0 }) == -1);
- assert(GetCharacterIndexL({ 2, 1 }) == -1);
- assert(GetCharacterIndexL({ 2, 2 }) == -1);
- }
- // --- GetCharacterIndexR --- //
- {
- // Returns character index from coordinates, if coordinates are in the middle of a tab character it returns character index of next character
- assert(GetCharacterIndexR({ 0, 0 }) == 0);
- assert(GetCharacterIndexR({ 0, 1 }) == 1);
- assert(GetCharacterIndexR({ 0, 2 }) == 2);
- assert(GetCharacterIndexR({ 0, 3 }) == 2);
- assert(GetCharacterIndexR({ 0, 4 }) == 2);
- assert(GetCharacterIndexR({ 0, 5 }) == 3);
- assert(GetCharacterIndexR({ 0, 6 }) == 4);
- assert(GetCharacterIndexR({ 0, 7 }) == 5);
- assert(GetCharacterIndexR({ 0, 8 }) == 5);
- assert(GetCharacterIndexR({ 0, 9 }) == 6);
- assert(GetCharacterIndexR({ 0, 10 }) == 7);
- assert(GetCharacterIndexR({ 0, 11 }) == 8);
- assert(GetCharacterIndexR({ 0, 12 }) == 9);
- assert(GetCharacterIndexR({ 0, 13 }) == 10);
- assert(GetCharacterIndexR({ 0, 14 }) == 11);
- assert(GetCharacterIndexR({ 0, 15 }) == 11);
- assert(GetCharacterIndexR({ 0, 16 }) == 11);
- assert(GetCharacterIndexR({ 0, 17 }) == 11); // out of range
- assert(GetCharacterIndexR({ 0, 18 }) == 11); // out of range
- // empty line
- assert(GetCharacterIndexR({ 1, 0 }) == 0);
- assert(GetCharacterIndexR({ 1, 1 }) == 0); // out of range
- assert(GetCharacterIndexR({ 1, 2 }) == 0); // out of range
- // nonexistent line
- assert(GetCharacterIndexR({ 2, 0 }) == -1);
- assert(GetCharacterIndexR({ 2, 1 }) == -1);
- assert(GetCharacterIndexR({ 2, 2 }) == -1);
- }
- // --- GetText --- //
- {
- // Gets text from aStart to aEnd, tabs are counted on the start position
- std::string text = GetText({ 0, 0 }, { 0, 1 });
- assert(text.compare(" ") == 0);
- text = GetText({ 0, 1 }, { 0, 2 });
- assert(text.compare("\t") == 0);
- text = GetText({ 0, 2 }, { 0, 3 });
- assert(text.compare("") == 0);
- text = GetText({ 0, 3 }, { 0, 4 });
- assert(text.compare("") == 0);
- text = GetText({ 0, 4 }, { 0, 5 });
- assert(text.compare(" ") == 0);
- text = GetText({ 0, 5 }, { 0, 6 });
- assert(text.compare(" ") == 0);
- text = GetText({ 0, 6 }, { 0, 7 });
- assert(text.compare("\t") == 0);
- text = GetText({ 0, 7 }, { 0, 8 });
- assert(text.compare("") == 0);
- text = GetText({ 0, 0 }, { 0, 8 });
- assert(text.compare(" \t \t") == 0);
- text = GetText({ 0, 0 }, { 0, 7 });
- assert(text.compare(" \t \t") == 0);
- text = GetText({ 0, 0 }, { 0, 6 });
- assert(text.compare(" \t ") == 0);
- text = GetText({ 0, 4 }, { 0, 12 });
- assert(text.compare(" \t \t") == 0);
- text = GetText({ 0, 4 }, { 0, 13 });
- assert(text.compare(" \t \t ") == 0);
- text = GetText({ 0, 4 }, { 0, 14 });
- assert(text.compare(" \t \t \t") == 0);
- text = GetText({ 0, 4 }, { 0, 15 });
- assert(text.compare(" \t \t \t") == 0);
- text = GetText({ 0, 4 }, { 0, 16 });
- assert(text.compare(" \t \t \t") == 0);
- text = GetText({ 0, 0 }, { 1, 0 });
- assert(text.compare(" \t \t \t \t\n") == 0);
- }
- // --- DeleteRange --- //
- {
- // Deletes from start to end coordinates, any overlapping tabs will be deleted, doesn't allow out of range lines
- DeleteRange({ 0, 0 }, { 0, 0 });
- assert(GetText() == " \t \t \t \t\n");
- DeleteRange({ 0, 0 }, { 0, 1 });
- assert(GetText() == "\t \t \t \t\n");
- DeleteRange({ 0, 0 }, { 0, 2 });
- assert(GetText() == " \t \t \t\n");
- DeleteRange({ 0, 12 }, { 0, 12 });
- assert(GetText() == " \t \t \t\n");
- DeleteRange({ 1, 0 }, { 1, 0 });
- assert(GetText() == " \t \t \t\n");
- DeleteRange({ 0, 11 }, { 0, 12 });
- assert(GetText() == " \t \t \n");
- DeleteRange({ 0, 2 }, { 0, 3 });
- assert(GetText() == " \t \n");
- DeleteRange({ 0, 6 }, { 0, 7 });
- assert(GetText() == " \n");
- SetText("a\nb\nc\nd\ne");
- DeleteRange({ 0, 0 }, { 2, 1 });
- assert(GetText() == "\nd\ne");
- DeleteRange({ 1, 1 }, { 2, 0 });
- assert(GetText() == "\nde");
- DeleteRange({ 1, 1 }, { 1, 15 }); // out of range column
- assert(GetText() == "\nd");
- SetText("asdf\nzxcv\nqwer\npo");
- DeleteRange({ 1, 2 }, { 1, 200 }); // out of range column
- assert(GetText() == "asdf\nzx\nqwer\npo");
- DeleteRange({ 0, 500 }, { 2, 500 }); // out of range column
- assert(GetText() == "asdf\npo");
- }
- // --- RemoveGlyphsFromLine --- //
- {
- //
- }
- SetText("asdf asdf\nasdf\nasdf\tasdf\n zxcv zxcv");
- // --- FindNextOccurrence --- //
- {
- Coordinates outStart, outEnd;
- assert(FindNextOccurrence("asdf", 4, { 0, 0 }, outStart, outEnd) && outStart == Coordinates(0, 0) && outEnd == Coordinates(0, 4));
- assert(FindNextOccurrence("asdf", 4, { 0, 1 }, outStart, outEnd) && outStart == Coordinates(0, 5) && outEnd == Coordinates(0, 9));
- assert(FindNextOccurrence("asdf", 4, { 0, 5 }, outStart, outEnd) && outStart == Coordinates(0, 5) && outEnd == Coordinates(0, 9));
- assert(FindNextOccurrence("asdf", 4, { 0, 6 }, outStart, outEnd) && outStart == Coordinates(1, 0) && outEnd == Coordinates(1, 4));
- assert(FindNextOccurrence("asdf", 4, { 3, 3 }, outStart, outEnd) && outStart == Coordinates(0, 0) && outEnd == Coordinates(0, 4)); // go to line 0 if reach end of file
- assert(FindNextOccurrence("zxcv", 4, { 3, 10 }, outStart, outEnd) && outStart == Coordinates(3, 1) && outEnd == Coordinates(3, 5)); // from behind in same line
- assert(!FindNextOccurrence("lalal", 4, { 3, 5 }, outStart, outEnd)); // not found
- }
- }
|