18
18
19
19
#include " metkit/mars/TypeDate.h"
20
20
#include " metkit/mars/MarsExpandContext.h"
21
+ #include " metkit/mars/MarsLanguage.h"
21
22
22
23
using namespace eckit ;
23
24
using namespace eckit ::testing;
@@ -26,24 +27,34 @@ namespace metkit::mars::test {
26
27
27
28
// -----------------------------------------------------------------------------
28
29
30
+ void assertTypeExpansion (const std::string& name, std::vector<std::string> values,
31
+ const std::vector<std::string>& expected) {
32
+ std::cout << " comparing " << values << " with " << expected;
33
+ static MarsLanguage language (" retrieve" );
34
+ language.type (name)->expand (DummyContext (), values);
35
+ std::cout << " ==> got " << values << std::endl;
36
+ ASSERT (values == expected);
37
+ }
38
+
29
39
CASE (" Test TypeDate expansions" ) {
30
40
31
41
TypeDate tdate (" date" , Value ());
32
42
Type& td (tdate);
33
43
DummyContext ctx;
34
44
35
- // 1 and 2-digit times
45
+ assertTypeExpansion (" date" , {" 20140506" }, {" 20140506" });
46
+ assertTypeExpansion (" date" , {" 2014-05-06" }, {" 20140506" });
47
+ assertTypeExpansion (" date" , {" 20140506" , " 20140507" }, {" 20140506" , " 20140507" });
48
+ assertTypeExpansion (" date" , {" 20140506" , " to" , " 20140506" }, {" 20140506" });
49
+ assertTypeExpansion (" date" , {" 20140506" , " to" , " 20140507" }, {" 20140506" , " 20140507" });
50
+ assertTypeExpansion (" date" , {" 20140506" , " to" , " 20140508" }, {" 20140506" , " 20140507" , " 20140508" });
51
+ assertTypeExpansion (" date" , {" 20140504" , " 20140506" , " to" , " 20140508" }, {" 20140504" , " 20140506" , " 20140507" , " 20140508" });
52
+ assertTypeExpansion (" date" , {" 2" }, {" 2" });
53
+ assertTypeExpansion (" date" , {" jan" }, {" 1" });
54
+ assertTypeExpansion (" date" , {" 1-01" }, {" 101" });
55
+ assertTypeExpansion (" date" , {" jan-01" }, {" 101" });
56
+ assertTypeExpansion (" date" , {" feb-23" }, {" 223" });
36
57
37
- {
38
- std::string value = " 20140506" ;
39
- td.expand (ctx, value);
40
- EXPECT (value == " 20140506" );
41
- }
42
- {
43
- std::string value = " 2014-05-06" ;
44
- td.expand (ctx, value);
45
- EXPECT (value == " 20140506" );
46
- }
47
58
{
48
59
std::string value = " 20141506" ;
49
60
EXPECT_THROWS (td.expand (ctx, value)); // throws BadDate that is not exported
@@ -53,43 +64,6 @@ CASE("Test TypeDate expansions") {
53
64
td.expand (ctx, value);
54
65
// EXPECT(value == "0600");
55
66
}
56
- {
57
- std::vector<std::string> values{" 20140506" , " 20140507" };
58
- td.expand (ctx, values);
59
- EXPECT (values.size () == 2 );
60
- EXPECT (values[0 ] == " 20140506" );
61
- EXPECT (values[1 ] == " 20140507" );
62
- }
63
- {
64
- std::vector<std::string> values{" 20140506" , " to" , " 20140506" };
65
- td.expand (ctx, values);
66
- EXPECT (values.size () == 1 );
67
- EXPECT (values[0 ] == " 20140506" );
68
- }
69
- {
70
- std::vector<std::string> values{" 20140506" , " to" , " 20140507" };
71
- td.expand (ctx, values);
72
- EXPECT (values.size () == 2 );
73
- EXPECT (values[0 ] == " 20140506" );
74
- EXPECT (values[1 ] == " 20140507" );
75
- }
76
- {
77
- std::vector<std::string> values{" 20140506" , " to" , " 20140508" };
78
- td.expand (ctx, values);
79
- EXPECT (values.size () == 3 );
80
- EXPECT (values[0 ] == " 20140506" );
81
- EXPECT (values[1 ] == " 20140507" );
82
- EXPECT (values[2 ] == " 20140508" );
83
- }
84
- {
85
- std::vector<std::string> values{" 20140504" , " 20140506" , " to" , " 20140508" };
86
- td.expand (ctx, values);
87
- EXPECT (values.size () == 4 );
88
- EXPECT (values[0 ] == " 20140504" );
89
- EXPECT (values[1 ] == " 20140506" );
90
- EXPECT (values[2 ] == " 20140507" );
91
- EXPECT (values[3 ] == " 20140508" );
92
- }
93
67
}
94
68
95
69
0 commit comments