File tree Expand file tree Collapse file tree 3 files changed +33
-0
lines changed
Expand file tree Collapse file tree 3 files changed +33
-0
lines changed Original file line number Diff line number Diff line change @@ -180,6 +180,9 @@ struct DataSpecUtils {
180180 // / Get the subspec, if available
181181 static std::optional<header::DataHeader::SubSpecificationType> getOptionalSubSpec (InputSpec const & spec);
182182
183+ // / Build a DataDescriptMatcher which does not care about the subSpec.
184+ static data_matcher::DataDescriptorMatcher dataDescriptorMatcherFrom (ConcreteDataMatcher const & concrete);
185+
183186 // / Build a DataDescriptMatcher which does not care about the subSpec.
184187 static data_matcher::DataDescriptorMatcher dataDescriptorMatcherFrom (ConcreteDataTypeMatcher const & dataType);
185188
Original file line number Diff line number Diff line change @@ -470,6 +470,22 @@ OutputSpec DataSpecUtils::asOutputSpec(InputSpec const& spec)
470470 spec.matcher );
471471}
472472
473+ DataDescriptorMatcher DataSpecUtils::dataDescriptorMatcherFrom (ConcreteDataMatcher const & concrete)
474+ {
475+ DataDescriptorMatcher matchEverything{
476+ DataDescriptorMatcher::Op::And,
477+ OriginValueMatcher{concrete.origin .as <std::string>()},
478+ std::make_unique<DataDescriptorMatcher>(
479+ DataDescriptorMatcher::Op::And,
480+ DescriptionValueMatcher{concrete.description .as <std::string>()},
481+ std::make_unique<DataDescriptorMatcher>(
482+ DataDescriptorMatcher::Op::And,
483+ SubSpecificationTypeValueMatcher{concrete.subSpec },
484+ std::make_unique<DataDescriptorMatcher>(DataDescriptorMatcher::Op::Just,
485+ StartTimeValueMatcher{ContextRef{0 }})))};
486+ return std::move (matchEverything);
487+ }
488+
473489DataDescriptorMatcher DataSpecUtils::dataDescriptorMatcherFrom (ConcreteDataTypeMatcher const & dataType)
474490{
475491 auto timeDescriptionMatcher = std::make_unique<DataDescriptorMatcher>(
Original file line number Diff line number Diff line change @@ -256,6 +256,20 @@ BOOST_AUTO_TEST_CASE(TestMatcherFromDescription)
256256 BOOST_CHECK_EQUAL (DataSpecUtils::asConcreteDataDescription (ddSpec).as <std::string>(), " TSET" );
257257}
258258
259+ BOOST_AUTO_TEST_CASE (TestMatcherFromConcrete)
260+ {
261+ auto fromQueryInputSpec = DataSpecUtils::dataDescriptorMatcherFrom (ConcreteDataMatcher{" TSET" , " FOO" , 1 });
262+ InputSpec ddSpec{
263+ " binding" ,
264+ std::move (fromQueryInputSpec)};
265+
266+ auto concrete = DataSpecUtils::asConcreteDataMatcher (ddSpec);
267+
268+ BOOST_CHECK_EQUAL (concrete.origin .as <std::string>(), " TSET" );
269+ BOOST_CHECK_EQUAL (concrete.description .as <std::string>(), " FOO" );
270+ BOOST_CHECK_EQUAL (concrete.subSpec , 1 );
271+ }
272+
259273BOOST_AUTO_TEST_CASE (FindOutputSpec)
260274{
261275 std::vector<OutputSpec> specs = {
You can’t perform that action at this time.
0 commit comments