Skip to content

Commit 2ff7917

Browse files
test: use sorted comparison in grid iteration tests, drop unguaranteed order assumptions
Co-authored-by: samueltardieu <44656+samueltardieu@users.noreply.github.com>
1 parent f4ea467 commit 2ff7917

File tree

1 file changed

+31
-41
lines changed

1 file changed

+31
-41
lines changed

tests/grid.rs

Lines changed: 31 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -615,53 +615,33 @@ fn equality() {
615615
assert_eq!(g, g2);
616616
}
617617

618-
/// Test that `iter()` and `into_iter()` produce the same elements in the same order
619-
/// for both dense and sparse grids.
620-
#[test]
621-
fn iter_and_into_iter_same_order() {
622-
// Sparse grid (few vertices)
623-
let mut g = Grid::new(4, 4);
624-
g.add_vertex((0, 0));
625-
g.add_vertex((2, 1));
626-
g.add_vertex((1, 3));
627-
let via_iter: Vec<_> = g.iter().collect();
628-
let via_into_iter: Vec<_> = g.into_iter().collect();
629-
assert_eq!(via_iter, via_into_iter);
630-
631-
// Dense grid (many vertices, few exclusions)
632-
let mut g = Grid::new(4, 4);
633-
g.fill();
634-
g.remove_vertex((0, 0));
635-
g.remove_vertex((2, 1));
636-
g.remove_vertex((1, 3));
637-
let via_iter: Vec<_> = g.iter().collect();
638-
let via_into_iter: Vec<_> = g.into_iter().collect();
639-
assert_eq!(via_iter, via_into_iter);
640-
}
641-
642-
/// Test that iterating a sparse grid yields exactly the added vertices in
643-
/// insertion order.
618+
/// Test that `iter()` and `into_iter()` on a sparse grid yield exactly the
619+
/// added vertices (regardless of order).
644620
#[test]
645621
fn iter_sparse_grid_yields_exact_vertices() {
646622
let mut g = Grid::new(5, 5);
647623
g.add_vertex((3, 1));
648624
g.add_vertex((0, 4));
649625
g.add_vertex((2, 2));
650-
let expected = vec![(3, 1), (0, 4), (2, 2)];
651-
assert_eq!(g.iter().collect::<Vec<_>>(), expected);
652-
assert_eq!(g.into_iter().collect::<Vec<_>>(), expected);
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);
653634
}
654635

655-
/// Test that iterating a dense grid yields exactly the expected vertices in
656-
/// scan order (x-first within each row), excluding removed vertices.
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).
657638
#[test]
658639
fn iter_dense_grid_yields_exact_vertices() {
659640
let mut g = Grid::new(3, 3);
660641
g.fill();
661642
g.remove_vertex((1, 0));
662643
g.remove_vertex((0, 2));
663-
// Scan order: x varies fastest; (1,0) and (0,2) are absent.
664-
let expected = vec![
644+
let mut expected = vec![
665645
(0, 0),
666646
(2, 0),
667647
(0, 1),
@@ -670,17 +650,27 @@ fn iter_dense_grid_yields_exact_vertices() {
670650
(1, 2),
671651
(2, 2),
672652
];
673-
assert_eq!(g.iter().collect::<Vec<_>>(), expected);
674-
assert_eq!(g.into_iter().collect::<Vec<_>>(), expected);
653+
expected.sort_unstable();
654+
let mut via_iter = g.iter().collect::<Vec<_>>();
655+
via_iter.sort_unstable();
656+
assert_eq!(via_iter, expected);
657+
let mut via_into_iter = g.into_iter().collect::<Vec<_>>();
658+
via_into_iter.sort_unstable();
659+
assert_eq!(via_into_iter, expected);
675660
}
676661

677-
/// Test that iterating a completely filled grid yields all vertices in
678-
/// scan order (x-first within each row).
662+
/// Test that `iter()` and `into_iter()` on a fully filled grid yield all
663+
/// vertices (regardless of order).
679664
#[test]
680-
fn iter_full_grid_yields_all_vertices_in_order() {
665+
fn iter_full_grid_yields_all_vertices() {
681666
let mut g = Grid::new(3, 2);
682667
g.fill();
683-
let expected = vec![(0, 0), (1, 0), (2, 0), (0, 1), (1, 1), (2, 1)];
684-
assert_eq!(g.iter().collect::<Vec<_>>(), expected);
685-
assert_eq!(g.into_iter().collect::<Vec<_>>(), expected);
668+
let mut expected = vec![(0, 0), (1, 0), (2, 0), (0, 1), (1, 1), (2, 1)];
669+
expected.sort_unstable();
670+
let mut via_iter = g.iter().collect::<Vec<_>>();
671+
via_iter.sort_unstable();
672+
assert_eq!(via_iter, expected);
673+
let mut via_into_iter = g.into_iter().collect::<Vec<_>>();
674+
via_into_iter.sort_unstable();
675+
assert_eq!(via_into_iter, expected);
686676
}

0 commit comments

Comments
 (0)