@@ -7,44 +7,70 @@ TEST_CASE( "bind", "[ProgramOptions]" ) {
7
7
parser.silent ();
8
8
9
9
std::string a;
10
- std::int32_t b{};
11
- std::int64_t c{};
12
- std::uint32_t d{};
13
- std::uint64_t e{};
14
- // float f{};
15
- // double g{};
16
- std::vector< std::int32_t > h;
17
- std::deque< std::string > i;
18
-
19
10
auto && a_opt = parser[ " a" ].bind ( a );
20
- auto && b_opt = parser[ " b" ].bind ( b );
21
- auto && c_opt = parser[ " c" ].bind ( c );
22
- auto && d_opt = parser[ " d" ].bind ( d );
23
- auto && e_opt = parser[ " e" ].bind ( e );
24
- // auto&& f_opt = parser[ "f" ].bind( f );
25
- // auto&& g_opt = parser[ "g" ].bind( g );
26
- auto && h_opt = parser[ " h" ].bind ( h );
27
- auto && i_opt = parser[ " i" ].bind ( i );
28
-
29
11
REQUIRE ( a_opt.is_single () );
30
12
REQUIRE ( a_opt.get_type () == po::string );
13
+
14
+ std::int32_t b{};
15
+ auto && b_opt = parser[ " b" ].bind ( b );
31
16
REQUIRE ( b_opt.is_single () );
32
17
REQUIRE ( b_opt.get_type () == po::i32 );
18
+
19
+ std::int64_t c{};
20
+ auto && c_opt = parser[ " c" ].bind ( c );
33
21
REQUIRE ( c_opt.is_single () );
34
22
REQUIRE ( c_opt.get_type () == po::i64 );
23
+
24
+ std::uint32_t d{};
25
+ auto && d_opt = parser[ " d" ].bind ( d );
35
26
REQUIRE ( d_opt.is_single () );
36
27
REQUIRE ( d_opt.get_type () == po::u32 );
28
+
29
+ std::uint64_t e{};
30
+ auto && e_opt = parser[ " e" ].bind ( e );
37
31
REQUIRE ( e_opt.is_single () );
38
32
REQUIRE ( e_opt.get_type () == po::u64 );
33
+
34
+ // float f{};
35
+ // auto&& f_opt = parser[ "f" ].bind( f );
39
36
// REQUIRE( f_opt.is_single() );
40
37
// REQUIRE( f_opt.get_type() == po::f32 );
38
+
39
+ // double g{};
40
+ // auto&& g_opt = parser[ "g" ].bind( g );
41
41
// REQUIRE( g_opt.is_single() );
42
42
// REQUIRE( g_opt.get_type() == po::f64 );
43
+
44
+ std::vector< std::int32_t > h;
45
+ auto && h_opt = parser[ " h" ].bind ( h );
43
46
REQUIRE ( h_opt.is_multi () );
44
47
REQUIRE ( h_opt.get_type () == po::i32 );
48
+
49
+ std::deque< std::string > i;
50
+ auto && i_opt = parser[ " i" ].bind ( i );
45
51
REQUIRE ( i_opt.is_multi () );
46
52
REQUIRE ( i_opt.get_type () == po::string );
47
53
54
+ std::list< std::int32_t > j;
55
+ auto && j_opt = parser[ " j" ].bind ( j );
56
+ REQUIRE ( j_opt.is_multi () );
57
+ REQUIRE ( j_opt.get_type () == po::i32 );
58
+
59
+ std::stack< std::int64_t > k;
60
+ auto && k_opt = parser[ " k" ].bind ( k );
61
+ REQUIRE ( k_opt.is_multi () );
62
+ REQUIRE ( k_opt.get_type () == po::i64 );
63
+
64
+ std::queue< std::uint32_t > l;
65
+ auto && l_opt = parser[ " l" ].bind ( l );
66
+ REQUIRE ( l_opt.is_multi () );
67
+ REQUIRE ( l_opt.get_type () == po::u32 );
68
+
69
+ std::priority_queue< std::uint64_t > m;
70
+ auto && m_opt = parser[ " m" ].bind ( m );
71
+ REQUIRE ( m_opt.is_multi () );
72
+ REQUIRE ( m_opt.get_type () == po::u64 );
73
+
48
74
SECTION ( " good scenario" ) {
49
75
const arg_provider A {
50
76
" /Test" ,
@@ -53,8 +79,10 @@ TEST_CASE( "bind", "[ProgramOptions]" ) {
53
79
" -h 42" ,
54
80
" -i" " foo" ,
55
81
" -i" " bar" ,
56
- " -b 36" ,
57
- " -b 42" ,
82
+ " -k 2" ,
83
+ " -k 7" ,
84
+ " -b 3" ,
85
+ " -b 4" ,
58
86
};
59
87
60
88
CHECK ( parser ( A.argc , A.argv ) );
@@ -63,7 +91,7 @@ TEST_CASE( "bind", "[ProgramOptions]" ) {
63
91
CHECK ( a == " hello" );
64
92
65
93
REQUIRE ( b_opt.count () == 1 );
66
- CHECK ( b == 42 );
94
+ CHECK ( b == 4 );
67
95
68
96
REQUIRE ( h_opt.count () == 2 );
69
97
REQUIRE ( h.size () == 2 );
@@ -75,5 +103,9 @@ TEST_CASE( "bind", "[ProgramOptions]" ) {
75
103
REQUIRE ( i.size () == 2 );
76
104
CHECK ( i[ 0 ] == " foo" );
77
105
CHECK ( i[ 1 ] == " bar" );
106
+
107
+ REQUIRE ( k_opt.count () == 2 );
108
+ REQUIRE ( k.size () == 2 );
109
+ CHECK ( k.top () == 7 );
78
110
}
79
111
}
0 commit comments