- Removed standalone test executables (`test_undo`, `test_buffer_save`, `test_buffer_open_nonexistent_save`, etc.). - Introduced `kte_tests` as a unified test runner. - Migrated existing tests to a new minimal, reusable framework in `tests/Test.h`. - Updated `CMakeLists.txt` to build a single `kte_tests` executable. - Simplified dependencies, reducing the need for ncurses/GUI in test builds.
80 lines
2.1 KiB
C++
80 lines
2.1 KiB
C++
#include "Test.h"
|
|
#include <fstream>
|
|
#include <cstdio>
|
|
#include <string>
|
|
#include "Buffer.h"
|
|
|
|
static std::string read_all(const std::string &path) {
|
|
std::ifstream in(path, std::ios::binary);
|
|
return std::string((std::istreambuf_iterator<char>(in)), std::istreambuf_iterator<char>());
|
|
}
|
|
|
|
TEST(Buffer_SaveAs_and_Save_new_file) {
|
|
const std::string path = "./.kte_ut_buffer_io_1.tmp";
|
|
std::remove(path.c_str());
|
|
|
|
Buffer b;
|
|
// insert two lines
|
|
b.insert_text(0, 0, std::string("Hello, world!\n"));
|
|
b.insert_text(1, 0, std::string("Second line\n"));
|
|
|
|
std::string err;
|
|
ASSERT_TRUE(b.SaveAs(path, err));
|
|
ASSERT_EQ(err.empty(), true);
|
|
|
|
// append another line then Save()
|
|
b.insert_text(2, 0, std::string("Third\n"));
|
|
b.SetDirty(true);
|
|
ASSERT_TRUE(b.Save(err));
|
|
ASSERT_EQ(err.empty(), true);
|
|
|
|
std::string got = read_all(path);
|
|
ASSERT_EQ(got, std::string("Hello, world!\nSecond line\nThird\n"));
|
|
|
|
std::remove(path.c_str());
|
|
}
|
|
|
|
TEST(Buffer_Save_after_Open_existing) {
|
|
const std::string path = "./.kte_ut_buffer_io_2.tmp";
|
|
std::remove(path.c_str());
|
|
{
|
|
std::ofstream out(path, std::ios::binary);
|
|
out << "abc\n123\n";
|
|
}
|
|
|
|
Buffer b;
|
|
std::string err;
|
|
ASSERT_TRUE(b.OpenFromFile(path, err));
|
|
ASSERT_EQ(err.empty(), true);
|
|
|
|
b.insert_text(2, 0, std::string("tail\n"));
|
|
b.SetDirty(true);
|
|
ASSERT_TRUE(b.Save(err));
|
|
ASSERT_EQ(err.empty(), true);
|
|
|
|
std::string got = read_all(path);
|
|
ASSERT_EQ(got, std::string("abc\n123\ntail\n"));
|
|
std::remove(path.c_str());
|
|
}
|
|
|
|
TEST(Buffer_Open_nonexistent_then_SaveAs) {
|
|
const std::string path = "./.kte_ut_buffer_io_3.tmp";
|
|
std::remove(path.c_str());
|
|
|
|
Buffer b;
|
|
std::string err;
|
|
ASSERT_TRUE(b.OpenFromFile(path, err));
|
|
ASSERT_EQ(err.empty(), true);
|
|
ASSERT_EQ(b.IsFileBacked(), false);
|
|
|
|
b.insert_text(0, 0, std::string("hello, world"));
|
|
b.insert_text(0, 12, std::string("\n"));
|
|
b.SetDirty(true);
|
|
ASSERT_TRUE(b.SaveAs(path, err));
|
|
ASSERT_EQ(err.empty(), true);
|
|
|
|
std::string got = read_all(path);
|
|
ASSERT_EQ(got, std::string("hello, world\n"));
|
|
std::remove(path.c_str());
|
|
}
|