Skip to content

Commit d38e94e

Browse files
committed
Added tests for synced filter and synced transform.
1 parent c84ca32 commit d38e94e

1 file changed

Lines changed: 89 additions & 1 deletion

File tree

tests/src/OperationsTest.h

Lines changed: 89 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -583,6 +583,92 @@ TYPED_TEST_P(OperationsTest, SyncedIterate2)
583583
}
584584
}
585585

586+
///////////////////////////////////////////////////////////////////////////////////////////////////
587+
/// EventFilter1
588+
///////////////////////////////////////////////////////////////////////////////////////////////////
589+
TYPED_TEST_P(OperationsTest, SyncedEventFilter1)
590+
{
591+
using D = typename SyncedEventFilter1::MyDomain;
592+
593+
using std::string;
594+
595+
std::queue<string> results;
596+
597+
auto in = MakeEventSource<D,string>();
598+
599+
auto sig1 = MakeVar<D>(1338);
600+
auto sig2 = MakeVar<D>(1336);
601+
602+
auto filtered = Filter(
603+
in,
604+
With(sig1, sig2),
605+
[] (const string& s, int sig1, int sig2) {
606+
return s == "Hello World" && sig1 > sig2;
607+
});
608+
609+
610+
Observe(filtered, [&] (const string& s)
611+
{
612+
results.push(s);
613+
});
614+
615+
in << string("Hello Worlt") << string("Hello World") << string("Hello Vorld");
616+
sig1 <<= 1335;
617+
in << string("Hello Vorld");
618+
619+
ASSERT_FALSE(results.empty());
620+
ASSERT_EQ(results.front(), "Hello World");
621+
results.pop();
622+
623+
ASSERT_TRUE(results.empty());
624+
}
625+
626+
///////////////////////////////////////////////////////////////////////////////////////////////////
627+
/// EventTransform1
628+
///////////////////////////////////////////////////////////////////////////////////////////////////
629+
TYPED_TEST_P(OperationsTest, SyncedEventTransform1)
630+
{
631+
using D = typename SyncedEventTransform1::MyDomain;
632+
633+
using std::string;
634+
635+
std::vector<string> results;
636+
637+
auto in1 = MakeEventSource<D,string>();
638+
auto in2 = MakeEventSource<D,string>();
639+
640+
auto merged = Merge(in1, in2);
641+
642+
auto first = MakeVar<D>(string("Ace"));
643+
auto last = MakeVar<D>(string("McSteele"));
644+
645+
auto transformed = Transform(
646+
merged,
647+
With(first, last),
648+
[] (string s, const string& first, const string& last) -> string {
649+
std::transform(s.begin(), s.end(), s.begin(), ::toupper);
650+
s += string(", ") + first + string(" ") + last;
651+
return s;
652+
});
653+
654+
Observe(transformed, [&] (const string& s) {
655+
results.push_back(s);
656+
});
657+
658+
in1 << string("Hello Worlt") << string("Hello World");
659+
660+
D::DoTransaction([&] {
661+
in2 << string("Hello Vorld");
662+
first.Set(string("Alice"));
663+
last.Set(string("Anderson"));
664+
});
665+
666+
ASSERT_EQ(results.size(), 3);
667+
ASSERT_TRUE(std::find(results.begin(), results.end(), "HELLO WORLT, Ace McSteele") != results.end());
668+
ASSERT_TRUE(std::find(results.begin(), results.end(), "HELLO WORLD, Ace McSteele") != results.end());
669+
ASSERT_TRUE(std::find(results.begin(), results.end(), "HELLO VORLD, Alice Anderson") != results.end());
670+
}
671+
586672
///////////////////////////////////////////////////////////////////////////////////////////////////
587673
REGISTER_TYPED_TEST_CASE_P
588674
(
@@ -598,7 +684,9 @@ REGISTER_TYPED_TEST_CASE_P
598684
IterateByRef2,
599685
SyncedTransform1,
600686
SyncedIterate1,
601-
SyncedIterate2
687+
SyncedIterate2,
688+
SyncedEventFilter1,
689+
SyncedEventTransform1
602690
);
603691

604692
} // ~namespace

0 commit comments

Comments
 (0)