@@ -614,3 +614,55 @@ fn equality() {
614614 g2. add_vertex ( ( 0 , 0 ) ) ;
615615 assert_eq ! ( g, g2) ;
616616}
617+
618+ /// Test that `iter()` and `into_iter()` on a sparse grid yield exactly the
619+ /// added vertices (regardless of order).
620+ #[ test]
621+ fn iter_sparse_grid_yields_exact_vertices ( ) {
622+ let mut g = Grid :: new ( 5 , 5 ) ;
623+ g. add_vertex ( ( 3 , 1 ) ) ;
624+ g. add_vertex ( ( 0 , 4 ) ) ;
625+ g. add_vertex ( ( 2 , 2 ) ) ;
626+ let mut expected = vec ! [ ( 3 , 1 ) , ( 0 , 4 ) , ( 2 , 2 ) ] ;
627+ expected. sort_unstable ( ) ;
628+ let mut via_iter = g. iter ( ) . collect :: < Vec < _ > > ( ) ;
629+ via_iter. sort_unstable ( ) ;
630+ assert_eq ! ( via_iter, expected) ;
631+ let mut via_into_iter = g. into_iter ( ) . collect :: < Vec < _ > > ( ) ;
632+ via_into_iter. sort_unstable ( ) ;
633+ assert_eq ! ( via_into_iter, expected) ;
634+ }
635+
636+ /// Test that `iter()` and `into_iter()` on a dense grid yield exactly the
637+ /// expected vertices (all positions minus removed ones, regardless of order).
638+ #[ test]
639+ fn iter_dense_grid_yields_exact_vertices ( ) {
640+ let mut g = Grid :: new ( 3 , 3 ) ;
641+ g. fill ( ) ;
642+ g. remove_vertex ( ( 1 , 0 ) ) ;
643+ g. remove_vertex ( ( 0 , 2 ) ) ;
644+ let mut expected = vec ! [ ( 0 , 0 ) , ( 2 , 0 ) , ( 0 , 1 ) , ( 1 , 1 ) , ( 2 , 1 ) , ( 1 , 2 ) , ( 2 , 2 ) ] ;
645+ expected. sort_unstable ( ) ;
646+ let mut via_iter = g. iter ( ) . collect :: < Vec < _ > > ( ) ;
647+ via_iter. sort_unstable ( ) ;
648+ assert_eq ! ( via_iter, expected) ;
649+ let mut via_into_iter = g. into_iter ( ) . collect :: < Vec < _ > > ( ) ;
650+ via_into_iter. sort_unstable ( ) ;
651+ assert_eq ! ( via_into_iter, expected) ;
652+ }
653+
654+ /// Test that `iter()` and `into_iter()` on a fully filled grid yield all
655+ /// vertices (regardless of order).
656+ #[ test]
657+ fn iter_full_grid_yields_all_vertices ( ) {
658+ let mut g = Grid :: new ( 3 , 2 ) ;
659+ g. fill ( ) ;
660+ let mut expected = vec ! [ ( 0 , 0 ) , ( 1 , 0 ) , ( 2 , 0 ) , ( 0 , 1 ) , ( 1 , 1 ) , ( 2 , 1 ) ] ;
661+ expected. sort_unstable ( ) ;
662+ let mut via_iter = g. iter ( ) . collect :: < Vec < _ > > ( ) ;
663+ via_iter. sort_unstable ( ) ;
664+ assert_eq ! ( via_iter, expected) ;
665+ let mut via_into_iter = g. into_iter ( ) . collect :: < Vec < _ > > ( ) ;
666+ via_into_iter. sort_unstable ( ) ;
667+ assert_eq ! ( via_into_iter, expected) ;
668+ }
0 commit comments