From a95f9a6cac4bfe0981613ffe3a51dff68d41135e Mon Sep 17 00:00:00 2001 From: Ichthyostega Date: Sun, 6 Dec 2015 04:21:35 +0100 Subject: [PATCH] draft how "log joining" shall work --- src/lib/test/event-log.hpp | 13 +++++ tests/library/test/test-event-log-test.cpp | 64 ++++++++++++++++++++++ 2 files changed, 77 insertions(+) diff --git a/src/lib/test/event-log.hpp b/src/lib/test/event-log.hpp index b73de2111..2a8440181 100644 --- a/src/lib/test/event-log.hpp +++ b/src/lib/test/event-log.hpp @@ -345,6 +345,19 @@ namespace test{ { UNIMPLEMENTED("start matching sequence"); } + + + /** equality comparison is based on the actual log contents */ + friend bool + operator== (EventLog const& l1, EventLog const& l2) + { + return l1.log_ == l2.log_; + } + friend bool + operator!= (EventLog const& l1, EventLog const& l2) + { + return not (l1 == l2); + } }; diff --git a/tests/library/test/test-event-log-test.cpp b/tests/library/test/test-event-log-test.cpp index e4dc239d2..196b1f9e8 100644 --- a/tests/library/test/test-event-log-test.cpp +++ b/tests/library/test/test-event-log-test.cpp @@ -68,6 +68,7 @@ namespace test{ { verify_simpleUsage(); verify_backwardMatch(); + verify_logJoining(); } @@ -107,6 +108,69 @@ namespace test{ } + void + verify_logJoining () + { + EventLog log1("spam"); + EventLog log2("ham"); + + log1.event("baked beans"); + log2.event("eggs"); + + log1.verify("spam").before("baked beans"); + log2.verify("ham").before("eggs"); + + log1.ensureNot("ham"); + log1.ensureNot("eggs"); + log2.ensureNot("spam"); + log2.ensureNot("baked beans"); + + EventLog copy(log2); + copy.event("bacon"); + copy.verify("ham").before("eggs").before("bacon"); + log2.verify("ham").before("eggs").before("bacon"); + log1.ensureNot("bacon"); + + CHECK(log1 != log2); + CHECK(copy == log2); + + log2.join(log1); + + CHECK(log1 == log2); + CHECK(copy != log2); + + log1.verify("logJoin|{ham}").after("baked beans"); + log1.verify("logJoin|{ham}").after("ham").before("eggs").before("logJoin"); + + log2.event("sausage"); + log1.verify("sausage").after("logJoin").after("spam"); + + copy.ensureNot("logJoin"); + copy.ensureNot("sausage"); + copy.verify("joined|{spam}").after("EventLogHeader"); + + copy.event("spam tomato"); + log1.ensureNot("spam tomato"); + log2.ensureNot("spam tomato"); + copy.verify("joined|{spam}").before("spam tomato"); + + + CHECK (join(log1) == string( + "Rec(EventLogHeader| ID = spam ), " + "Rec(event|{baked beans}), " + "Rec(EventLogHeader| ID = ham ), " + "Rec(event|{eggs}), " + "Rec(event|{bacon}), " + "Rec(logJoin|{ham}), " + "Rec(event|{sausage})")); + + CHECK (join(copy) == string( + "Rec(EventLogHeader| ID = ham ), " + "Rec(joined|{spam}), " + "Rec(event|{spam tomato})")); + } + + /** @test prints TODO */ void checkTODO ()