@@ -11,20 +11,6 @@ using namespace NE;
1111namespace ListValueNodeTest
1212{
1313
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-
2814class IntegerInputNode : public SerializableTestNode
2915{
3016public:
@@ -59,7 +45,7 @@ class ListMakerNode : public SerializableTestNode
5945
6046 virtual void Initialize () override
6147 {
62- RegisterInputSlot (InputSlotPtr (new MultiInputSlot (SlotId (" in" ), ValuePtr ( new IntValue ( 0 )) )));
48+ RegisterInputSlot (InputSlotPtr (new InputSlot (SlotId (" in" ), nullptr , OutputSlotConnectionMode::Multiple )));
6349 RegisterOutputSlot (OutputSlotPtr (new OutputSlot (SlotId (" out" ))));
6450 }
6551
@@ -87,16 +73,38 @@ class ListSummer : public SerializableTestNode
8773 virtual ValueConstPtr Calculate (NE::EvaluationEnv& env) const override
8874 {
8975 NE::ValueConstPtr val = EvaluateSingleInputSlot (SlotId (" in" ), env);
90- const ListValue* input = Value::Cast<ListValue> (val.get ());
9176 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+ }
9582 return ValueConstPtr (new IntValue (result));
9683 }
9784};
9885
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)
100108{
101109 NodeManager manager;
102110
0 commit comments