# # # add_file "tests/tst_BasicIOParser.h" # content [6deac00af28677350a41dc22807e33b860220bd8] # # patch "tests/test.cpp" # from [a274e6d097a56ac9f7b689b8ad12b6602c258a88] # to [69e367f3fc7ff3803b329e7a95a513730e1163c6] # # patch "tests/test.pro" # from [d2a23cf863f23fa30afccae92bb0b29d7d965e05] # to [ed75b3e89c5e8773ab4fc4eebb0120fcf1d034de] # # patch "tests/tst_StdioParser.h" # from [c4a8c0679b3b3c3df85aa41596233d9f6a973af5] # to [1454741800aaa30e6e7502e03c613af262c65b3e] # ============================================================ --- tests/tst_BasicIOParser.h 6deac00af28677350a41dc22807e33b860220bd8 +++ tests/tst_BasicIOParser.h 6deac00af28677350a41dc22807e33b860220bd8 @@ -0,0 +1,66 @@ + +#include +#include +#include "BasicIOParser.h" + +class tst_BasicIOParser: public QObject +{ + Q_OBJECT + +private slots: + void emptyTest() + { + QString in; + BasicIOParser parser(in); + parser.parse(); + StanzaList list = parser.getStanzas(); + QVERIFY(list.size() == 0); + } + + void stanzaEntriesTest() + { + QString in(" first [0123456789012345678901234567890123456789]\n" + "second \"one\" \"two\""); + BasicIOParser parser(in); + parser.parse(); + StanzaList list = parser.getStanzas(); + QVERIFY(list.size() == 1); + Stanza st = list.at(0); + QVERIFY(st.size() == 2); + StanzaEntry en = st.at(0); + QVERIFY(en.sym == "first"); + QVERIFY(en.hash == "0123456789012345678901234567890123456789"); + QVERIFY(en.vals.size() == 0); + en = st.at(1); + QVERIFY(en.sym == "second"); + QVERIFY(en.hash.isNull()); + QVERIFY(en.vals.at(0) == "one" && en.vals.at(1) == "two"); + } + + void multipleStanzasAndSpacingTest() + { + QString in(" first [0123456789012345678901234567890123456789] \n\n" + " second \"one\" \"two\" \n"); + BasicIOParser parser(in); + parser.parse(); + StanzaList list = parser.getStanzas(); + QVERIFY(list.size() == 2); + + // first stanza + Stanza st = list.at(0); + QVERIFY(st.size() == 1); + StanzaEntry en = st.at(0); + QVERIFY(en.sym == "first"); + QVERIFY(en.hash == "0123456789012345678901234567890123456789"); + QVERIFY(en.vals.size() == 0); + + // second stanza + st = list.at(1); + QVERIFY(st.size() == 1); + en = st.at(0); + QVERIFY(en.sym == "second"); + QVERIFY(en.hash.isNull()); + QVERIFY(en.vals.at(0) == "one" && en.vals.at(1) == "two"); + } +}; + ============================================================ --- tests/test.cpp a274e6d097a56ac9f7b689b8ad12b6602c258a88 +++ tests/test.cpp 69e367f3fc7ff3803b329e7a95a513730e1163c6 @@ -1,6 +1,7 @@ #include #include "tst_StdioParser.h" +#include "tst_BasicIOParser.h" #include "tst_MonotoneTask.h" #define TEST(name, argc, argv) QTest::qExec(new name(), argc, argv); @@ -10,6 +11,7 @@ int main(int argc, char** argv) QCoreApplication app(argc, argv); TEST(tst_StdioParser, argc, argv); + TEST(tst_BasicIOParser, argc, argv); TEST(tst_MonotoneTask, argc, argv); } ============================================================ --- tests/test.pro d2a23cf863f23fa30afccae92bb0b29d7d965e05 +++ tests/test.pro ed75b3e89c5e8773ab4fc4eebb0120fcf1d034de @@ -1,10 +1,10 @@ tst_INCLUDE_DIRS = $$system(find ../src TEMPLATE = app TARGET = test CONFIG += qtestlib macx:CONFIG -= app_bundle tst_INCLUDE_DIRS = $$system(find ../src -type d) -INCLUDEPATH = . $$tst_INCLUDE_DIRS +INCLUDEPATH = . $$tst_INCLUDE_DIRS tst_FILES = $$system(ls tst*.h) HEADERS += $$tst_FILES @@ -13,10 +13,11 @@ SOURCES += test.cpp \ HEADERS += ../src/monotone/MonotoneThread.h SOURCES += test.cpp \ + ../src/util/AbstractParser.cpp \ ../src/util/StdioParser.cpp \ - ../src/util/AbstractParser.cpp \ + ../src/util/BasicIOParser.cpp \ ../src/util/DebugLog.cpp \ - ../src/util/Settings.cpp \ + ../src/util/Settings.cpp \ ../src/monotone/MonotoneThread.cpp OBJECTS_DIR = tmp ============================================================ --- tests/tst_StdioParser.h c4a8c0679b3b3c3df85aa41596233d9f6a973af5 +++ tests/tst_StdioParser.h 1454741800aaa30e6e7502e03c613af262c65b3e @@ -1,20 +1,8 @@ #include #include #include "StdioParser.h" -/* - StdioParser(const QByteArray &); - - bool parse(); - inline int getCommandNumber() const { return commandNumber; } - inline int getErrorCode() const { return errorCode; } - inline char getChunkType() const { return chunkType; } - inline int getChunkSize() const { return chunkSize; } - inline QByteArray getPayload() const { return payload; } - -*/ - class tst_StdioParser: public QObject { Q_OBJECT @@ -30,9 +18,9 @@ private slots: QVERIFY(parser.getChunkType() == 'l'); QVERIFY(parser.getChunkSize() == 0); QByteArray out = parser.getPayload(); - QVERIFY(out.isNull()); + QVERIFY(out.isEmpty()); } - + void missingPayloadTest() { QByteArray in("0:0:m:20:ten bytes!"); @@ -42,7 +30,7 @@ private slots: void morePayloadTest() { - QByteArray in("0:0:m:10:ten bytes!BUT HERE IS MORE"); + QByteArray in("0:0:m:10:ten bytes!BUT HERE ARE 20 MORE"); StdioParser parser(in); QVERIFY(parser.parse()); QVERIFY(parser.getCommandNumber() == 0); @@ -51,8 +39,10 @@ private slots: QVERIFY(parser.getChunkSize() == 10); QByteArray out = parser.getPayload(); QVERIFY(out == "ten bytes!"); + int count = parser.getLeftBytesCount(); + QVERIFY(count == 20); QByteArray left = parser.getLeftBytes(); - QVERIFY(left == "BUT HERE IS MORE"); + QVERIFY(left == "BUT HERE ARE 20 MORE"); } };