Skip to content

Commit 2a40dbb

Browse files
committed
Added more test cases + refactoring.
1 parent 3ddf7fb commit 2a40dbb

11 files changed

Lines changed: 177 additions & 50 deletions

File tree

include/react/EventStream.h

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66

77
#include "ReactiveBase.h"
88
#include "ReactiveDomain.h"
9+
#include "Observer.h"
910
#include "react/graph/EventStreamNodes.h"
1011

1112
////////////////////////////////////////////////////////////////////////////////////////
@@ -19,7 +20,6 @@ enum class EventToken
1920
token
2021
};
2122

22-
2323
////////////////////////////////////////////////////////////////////////////////////////
2424
/// REvents
2525
////////////////////////////////////////////////////////////////////////////////////////
@@ -43,6 +43,24 @@ class REvents : public Reactive<EventStreamNode<D,E>>
4343
Reactive(ptr)
4444
{
4545
}
46+
47+
template <typename F>
48+
REvents Filter(const F& f)
49+
{
50+
return react::Filter(*this, f);
51+
}
52+
53+
template <typename F>
54+
REvents Transform(const F& f)
55+
{
56+
return react::Transform(*this, f);
57+
}
58+
59+
template <typename F>
60+
RObserver<D> Observe(const F& f)
61+
{
62+
return react::Observe(*this, f);
63+
}
4664
};
4765

4866
////////////////////////////////////////////////////////////////////////////////////////
@@ -108,12 +126,6 @@ class REventSource : public REvents<D,E>
108126
Emit(EventToken::token);
109127
}
110128

111-
REventSource& operator<<(const E& e)
112-
{
113-
Emit(e);
114-
return *this;
115-
}
116-
117129
const REventSource& operator<<(const E& e) const
118130
{
119131
Emit(e);

include/react/Signal.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,12 @@ class RSignal : public Reactive<SignalNode<D,S>>
6868
{
6969
return Value();
7070
}
71+
72+
template <typename F>
73+
RObserver<D> Observe(const F& f)
74+
{
75+
return react::Observe(*this, f);
76+
}
7177
};
7278

7379
////////////////////////////////////////////////////////////////////////////////////////

project/msvc/CppReact.vcxproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@
8484
<ClInclude Include="..\..\include\react\common\TopoQueue.h" />
8585
<ClInclude Include="..\..\include\react\common\Types.h" />
8686
<ClInclude Include="..\..\include\react\common\Util.h" />
87-
<ClInclude Include="..\..\include\react\Conversion.h" />
87+
<ClInclude Include="..\..\include\react\Operations.h" />
8888
<ClInclude Include="..\..\include\react\EventStream.h" />
8989
<ClInclude Include="..\..\include\react\graph\ConversionNodes.h" />
9090
<ClInclude Include="..\..\include\react\graph\EventStreamNodes.h" />

project/msvc/CppReact.vcxproj.filters

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,9 +108,6 @@
108108
<ClInclude Include="..\..\include\react\logging\Logging.h">
109109
<Filter>Header Files\logging</Filter>
110110
</ClInclude>
111-
<ClInclude Include="..\..\include\react\Conversion.h">
112-
<Filter>Header Files</Filter>
113-
</ClInclude>
114111
<ClInclude Include="..\..\include\react\EventStream.h">
115112
<Filter>Header Files</Filter>
116113
</ClInclude>
@@ -129,6 +126,9 @@
129126
<ClInclude Include="..\..\include\react\ReactiveDomain.h">
130127
<Filter>Header Files</Filter>
131128
</ClInclude>
129+
<ClInclude Include="..\..\include\react\Operations.h">
130+
<Filter>Header Files</Filter>
131+
</ClInclude>
132132
</ItemGroup>
133133
<ItemGroup>
134134
<ClCompile Include="..\..\src\react\common\Util.cpp">

project/msvc/CppReactTest.vcxproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,14 +83,14 @@
8383
</Link>
8484
</ItemDefinitionGroup>
8585
<ItemGroup>
86-
<ClInclude Include="..\..\src\test\ConversionTest.h" />
86+
<ClInclude Include="..\..\src\test\OperationsTest.h" />
8787
<ClInclude Include="..\..\src\test\EventStreamTest.h" />
8888
<ClInclude Include="..\..\src\test\ObserverTest.h" />
8989
<ClInclude Include="..\..\src\test\SignalTest.h" />
9090
<ClInclude Include="..\..\src\test\TransactionTest.h" />
9191
</ItemGroup>
9292
<ItemGroup>
93-
<ClCompile Include="..\..\src\test\ConversionTest.cpp" />
93+
<ClCompile Include="..\..\src\test\OperationsTest.cpp" />
9494
<ClCompile Include="..\..\src\test\EventStreamTest.cpp" />
9595
<ClCompile Include="..\..\src\test\ObserverTest.cpp" />
9696
<ClCompile Include="..\..\src\test\SignalTest.cpp" />

