|
@@ -25,60 +25,26 @@
|
|
#include "core/util/journal/journaledSignal.h"
|
|
#include "core/util/journal/journaledSignal.h"
|
|
#include "core/util/safeDelete.h"
|
|
#include "core/util/safeDelete.h"
|
|
|
|
|
|
-TEST(Journal, BasicAPI)
|
|
|
|
|
|
+FIXTURE(Journal)
|
|
{
|
|
{
|
|
|
|
+public:
|
|
|
|
+ // Used for basic API test.
|
|
struct receiver
|
|
struct receiver
|
|
{
|
|
{
|
|
- U32 lastTriggerValue;
|
|
|
|
- void triggerReceiver(U16 msg)
|
|
|
|
|
|
+ U16 lastTriggerValue;
|
|
|
|
+ void trigger(U16 msg)
|
|
{
|
|
{
|
|
lastTriggerValue = msg;
|
|
lastTriggerValue = msg;
|
|
}
|
|
}
|
|
- } rec;
|
|
|
|
|
|
+ };
|
|
|
|
|
|
- rec.lastTriggerValue = 0;
|
|
|
|
-
|
|
|
|
- // Set up a journaled signal to test with.
|
|
|
|
- JournaledSignal<void(U16)> testEvent;
|
|
|
|
- testEvent.notify(&rec, &receiver::triggerReceiver);
|
|
|
|
-
|
|
|
|
- // Initialize journal recording and fire off some events...
|
|
|
|
- Journal::Record("test.jrn");
|
|
|
|
- ASSERT_TRUE(Journal::IsRecording());
|
|
|
|
-
|
|
|
|
- testEvent.trigger(16);
|
|
|
|
- testEvent.trigger(17);
|
|
|
|
- testEvent.trigger(18);
|
|
|
|
-
|
|
|
|
- EXPECT_EQ(rec.lastTriggerValue, 18)
|
|
|
|
- << "Should encounter last triggered value (18).";
|
|
|
|
-
|
|
|
|
- Journal::Stop();
|
|
|
|
- ASSERT_FALSE(Journal::IsRecording());
|
|
|
|
-
|
|
|
|
- // Clear it...
|
|
|
|
- rec.lastTriggerValue = 0;
|
|
|
|
-
|
|
|
|
- // and play back - should get same thing.
|
|
|
|
- Journal::Play("test.jrn");
|
|
|
|
-
|
|
|
|
- // Since we fired 3 events, it should take three loops.
|
|
|
|
- EXPECT_TRUE(Journal::PlayNext()) << "Should be two more events.";
|
|
|
|
- EXPECT_TRUE(Journal::PlayNext()) << "Should be one more event.";
|
|
|
|
- EXPECT_FALSE(Journal::PlayNext()) << "Should be no more events.";
|
|
|
|
-
|
|
|
|
- EXPECT_EQ(rec.lastTriggerValue, 18)
|
|
|
|
- << "Should encounter last journaled value (18).";
|
|
|
|
-}
|
|
|
|
-
|
|
|
|
-TEST(Journal, DynamicSignals)
|
|
|
|
-{
|
|
|
|
|
|
+ // Used for non-basic test.
|
|
typedef JournaledSignal<void(U32, U16)> EventA;
|
|
typedef JournaledSignal<void(U32, U16)> EventA;
|
|
typedef JournaledSignal<void(U8, S8)> EventB;
|
|
typedef JournaledSignal<void(U8, S8)> EventB;
|
|
typedef JournaledSignal<void(U32, S32)> EventC;
|
|
typedef JournaledSignal<void(U32, S32)> EventC;
|
|
|
|
|
|
// Root, non-dynamic signal receiver.
|
|
// Root, non-dynamic signal receiver.
|
|
- struct receiver {
|
|
|
|
|
|
+ struct multiReceiver {
|
|
U32 recvA, recvB, recvC;
|
|
U32 recvA, recvB, recvC;
|
|
|
|
|
|
EventA *dynamicA;
|
|
EventA *dynamicA;
|
|
@@ -90,19 +56,19 @@ TEST(Journal, DynamicSignals)
|
|
if(msg==1)
|
|
if(msg==1)
|
|
{
|
|
{
|
|
dynamicA = new EventA();
|
|
dynamicA = new EventA();
|
|
- dynamicA->notify(this, &receiver::receiverA);
|
|
|
|
|
|
+ dynamicA->notify(this, &multiReceiver::receiverA);
|
|
}
|
|
}
|
|
|
|
|
|
if(msg==2)
|
|
if(msg==2)
|
|
{
|
|
{
|
|
dynamicB = new EventB();
|
|
dynamicB = new EventB();
|
|
- dynamicB->notify(this, &receiver::receiverB);
|
|
|
|
|
|
+ dynamicB->notify(this, &multiReceiver::receiverB);
|
|
}
|
|
}
|
|
|
|
|
|
if(msg==3)
|
|
if(msg==3)
|
|
{
|
|
{
|
|
dynamicC = new EventC();
|
|
dynamicC = new EventC();
|
|
- dynamicC->notify(this, &receiver::receiverC);
|
|
|
|
|
|
+ dynamicC->notify(this, &multiReceiver::receiverC);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -120,14 +86,57 @@ TEST(Journal, DynamicSignals)
|
|
{
|
|
{
|
|
recvC += d;
|
|
recvC += d;
|
|
}
|
|
}
|
|
- } rec;
|
|
|
|
|
|
+ };
|
|
|
|
+};
|
|
|
|
+
|
|
|
|
+TEST_FIX(Journal, BasicAPI)
|
|
|
|
+{
|
|
|
|
+ receiver rec;
|
|
|
|
+ rec.lastTriggerValue = 0;
|
|
|
|
+
|
|
|
|
+ // Set up a journaled signal to test with.
|
|
|
|
+ JournaledSignal<void(U16)> testEvent;
|
|
|
|
+ testEvent.notify(&rec, &receiver::trigger);
|
|
|
|
+
|
|
|
|
+ // Initialize journal recording and fire off some events...
|
|
|
|
+ Journal::Record("test.jrn");
|
|
|
|
+ ASSERT_TRUE(Journal::IsRecording());
|
|
|
|
+
|
|
|
|
+ testEvent.trigger(16);
|
|
|
|
+ testEvent.trigger(17);
|
|
|
|
+ testEvent.trigger(18);
|
|
|
|
+
|
|
|
|
+ EXPECT_EQ(rec.lastTriggerValue, 18)
|
|
|
|
+ << "Should encounter last triggered value (18).";
|
|
|
|
+
|
|
|
|
+ Journal::Stop();
|
|
|
|
+ ASSERT_FALSE(Journal::IsRecording());
|
|
|
|
+
|
|
|
|
+ // Clear it...
|
|
|
|
+ rec.lastTriggerValue = 0;
|
|
|
|
+
|
|
|
|
+ // and play back - should get same thing.
|
|
|
|
+ Journal::Play("test.jrn");
|
|
|
|
+
|
|
|
|
+ // Since we fired 3 events, it should take three loops.
|
|
|
|
+ EXPECT_TRUE(Journal::PlayNext()) << "Should be two more events.";
|
|
|
|
+ EXPECT_TRUE(Journal::PlayNext()) << "Should be one more event.";
|
|
|
|
+ EXPECT_FALSE(Journal::PlayNext()) << "Should be no more events.";
|
|
|
|
+
|
|
|
|
+ EXPECT_EQ(rec.lastTriggerValue, 18)
|
|
|
|
+ << "Should encounter last journaled value (18).";
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+TEST_FIX(Journal, DynamicSignals)
|
|
|
|
+{
|
|
|
|
+ multiReceiver rec;
|
|
|
|
|
|
// Reset our state values.
|
|
// Reset our state values.
|
|
rec.recvA = rec.recvB = rec.recvC = 0;
|
|
rec.recvA = rec.recvB = rec.recvC = 0;
|
|
|
|
|
|
// Set up a signal to start with.
|
|
// Set up a signal to start with.
|
|
JournaledSignal<void(U8)> testEvent;
|
|
JournaledSignal<void(U8)> testEvent;
|
|
- testEvent.notify(&rec, &receiver::receiverRoot);
|
|
|
|
|
|
+ testEvent.notify(&rec, &multiReceiver::receiverRoot);
|
|
|
|
|
|
// Initialize journal recording and fire off some events...
|
|
// Initialize journal recording and fire off some events...
|
|
Journal::Record("test.jrn");
|
|
Journal::Record("test.jrn");
|
|
@@ -177,4 +186,4 @@ TEST(Journal, DynamicSignals)
|
|
EXPECT_EQ(rec.recvC, 2) << "recvC wasn't 2 - something broken in journal?";
|
|
EXPECT_EQ(rec.recvC, 2) << "recvC wasn't 2 - something broken in journal?";
|
|
}
|
|
}
|
|
|
|
|
|
-#endif
|
|
|
|
|
|
+#endif
|