From c9fa963e71258c5adfb71cf1996cd1bcb33df0bb Mon Sep 17 00:00:00 2001 From: Roland Reichwein Date: Sun, 26 Feb 2023 08:54:17 +0100 Subject: Start with copy of whiteboard --- tests/test-diff.cpp | 199 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 199 insertions(+) create mode 100644 tests/test-diff.cpp (limited to 'tests/test-diff.cpp') diff --git a/tests/test-diff.cpp b/tests/test-diff.cpp new file mode 100644 index 0000000..d09c58e --- /dev/null +++ b/tests/test-diff.cpp @@ -0,0 +1,199 @@ +#include + +#include +#include +#include + +#include + +#include + +#include "libreichwein/file.h" + +#include "diff.h" + +namespace fs = std::filesystem; +namespace pt = boost::property_tree; +using namespace Reichwein; + +class DiffTest: public ::testing::Test +{ +protected: + DiffTest(){ + } + + ~DiffTest(){ + } +}; + +TEST_F(DiffTest, constructor) +{ + // empty constructor + { + Diff d{}; + EXPECT_EQ(d.get_xml(), "00"); + } + + // constructor via xml diff + { + EXPECT_THROW(Diff d{""}, std::exception); + } + { + EXPECT_THROW(Diff d{""}, std::exception); + EXPECT_THROW(Diff d{"0abc"}, std::exception); + EXPECT_THROW(Diff d{"0abc"}, std::exception); + EXPECT_THROW(Diff d{"00"}, std::exception); + EXPECT_THROW(Diff d{"50abc"}, std::exception); + EXPECT_THROW(Diff d{"0abc"}, std::exception); + } + + { + Diff d{"00abc"}; + EXPECT_EQ(d.get_xml(), "00abc"); + } + + { + Diff d{"55abc"}; + EXPECT_EQ(d.get_xml(), "55abc"); + } + + { + Diff d{"550abc"}; + EXPECT_EQ(d.get_xml(), "550abc"); + } + + // constructor via ptree + { + pt::ptree ptree; + EXPECT_THROW(Diff d{ptree}, std::exception); + + ptree.put("diff.start", 0); + ptree.put("diff.end", 0); + ptree.put("diff.data", "abc"); + Diff d{ptree}; + EXPECT_EQ(d.get_xml(), "00abc"); + } + + // constructor via versions + { + Diff d{"", ""}; + EXPECT_EQ(d.get_xml(), "00"); + } + { + Diff d{"a", "a"}; + EXPECT_EQ(d.get_xml(), "00"); + } + { + Diff d{"a", "b"}; + EXPECT_EQ(d.get_xml(), "01b"); + } + { + Diff d{"0a1", "0b1"}; + EXPECT_EQ(d.get_xml(), "12b"); + } + { + Diff d{"0abc1", "00b01"}; + EXPECT_EQ(d.get_xml(), "140b0"); + } + { + Diff d{"0ab1", "00b01"}; + EXPECT_EQ(d.get_xml(), "130b0"); + } + { + Diff d{"0abc1", "00b1"}; + EXPECT_EQ(d.get_xml(), "140b"); + } + { + Diff d{"0abc1", ""}; + EXPECT_EQ(d.get_xml(), "05"); + } + { + Diff d{"bc1", "0abc1"}; + EXPECT_EQ(d.get_xml(), "000a"); + } + { + Diff d{"0abc1", "0ab"}; + EXPECT_EQ(d.get_xml(), "35"); + } + { + Diff d{"0abc1", "0abc123"}; + EXPECT_EQ(d.get_xml(), "5523"); + } + { + Diff d{"0abc1", "010abc1"}; + EXPECT_EQ(d.get_xml(), "0001"); + } + { + Diff d{"0abc1", "0ac1"}; + EXPECT_EQ(d.get_xml(), "23"); + } + { + Diff d{"0abc1", "0abxc1"}; + EXPECT_EQ(d.get_xml(), "33x"); + } + { + Diff d{"abc", "c"}; + EXPECT_EQ(d.get_xml(), "02"); + } + { + Diff d{"aaaa", "aa"}; + EXPECT_EQ(d.get_xml(), "24"); + } + { + Diff d{"baaaa", "baa"}; + EXPECT_EQ(d.get_xml(), "35"); + } + { + Diff d{"baaaab", "baab"}; + EXPECT_EQ(d.get_xml(), "13"); + } + { + Diff d{"baaaab", "baaaaaaab"}; + EXPECT_EQ(d.get_xml(), "11aaa"); + } +} + +TEST_F(DiffTest, empty) +{ + { + Diff d; + EXPECT_TRUE(d.empty()); + } + + { + Diff d{"13"}; + EXPECT_FALSE(d.empty()); + } + + { + Diff d{"11"}; + EXPECT_TRUE(d.empty()); + } + + { + Diff d{"11abc"}; + EXPECT_FALSE(d.empty()); + } + + { + Diff d{"00"}; + EXPECT_TRUE(d.empty()); + } +} + +TEST_F(DiffTest, diff_create) +{ + const char* result {diff_create("0abc1", "0ab")}; + + EXPECT_EQ(std::string(result), "35"); + free((void*)result); // this will be done by javascript side in real scenario +} + +TEST_F(DiffTest, diff_apply) +{ + const char* result {diff_apply("0abc1", "35")}; + + EXPECT_EQ(std::string(result), "0ab"); + free((void*)result); // this will be done by javascript side in real scenario +} + -- cgit v1.2.3