project/msvc/CppReactTest.vcxproj.filters

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
<ClInclude Include="..\..\src\test\TransactionTest.h">
2828
<Filter>Header Files</Filter>
2929
</ClInclude>
30-
<ClInclude Include="..\..\src\test\ConversionTest.h">
30+
<ClInclude Include="..\..\src\test\OperationsTest.h">
3131
<Filter>Header Files</Filter>
3232
</ClInclude>
3333
</ItemGroup>
@@ -44,7 +44,7 @@
4444
<ClCompile Include="..\..\src\test\TransactionTest.cpp">
4545
<Filter>Source Files</Filter>
4646
</ClCompile>
47-
<ClCompile Include="..\..\src\test\ConversionTest.cpp">
47+
<ClCompile Include="..\..\src\test\OperationsTest.cpp">
4848
<Filter>Source Files</Filter>
4949
</ClCompile>
5050
</ItemGroup>

src/benchmark/Main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
#include "BenchmarkLifeSim.h"
99

1010
#include "react/Signal.h"
11-
#include "react/Conversion.h"
11+
#include "react/Operations.h"
1212
#include "react/common/Util.h"
1313
#include "react/logging/EventLog.h"
1414

src/sandbox/Main.cpp

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
#include "react/Signal.h"
44
#include "react/EventStream.h"
5+
#include "react/Operations.h"
56
#include "react/ReactiveObject.h"
67

78
#include "react/propagation/SourceSetEngine.h"
@@ -132,13 +133,39 @@ void ObjectExample1()
132133
cout << endl;
133134
}
134135

136+
void FoldExample1()
137+
{
138+
cout << "Fold Example 1" << endl;
139+
140+
auto src = D::MakeEventSource<int>();
141+
auto fold1 = Fold(0, src, [] (int v, int d) {
142+
return v + d;
143+
});
144+
145+
for (auto i=1; i<=100; i++)
146+
src << i;
147+
148+
cout << fold1() << endl;
149+
150+
auto charSrc = D::MakeEventSource<char>();
151+
auto strFold = Fold(std::string(""), charSrc, [] (std::string s, char c) {
152+
return s + c;
153+
});
154+
155+
charSrc << 'T' << 'e' << 's' << 't';
156+
157+
cout << "Str: " << strFold().c_str() << endl;
158+
}
159+
135160
int main()
136161
{
137-
SignalExample1();
138-
SignalExample2();
139-
EventExample1();
162+
//SignalExample1();
163+
//SignalExample2();
164+
//EventExample1();
165+
166+
//ObjectExample1();
140167

141-
ObjectExample1();
168+
FoldExample1();
142169

143170
return 0;
144171
}
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#include "ConversionTest.h"
1+
#include "OperationsTest.h"
22

33
#include "react/propagation/FloodingEngine.h"
44
#include "react/propagation/PulseCountEngine.h"
@@ -13,12 +13,12 @@ namespace {
1313

1414
using namespace react;
1515

16-
INSTANTIATE_TYPED_TEST_CASE_P(Flooding, ConversionTest, FloodingEngine);
17-
INSTANTIATE_TYPED_TEST_CASE_P(TopoSort, ConversionTest, TopoSortEngine);
18-
INSTANTIATE_TYPED_TEST_CASE_P(PulseCount, ConversionTest, PulseCountEngine);
19-
INSTANTIATE_TYPED_TEST_CASE_P(SourceSet, ConversionTest, SourceSetEngine);
20-
INSTANTIATE_TYPED_TEST_CASE_P(TopoSortST, ConversionTest, TopoSortSTEngine);
21-
INSTANTIATE_TYPED_TEST_CASE_P(PulseCountO1, ConversionTest, PulseCountO1Engine);
22-
INSTANTIATE_TYPED_TEST_CASE_P(ELM, ConversionTest, ELMEngine);
16+
INSTANTIATE_TYPED_TEST_CASE_P(Flooding, OperationsTest, FloodingEngine);
17+
INSTANTIATE_TYPED_TEST_CASE_P(TopoSort, OperationsTest, TopoSortEngine);
18+
INSTANTIATE_TYPED_TEST_CASE_P(PulseCount, OperationsTest, PulseCountEngine);
19+
INSTANTIATE_TYPED_TEST_CASE_P(SourceSet, OperationsTest, SourceSetEngine);
20+
INSTANTIATE_TYPED_TEST_CASE_P(TopoSortST, OperationsTest, TopoSortSTEngine);
21+
INSTANTIATE_TYPED_TEST_CASE_P(PulseCountO1, OperationsTest, PulseCountO1Engine);
22+
INSTANTIATE_TYPED_TEST_CASE_P(ELM, OperationsTest, ELMEngine);
2323

2424
} // ~namespace

0 commit comments

Comments
 (0)