| | |
| |
|
| | #include <gtest/gtest.h> |
| |
|
| | #include "Base/Exception.h" |
| | #include "Base/Writer.h" |
| |
|
| | |
| | |
| |
|
| | class WriterTest: public ::testing::Test |
| | { |
| | protected: |
| | |
| |
|
| | |
| | protected: |
| | Base::StringWriter _writer; |
| | }; |
| |
|
| | TEST_F(WriterTest, insertTextSimple) |
| | { |
| | |
| | std::string testTextData {"Simple ASCII data"}; |
| | std::string expectedResult {"<![CDATA[" + testTextData + "]]>"}; |
| |
|
| | |
| | _writer.insertText(testTextData); |
| |
|
| | |
| | EXPECT_EQ(expectedResult, _writer.getString()); |
| | } |
| |
|
| | |
| | |
| | TEST_F(WriterTest, insertTextNeedsEscape) |
| | { |
| | |
| | std::string testDataA {"ASCII data with a close marker in it, like so: ]]"}; |
| | std::string testDataB {"> "}; |
| | std::string expectedResult {"<![CDATA[" + testDataA + "]]><![CDATA[" + testDataB + "]]>"}; |
| |
|
| | |
| | _writer.insertText(testDataA + testDataB); |
| |
|
| | |
| | EXPECT_EQ(expectedResult, _writer.getString()); |
| | } |
| |
|
| | TEST_F(WriterTest, insertNonAsciiData) |
| | { |
| | |
| | std::string testData {"\x01\x02\x03\x04\u0001F450😀"}; |
| | std::string expectedResult {"<![CDATA[" + testData + "]]>"}; |
| |
|
| | |
| | _writer.insertText(testData); |
| |
|
| | |
| | EXPECT_EQ(expectedResult, _writer.getString()); |
| | } |
| |
|
| | TEST_F(WriterTest, beginCharStream) |
| | { |
| | |
| | auto& checkStream {_writer.beginCharStream()}; |
| |
|
| | |
| | EXPECT_TRUE(checkStream.good()); |
| | } |
| |
|
| | TEST_F(WriterTest, beginCharStreamTwice) |
| | { |
| | |
| | _writer.beginCharStream(); |
| |
|
| | |
| | EXPECT_THROW(_writer.beginCharStream(), Base::RuntimeError); |
| | } |
| |
|
| | TEST_F(WriterTest, endCharStream) |
| | { |
| | |
| | _writer.beginCharStream(); |
| |
|
| | |
| | _writer.endCharStream(); |
| |
|
| | |
| | EXPECT_EQ("<![CDATA[]]>", _writer.getString()); |
| | } |
| |
|
| | TEST_F(WriterTest, endCharStreamTwice) |
| | { |
| | |
| | _writer.beginCharStream(); |
| | _writer.endCharStream(); |
| |
|
| | |
| | _writer.endCharStream(); |
| |
|
| | |
| | EXPECT_EQ("<![CDATA[]]>", _writer.getString()); |
| | } |
| |
|
| | TEST_F(WriterTest, charStream) |
| | { |
| | |
| | auto& streamA {_writer.beginCharStream()}; |
| |
|
| | |
| | auto& streamB {_writer.charStream()}; |
| |
|
| | |
| | EXPECT_EQ(&streamA, &streamB); |
| | } |
| |
|
| | TEST_F(WriterTest, charStreamBase64Encoded) |
| | { |
| | |
| | _writer.beginCharStream(Base::CharStreamFormat::Base64Encoded); |
| | std::string data {"FreeCAD rocks! 🪨🪨🪨"}; |
| |
|
| | |
| | _writer.charStream() << data; |
| | _writer.endCharStream(); |
| |
|
| | |
| | |
| | EXPECT_EQ(std::string("RnJlZUNBRCByb2NrcyEg8J+qqPCfqqjwn6qo\n"), _writer.getString()); |
| | } |
| |
|