@@ -391,49 +391,12 @@ TEST(BehaviorTreeReload, ReloadSameTree)
391391 }
392392}
393393
394- class DescriptiveAction : public SyncActionNode
394+ std::vector<std::pair<std::string, std::string>> makeTestMetadata ()
395395{
396- public:
397- DescriptiveAction (const std::string& name, const NodeConfig& config):
398- SyncActionNode (name, config) {}
399-
400- BT::NodeStatus tick () override {
401- return NodeStatus::SUCCESS;
402- }
403-
404- static PortsList providedPorts () {
405- return {};
406- }
407-
408- static std::string description () {
409- return " THE DESCRIPTION" ;
410- }
411- };
412-
413- TEST (BehaviorTreeFactory, DescriptionMethod)
414- {
415- BehaviorTreeFactory factory;
416- factory.registerNodeType <DescriptiveAction>(" DescriptiveAction" );
417- const auto & manifest = factory.manifests ().at (" DescriptiveAction" );
418- ASSERT_EQ (manifest.description , " THE DESCRIPTION" );
419-
420- auto xml = writeTreeNodesModelXML (factory, false );
421- std::cout << xml << std::endl;
422-
423- ASSERT_NE (xml.find ( " <description>THE DESCRIPTION</description>" ), std::string::npos);
424- }
425-
426- std::vector<ManifestMetadata> makeTestMetadata ()
427- {
428- ManifestMetadata text_metadata;
429- text_metadata.name = " text_metadata" ;
430- text_metadata.text_or_attribute = " text" ;
431-
432- ManifestMetadata attribute_metadata;
433- attribute_metadata.name = " attribute_metadata" ;
434- attribute_metadata.text_or_attribute = std::make_pair<std::string, std::string>(" attribute_name" , " attribute_value" );
435-
436- return {text_metadata, attribute_metadata};
396+ return {
397+ std::make_pair<std::string, std::string>(" foo" , " hello" ),
398+ std::make_pair<std::string, std::string>(" bar" , " 42" ),
399+ };
437400}
438401
439402class ActionWithMetadata : public SyncActionNode
@@ -450,28 +413,39 @@ class ActionWithMetadata : public SyncActionNode
450413 return {};
451414 }
452415
453- static std::vector<ManifestMetadata > metadata () {
416+ static std::vector<std::pair<std::string, std::string> > metadata () {
454417 return makeTestMetadata ();
455418 }
456419};
457420
458421TEST (BehaviorTreeFactory, ManifestMethod)
459422{
423+ const char * expectedXML = R"(
424+ <Action ID="ActionWithMetadata">
425+ <MetadataFields>
426+ <Metadata foo="hello"/>
427+ <Metadata bar="42"/>
428+ </MetadataFields>
429+ </Action>)" ;
430+
460431 BehaviorTreeFactory factory;
461432 factory.registerNodeType <ActionWithMetadata>(" ActionWithMetadata" );
462433 const auto & manifest = factory.manifests ().at (" ActionWithMetadata" );
463- ASSERT_EQ (manifest.metadata .size (), 2u );
464- auto expected_metadata = makeTestMetadata ();
465- EXPECT_EQ (manifest.metadata [0 ].name , expected_metadata[0 ].name );
466- EXPECT_EQ (manifest.metadata [0 ].text_or_attribute , expected_metadata[0 ].text_or_attribute );
467- EXPECT_TRUE (manifest.metadata [0 ].representsText ());
468- EXPECT_EQ (manifest.metadata [1 ].name , expected_metadata[1 ].name );
469- EXPECT_EQ (manifest.metadata [1 ].text_or_attribute , expected_metadata[1 ].text_or_attribute );
470- EXPECT_TRUE (manifest.metadata [1 ].representsAttribute ());
434+ EXPECT_EQ (manifest.metadata , makeTestMetadata ());
471435
472436 auto xml = writeTreeNodesModelXML (factory, false );
473437 std::cout << xml << std::endl;
474438
475- ASSERT_NE (xml.find (" <text_metadata>text</text_metadata>" ), std::string::npos);
476- ASSERT_NE (xml.find (" <attribute_metadata attribute_name=\" attribute_value\" />" ), std::string::npos);
439+ EXPECT_NE (xml.find (expectedXML), std::string::npos);
440+ }
441+
442+ TEST (BehaviorTreeFactory, addMetadataToManifest)
443+ {
444+ BehaviorTreeFactory factory;
445+ factory.registerNodeType <DummyNodes::SaySomething>(" SaySomething" );
446+ const auto & initial_manifest = factory.manifests ().at (" SaySomething" );
447+ EXPECT_TRUE (initial_manifest.metadata .empty ());
448+ factory.addMetadataToManifest (" SaySomething" , makeTestMetadata ());
449+ const auto & modified_manifest = factory.manifests ().at (" SaySomething" );
450+ EXPECT_EQ (modified_manifest.metadata , makeTestMetadata ());
477451}
0 commit comments