Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/windirstat/simpleini.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'tests/ts-bugfix.cpp')
-rw-r--r--tests/ts-bugfix.cpp111
1 files changed, 111 insertions, 0 deletions
diff --git a/tests/ts-bugfix.cpp b/tests/ts-bugfix.cpp
index e449092..1234b8f 100644
--- a/tests/ts-bugfix.cpp
+++ b/tests/ts-bugfix.cpp
@@ -24,3 +24,114 @@ TEST(TestBugFix, TestEmptySection) {
output.erase(std::remove(output.begin(), output.end(), '\r'), output.end());
ASSERT_STREQ(expected.c_str(), output.c_str());
}
+
+TEST(TestBugFix, TestMultiLineIgnoreTrailSpace0) {
+ std::string input =
+ "; multiline values\n"
+ "key = <<<EOS\n"
+ "This is a\n"
+ "multiline value\n"
+ "and it ends.\n"
+ "EOS\n"
+ "\n"
+ "[section]\n";
+
+ bool multiline = true;
+ CSimpleIniA ini(true, false, multiline);
+
+ SI_Error rc = ini.LoadData(input);
+ ASSERT_EQ(rc, SI_OK);
+
+ std::string output;
+ ini.Save(output);
+
+ std::string expected =
+ "; multiline values\n"
+ "\n"
+ "\n"
+ "key = <<<END_OF_TEXT\n"
+ "This is a\n"
+ "multiline value\n"
+ "and it ends.\n"
+ "END_OF_TEXT\n"
+ "\n"
+ "\n"
+ "[section]\n";
+
+ output.erase(std::remove(output.begin(), output.end(), '\r'), output.end());
+ ASSERT_STREQ(expected.c_str(), output.c_str());
+}
+
+TEST(TestBugFix, TestMultiLineIgnoreTrailSpace1) {
+ std::string input =
+ "; multiline values\n"
+ "key = <<<EOS\n"
+ "This is a\n"
+ "multiline value\n"
+ "and it ends.\n"
+ "EOS \n"
+ "\n"
+ "[section]\n";
+
+ bool multiline = true;
+ CSimpleIniA ini(true, false, multiline);
+
+ SI_Error rc = ini.LoadData(input);
+ ASSERT_EQ(rc, SI_OK);
+
+ std::string output;
+ ini.Save(output);
+
+ std::string expected =
+ "; multiline values\n"
+ "\n"
+ "\n"
+ "key = <<<END_OF_TEXT\n"
+ "This is a\n"
+ "multiline value\n"
+ "and it ends.\n"
+ "END_OF_TEXT\n"
+ "\n"
+ "\n"
+ "[section]\n";
+
+ output.erase(std::remove(output.begin(), output.end(), '\r'), output.end());
+ ASSERT_STREQ(expected.c_str(), output.c_str());
+}
+
+TEST(TestBugFix, TestMultiLineIgnoreTrailSpace2) {
+ std::string input =
+ "; multiline values\n"
+ "key = <<<EOS\n"
+ "This is a\n"
+ "multiline value\n"
+ "and it ends.\n"
+ "EOS \n"
+ "\n"
+ "[section]\n";
+
+ bool multiline = true;
+ CSimpleIniA ini(true, false, multiline);
+
+ SI_Error rc = ini.LoadData(input);
+ ASSERT_EQ(rc, SI_OK);
+
+ std::string output;
+ ini.Save(output);
+
+ std::string expected =
+ "; multiline values\n"
+ "\n"
+ "\n"
+ "key = <<<END_OF_TEXT\n"
+ "This is a\n"
+ "multiline value\n"
+ "and it ends.\n"
+ "END_OF_TEXT\n"
+ "\n"
+ "\n"
+ "[section]\n";
+
+ output.erase(std::remove(output.begin(), output.end(), '\r'), output.end());
+ ASSERT_STREQ(expected.c_str(), output.c_str());
+}