@@ -57,3 +57,52 @@ TEST_CASE("look up value not in map (by value)", "[type map]") {
5757 STATIC_REQUIRE (stdx::value_lookup_v<M, 2 > == 0 );
5858 STATIC_REQUIRE (stdx::value_lookup_v<M, 2 , 3 > == 3 );
5959}
60+
61+ TEST_CASE (" reverse look up type in map" , " [type map]" ) {
62+ using M = stdx::type_map<stdx::type_pair<A, X>, stdx::type_pair<B, Y>>;
63+ STATIC_REQUIRE (std::is_same_v<stdx::reverse_type_lookup_t <M, X>, A>);
64+ STATIC_REQUIRE (std::is_same_v<stdx::reverse_type_lookup_t <M, Y>, B>);
65+ }
66+
67+ TEST_CASE (" reverse look up type not in map" , " [type map]" ) {
68+ using M = stdx::type_map<stdx::type_pair<A, X>, stdx::type_pair<B, Y>>;
69+ STATIC_REQUIRE (std::is_same_v<stdx::reverse_type_lookup_t <M, Z>, void >);
70+ STATIC_REQUIRE (std::is_same_v<stdx::reverse_type_lookup_t <M, Z, int >, int >);
71+ }
72+
73+ TEST_CASE (" reverse look up type in map (by value)" , " [type map]" ) {
74+ using M = stdx::type_map<stdx::tv_pair<X, 0 >, stdx::tv_pair<Y, 1 >>;
75+ STATIC_REQUIRE (std::is_same_v<stdx::reverse_value_lookup_t <M, 0 >, X>);
76+ STATIC_REQUIRE (std::is_same_v<stdx::reverse_value_lookup_t <M, 1 >, Y>);
77+ }
78+
79+ TEST_CASE (" reverse look up type not in map (by value)" , " [type map]" ) {
80+ using M = stdx::type_map<stdx::tv_pair<X, 0 >, stdx::tv_pair<Y, 1 >>;
81+ STATIC_REQUIRE (std::is_same_v<stdx::reverse_value_lookup_t <M, 2 >, void >);
82+ STATIC_REQUIRE (
83+ std::is_same_v<stdx::reverse_value_lookup_t <M, 2 , int >, int >);
84+ }
85+
86+ TEST_CASE (" reverse look up value in map (by type)" , " [type map]" ) {
87+ using M = stdx::type_map<stdx::vt_pair<0 , A>, stdx::vt_pair<1 , B>>;
88+ STATIC_REQUIRE (stdx::reverse_type_lookup_v<M, A> == 0 );
89+ STATIC_REQUIRE (stdx::reverse_type_lookup_v<M, B> == 1 );
90+ }
91+
92+ TEST_CASE (" reverse look up value not in map (by type)" , " [type map]" ) {
93+ using M = stdx::type_map<stdx::vt_pair<0 , A>, stdx::vt_pair<1 , B>>;
94+ STATIC_REQUIRE (stdx::reverse_type_lookup_v<M, Z> == 0 );
95+ STATIC_REQUIRE (stdx::reverse_type_lookup_v<M, Z, 2 > == 2 );
96+ }
97+
98+ TEST_CASE (" reverse look up value in map (by value)" , " [type map]" ) {
99+ using M = stdx::type_map<stdx::vv_pair<0 , 10 >, stdx::vv_pair<1 , 11 >>;
100+ STATIC_REQUIRE (stdx::reverse_value_lookup_v<M, 10 > == 0 );
101+ STATIC_REQUIRE (stdx::reverse_value_lookup_v<M, 11 > == 1 );
102+ }
103+
104+ TEST_CASE (" reverse look up value not in map (by value)" , " [type map]" ) {
105+ using M = stdx::type_map<stdx::vv_pair<0 , 10 >, stdx::vv_pair<1 , 11 >>;
106+ STATIC_REQUIRE (stdx::reverse_value_lookup_v<M, 2 > == 0 );
107+ STATIC_REQUIRE (stdx::reverse_value_lookup_v<M, 2 , 3 > == 3 );
108+ }
0 commit comments