Skip to content

Commit 46b79a5

Browse files
committed
Finish test.
1 parent 568e59d commit 46b79a5

File tree

1 file changed

+152
-30
lines changed

1 file changed

+152
-30
lines changed

src/test/json/binding_function.cpp

Lines changed: 152 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -23,116 +23,225 @@ namespace tao::json
2323
int private_c4 = 34;
2424
};
2525

26-
[[nodiscard]] int get_a1( const type_f& f )
26+
struct type_g
27+
{
28+
int private_b1 = 21;
29+
int private_b2 = 22;
30+
int private_b3 = 23;
31+
int private_b4 = 24;
32+
33+
int private_c1 = 31;
34+
int private_c2 = 32;
35+
int private_c3 = 33;
36+
int private_c4 = 34;
37+
};
38+
39+
[[nodiscard]] int get_fa1( const type_f& f )
2740
{
2841
return f.private_a1 + 100;
2942
}
3043

31-
[[nodiscard]] int get_a2( const type_f& f ) noexcept
44+
[[nodiscard]] int get_fa2( const type_f& f ) noexcept
3245
{
3346
return f.private_a2 + 100;
3447
}
3548

36-
[[nodiscard]] int get_b1( const type_f& f )
49+
[[nodiscard]] int get_fb1( const type_f& f )
50+
{
51+
return f.private_b1 + 200;
52+
}
53+
54+
[[nodiscard]] int& set_fb1( type_f& f )
55+
{
56+
return f.private_b1;
57+
}
58+
59+
[[nodiscard]] int get_fb2( const type_f& f ) noexcept
60+
{
61+
return f.private_b2 + 200;
62+
}
63+
64+
[[nodiscard]] int& set_fb2( type_f& f )
65+
{
66+
return f.private_b2;
67+
}
68+
69+
[[nodiscard]] int get_fb3( const type_f& f )
70+
{
71+
return f.private_b3 + 200;
72+
}
73+
74+
[[nodiscard]] int& set_fb3( type_f& f ) noexcept
75+
{
76+
return f.private_b3;
77+
}
78+
79+
[[nodiscard]] int get_fb4( const type_f& f ) noexcept
80+
{
81+
return f.private_b4 + 200;
82+
}
83+
84+
[[nodiscard]] int& set_fb4( type_f& f ) noexcept
85+
{
86+
return f.private_b4;
87+
}
88+
89+
[[nodiscard]] int get_fc1( const type_f& f ) noexcept
90+
{
91+
return f.private_c1 + 300;
92+
}
93+
94+
void set_fc1( type_f& f, const int c ) noexcept
95+
{
96+
f.private_c1 = c;
97+
}
98+
99+
[[nodiscard]] int get_fc2( const type_f& f )
100+
{
101+
return f.private_c2 + 300;
102+
}
103+
104+
void set_fc2( type_f& f, const int& c ) noexcept
105+
{
106+
f.private_c2 = c;
107+
}
108+
109+
[[nodiscard]] int get_fc3( const type_f& f ) noexcept
110+
{
111+
return f.private_c3 + 300;
112+
}
113+
114+
void set_fc3( type_f& f, int&& c ) noexcept
115+
{
116+
f.private_c3 = c;
117+
}
118+
119+
[[nodiscard]] int get_fc4( const type_f& f )
120+
{
121+
return f.private_c4 + 300;
122+
}
123+
124+
void set_fc4( type_f& f, const int& c )
125+
{
126+
f.private_c4 = c;
127+
}
128+
129+
[[nodiscard]] int get_gb1( const type_g& f )
37130
{
38131
return f.private_b1 + 200;
39132
}
40133

41-
[[nodiscard]] int& set_b1( type_f& f )
134+
[[nodiscard]] int& set_gb1( type_g& f )
42135
{
43136
return f.private_b1;
44137
}
45138

46-
[[nodiscard]] int get_b2( const type_f& f ) noexcept
139+
[[nodiscard]] int get_gb2( const type_g& f ) noexcept
47140
{
48141
return f.private_b2 + 200;
49142
}
50143

51-
[[nodiscard]] int& set_b2( type_f& f )
144+
[[nodiscard]] int& set_gb2( type_g& f )
52145
{
53146
return f.private_b2;
54147
}
55148

56-
[[nodiscard]] int get_b3( const type_f& f )
149+
[[nodiscard]] int get_gb3( const type_g& f )
57150
{
58151
return f.private_b3 + 200;
59152
}
60153

61-
[[nodiscard]] int& set_b3( type_f& f ) noexcept
154+
[[nodiscard]] int& set_gb3( type_g& f ) noexcept
62155
{
63156
return f.private_b3;
64157
}
65158

66-
[[nodiscard]] int get_b4( const type_f& f ) noexcept
159+
[[nodiscard]] int get_gb4( const type_g& f ) noexcept
67160
{
68161
return f.private_b4 + 200;
69162
}
70163

71-
[[nodiscard]] int& set_b4( type_f& f ) noexcept
164+
[[nodiscard]] int& set_gb4( type_g& f ) noexcept
72165
{
73166
return f.private_b4;
74167
}
75168

76-
[[nodiscard]] int get_c1( const type_f& f ) noexcept
169+
[[nodiscard]] int get_gc1( const type_g& f ) noexcept
77170
{
78171
return f.private_c1 + 300;
79172
}
80173

