@@ -11,20 +11,27 @@ using namespace BI;
1111namespace BinaryOperationNodesTest
1212{
1313
14- TEST (TestAdditionNode )
14+ static double GetBinaryOperationResult ( double a, double b, const std::function<UINodePtr ()>& nodeCreator )
1515{
1616 TestUIEnvironment env;
1717 NodeUIManager uiManager (env);
1818
19- UINodePtr val1 = uiManager.AddNode (UINodePtr (new DoubleUpDownNode (LocString (L" Value1" ), Point (0 , 0 ), 1.0 , 1.0 )), EmptyEvaluationEnv);
20- UINodePtr val2 = uiManager.AddNode (UINodePtr (new DoubleUpDownNode (LocString (L" Value1" ), Point (0 , 0 ), 2.0 , 1.0 )), EmptyEvaluationEnv);
21- UINodePtr op = uiManager.AddNode (UINodePtr ( new AdditionNode ( LocString ( L" Addition " ), Point ( 0 , 0 )) ), EmptyEvaluationEnv);
19+ UINodePtr val1 = uiManager.AddNode (UINodePtr (new DoubleUpDownNode (LocString (L" Value1" ), Point (0 , 0 ), a , 1.0 )), EmptyEvaluationEnv);
20+ UINodePtr val2 = uiManager.AddNode (UINodePtr (new DoubleUpDownNode (LocString (L" Value1" ), Point (0 , 0 ), b , 1.0 )), EmptyEvaluationEnv);
21+ UINodePtr op = uiManager.AddNode (nodeCreator ( ), EmptyEvaluationEnv);
2222 uiManager.ConnectOutputSlotToInputSlot (val1->GetUIOutputSlot (SlotId (" out" )), op->GetUIInputSlot (SlotId (" a" )));
2323 uiManager.ConnectOutputSlotToInputSlot (val2->GetUIOutputSlot (SlotId (" out" )), op->GetUIInputSlot (SlotId (" b" )));
2424
25- ValueConstPtr val = op->Evaluate (EmptyEvaluationEnv);
26- ASSERT (IsSingleType<DoubleValue> (val));
27- ASSERT (IsEqual (DoubleValue::Get (CreateSingleValue (val)), 3.0 ));
25+ ValueConstPtr result = op->Evaluate (EmptyEvaluationEnv);
26+ return DoubleValue::Get (result);
27+ }
28+
29+ TEST (TestAdditionNode)
30+ {
31+ double result = GetBinaryOperationResult (2.0 , 3.0 , [&] () {
32+ return UINodePtr (new AdditionNode (LocString (L" Addition" ), Point (0 , 0 )));
33+ });
34+ ASSERT (IsEqual (result, 5.0 ));
2835}
2936
3037TEST (TestAdditionNodeWithList)
@@ -51,50 +58,26 @@ TEST (TestAdditionNodeWithList)
5158
5259TEST (TestSubtractionNode)
5360{
54- TestUIEnvironment env;
55- NodeUIManager uiManager (env);
56-
57- UINodePtr val1 = uiManager.AddNode (UINodePtr (new DoubleUpDownNode (LocString (L" Value1" ), Point (0 , 0 ), 1.0 , 1.0 )), EmptyEvaluationEnv);
58- UINodePtr val2 = uiManager.AddNode (UINodePtr (new DoubleUpDownNode (LocString (L" Value1" ), Point (0 , 0 ), 2.0 , 1.0 )), EmptyEvaluationEnv);
59- UINodePtr op = uiManager.AddNode (UINodePtr (new SubtractionNode (LocString (L" Subtraction" ), Point (0 , 0 ))), EmptyEvaluationEnv);
60- uiManager.ConnectOutputSlotToInputSlot (val1->GetUIOutputSlot (SlotId (" out" )), op->GetUIInputSlot (SlotId (" a" )));
61- uiManager.ConnectOutputSlotToInputSlot (val2->GetUIOutputSlot (SlotId (" out" )), op->GetUIInputSlot (SlotId (" b" )));
62-
63- ValueConstPtr val = op->Evaluate (EmptyEvaluationEnv);
64- ASSERT (IsSingleType<DoubleValue> (val));
65- ASSERT (IsEqual (DoubleValue::Get (CreateSingleValue (val)), -1.0 ));
61+ double result = GetBinaryOperationResult (2.0 , 3.0 , [&] () {
62+ return UINodePtr (new SubtractionNode (LocString (L" Subtraction" ), Point (0 , 0 )));
63+ });
64+ ASSERT (IsEqual (result, -1.0 ));
6665}
6766
6867TEST (TestMultiplicationNode)
6968{
70- TestUIEnvironment env;
71- NodeUIManager uiManager (env);
72-
73- UINodePtr val1 = uiManager.AddNode (UINodePtr (new DoubleUpDownNode (LocString (L" Value1" ), Point (0 , 0 ), 1.0 , 1.0 )), EmptyEvaluationEnv);
74- UINodePtr val2 = uiManager.AddNode (UINodePtr (new DoubleUpDownNode (LocString (L" Value1" ), Point (0 , 0 ), 2.0 , 1.0 )), EmptyEvaluationEnv);
75- UINodePtr op = uiManager.AddNode (UINodePtr (new MultiplicationNode (LocString (L" Multiplication" ), Point (0 , 0 ))), EmptyEvaluationEnv);
76- uiManager.ConnectOutputSlotToInputSlot (val1->GetUIOutputSlot (SlotId (" out" )), op->GetUIInputSlot (SlotId (" a" )));
77- uiManager.ConnectOutputSlotToInputSlot (val2->GetUIOutputSlot (SlotId (" out" )), op->GetUIInputSlot (SlotId (" b" )));
78-
79- ValueConstPtr val = op->Evaluate (EmptyEvaluationEnv);
80- ASSERT (IsSingleType<DoubleValue> (val));
81- ASSERT (IsEqual (DoubleValue::Get (CreateSingleValue (val)), 2.0 ));
69+ double result = GetBinaryOperationResult (2.0 , 3.0 , [&] () {
70+ return UINodePtr (new MultiplicationNode (LocString (L" Multiplication" ), Point (0 , 0 )));
71+ });
72+ ASSERT (IsEqual (result, 6.0 ));
8273}
8374
8475TEST (TestDivisionNode)
8576{
86- TestUIEnvironment env;
87- NodeUIManager uiManager (env);
88-
89- UINodePtr val1 = uiManager.AddNode (UINodePtr (new DoubleUpDownNode (LocString (L" Value1" ), Point (0 , 0 ), 1.0 , 1.0 )), EmptyEvaluationEnv);
90- UINodePtr val2 = uiManager.AddNode (UINodePtr (new DoubleUpDownNode (LocString (L" Value1" ), Point (0 , 0 ), 2.0 , 1.0 )), EmptyEvaluationEnv);
91- UINodePtr op = uiManager.AddNode (UINodePtr (new DivisionNode (LocString (L" Division" ), Point (0 , 0 ))), EmptyEvaluationEnv);
92- uiManager.ConnectOutputSlotToInputSlot (val1->GetUIOutputSlot (SlotId (" out" )), op->GetUIInputSlot (SlotId (" a" )));
93- uiManager.ConnectOutputSlotToInputSlot (val2->GetUIOutputSlot (SlotId (" out" )), op->GetUIInputSlot (SlotId (" b" )));
94-
95- ValueConstPtr val = op->Evaluate (EmptyEvaluationEnv);
96- ASSERT (IsSingleType<DoubleValue> (val));
97- ASSERT (IsEqual (DoubleValue::Get (CreateSingleValue (val)), 0.5 ));
77+ double result = GetBinaryOperationResult (2.0 , 3.0 , [&] () {
78+ return UINodePtr (new DivisionNode (LocString (L" Division" ), Point (0 , 0 )));
79+ });
80+ ASSERT (IsEqual (result, 2.0 / 3.0 ));
9881}
9982
10083}
0 commit comments