@@ -705,3 +705,79 @@ TEST(PortTest, DefaultWronglyOverriden)
705
705
// This is correct
706
706
ASSERT_NO_THROW (auto tree = factory.createTreeFromText (xml_txt_correct));
707
707
}
708
+
709
+ class OutputVectorNode : public SyncActionNode
710
+ {
711
+ public:
712
+ OutputVectorNode (const std::string& name, const NodeConfig& config)
713
+ : SyncActionNode(name, config)
714
+ {}
715
+ static PortsList providedPorts ()
716
+ {
717
+ return { InputPort<std::string>(" string1" , " val1" , " First string" ),
718
+ InputPort<std::string>(" string2" , " val2" , " Second string" ),
719
+ OutputPort<std::vector<std::string>>(" string_vector" , " {string_vector}" ,
720
+ " Vector of strings." ) };
721
+ }
722
+
723
+ NodeStatus tick () override
724
+ {
725
+ auto string1 = getInput<std::string>(" string1" );
726
+ auto string2 = getInput<std::string>(" string2" );
727
+
728
+ std::vector<std::string> out = { string1.value (), string2.value () };
729
+ setOutput (" string_vector" , out);
730
+ return NodeStatus::SUCCESS;
731
+ }
732
+ };
733
+
734
+ class InputVectorNode : public SyncActionNode
735
+ {
736
+ public:
737
+ InputVectorNode (const std::string& name, const NodeConfig& config)
738
+ : SyncActionNode(name, config)
739
+ {}
740
+ static PortsList providedPorts ()
741
+ {
742
+ return { InputPort<std::vector<std::string>>(" string_vector" , " {string_vector}" ,
743
+ " Vector of strings." ) };
744
+ }
745
+
746
+ NodeStatus tick () override
747
+ {
748
+ std::vector<std::string> expected_vec = { " val1" , " val2" };
749
+ auto actual_vec = getInput<std::vector<std::string>>(" string_vector" );
750
+ if (expected_vec == actual_vec.value ())
751
+ {
752
+ return NodeStatus::SUCCESS;
753
+ }
754
+ else
755
+ {
756
+ return NodeStatus::FAILURE;
757
+ }
758
+ }
759
+ };
760
+
761
+ TEST (PortTest, VectorAny)
762
+ {
763
+ BT::BehaviorTreeFactory factory;
764
+ factory.registerNodeType <OutputVectorNode>(" OutputVectorNode" );
765
+ factory.registerNodeType <InputVectorNode>(" InputVectorNode" );
766
+
767
+ std::string xml_txt = R"(
768
+ <root BTCPP_format="4" >
769
+ <BehaviorTree>
770
+ <Sequence name="root_sequence">
771
+ <OutputVectorNode/>
772
+ <InputVectorNode/>
773
+ </Sequence>
774
+ </BehaviorTree>
775
+ </root>)" ;
776
+
777
+ BT::Tree tree;
778
+ ASSERT_NO_THROW (tree = factory.createTreeFromText (xml_txt));
779
+
780
+ BT::NodeStatus status;
781
+ ASSERT_NO_THROW (status = tree.tickOnce ());
782
+ ASSERT_EQ (status, NodeStatus::SUCCESS);
783
+ }
0 commit comments