Files
text_editor/src/test/tests.cpp
2025-11-27 22:45:10 +01:00

119 lines
3.1 KiB
C++

String TestDir;
void AddCtrlPress(SDL_Keycode key) {
Event event = {};
event.key = key;
event.ctrl = 1;
event.xwindow = 1280;
event.ywindow = 720;
Add(&EventPlayback, event);
}
void AddText(String string) {
Event event = {};
event.kind = EVENT_TEXT_INPUT;
event.xwindow = 1280;
event.ywindow = 720;
event.text = Copy(SysAllocator, string).data;
Add(&EventPlayback, event);
}
void Wait(mco_coro *co) {
Add(&EventPlayback, {111});
for (Event *event = CoYield(co); event->kind != 111; event = CoYield(co)) {
}
}
void PlayTestOpen(mco_coro *co) {
// Open file, move a little, then open again and verify the caret didn't move
String basic_env_cpp = Format(SysAllocator, "%.*s/basic_env/basic_env.cpp", FmtString(TestDir));
AddCtrlPress(SDLK_P);
Add(&EventPlayback, {EVENT_KEY_PRESS, SDLK_UP, 1280, 720});
AddCtrlPress(SDLK_Q);
Wait(co);
{
BSet main = GetActiveMainSet();
Assert(main.buffer->name == basic_env_cpp);
Assert(main.view->carets[0].range.min == 0);
Assert(main.view->carets[0].range.max == 0);
Int line = PosToLine(main.buffer, main.view->carets[0].range.min);
Assert(line == 0);
}
AddCtrlPress(SDLK_DOWN);
AddCtrlPress(SDLK_DOWN);
AddCtrlPress(SDLK_DOWN);
Wait(co);
Range range = {};
{
BSet main = GetActiveMainSet();
Assert(main.view->carets[0].range.min > 0);
Assert(main.view->carets[0].range.max > 0);
range = main.view->carets[0].range;
}
AddCtrlPress(SDLK_P);
Add(&EventPlayback, {EVENT_KEY_PRESS, SDLK_UP, 1280, 720});
AddCtrlPress(SDLK_Q);
Wait(co);
Int buffer_len = 0;
{
BSet main = GetActiveMainSet();
Assert(main.buffer->name == basic_env_cpp);
Assert(main.view->carets[0].range.min == range.min);
Assert(main.view->carets[0].range.max == range.max);
buffer_len = main.buffer->len;
}
AddText(Format(SysAllocator, "%.*s:20", FmtString(basic_env_cpp)));
AddCtrlPress(SDLK_Q);
Wait(co);
{
BSet main = GetActiveMainSet();
Int pos = main.view->carets[0].range.min;
Int line = PosToLine(main.buffer, pos);
Assert(line == 19);
Assert(main.buffer->name == basic_env_cpp);
Assert(main.buffer->len != buffer_len);
Assert(main.buffer->dirty);
}
AddCtrlPress(SDLK_Z);
AddCtrlPress(SDLK_PAGEUP);
Wait(co);
{
BSet main = GetActiveMainSet();
Assert(main.buffer->len == buffer_len);
Assert(main.view->carets[0].range.min == 0);
Assert(main.view->carets[0].range.max == 0);
}
ReportConsolef("%s DONE", __FUNCTION__);
}
void Test(mco_coro *co) {
WorkDir = Format(SysAllocator, "%.*s/basic_env", FmtString(TestDir));
PlayTestOpen(co);
// Add(&EventPlayback, {EVENT_QUIT});
}
void InitTests() {
StyleWaitForEvents = false;
{
String file = __FILE__;
file = NormalizePath(SysAllocator, file);
file = ChopLastSlash(file);
TestDir = file;
}
AddCo(Test);
}