@@ -17,7 +17,10 @@ pub fn connect_sort(app: &MainWindow) {
1717 SortMode :: ParentName => sorts:: sort_by_parent_name ( & current_model, active_tab) ,
1818 SortMode :: ItemName => sorts:: sort_by_name ( & current_model, active_tab) ,
1919 SortMode :: FullName => sorts:: sort_by_full_name ( & current_model, active_tab) ,
20- _ => todo ! ( ) ,
20+ SortMode :: ModificationDate => sorts:: sort_modification_date ( & current_model, active_tab) ,
21+ SortMode :: Selection => sorts:: sort_selection ( & current_model, active_tab) ,
22+ SortMode :: Reverse => sorts:: reverse_sort ( & current_model, active_tab) ,
23+ SortMode :: Checked => sorts:: sort_checked ( & current_model, active_tab) ,
2124 } ;
2225
2326 set_tool_model ( & app, active_tab, new_model) ;
@@ -26,7 +29,44 @@ pub fn connect_sort(app: &MainWindow) {
2629
2730mod sorts {
2831 use super :: * ;
29- use crate :: common:: { get_str_name_idx, get_str_path_idx} ;
32+ use crate :: common:: { get_int_modification_date_idx, get_str_name_idx, get_str_path_idx} ;
33+
34+ pub ( super ) fn reverse_sort ( model : & ModelRc < MainListModel > , active_tab : CurrentTab ) -> ModelRc < MainListModel > {
35+ if !get_is_header_mode ( active_tab) {
36+ let mut items = model. iter ( ) . collect :: < Vec < _ > > ( ) ;
37+ items. reverse ( ) ;
38+ return ModelRc :: new ( VecModel :: from ( items) ) ;
39+ }
40+
41+ let mut grouped_items = group_by_header ( model) ;
42+ for ( _, items) in & mut grouped_items {
43+ items. reverse ( ) ;
44+ }
45+
46+ convert_group_header_into_rc_model ( grouped_items, model. row_count ( ) )
47+ }
48+
49+ pub ( super ) fn sort_checked ( model : & ModelRc < MainListModel > , active_tab : CurrentTab ) -> ModelRc < MainListModel > {
50+ let sort_function = |e : & MainListModel | !e. checked ;
51+
52+ common_sort_function ( model, active_tab, sort_function)
53+ }
54+
55+ pub ( super ) fn sort_selection ( model : & ModelRc < MainListModel > , active_tab : CurrentTab ) -> ModelRc < MainListModel > {
56+ let sort_function = |e : & MainListModel | !e. selected_row ;
57+
58+ common_sort_function ( model, active_tab, sort_function)
59+ }
60+
61+ pub ( super ) fn sort_modification_date ( model : & ModelRc < MainListModel > , active_tab : CurrentTab ) -> ModelRc < MainListModel > {
62+ let sort_function = |e : & MainListModel | {
63+ let modification_date = get_int_modification_date_idx ( active_tab) ;
64+ let items = e. val_int . iter ( ) . collect :: < Vec < _ > > ( ) ;
65+ connect_i32_into_u64 ( items[ modification_date] , items[ modification_date + 1 ] )
66+ } ;
67+
68+ common_sort_function ( model, active_tab, sort_function)
69+ }
3070
3171 pub ( super ) fn sort_by_full_name ( model : & ModelRc < MainListModel > , active_tab : CurrentTab ) -> ModelRc < MainListModel > {
3272 let sort_function = |e : & MainListModel | {
@@ -131,8 +171,8 @@ fn group_by_header(model: &ModelRc<MainListModel>) -> Vec<(MainListModel, Vec<Ma
131171mod tests {
132172 use slint:: Model ;
133173
134- use crate :: common:: { get_int_size_idx, get_is_header_mode, get_str_name_idx, get_str_path_idx} ;
135- use crate :: connect_sort:: sorts:: { sort_by_full_name, sort_by_name, sort_by_parent_name, sort_by_size} ;
174+ use crate :: common:: { get_int_modification_date_idx , get_int_size_idx, get_is_header_mode, get_str_name_idx, get_str_path_idx} ;
175+ use crate :: connect_sort:: sorts:: { reverse_sort , sort_by_full_name, sort_by_name, sort_by_parent_name, sort_by_size, sort_checked , sort_modification_date , sort_selection } ;
136176 use crate :: connect_sort:: { convert_group_header_into_rc_model, group_by_header} ;
137177 use crate :: test_common:: { create_model_from_model_vec, get_model_vec} ;
138178 use crate :: { CurrentTab , MainListModel } ;
@@ -170,30 +210,29 @@ mod tests {
170210 assert ! ( grouped. is_empty( ) ) ;
171211 }
172212
173- // TODO
174- // #[test]
175- // #[should_panic]
176- // fn group_by_header_panics_when_no_header_before_items() {
177- // let mut model = get_model_vec(3);
178- // model[0].header_row = false;
179- // model[1].header_row = false;
180- // model[2].header_row = false;
181- // let model = create_model_from_model_vec(&model);
182- //
183- // group_by_header(&model);
184- // }
185- //
186- // #[test]
187- // #[should_panic]
188- // fn group_by_header_panics_when_group_is_empty() {
189- // let mut model = get_model_vec(3);
190- // model[0].header_row = true;
191- // model[1].header_row = true;
192- // model[2].header_row = true;
193- // let model = create_model_from_model_vec(&model);
194- //
195- // group_by_header(&model);
196- // }
213+ #[ test]
214+ #[ should_panic]
215+ fn group_by_header_panics_when_no_header_before_items ( ) {
216+ let mut model = get_model_vec ( 3 ) ;
217+ model[ 0 ] . header_row = false ;
218+ model[ 1 ] . header_row = false ;
219+ model[ 2 ] . header_row = false ;
220+ let model = create_model_from_model_vec ( & model) ;
221+
222+ group_by_header ( & model) ;
223+ }
224+
225+ #[ test]
226+ #[ should_panic]
227+ fn group_by_header_panics_when_group_is_empty ( ) {
228+ let mut model = get_model_vec ( 3 ) ;
229+ model[ 0 ] . header_row = true ;
230+ model[ 1 ] . header_row = true ;
231+ model[ 2 ] . header_row = true ;
232+ let model = create_model_from_model_vec ( & model) ;
233+
234+ group_by_header ( & model) ;
235+ }
197236
198237 #[ test]
199238 fn convert_group_header_into_rc_model_combines_groups_correctly ( ) {
@@ -257,25 +296,27 @@ mod tests {
257296 assert_eq ! ( get_int_size_idx( current_tab) , 2 ) ;
258297 assert ! ( get_is_header_mode( current_tab) ) ;
259298
260- let mut model = get_model_vec ( 6 ) ;
299+ let mut model = get_model_vec ( 7 ) ;
261300 model[ 0 ] . header_row = true ;
262301 model[ 1 ] . val_int = create_model_from_model_vec ( & [ 0 , 0 , 0 , 15 ] ) ;
263302 model[ 2 ] . val_int = create_model_from_model_vec ( & [ 0 , 0 , 0 , 5 ] ) ;
264303 model[ 3 ] . header_row = true ;
265- model[ 4 ] . val_int = create_model_from_model_vec ( & [ 0 , 0 , 0 , 25 ] ) ;
304+ model[ 4 ] . val_int = create_model_from_model_vec ( & [ 0 , 0 , 1 , 15 ] ) ;
266305 model[ 5 ] . val_int = create_model_from_model_vec ( & [ 0 , 0 , 0 , 10 ] ) ;
306+ model[ 6 ] . val_int = create_model_from_model_vec ( & [ 0 , 0 , 0 , 35 ] ) ;
267307 let model = create_model_from_model_vec ( & model) ;
268308
269309 let sorted_model = sort_by_size ( & model, current_tab) ;
270310
271311 // Group 1
272312 assert ! ( sorted_model. row_data( 0 ) . unwrap( ) . header_row) ;
273- assert_eq ! ( sorted_model. row_data( 1 ) . unwrap( ) . val_int. iter( ) . skip( 2 ) . collect:: <Vec <_>>( ) , vec![ 0 , 5 ] ) ; // smallest
274- assert_eq ! ( sorted_model. row_data( 2 ) . unwrap( ) . val_int. iter( ) . skip( 2 ) . collect:: <Vec <_>>( ) , vec![ 0 , 15 ] ) ; // largest
313+ assert_eq ! ( sorted_model. row_data( 1 ) . unwrap( ) . val_int. iter( ) . skip( 2 ) . collect:: <Vec <_>>( ) , vec![ 0 , 5 ] ) ;
314+ assert_eq ! ( sorted_model. row_data( 2 ) . unwrap( ) . val_int. iter( ) . skip( 2 ) . collect:: <Vec <_>>( ) , vec![ 0 , 15 ] ) ;
275315 // Group 2
276316 assert ! ( sorted_model. row_data( 3 ) . unwrap( ) . header_row) ;
277- assert_eq ! ( sorted_model. row_data( 4 ) . unwrap( ) . val_int. iter( ) . skip( 2 ) . collect:: <Vec <_>>( ) , vec![ 0 , 10 ] ) ; // smallest
278- assert_eq ! ( sorted_model. row_data( 5 ) . unwrap( ) . val_int. iter( ) . skip( 2 ) . collect:: <Vec <_>>( ) , vec![ 0 , 25 ] ) ; // largest
317+ assert_eq ! ( sorted_model. row_data( 4 ) . unwrap( ) . val_int. iter( ) . skip( 2 ) . collect:: <Vec <_>>( ) , vec![ 0 , 10 ] ) ;
318+ assert_eq ! ( sorted_model. row_data( 5 ) . unwrap( ) . val_int. iter( ) . skip( 2 ) . collect:: <Vec <_>>( ) , vec![ 0 , 35 ] ) ;
319+ assert_eq ! ( sorted_model. row_data( 6 ) . unwrap( ) . val_int. iter( ) . skip( 2 ) . collect:: <Vec <_>>( ) , vec![ 1 , 15 ] ) ;
279320 }
280321
281322 #[ test]
@@ -304,11 +345,11 @@ mod tests {
304345
305346 let sorted_model = sort_by_parent_name ( & model, current_tab) ;
306347
307- assert_eq ! ( sorted_model. row_data( 0 ) . unwrap( ) . val_str. iter( ) . collect:: <Vec <_>>( ) , vec![ "" , "" , "A" ] ) ;
308- assert_eq ! ( sorted_model. row_data( 1 ) . unwrap( ) . val_str. iter( ) . collect:: <Vec <_>>( ) , vec![ "" , "" , "B" ] ) ;
309- assert_eq ! ( sorted_model. row_data( 2 ) . unwrap( ) . val_str. iter( ) . collect:: <Vec <_>>( ) , vec![ "" , "" , "C" ] ) ;
310- assert_eq ! ( sorted_model. row_data( 3 ) . unwrap( ) . val_str. iter( ) . collect:: <Vec <_>>( ) , vec![ "" , "" , "D" ] ) ;
311- assert_eq ! ( sorted_model. row_data( 4 ) . unwrap( ) . val_str. iter( ) . collect:: <Vec <_>>( ) , vec![ "" , "" , "E" ] ) ;
348+ assert_eq ! ( sorted_model. row_data( 0 ) . unwrap( ) . val_str. iter( ) . skip ( 2 ) . collect:: <Vec <_>>( ) , vec![ "A" ] ) ;
349+ assert_eq ! ( sorted_model. row_data( 1 ) . unwrap( ) . val_str. iter( ) . skip ( 2 ) . collect:: <Vec <_>>( ) , vec![ "B" ] ) ;
350+ assert_eq ! ( sorted_model. row_data( 2 ) . unwrap( ) . val_str. iter( ) . skip ( 2 ) . collect:: <Vec <_>>( ) , vec![ "C" ] ) ;
351+ assert_eq ! ( sorted_model. row_data( 3 ) . unwrap( ) . val_str. iter( ) . skip ( 2 ) . collect:: <Vec <_>>( ) , vec![ "D" ] ) ;
352+ assert_eq ! ( sorted_model. row_data( 4 ) . unwrap( ) . val_str. iter( ) . skip ( 2 ) . collect:: <Vec <_>>( ) , vec![ "E" ] ) ;
312353 }
313354
314355 #[ test]
@@ -328,11 +369,11 @@ mod tests {
328369
329370 let sorted_model = sort_by_name ( & model, current_tab) ;
330371
331- assert_eq ! ( sorted_model. row_data( 0 ) . unwrap( ) . val_str. iter( ) . collect:: <Vec <_>>( ) , vec![ "" , "A" ] ) ;
332- assert_eq ! ( sorted_model. row_data( 1 ) . unwrap( ) . val_str. iter( ) . collect:: <Vec <_>>( ) , vec![ "" , "B" ] ) ;
333- assert_eq ! ( sorted_model. row_data( 2 ) . unwrap( ) . val_str. iter( ) . collect:: <Vec <_>>( ) , vec![ "" , "C" ] ) ;
334- assert_eq ! ( sorted_model. row_data( 3 ) . unwrap( ) . val_str. iter( ) . collect:: <Vec <_>>( ) , vec![ "" , "D" ] ) ;
335- assert_eq ! ( sorted_model. row_data( 4 ) . unwrap( ) . val_str. iter( ) . collect:: <Vec <_>>( ) , vec![ "" , "E" ] ) ;
372+ assert_eq ! ( sorted_model. row_data( 0 ) . unwrap( ) . val_str. iter( ) . skip ( 1 ) . collect:: <Vec <_>>( ) , vec![ "A" ] ) ;
373+ assert_eq ! ( sorted_model. row_data( 1 ) . unwrap( ) . val_str. iter( ) . skip ( 1 ) . collect:: <Vec <_>>( ) , vec![ "B" ] ) ;
374+ assert_eq ! ( sorted_model. row_data( 2 ) . unwrap( ) . val_str. iter( ) . skip ( 1 ) . collect:: <Vec <_>>( ) , vec![ "C" ] ) ;
375+ assert_eq ! ( sorted_model. row_data( 3 ) . unwrap( ) . val_str. iter( ) . skip ( 1 ) . collect:: <Vec <_>>( ) , vec![ "D" ] ) ;
376+ assert_eq ! ( sorted_model. row_data( 4 ) . unwrap( ) . val_str. iter( ) . skip ( 1 ) . collect:: <Vec <_>>( ) , vec![ "E" ] ) ;
336377 }
337378
338379 #[ test]
@@ -353,10 +394,116 @@ mod tests {
353394
354395 let sorted_model = sort_by_full_name ( & model, current_tab) ;
355396
356- assert_eq ! ( sorted_model. row_data( 0 ) . unwrap( ) . val_str. iter( ) . collect:: <Vec <_>>( ) , vec![ "" , "E" , "A" ] ) ;
357- assert_eq ! ( sorted_model. row_data( 1 ) . unwrap( ) . val_str. iter( ) . collect:: <Vec <_>>( ) , vec![ "" , "D" , "B" ] ) ;
358- assert_eq ! ( sorted_model. row_data( 2 ) . unwrap( ) . val_str. iter( ) . collect:: <Vec <_>>( ) , vec![ "" , "F" , "B" ] ) ;
359- assert_eq ! ( sorted_model. row_data( 3 ) . unwrap( ) . val_str. iter( ) . collect:: <Vec <_>>( ) , vec![ "" , "A" , "C" ] ) ;
360- assert_eq ! ( sorted_model. row_data( 4 ) . unwrap( ) . val_str. iter( ) . collect:: <Vec <_>>( ) , vec![ "" , "A" , "D" ] ) ;
397+ assert_eq ! ( sorted_model. row_data( 0 ) . unwrap( ) . val_str. iter( ) . skip( 1 ) . collect:: <Vec <_>>( ) , vec![ "E" , "A" ] ) ;
398+ assert_eq ! ( sorted_model. row_data( 1 ) . unwrap( ) . val_str. iter( ) . skip( 1 ) . collect:: <Vec <_>>( ) , vec![ "D" , "B" ] ) ;
399+ assert_eq ! ( sorted_model. row_data( 2 ) . unwrap( ) . val_str. iter( ) . skip( 1 ) . collect:: <Vec <_>>( ) , vec![ "F" , "B" ] ) ;
400+ assert_eq ! ( sorted_model. row_data( 3 ) . unwrap( ) . val_str. iter( ) . skip( 1 ) . collect:: <Vec <_>>( ) , vec![ "A" , "C" ] ) ;
401+ assert_eq ! ( sorted_model. row_data( 4 ) . unwrap( ) . val_str. iter( ) . skip( 1 ) . collect:: <Vec <_>>( ) , vec![ "A" , "D" ] ) ;
402+ }
403+
404+ #[ test]
405+ fn sort_by_modification_date_sorts_flat_model_correctly ( ) {
406+ let current_tab = CurrentTab :: BigFiles ;
407+ // To be sure that we set correct values in val_int, which must be equal to index
408+ assert_eq ! ( get_int_modification_date_idx( current_tab) , 0 ) ;
409+ assert ! ( !get_is_header_mode( current_tab) ) ;
410+
411+ let mut model = get_model_vec ( 5 ) ;
412+ model[ 0 ] . val_int = create_model_from_model_vec ( & [ 15 , 17 ] ) ;
413+ model[ 1 ] . val_int = create_model_from_model_vec ( & [ 14 , 50 ] ) ;
414+ model[ 2 ] . val_int = create_model_from_model_vec ( & [ 9 , 10 ] ) ;
415+ model[ 3 ] . val_int = create_model_from_model_vec ( & [ 9 , 9 ] ) ;
416+ model[ 4 ] . val_int = create_model_from_model_vec ( & [ 29 , 0 ] ) ;
417+ let model = create_model_from_model_vec ( & model) ;
418+
419+ let sorted_model = sort_modification_date ( & model, current_tab) ;
420+
421+ assert_eq ! ( sorted_model. row_data( 0 ) . unwrap( ) . val_int. iter( ) . collect:: <Vec <_>>( ) , vec![ 9 , 9 ] ) ;
422+ assert_eq ! ( sorted_model. row_data( 1 ) . unwrap( ) . val_int. iter( ) . collect:: <Vec <_>>( ) , vec![ 9 , 10 ] ) ;
423+ assert_eq ! ( sorted_model. row_data( 2 ) . unwrap( ) . val_int. iter( ) . collect:: <Vec <_>>( ) , vec![ 14 , 50 ] ) ;
424+ assert_eq ! ( sorted_model. row_data( 3 ) . unwrap( ) . val_int. iter( ) . collect:: <Vec <_>>( ) , vec![ 15 , 17 ] ) ;
425+ assert_eq ! ( sorted_model. row_data( 4 ) . unwrap( ) . val_int. iter( ) . collect:: <Vec <_>>( ) , vec![ 29 , 0 ] ) ;
426+ }
427+
428+ #[ test]
429+ fn sort_by_checked_sorts_flat_model_correctly ( ) {
430+ let current_tab = CurrentTab :: BigFiles ;
431+ // To be sure that we set correct values in val_int, which must be equal to index
432+ assert ! ( !get_is_header_mode( current_tab) ) ;
433+
434+ let mut model = get_model_vec ( 4 ) ;
435+ model[ 0 ] . checked = true ;
436+ model[ 0 ] . val_int = create_model_from_model_vec ( & [ 15 ] ) ;
437+ model[ 1 ] . checked = false ;
438+ model[ 1 ] . val_int = create_model_from_model_vec ( & [ 14 ] ) ;
439+ model[ 2 ] . checked = true ;
440+ model[ 2 ] . val_int = create_model_from_model_vec ( & [ 9 ] ) ;
441+ model[ 3 ] . checked = false ;
442+ model[ 3 ] . val_int = create_model_from_model_vec ( & [ 29 ] ) ;
443+ let model = create_model_from_model_vec ( & model) ;
444+
445+ let sorted_model = sort_checked ( & model, current_tab) ;
446+
447+ assert ! ( sorted_model. row_data( 0 ) . unwrap( ) . checked) ;
448+ assert_eq ! ( sorted_model. row_data( 0 ) . unwrap( ) . val_int. iter( ) . collect:: <Vec <_>>( ) , vec![ 15 ] ) ;
449+ assert ! ( sorted_model. row_data( 1 ) . unwrap( ) . checked) ;
450+ assert_eq ! ( sorted_model. row_data( 1 ) . unwrap( ) . val_int. iter( ) . collect:: <Vec <_>>( ) , vec![ 9 ] ) ;
451+ assert ! ( !sorted_model. row_data( 2 ) . unwrap( ) . checked) ;
452+ assert_eq ! ( sorted_model. row_data( 2 ) . unwrap( ) . val_int. iter( ) . collect:: <Vec <_>>( ) , vec![ 14 ] ) ;
453+ assert ! ( !sorted_model. row_data( 3 ) . unwrap( ) . checked) ;
454+ assert_eq ! ( sorted_model. row_data( 3 ) . unwrap( ) . val_int. iter( ) . collect:: <Vec <_>>( ) , vec![ 29 ] ) ;
455+ }
456+
457+ #[ test]
458+ fn sort_by_selection_sorts_flat_model_correctly ( ) {
459+ let current_tab = CurrentTab :: BigFiles ;
460+ // To be sure that we set correct values in val_int, which must be equal to index
461+ assert ! ( !get_is_header_mode( current_tab) ) ;
462+
463+ let mut model = get_model_vec ( 4 ) ;
464+ model[ 0 ] . selected_row = true ;
465+ model[ 0 ] . val_int = create_model_from_model_vec ( & [ 15 ] ) ;
466+ model[ 1 ] . selected_row = false ;
467+ model[ 1 ] . val_int = create_model_from_model_vec ( & [ 14 ] ) ;
468+ model[ 2 ] . selected_row = true ;
469+ model[ 2 ] . val_int = create_model_from_model_vec ( & [ 9 ] ) ;
470+ model[ 3 ] . selected_row = false ;
471+ model[ 3 ] . val_int = create_model_from_model_vec ( & [ 29 ] ) ;
472+ let model = create_model_from_model_vec ( & model) ;
473+
474+ let sorted_model = sort_selection ( & model, current_tab) ;
475+
476+ assert ! ( sorted_model. row_data( 0 ) . unwrap( ) . selected_row) ;
477+ assert_eq ! ( sorted_model. row_data( 0 ) . unwrap( ) . val_int. iter( ) . collect:: <Vec <_>>( ) , vec![ 15 ] ) ;
478+ assert ! ( sorted_model. row_data( 1 ) . unwrap( ) . selected_row) ;
479+ assert_eq ! ( sorted_model. row_data( 1 ) . unwrap( ) . val_int. iter( ) . collect:: <Vec <_>>( ) , vec![ 9 ] ) ;
480+ assert ! ( !sorted_model. row_data( 2 ) . unwrap( ) . selected_row) ;
481+ assert_eq ! ( sorted_model. row_data( 2 ) . unwrap( ) . val_int. iter( ) . collect:: <Vec <_>>( ) , vec![ 14 ] ) ;
482+ assert ! ( !sorted_model. row_data( 3 ) . unwrap( ) . selected_row) ;
483+ assert_eq ! ( sorted_model. row_data( 3 ) . unwrap( ) . val_int. iter( ) . collect:: <Vec <_>>( ) , vec![ 29 ] ) ;
484+ }
485+
486+ #[ test]
487+ fn sort_reverse_sorts_flat_model_correctly ( ) {
488+ let current_tab = CurrentTab :: BigFiles ;
489+ // To be sure that we set correct values in val_int, which must be equal to index
490+ assert_eq ! ( get_int_modification_date_idx( current_tab) , 0 ) ;
491+ assert ! ( !get_is_header_mode( current_tab) ) ;
492+
493+ let mut model = get_model_vec ( 5 ) ;
494+ model[ 0 ] . val_int = create_model_from_model_vec ( & [ 9 , 9 ] ) ;
495+ model[ 1 ] . val_int = create_model_from_model_vec ( & [ 9 , 10 ] ) ;
496+ model[ 2 ] . val_int = create_model_from_model_vec ( & [ 14 , 50 ] ) ;
497+ model[ 3 ] . val_int = create_model_from_model_vec ( & [ 15 , 17 ] ) ;
498+ model[ 4 ] . val_int = create_model_from_model_vec ( & [ 29 , 0 ] ) ;
499+ let model = create_model_from_model_vec ( & model) ;
500+
501+ let sorted_model = reverse_sort ( & model, current_tab) ;
502+
503+ assert_eq ! ( sorted_model. row_data( 0 ) . unwrap( ) . val_int. iter( ) . collect:: <Vec <_>>( ) , vec![ 29 , 0 ] ) ;
504+ assert_eq ! ( sorted_model. row_data( 1 ) . unwrap( ) . val_int. iter( ) . collect:: <Vec <_>>( ) , vec![ 15 , 17 ] ) ;
505+ assert_eq ! ( sorted_model. row_data( 2 ) . unwrap( ) . val_int. iter( ) . collect:: <Vec <_>>( ) , vec![ 14 , 50 ] ) ;
506+ assert_eq ! ( sorted_model. row_data( 3 ) . unwrap( ) . val_int. iter( ) . collect:: <Vec <_>>( ) , vec![ 9 , 10 ] ) ;
507+ assert_eq ! ( sorted_model. row_data( 4 ) . unwrap( ) . val_int. iter( ) . collect:: <Vec <_>>( ) , vec![ 9 , 9 ] ) ;
361508 }
362509}
0 commit comments