@@ -131,3 +131,111 @@ TEST_CASE("sequence optional none operator by length encoder_V2/decoder_v2","[se
131131 REQUIRE (test_case.encoding (test_4.cref ()," \xC0\x84\x82\xC0\xB3\x8B " ,true ));
132132 REQUIRE (test_case.decoding (" \xC0\x84\x82\xC0\xB3\x8B " ,test_4.cref (),true ));
133133}
134+
135+ TEST_CASE (" sequence inside sequence encoder_V2/decoder_v2" ," [sequence_inside_sequence_encoder_v2_decoder_v2]" )
136+ {
137+ fast_test_coding_case_v2<simple14::templates_description> test_case;
138+
139+ SECTION (" outside sequence" )
140+ {
141+ simple14::Test_5 test_5;
142+ simple14::Test_5_mref test_5_mref = test_5.mref ();
143+
144+ test_5_mref.set_field_5_2 ().as (1 );
145+
146+ auto sequence_5_1_mref = test_5_mref.set_sequence_5_1 ();
147+ sequence_5_1_mref.resize (1 );
148+
149+ {
150+ auto element_sequence = sequence_5_1_mref.front ();
151+ element_sequence.set_field_5_4 ().as (50 );
152+ }
153+
154+ REQUIRE (test_case.encoding (test_5.cref ()," \xD0\x85\x81\x81\xC0\xB3 " ,true ));
155+ REQUIRE (test_case.decoding (" \xD0\x85\x81\x81\xC0\xB3 " ,test_5.cref (),true ));
156+ }
157+
158+ SECTION (" inside sequence" )
159+ {
160+ simple14::Test_5 test_5;
161+ simple14::Test_5_mref test_5_mref = test_5.mref ();
162+
163+ test_5_mref.set_field_5_2 ().as (1 );
164+
165+ auto sequence_5_1_mref = test_5_mref.set_sequence_5_1 ();
166+ sequence_5_1_mref.resize (1 );
167+
168+ {
169+ auto element_sequence = sequence_5_1_mref.front ();
170+ element_sequence.set_field_5_4 ().as (50 );
171+
172+ auto sequence_5_2_mref = element_sequence.set_sequence_5_2 ();
173+ sequence_5_2_mref.resize (1 );
174+
175+ {
176+ auto element_sequence_inside = sequence_5_2_mref.front ();
177+ element_sequence_inside.set_field_5_6 ().as (50 );
178+ }
179+ }
180+
181+ REQUIRE (test_case.encoding (test_5.cref ()," \xD0\x85\x81\x81\xE0\xB3\x82\xB2 " ,true ));
182+ REQUIRE (test_case.decoding (" \xD0\x85\x81\x81\xE0\xB3\x82\xB2 " ,test_5.cref (),true ));
183+ }
184+ }
185+
186+ TEST_CASE (" group sequence inside sequence encoder_V2/decoder_v2" ," [group_sequence_inside_sequence_encoder_v2_decoder_v2]" )
187+ {
188+ fast_test_coding_case_v2<simple14::templates_description> test_case;
189+
190+ SECTION (" outside sequence" )
191+ {
192+ simple14::Test_6 test_6;
193+ simple14::Test_6_mref test_6_mref = test_6.mref ();
194+
195+ // set group
196+ {
197+ auto group_6 = test_6_mref.set_group_6 ();
198+ auto sequence_6_1_mref = group_6.set_sequence_6_1 ();
199+ sequence_6_1_mref.resize (1 );
200+
201+ // set sequence
202+ {
203+ auto element_sequence = sequence_6_1_mref.front ();
204+ element_sequence.set_field_6_3 ().as (50 );
205+ }
206+ }
207+
208+ REQUIRE (test_case.encoding (test_6.cref ()," \xC0\x86\x81\xC0\xB2 " ,true ));
209+ REQUIRE (test_case.decoding (" \xC0\x86\x81\xC0\xB2 " ,test_6.cref (),true ));
210+ }
211+
212+ SECTION (" inside sequence" )
213+ {
214+ simple14::Test_6 test_6;
215+ simple14::Test_6_mref test_6_mref = test_6.mref ();
216+
217+ // set group
218+ {
219+ auto group_6 = test_6_mref.set_group_6 ();
220+ auto sequence_6_1_mref = group_6.set_sequence_6_1 ();
221+ sequence_6_1_mref.resize (1 );
222+
223+ // set sequence
224+ {
225+ auto element_sequence = sequence_6_1_mref.front ();
226+ element_sequence.set_field_6_3 ().as (50 );
227+
228+ auto sequence_6_2_mref = element_sequence.set_sequence_6_2 ();
229+ sequence_6_2_mref.resize (1 );
230+
231+ {
232+ auto element_sequence_inside = sequence_6_2_mref.front ();
233+ element_sequence_inside.set_field_6_6 ().as (50 );
234+ }
235+ }
236+ }
237+
238+ REQUIRE (test_case.encoding (test_6.cref ()," \xC0\x86\x81\xD0\xB2\x82\xB2 " ,true ));
239+ REQUIRE (test_case.decoding (" \xC0\x86\x81\xD0\xB2\x82\xB2 " ,test_6.cref (),true ));
240+ }
241+ }
0 commit comments