@@ -11,20 +11,6 @@ using namespace NE;
11
11
namespace ListValueNodeTest
12
12
{
13
13
14
- class MultiInputSlot : public InputSlot
15
- {
16
- public:
17
- MultiInputSlot (const SlotId& id, const ValuePtr& defaultValue) :
18
- InputSlot (id, defaultValue, OutputSlotConnectionMode::Multiple)
19
- {
20
- }
21
-
22
- ~MultiInputSlot ()
23
- {
24
-
25
- }
26
- };
27
-
28
14
class IntegerInputNode : public SerializableTestNode
29
15
{
30
16
public:
@@ -59,7 +45,7 @@ class ListMakerNode : public SerializableTestNode
59
45
60
46
virtual void Initialize () override
61
47
{
62
- RegisterInputSlot (InputSlotPtr (new MultiInputSlot (SlotId (" in" ), ValuePtr ( new IntValue ( 0 )) )));
48
+ RegisterInputSlot (InputSlotPtr (new InputSlot (SlotId (" in" ), nullptr , OutputSlotConnectionMode::Multiple )));
63
49
RegisterOutputSlot (OutputSlotPtr (new OutputSlot (SlotId (" out" ))));
64
50
}
65
51
@@ -87,16 +73,38 @@ class ListSummer : public SerializableTestNode
87
73
virtual ValueConstPtr Calculate (NE::EvaluationEnv& env) const override
88
74
{
89
75
NE::ValueConstPtr val = EvaluateSingleInputSlot (SlotId (" in" ), env);
90
- const ListValue* input = Value::Cast<ListValue> (val.get ());
91
76
int result = 0 ;
92
- input->Enumerate ([&] (const ValueConstPtr& value) {
93
- result += IntValue::Get (value);
94
- });
77
+ if (IsComplexType<NumberValue> (val)) {
78
+ NE::FlatEnumerate (val, [&] (const NE::ValueConstPtr& value) {
79
+ result += IntValue::Get (value);
80
+ });
81
+ }
95
82
return ValueConstPtr (new IntValue (result));
96
83
}
97
84
};
98
85
99
- TEST (ListValueNodeTest)
86
+ TEST (ListValueNodeTest_Node)
87
+ {
88
+ NodeManager manager;
89
+
90
+ NodePtr listMakerNode = manager.AddNode (NodePtr (new ListMakerNode ()));
91
+ NodePtr listSummerNode = manager.AddNode (NodePtr (new ListSummer ()));
92
+
93
+ ASSERT (manager.ConnectOutputSlotToInputSlot (listMakerNode->GetOutputSlot (SlotId (" out" )), listSummerNode->GetInputSlot (SlotId (" in" ))));
94
+
95
+ {
96
+ ValueConstPtr result = listMakerNode->Evaluate (NE::EmptyEvaluationEnv);
97
+ ASSERT (Value::IsType<ListValue> (result));
98
+ }
99
+
100
+ {
101
+ ValueConstPtr result = listSummerNode->Evaluate (NE::EmptyEvaluationEnv);
102
+ ASSERT (Value::IsType<IntValue> (result));
103
+ ASSERT (IntValue::Get (result) == 0 );
104
+ }
105
+ }
106
+
107
+ TEST (ListValueNodeTest_WithConnections)
100
108
{
101
109
NodeManager manager;
102
110
0 commit comments