81-
void set_c1( type_f& f, const int c ) noexcept
174+
void set_gc1( type_g& f, const int c ) noexcept
82175
{
83176
f.private_c1 = c;
84177
}
85178

86-
[[nodiscard]] int get_c2( const type_f& f )
179+
[[nodiscard]] int get_gc2( const type_g& f )
87180
{
88181
return f.private_c2 + 300;
89182
}
90183

91-
void set_c2( type_f& f, const int& c ) noexcept
184+
void set_gc2( type_g& f, const int& c ) noexcept
92185
{
93186
f.private_c2 = c;
94187
}
95188

96-
[[nodiscard]] int get_c3( const type_f& f ) noexcept
189+
[[nodiscard]] int get_gc3( const type_g& f ) noexcept
97190
{
98191
return f.private_c3 + 300;
99192
}
100193

101-
void set_c3( type_f& f, int&& c ) noexcept
194+
void set_gc3( type_g& f, int&& c ) noexcept
102195
{
103196
f.private_c3 = c;
104197
}
105198

106-
[[nodiscard]] int get_c4( const type_f& f )
199+
[[nodiscard]] int get_gc4( const type_g& f )
107200
{
108201
return f.private_c4 + 300;
109202
}
110203

111-
void set_c4( type_f& f, const int& c )
204+
void set_gc4( type_g& f, const int& c )
112205
{
113206
f.private_c4 = c;
114207
}
115208

116209
template<>
117210
struct traits< type_f >
118-
: binding::object< binding::member< binding::member_kind::required, TAO_JSON_STRING_T( "a1" ), &get_a1 >,
119-
binding::member< binding::member_kind::required, TAO_JSON_STRING_T( "a2" ), &get_a2 >,
120-
binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( "b1" ), &get_b1, &set_b1 >,
121-
binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( "b2" ), &get_b2, &set_b2 >,
122-
binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( "b3" ), &get_b3, &set_b3 >,
123-
binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( "b4" ), &get_b4, &set_b4 >,
124-
binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( "c1" ), &get_c1, &set_c1 >,
125-
binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( "c2" ), &get_c2, &set_c2 >,
126-
binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( "c3" ), &get_c3, &set_c3 >,
127-
binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( "c4" ), &get_c4, &set_c4 > >
211+
: binding::object< binding::member< binding::member_kind::required, TAO_JSON_STRING_T( "a1" ), &get_fa1 >,
212+
binding::member< binding::member_kind::required, TAO_JSON_STRING_T( "a2" ), &get_fa2 >,
213+
binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( "b1" ), &get_fb1, &set_fb1 >,
214+
binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( "b2" ), &get_fb2, &set_fb2 >,
215+
binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( "b3" ), &get_fb3, &set_fb3 >,
216+
binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( "b4" ), &get_fb4, &set_fb4 >,
217+
binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( "c1" ), &get_fc1, &set_fc1 >,
218+
binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( "c2" ), &get_fc2, &set_fc2 >,
219+
binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( "c3" ), &get_fc3, &set_fc3 >,
220+
binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( "c4" ), &get_fc4, &set_fc4 > >
221+
{
222+
TAO_JSON_DEFAULT_KEY( "f" );
223+
};
224+
225+
template<>
226+
struct traits< type_g >
227+
: binding::object< binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( "b1" ), &get_gb1, &set_gb1 >,
228+
binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( "b2" ), &get_gb2, &set_gb2 >,
229+
binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( "b3" ), &get_gb3, &set_gb3 >,
230+
binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( "b4" ), &get_gb4, &set_gb4 >,
231+
binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( "c1" ), &get_gc1, &set_gc1 >,
232+
binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( "c2" ), &get_gc2, &set_gc2 >,
233+
binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( "c3" ), &get_gc3, &set_gc3 >,
234+
binding::member2< binding::member_kind::required, TAO_JSON_STRING_T( "c4" ), &get_gc4, &set_gc4 > >
128235
{
129236
TAO_JSON_DEFAULT_KEY( "f" );
130237
};
131238

132239
void unit_test()
133240
{
134241
const type_f f;
135-
const value v = produce::to_value( f );
242+
243+
value v = produce::to_value( f );
244+
136245
TEST_ASSERT( v.get_object().size() == 10 );
137246

138247
TEST_ASSERT( v.get_object().at( "a1" ).as< int >() == 111 );
@@ -148,7 +257,20 @@ namespace tao::json
148257
TEST_ASSERT( v.get_object().at( "c3" ).as< int >() == 333 );
149258
TEST_ASSERT( v.get_object().at( "c4" ).as< int >() == 334 );
150259

151-
// v.to( f );
260+
v.get_object().erase( "a1" );
261+
v.get_object().erase( "a2" );
262+
263+
const type_g g = v.as< type_g >();
264+
265+
TEST_ASSERT( g.private_b1 == 221 );
266+
TEST_ASSERT( g.private_b2 == 222 );
267+
TEST_ASSERT( g.private_b3 == 223 );
268+
TEST_ASSERT( g.private_b4 == 224 );
269+
270+
TEST_ASSERT( g.private_c1 == 331 );
271+
TEST_ASSERT( g.private_c2 == 332 );
272+
TEST_ASSERT( g.private_c3 == 333 );
273+
TEST_ASSERT( g.private_c4 == 334 );
152274
}
153275

154276
} // namespace tao::json

0 commit comments

Comments
 (0)