[INFO] fetching crate wagyu-rs 0.2.1... [INFO] testing wagyu-rs-0.2.1 against master#562dee4820c458d823175268e41601d4c060588a for pr-154210-2 [INFO] extracting crate wagyu-rs 0.2.1 into /workspace/builds/worker-2-tc1/source [INFO] started tweaking crates.io crate wagyu-rs 0.2.1 [INFO] removed 0 missing tests [INFO] finished tweaking crates.io crate wagyu-rs 0.2.1 [INFO] tweaked toml for crates.io crate wagyu-rs 0.2.1 written to /workspace/builds/worker-2-tc1/source/Cargo.toml [INFO] validating manifest of crates.io crate wagyu-rs 0.2.1 on toolchain 562dee4820c458d823175268e41601d4c060588a [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] crate crates.io crate wagyu-rs 0.2.1 already has a lockfile, it will not be regenerated [INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Downloading crates ... [INFO] [stderr] Downloaded sif-itree v0.4.1 [INFO] [stderr] Downloaded i_overlay v4.0.7 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 800f03425006e92e5dc5812dba8cfd694e1376fe79bb4d371bf5655060dffc7d [INFO] running `Command { std: "docker" "start" "-a" "800f03425006e92e5dc5812dba8cfd694e1376fe79bb4d371bf5655060dffc7d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "800f03425006e92e5dc5812dba8cfd694e1376fe79bb4d371bf5655060dffc7d", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "800f03425006e92e5dc5812dba8cfd694e1376fe79bb4d371bf5655060dffc7d", kill_on_drop: false }` [INFO] [stdout] 800f03425006e92e5dc5812dba8cfd694e1376fe79bb4d371bf5655060dffc7d [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 120611e55cade60238c2293745b5f355157d9e6821e694282021cf039b1e2d06 [INFO] running `Command { std: "docker" "start" "-a" "120611e55cade60238c2293745b5f355157d9e6821e694282021cf039b1e2d06", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.183 [INFO] [stderr] Compiling rayon-core v1.13.0 [INFO] [stderr] Compiling heapless v0.8.0 [INFO] [stderr] Compiling num-traits v0.2.19 [INFO] [stderr] Compiling hash32 v0.3.1 [INFO] [stderr] Compiling itertools v0.11.0 [INFO] [stderr] Compiling i_tree v0.16.0 [INFO] [stderr] Compiling robust v1.2.0 [INFO] [stderr] Compiling i_float v1.15.0 [INFO] [stderr] Compiling i_key_sort v0.6.0 [INFO] [stderr] Compiling geographiclib-rs v0.2.7 [INFO] [stderr] Compiling sif-itree v0.4.1 [INFO] [stderr] Compiling float_next_after v1.0.0 [INFO] [stderr] Compiling thiserror-impl v2.0.18 [INFO] [stderr] Compiling i_shape v1.14.0 [INFO] [stderr] Compiling thiserror v2.0.18 [INFO] [stderr] Compiling getrandom v0.2.17 [INFO] [stderr] Compiling rand_core v0.6.4 [INFO] [stderr] Compiling rayon v1.11.0 [INFO] [stderr] Compiling rand_chacha v0.3.1 [INFO] [stderr] Compiling rand v0.8.5 [INFO] [stderr] Compiling rstar v0.12.2 [INFO] [stderr] Compiling approx v0.5.1 [INFO] [stderr] Compiling spade v2.15.0 [INFO] [stderr] Compiling earcutr v0.4.3 [INFO] [stderr] Compiling i_overlay v4.0.7 [INFO] [stderr] Compiling geo-types v0.7.18 [INFO] [stderr] Compiling geo v0.32.0 [INFO] [stderr] Compiling wagyu-rs v0.2.1 (/opt/rustwide/workdir) [INFO] [stderr] Finished `dev` profile [unoptimized + debuginfo] target(s) in 16.33s [INFO] running `Command { std: "docker" "inspect" "120611e55cade60238c2293745b5f355157d9e6821e694282021cf039b1e2d06", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "120611e55cade60238c2293745b5f355157d9e6821e694282021cf039b1e2d06", kill_on_drop: false }` [INFO] [stdout] 120611e55cade60238c2293745b5f355157d9e6821e694282021cf039b1e2d06 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] adb0c2f270fde9302995a1282617b7ea855ceee0a83bada74f4dd8fbd6155ac3 [INFO] running `Command { std: "docker" "start" "-a" "adb0c2f270fde9302995a1282617b7ea855ceee0a83bada74f4dd8fbd6155ac3", kill_on_drop: false }` [INFO] [stderr] Compiling serde_derive v1.0.228 [INFO] [stderr] Compiling serde v1.0.228 [INFO] [stderr] Compiling wagyu-rs v0.2.1 (/opt/rustwide/workdir) [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 13.87s [INFO] running `Command { std: "docker" "inspect" "adb0c2f270fde9302995a1282617b7ea855ceee0a83bada74f4dd8fbd6155ac3", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "adb0c2f270fde9302995a1282617b7ea855ceee0a83bada74f4dd8fbd6155ac3", kill_on_drop: false }` [INFO] [stdout] adb0c2f270fde9302995a1282617b7ea855ceee0a83bada74f4dd8fbd6155ac3 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+562dee4820c458d823175268e41601d4c060588a" "test" "--frozen", kill_on_drop: false }` [INFO] [stdout] fd32ff9663de4be06b041beb7dd4916be7dfb56f34409acb92490a402c037eba [INFO] running `Command { std: "docker" "start" "-a" "fd32ff9663de4be06b041beb7dd4916be7dfb56f34409acb92490a402c037eba", kill_on_drop: false }` [INFO] [stderr] Finished `test` profile [unoptimized + debuginfo] target(s) in 0.08s [INFO] [stderr] Running unittests src/lib.rs (/opt/rustwide/target/debug/deps/wagyu_rs-8df9638aa6ba6084) [INFO] [stdout] [INFO] [stdout] running 643 tests [INFO] [stdout] test active_edge_list::tests::get_current_x_for_horizontal_edge ... ok [INFO] [stdout] test active_edge_list::tests::get_current_x_for_sloped_edge ... ok [INFO] [stdout] test active_edge_list::tests::insert_maintains_sorted_order ... ok [INFO] [stdout] test active_edge_list::tests::insert_pair_inserts_both_bounds ... ok [INFO] [stdout] test active_edge_list::tests::get_current_x_for_vertical_edge ... ok [INFO] [stdout] test active_edge_list::tests::default_creates_empty_list ... ok [INFO] [stdout] test active_edge_list::tests::insert_pair_in_middle_of_existing_bounds ... ok [INFO] [stdout] test active_edge_list::tests::insert_single_bound_into_empty_list ... ok [INFO] [stdout] test active_edge_list::tests::insert_with_same_x_uses_slope_tiebreaker ... ok [INFO] [stdout] test active_edge_list::tests::left_neighbor_returns_none_for_first_element ... ok [INFO] [stdout] test active_edge_list::tests::left_neighbor_returns_previous_element ... ok [INFO] [stdout] test active_edge_list::tests::multiple_bounds_sorted_by_current_x ... ok [INFO] [stdout] test active_edge_list::tests::position_returns_correct_index ... ok [INFO] [stdout] test active_edge_list::tests::new_creates_empty_list ... ok [INFO] [stdout] test active_edge_list::tests::position_returns_none_for_absent_bound ... ok [INFO] [stdout] test active_edge_list::tests::remove_existing_bound_returns_true ... ok [INFO] [stdout] test active_edge_list::tests::remove_middle_bound_maintains_order ... ok [INFO] [stdout] test active_edge_list::tests::remove_nonexistent_bound_returns_false ... ok [INFO] [stdout] test active_edge_list::tests::right_neighbor_returns_next_element ... ok [INFO] [stdout] test active_edge_list::tests::swap_exchanges_bounds_at_positions ... ok [INFO] [stdout] test active_edge_list::tests::values_are_equal_with_exact_match ... ok [INFO] [stdout] test active_edge_list::tests::values_are_equal_within_epsilon ... ok [INFO] [stdout] test active_edge_list::tests::values_are_not_equal_outside_epsilon ... ok [INFO] [stdout] test active_edge_list::tests::right_neighbor_returns_none_for_last_element ... ok [INFO] [stdout] test almost_equal::tests::test_distance_between_equal_numbers ... ok [INFO] [stdout] test almost_equal::tests::test_clearly_different_values_are_not_almost_equal ... ok [INFO] [stdout] test almost_equal::tests::test_equal_values_are_almost_equal ... ok [INFO] [stdout] test almost_equal::tests::test_exact_comparison_with_zero_ulps ... ok [INFO] [stdout] test almost_equal::tests::test_distance_between_adjacent_numbers ... ok [INFO] [stdout] test almost_equal::tests::test_f32_beyond_ulp_tolerance ... ok [INFO] [stdout] test almost_equal::tests::test_f32_equal_values ... ok [INFO] [stdout] test almost_equal::tests::test_f32_within_ulp_tolerance ... ok [INFO] [stdout] test almost_equal::tests::test_infinity_equals_infinity ... ok [INFO] [stdout] test almost_equal::tests::test_nan_is_not_almost_equal_to_any_number ... ok [INFO] [stdout] test almost_equal::tests::test_infinity_helper_function ... ok [INFO] [stdout] test almost_equal::tests::test_values_within_ulp_tolerance ... ok [INFO] [stdout] test almost_equal::tests::test_nan_is_not_almost_equal_to_nan ... ok [INFO] [stdout] test almost_equal::tests::test_positive_infinity_not_equal_to_negative_infinity ... ok [INFO] [stdout] test active_edge_list::tests::insert_returns_correct_position ... ok [INFO] [stdout] test almost_equal::tests::test_sign_and_magnitude_conversion ... ok [INFO] [stdout] test bound::tests::bound_next_edge_returns_false_when_no_more_edges ... ok [INFO] [stdout] test almost_equal::tests::test_custom_ulp_tolerance ... ok [INFO] [stdout] test almost_equal::tests::test_values_beyond_ulp_tolerance ... ok [INFO] [stdout] test bound::tests::bound_ring_defaults_to_none ... ok [INFO] [stdout] test bound::tests::bound_is_horizontal_delegates_to_current_edge ... ok [INFO] [stdout] test almost_equal::tests::test_f32_nan ... ok [INFO] [stdout] test almost_equal::tests::test_positive_and_negative_zero_are_equal ... ok [INFO] [stdout] test bound::tests::bound_current_edge_returns_first_edge_initially ... ok [INFO] [stdout] test bound::tests::bound_next_edge_advances_to_next_edge ... ok [INFO] [stdout] test almost_equal::tests::test_f32_infinity ... ok [INFO] [stdout] test almost_equal::tests::test_small_negative_numbers ... ok [INFO] [stdout] test bubble_sort::tests::test_all_equal_elements ... ok [INFO] [stdout] test bubble_sort::tests::test_already_sorted ... ok [INFO] [stdout] test bubble_sort::tests::test_ascending_order ... ok [INFO] [stdout] test bound::tests::bound_with_i64_coordinates ... ok [INFO] [stdout] test bound::tests::edge_computes_dx_as_inverse_slope ... ok [INFO] [stdout] test bound::tests::edge_horizontal_has_infinite_dx ... ok [INFO] [stdout] test bound::tests::edge_is_horizontal_returns_false_for_non_horizontal_edge ... ok [INFO] [stdout] test bound::tests::edge_is_horizontal_returns_true_for_horizontal_edge ... ok [INFO] [stdout] test bound::tests::edge_negative_slope ... ok [INFO] [stdout] test bound::tests::edge_new_creates_edge_with_bot_and_top ... ok [INFO] [stdout] test bound::tests::edge_vertical_has_zero_dx ... ok [INFO] [stdout] test bound::tests::edge_with_i64_coordinates ... ok [INFO] [stdout] test bound::tests::bound_new_creates_bound_with_edges ... ok [INFO] [stdout] test bubble_sort::tests::test_bubble_sort_simple ... ok [INFO] [stdout] test bound::tests::bound_current_x_defaults_to_bot_x_of_first_edge ... ok [INFO] [stdout] test bubble_sort::tests::test_callback_can_modify_elements ... ok [INFO] [stdout] test bubble_sort::tests::test_descending_order ... ok [INFO] [stdout] test bubble_sort::tests::test_duplicates ... ok [INFO] [stdout] test bubble_sort::tests::test_single_element ... ok [INFO] [stdout] test bubble_sort::tests::test_stability ... ok [INFO] [stdout] test bubble_sort::tests::test_swap_callback_is_called ... ok [INFO] [stdout] test bubble_sort::tests::test_swap_callback_receives_correct_elements ... ok [INFO] [stdout] test bubble_sort::tests::test_empty_slice ... ok [INFO] [stdout] test bubble_sort::tests::test_two_elements_sorted ... ok [INFO] [stdout] test build_edges::tests::build_edge_list_complex_polygon ... ok [INFO] [stdout] test build_edges::tests::build_edge_list_edges_have_correct_orientation ... ok [INFO] [stdout] test bubble_sort::tests::test_two_elements_unsorted ... ok [INFO] [stdout] test build_edges::tests::build_edge_list_f64_coordinates ... ok [INFO] [stdout] test build_edges::tests::build_edge_list_removes_collinear_points ... ok [INFO] [stdout] test build_edges::tests::build_edge_list_horizontal_edge_orientation ... ok [INFO] [stdout] test bubble_sort::tests::test_reverse_sorted ... ok [INFO] [stdout] test build_edges::tests::build_edge_list_removes_duplicate_points ... ok [INFO] [stdout] test build_edges::tests::build_edge_list_returns_none_for_too_few_points ... ok [INFO] [stdout] test build_edges::tests::build_edge_list_returns_none_for_degenerate_line ... ok [INFO] [stdout] test build_edges::tests::build_edge_list_simple_square ... ok [INFO] [stdout] test build_edges::tests::build_edge_list_simple_triangle ... ok [INFO] [stdout] test build_edges::tests::build_edge_list_spike_removal ... ok [INFO] [stdout] test build_edges::tests::build_edge_list_negative_coordinates ... ok [INFO] [stdout] test build_edges::tests::build_edge_list_open_ring ... ok [INFO] [stdout] test build_edges::tests::point_between_on_vertical_line ... ok [INFO] [stdout] test build_edges::tests::point_not_between_at_endpoint_1 ... ok [INFO] [stdout] test build_edges::tests::point_not_between_at_endpoint_3 ... ok [INFO] [stdout] test build_edges::tests::point_not_between_outside_segment ... ok [INFO] [stdout] test build_edges::tests::point_between_on_diagonal ... ok [INFO] [stdout] test build_edges::tests::point_between_on_horizontal_line ... ok [INFO] [stdout] test build_edges::tests::point_not_between_same_endpoints ... ok [INFO] [stdout] test build_edges::tests::slopes_equal_4pt_parallel_diagonal_lines ... ok [INFO] [stdout] test build_edges::tests::slopes_equal_4pt_parallel_horizontal_lines ... ok [INFO] [stdout] test build_edges::tests::slopes_equal_4pt_parallel_vertical_lines ... ok [INFO] [stdout] test build_edges::tests::slopes_equal_horizontal_line ... ok [INFO] [stdout] test build_edges::tests::slopes_equal_f64_coordinates ... ok [INFO] [stdout] test build_edges::tests::slopes_equal_negative_slope ... ok [INFO] [stdout] test build_edges::tests::slopes_equal_vertical_line ... ok [INFO] [stdout] test build_edges::tests::slopes_not_equal_different_slopes ... ok [INFO] [stdout] test build_edges::tests::slopes_not_equal_4pt_perpendicular ... ok [INFO] [stdout] test build_edges::tests::slopes_not_equal_right_angle ... ok [INFO] [stdout] test build_local_minima_list::tests::add_linear_ring_bounds_have_edges ... ok [INFO] [stdout] test build_local_minima_list::tests::add_linear_ring_creates_local_minimum_for_square ... ok [INFO] [stdout] test build_edges::tests::slopes_equal_diagonal_line ... ok [INFO] [stdout] test build_local_minima_list::tests::add_linear_ring_multiple_rings_accumulate ... ok [INFO] [stdout] test build_local_minima_list::tests::add_linear_ring_returns_false_for_degenerate_ring ... ok [INFO] [stdout] test build_local_minima_list::tests::add_linear_ring_pentagon ... ok [INFO] [stdout] test build_local_minima_list::tests::add_linear_ring_sets_correct_polygon_type ... ok [INFO] [stdout] test build_local_minima_list::tests::add_linear_ring_with_all_collinear_points_returns_false ... ok [INFO] [stdout] test build_local_minima_list::tests::add_linear_ring_creates_local_minimum_for_triangle ... ok [INFO] [stdout] test build_local_minima_list::tests::add_linear_ring_with_negative_coordinates ... ok [INFO] [stdout] test build_local_minima_list::tests::create_bound_towards_maximum_single_edge ... ok [INFO] [stdout] test build_local_minima_list::tests::create_bound_towards_minimum_single_edge ... ok [INFO] [stdout] test build_local_minima_list::tests::fix_horizontals_empty_edges ... ok [INFO] [stdout] test build_local_minima_list::tests::add_linear_ring_works_with_i64_coordinates ... ok [INFO] [stdout] test build_local_minima_list::tests::fix_horizontals_single_edge ... ok [INFO] [stdout] test build_local_minima_list::tests::add_linear_ring_local_minimum_has_correct_y ... ok [INFO] [stdout] test build_local_minima_list::tests::local_minima_sorted_by_y_descending ... ok [INFO] [stdout] test build_local_minima_list::tests::move_horizontals_multiple_horizontals_reversed_order ... ok [INFO] [stdout] test build_local_minima_list::tests::add_linear_ring_with_horizontal_edge_at_minimum ... ok [INFO] [stdout] test build_local_minima_list::tests::move_horizontals_places_at_front_of_right ... ok [INFO] [stdout] test build_local_minima_list::tests::add_ring_to_local_minima_list_empty_edges ... ok [INFO] [stdout] test build_local_minima_list::tests::move_horizontals_no_horizontals_does_nothing ... ok [INFO] [stdout] test build_local_minima_list::tests::move_horizontals_reverses_horizontal_x_direction ... ok [INFO] [stdout] test build_local_minima_list::tests::move_horizontals_single_horizontal_moves_to_right ... ok [INFO] [stdout] test build_local_minima_list::tests::start_list_rotates_to_local_maximum ... ok [INFO] [stdout] test build_result::tests::assign_as_child_removes_from_old_parent ... ok [INFO] [stdout] test build_result::tests::assign_as_child_maintains_hierarchy_invariant ... ok [INFO] [stdout] test build_result::tests::assign_as_child_removes_from_top_level_rings ... ok [INFO] [stdout] test build_result::tests::build_polygon_skips_degenerate_exterior ... ok [INFO] [stdout] test build_result::tests::build_result_exterior_with_hole ... ok [INFO] [stdout] test build_result::tests::build_result_multiple_exterior_rings ... ok [INFO] [stdout] test build_result::tests::build_result_nested_rings_grandchildren_become_new_polygons ... ok [INFO] [stdout] test build_result::tests::build_result_reverse_output_reverses_winding ... ok [INFO] [stdout] test build_result::tests::build_result_single_exterior_ring ... ok [INFO] [stdout] test build_result::tests::build_result_empty_manager_returns_empty_multipolygon ... ok [INFO] [stdout] test build_result::tests::integration_complex_polygon_with_multiple_holes ... ok [INFO] [stdout] test build_result::tests::build_result_filters_degenerate_rings ... ok [INFO] [stdout] test build_result::tests::ring1_replaces_ring2_transfers_children_to_ring1 ... ok [INFO] [stdout] test build_result::tests::integration_separate_polygons_no_nesting ... ok [INFO] [stdout] test build_result::tests::ring1_replaces_ring2_with_none_moves_children_to_top_level ... ok [INFO] [stdout] test build_result::tests::ring_is_hole_detects_clockwise_as_hole ... ok [INFO] [stdout] test build_result::tests::ring1_replaces_ring2_removes_from_parent_children ... ok [INFO] [stdout] test build_result::tests::ring_manager_add_multiple_rings ... ok [INFO] [stdout] test build_result::tests::ring_manager_add_ring_assigns_index ... ok [INFO] [stdout] test build_result::tests::ring_manager_get_invalid_index_returns_none ... ok [INFO] [stdout] test build_result::tests::ring_manager_get_returns_ring ... ok [INFO] [stdout] test build_result::tests::ring_manager_new_is_empty ... ok [INFO] [stdout] test build_result::tests::ring_manager_set_parent_establishes_relationship ... ok [INFO] [stdout] test build_result::tests::ring_manager_top_level_rings_tracks_exteriors_without_parent ... ok [INFO] [stdout] test build_result::tests::ring_to_linestring_converts_points ... ok [INFO] [stdout] test build_result::tests::ring_to_linestring_already_closed_ring_not_doubled ... ok [INFO] [stdout] test build_result::tests::ring_to_linestring_reverse_reverses_point_order ... ok [INFO] [stdout] test config::tests::constants_match_cpp_values ... ok [INFO] [stdout] test config::tests::end_type_default_is_closed_polygon ... ok [INFO] [stdout] test config::tests::end_type_has_all_variants ... ok [INFO] [stdout] test config::tests::fill_type_default_is_even_odd ... ok [INFO] [stdout] test config::tests::fill_type_has_all_variants ... ok [INFO] [stdout] test config::tests::edge_side_has_left_and_right ... ok [INFO] [stdout] test config::tests::fill_type_is_copy_and_debug ... ok [INFO] [stdout] test build_result::tests::ring_to_linestring_empty_ring_returns_empty_linestring ... ok [INFO] [stdout] test config::tests::horizontal_direction_default_is_right_to_left ... ok [INFO] [stdout] test config::tests::horizontal_direction_has_both_variants ... ok [INFO] [stdout] test config::tests::join_type_default_is_square ... ok [INFO] [stdout] test config::tests::join_type_has_all_variants ... ok [INFO] [stdout] test config::tests::edge_side_default_is_left ... ok [INFO] [stdout] test bound::tests::bound_winding_counts_default_to_zero ... ok [INFO] [stdout] test config::tests::polygon_type_default_is_subject ... ok [INFO] [stdout] test config::tests::polygon_type_has_subject_and_clip_variants ... ok [INFO] [stdout] test debug::tests::test_log_format_scanbeam ... ok [INFO] [stdout] test config::tests::polygon_type_is_copy_and_debug ... ok [INFO] [stdout] test debug::tests::test_debug_disabled_by_default ... ok [INFO] [stdout] test golden::tests::test_empty_multi_polygons_equal ... ok [INFO] [stdout] test debug::tests::test_log_format_intersect ... ok [INFO] [stdout] test golden::tests::test_load_clip_square_fixture ... ok [INFO] [stdout] test golden::tests::test_list_difference_expected_files ... ok [INFO] [stdout] test golden::tests::test_load_expected_output ... ok [INFO] [stdout] test golden::tests::test_multi_polygons_equal_reordered ... ok [INFO] [stdout] test golden::tests::test_multi_polygons_equal_rotated_rings ... ok [INFO] [stdout] test golden::tests::test_load_clockwise_triangle_fixture ... ok [INFO] [stdout] test golden::tests::test_multi_polygons_not_equal_different_coords ... ok [INFO] [stdout] test golden::tests::test_normalize_polygon_sorts_holes ... ok [INFO] [stdout] test golden::tests::test_normalize_ring_lex_ordering ... ok [INFO] [stdout] test golden::tests::test_normalize_ring_rotation ... ok [INFO] [stdout] test golden::tests::test_parse_operation_from_filename ... ok [INFO] [stdout] test interrupt::tests::test_interrupt_check_resets_flag ... ok [INFO] [stdout] test interrupt::tests::test_interrupt_error_debug ... ok [INFO] [stdout] test interrupt::tests::test_interrupt_check_returns_ok_when_not_requested ... ok [INFO] [stdout] test interrupt::tests::test_interrupt_guard_default ... ok [INFO] [stdout] test interrupt::tests::test_interrupt_guard_resets_on_drop ... ok [INFO] [stdout] test interrupt::tests::test_interrupt_request_and_check ... ok [INFO] [stdout] test interrupt::tests::test_interrupt_reset ... ok [INFO] [stdout] test interrupt::tests::test_is_interrupt_requested_does_not_reset ... ok [INFO] [stdout] test interrupt::tests::test_multiple_requests_single_check ... ok [INFO] [stdout] test intersect::tests::intersect_list_can_be_created_empty ... ok [INFO] [stdout] test intersect::tests::intersect_list_can_be_sorted ... ok [INFO] [stdout] test interrupt::tests::test_interrupt_error_display ... ok [INFO] [stdout] test bound::tests::bound_with_clip_polygon_type ... ok [INFO] [stdout] test intersect::tests::intersect_list_can_push_nodes ... ok [INFO] [stdout] test intersect::tests::intersect_list_iter_works ... ok [INFO] [stdout] test intersect::tests::intersect_node_equal_wc2_sum_is_stable ... ok [INFO] [stdout] test intersect::tests::intersect_node_is_clone ... ok [INFO] [stdout] test intersect::tests::intersect_node_new_creates_node_with_point_and_indices ... ok [INFO] [stdout] test intersect_util::tests::build_intersect_list_empty_ael ... ok [INFO] [stdout] test intersect_util::tests::build_intersect_list_crossing_bounds ... ok [INFO] [stdout] test intersect_util::tests::build_intersect_list_non_crossing_bounds ... ok [INFO] [stdout] test intersect_util::tests::get_current_x_at_bottom ... ok [INFO] [stdout] test intersect_util::tests::build_intersect_list_single_bound ... ok [INFO] [stdout] test intersect::tests::intersect_node_sorts_by_y_descending ... ok [INFO] [stdout] test intersect::tests::intersect_node_wc2_sorting_differs_from_x_sorting ... ok [INFO] [stdout] test intersect::tests::intersect_node_equal_y_sorts_by_winding_count2_sum_descending ... ok [INFO] [stdout] test intersect_util::tests::get_current_x_at_midpoint ... ok [INFO] [stdout] test intersect_util::tests::get_current_x_at_top_y_returns_top_x ... ok [INFO] [stdout] test intersect_util::tests::get_current_x_at_top ... ok [INFO] [stdout] test intersect_util::tests::get_edge_intersection_finds_crossing ... ok [INFO] [stdout] test intersect::tests::intersect_node_with_different_indices ... ok [INFO] [stdout] test intersect_util::tests::get_edge_intersection_handles_horizontal ... ok [INFO] [stdout] test intersect_util::tests::get_edge_intersection_returns_none_for_parallel ... ok [INFO] [stdout] test intersect_util::tests::get_edge_intersection_returns_none_when_outside_segments ... ok [INFO] [stdout] test intersect_util::tests::is_even_odd_fill_type_subject_even_odd ... ok [INFO] [stdout] test intersect_util::tests::intersect_bounds_swaps_sides_when_both_contributing ... ok [INFO] [stdout] test intersect_util::tests::merge_update_loop_should_update_all_bounds_with_removed_ring ... ok [INFO] [stdout] test intersect_util::tests::round_point_handles_halfway ... ok [INFO] [stdout] test intersect_util::tests::swap_rings_exchanges_ring_indices ... ok [INFO] [stdout] test intersect_util::tests::is_even_odd_fill_type_clip ... ok [INFO] [stdout] test intersect_util::tests::minimal_x_pattern_crossing_detection ... ok [INFO] [stdout] test intersect_util::tests::round_point_handles_negative ... ok [INFO] [stdout] test intersect_util::tests::process_intersect_list_reorders_non_adjacent_intersections ... ok [INFO] [stdout] test intersect_util::tests::round_point_rounds_to_nearest_integer ... ok [INFO] [stdout] test intersect_util::tests::swap_sides_exchanges_edge_sides ... ok [INFO] [stdout] test intersect_util::tests::swap_rings_handles_none ... ok [INFO] [stdout] test intersect_util::tests::is_even_odd_fill_type_subject_non_zero ... ok [INFO] [stdout] test intersect_util::tests::update_current_x_updates_all_bounds ... ok [INFO] [stdout] test local_minimum::tests::local_minimum_list_is_vec_of_local_minima ... ok [INFO] [stdout] test local_minimum::tests::local_minimum_new_creates_with_bounds_and_y ... ok [INFO] [stdout] test local_minimum::tests::local_minimum_sorting_horizontal_comes_first_when_same_y ... ok [INFO] [stdout] test local_minimum::tests::local_minimum_sorting_by_y_descending ... ok [INFO] [stdout] test local_minimum::tests::local_minimum_with_horizontal_flag_true ... ok [INFO] [stdout] test intersect_util::tests::update_winding_counts_same_type_even_odd_swaps ... ok [INFO] [stdout] test local_minimum_util::tests::at_edge_top_returns_false_below_top_y ... ok [INFO] [stdout] test intersect_util::tests::update_winding_counts_different_type_updates_count2 ... ok [INFO] [stdout] test local_minimum_util::tests::initialize_lm_clears_ring_references ... ok [INFO] [stdout] test intersect::tests::intersect_node_debug_format ... ok [INFO] [stdout] test local_minimum_util::tests::at_edge_top_returns_true_at_top_y ... ok [INFO] [stdout] test local_minimum_util::tests::initialize_lm_resets_current_edge_index ... ok [INFO] [stdout] test intersect::tests::intersect_node_mixed_y_and_winding_count_sorting ... ok [INFO] [stdout] test local_minimum_util::tests::insert_local_minimum_adds_bounds_to_vector ... ok [INFO] [stdout] test intersect_util::tests::get_current_x_horizontal_returns_top_x ... ok [INFO] [stdout] test local_minimum_util::tests::next_edge_in_bound_returns_false_at_last_edge ... ok [INFO] [stdout] test local_minimum_util::tests::next_edge_in_bound_advances_and_adds_to_scanbeam ... ok [INFO] [stdout] test local_minimum_util::tests::update_bound_current_x_at_midpoint ... ok [INFO] [stdout] test point::tests::test_clone ... ok [INFO] [stdout] test local_minimum_util::tests::update_bound_current_x_at_top ... ok [INFO] [stdout] test point::tests::test_copy ... ok [INFO] [stdout] test point::tests::test_debug_format ... ok [INFO] [stdout] test point::tests::test_default_f64_is_origin ... ok [INFO] [stdout] test point::tests::test_default_is_origin ... ok [INFO] [stdout] test point::tests::test_equality_f64_points ... ok [INFO] [stdout] test point::tests::test_from_geo_coord_f64 ... ok [INFO] [stdout] test point::tests::test_equality_same_points ... ok [INFO] [stdout] test point::tests::test_from_geo_coord_i64 ... ok [INFO] [stdout] test point::tests::test_from_tuple_f64 ... ok [INFO] [stdout] test point::tests::test_inequality_different_x ... ok [INFO] [stdout] test point::tests::test_into_geo_coord ... ok [INFO] [stdout] test point::tests::test_from_tuple ... ok [INFO] [stdout] test point::tests::test_inequality_different_y ... ok [INFO] [stdout] test point::tests::test_into_tuple ... ok [INFO] [stdout] test point::tests::test_negative_f64_coordinates ... ok [INFO] [stdout] test point::tests::test_new_with_f64_coordinates ... ok [INFO] [stdout] test point::tests::test_negative_coordinates ... ok [INFO] [stdout] test point::tests::test_new_creates_point_with_given_coordinates ... ok [INFO] [stdout] test point::tests::test_point64_alias ... ok [INFO] [stdout] test process_horizontal::tests::current_edge_is_horizontal_returns_false ... ok [INFO] [stdout] test point::tests::test_pointf64_alias ... ok [INFO] [stdout] test process_horizontal::tests::current_edge_is_horizontal_returns_true ... ok [INFO] [stdout] test process_horizontal::tests::get_horizontal_direction_left_to_right ... ok [INFO] [stdout] test process_horizontal::tests::get_horizontal_direction_right_to_left ... ok [INFO] [stdout] test process_horizontal::tests::get_horizontal_extents_right_to_left ... ok [INFO] [stdout] test process_horizontal::tests::get_horizontal_extents_left_to_right ... ok [INFO] [stdout] test process_horizontal::tests::next_edge_would_be_horizontal_no_next ... ok [INFO] [stdout] test process_horizontal::tests::next_edge_would_be_horizontal_false ... ok [INFO] [stdout] test process_horizontal::tests::next_edge_would_be_horizontal_true ... ok [INFO] [stdout] test process_horizontal::tests::process_horizontal_dispatches_correctly_rtl ... ok [INFO] [stdout] test process_horizontal::tests::process_horizontal_dispatches_correctly_ltr ... ok [INFO] [stdout] test process_horizontal::tests::process_horizontal_left_to_right_no_intersections ... ok [INFO] [stdout] test process_horizontal::tests::process_horizontal_right_to_left_basic ... ok [INFO] [stdout] test process_horizontal::tests::process_horizontals_processes_horizontal ... ok [INFO] [stdout] test process_horizontal::tests::process_horizontals_skips_non_horizontal ... ok [INFO] [stdout] test process_horizontal::tests::update_all_current_x_updates_positions ... ok [INFO] [stdout] test process_maxima::tests::current_edge_is_horizontal_returns_false_for_non_horizontal ... ok [INFO] [stdout] test local_minimum_util::tests::insert_local_minimum_adds_to_ael ... ok [INFO] [stdout] test process_maxima::tests::current_edge_is_horizontal_returns_true_for_horizontal ... ok [INFO] [stdout] test local_minimum::tests::local_minimum_stores_bounds_correctly ... ok [INFO] [stdout] test process_maxima::tests::do_maxima_handles_adjacent_bounds ... ok [INFO] [stdout] test local_minimum::tests::local_minimum_with_i64_coordinates ... ok [INFO] [stdout] test local_minimum_util::tests::initialize_lm_sets_current_x_from_edge_bot ... ok [INFO] [stdout] test local_minimum_util::tests::initialize_lm_resets_winding_counts ... ok [INFO] [stdout] test process_maxima::tests::get_maxima_pair_returns_none_when_no_match ... ok [INFO] [stdout] test process_maxima::tests::is_intermediate_returns_false_at_maxima ... ok [INFO] [stdout] test process_maxima::tests::get_maxima_pair_finds_matching_top ... ok [INFO] [stdout] test local_minimum_util::tests::initialize_lm_sets_correct_sides ... ok [INFO] [stdout] test process_maxima::tests::do_maxima_removes_both_bounds_from_ael ... ok [INFO] [stdout] test process_maxima::tests::is_intermediate_returns_true_with_more_edges ... ok [INFO] [stdout] test process_maxima::tests::is_intermediate_returns_false_below_edge_top ... ok [INFO] [stdout] test process_maxima::tests::is_maxima_multi_edge_at_final_top ... ok [INFO] [stdout] test process_maxima::tests::is_maxima_returns_false_below_top ... ok [INFO] [stdout] test process_maxima::tests::is_maxima_returns_false_with_more_edges ... ok [INFO] [stdout] test process_maxima::tests::next_edge_is_horizontal_returns_false_when_no_next_edge ... ok [INFO] [stdout] test process_maxima::tests::next_edge_is_horizontal_returns_true_when_next_is_horizontal ... ok [INFO] [stdout] test process_maxima::tests::next_edge_is_horizontal_returns_false_when_next_is_not_horizontal ... ok [INFO] [stdout] test quick_clip::tests::test_degenerate_line ... ok [INFO] [stdout] test quick_clip::tests::test_inside_left_edge ... ok [INFO] [stdout] test quick_clip::tests::test_empty_ring ... ok [INFO] [stdout] test quick_clip::tests::test_inside_right_edge ... ok [INFO] [stdout] test quick_clip::tests::test_intersect_bottom_edge ... ok [INFO] [stdout] test process_maxima::tests::is_maxima_returns_true_at_last_edge_top ... ok [INFO] [stdout] test quick_clip::tests::test_inside_bottom_edge ... ok [INFO] [stdout] test quick_clip::tests::test_intersect_left_edge ... ok [INFO] [stdout] test quick_clip::tests::test_intersect_right_edge ... ok [INFO] [stdout] test quick_clip::tests::test_inside_top_edge ... ok [INFO] [stdout] test quick_clip::tests::test_quick_polygon_clip ... ok [INFO] [stdout] test quick_clip::tests::test_square_cut_at_bottom ... ok [INFO] [stdout] test quick_clip::tests::test_square_cut_at_left ... ok [INFO] [stdout] test quick_clip::tests::test_intersect_top_edge ... ok [INFO] [stdout] test quick_clip::tests::test_square_cut_at_right ... ok [INFO] [stdout] test quick_clip::tests::test_square_cut_at_top ... ok [INFO] [stdout] test quick_clip::tests::test_square_cut_at_top_and_bottom_right ... ok [INFO] [stdout] test quick_clip::tests::test_square_cut_at_top_right ... ok [INFO] [stdout] test quick_clip::tests::test_square_entirely_out_of_bounds ... ok [INFO] [stdout] test quick_clip::tests::test_square_entirely_within_bbox ... ok [INFO] [stdout] test quick_clip::tests::test_sticking_out_and_back_in ... ok [INFO] [stdout] test quick_clip::tests::test_triangle_inside ... ok [INFO] [stdout] test ring::tests::area_of_cw_unit_square_is_negative ... ok [INFO] [stdout] test ring::tests::area_of_empty_ring_is_zero ... ok [INFO] [stdout] test ring::tests::area_of_triangle ... ok [INFO] [stdout] test ring::tests::area_of_ccw_unit_square_is_positive ... ok [INFO] [stdout] test ring::tests::new_ring_has_no_children ... ok [INFO] [stdout] test ring::tests::add_child_adds_child_index ... ok [INFO] [stdout] test ring::tests::new_ring_has_zero_index_by_default ... ok [INFO] [stdout] test ring::tests::new_ring_is_empty ... ok [INFO] [stdout] test ring::tests::new_ring_is_not_a_hole_by_default ... ok [INFO] [stdout] test ring::tests::push_point_increases_len ... ok [INFO] [stdout] test ring::tests::set_hole_marks_ring_as_hole ... ok [INFO] [stdout] test ring::tests::set_parent_assigns_parent_index ... ok [INFO] [stdout] test ring::tests::set_ring_index_changes_index ... ok [INFO] [stdout] test ring_util::tests::bbox_from_empty_ring_returns_none ... ok [INFO] [stdout] test ring_util::tests::bbox_from_ring_returns_correct_bounds ... ok [INFO] [stdout] test ring_util::tests::box2_contains_box1_false_when_not_contained ... ok [INFO] [stdout] test ring_util::tests::box2_contains_box1_true_when_equal ... ok [INFO] [stdout] test ring_util::tests::box2_contains_box1_true_when_fully_contained ... ok [INFO] [stdout] test ring_util::tests::centroid_of_three_points_returns_center ... ok [INFO] [stdout] test ring_util::tests::centroid_of_three_points_small_ring_returns_zero ... ok [INFO] [stdout] test ring_util::tests::get_bottom_point_index_empty_returns_none ... ok [INFO] [stdout] test ring_util::tests::get_bottom_point_index_prefers_smaller_x_on_tie ... ok [INFO] [stdout] test ring_util::tests::get_bottom_point_index_returns_max_y ... ok [INFO] [stdout] test ring_util::tests::get_bottom_point_index_single_point ... ok [INFO] [stdout] test ring_util::tests::get_dx_negative_slope ... ok [INFO] [stdout] test ring_util::tests::get_dx_returns_infinity_for_horizontal_line ... ok [INFO] [stdout] test ring_util::tests::get_dx_returns_inverse_slope ... ok [INFO] [stdout] test ring_util::tests::get_dx_returns_zero_for_vertical_line ... ok [INFO] [stdout] test ring_util::tests::is_convex_reflex_vertex_returns_true ... ok [INFO] [stdout] test ring_util::tests::is_convex_returns_false_for_small_ring ... ok [INFO] [stdout] test ring_util::tests::is_convex_simple_convex_polygon_all_vertices_return_false ... ok [INFO] [stdout] test ring_util::tests::point_in_polygon_empty_ring_returns_outside ... ok [INFO] [stdout] test ring_util::tests::point_in_polygon_inside_returns_inside ... ok [INFO] [stdout] test ring_util::tests::point_in_polygon_just_outside_corner ... ok [INFO] [stdout] test ring_util::tests::point_in_polygon_on_edge_returns_on_polygon ... ok [INFO] [stdout] test ring_util::tests::point_in_polygon_on_vertex_returns_on_polygon ... ok [INFO] [stdout] test ring_util::tests::point_in_polygon_on_vertical_edge_returns_on_polygon ... ok [INFO] [stdout] test ring_util::tests::point_in_polygon_outside_returns_outside ... ok [INFO] [stdout] test ring_util::tests::point_in_polygon_triangle ... ok [INFO] [stdout] test ring_util::tests::ring_area_ccw_square_is_positive ... ok [INFO] [stdout] test ring_util::tests::ring_area_cw_square_is_negative ... ok [INFO] [stdout] test ring_util::tests::round_towards_max_rounds_half_to_ceil ... ok [INFO] [stdout] test ring_util::tests::round_towards_max_rounds_negative_half_to_ceil ... ok [INFO] [stdout] test ring_util::tests::round_towards_min_rounds_negative_half_to_floor ... ok [INFO] [stdout] test ring_util::tests::ring_area_empty_is_zero ... ok [INFO] [stdout] test ring::tests::new_ring_has_no_parent ... ok [INFO] [stdout] test ring_util::tests::round_towards_min_rounds_half_to_floor ... ok [INFO] [stdout] test ring_util::tests::round_towards_min_rounds_non_half_normally ... ok [INFO] [stdout] test ring_util::tests::round_towards_max_rounds_non_half_normally ... ok [INFO] [stdout] test ring_util::tests::value_is_zero_returns_false_for_nonzero ... ok [INFO] [stdout] test ring_util::tests::value_is_zero_returns_true_for_near_zero ... ok [INFO] [stdout] test ring_util::tests::values_are_equal_returns_false_for_different_values ... ok [INFO] [stdout] test ring_util::tests::value_is_zero_returns_true_for_zero ... ok [INFO] [stdout] test ring_util::tests::values_are_equal_returns_true_for_close_values ... ok [INFO] [stdout] test ring_util::tests::values_are_equal_returns_true_for_same_values ... ok [INFO] [stdout] test scanbeam::tests::test_empty_scanbeam_len_is_zero ... ok [INFO] [stdout] test scanbeam::tests::test_empty_scanbeam_peek_returns_none ... ok [INFO] [stdout] test scanbeam::tests::test_empty_scanbeam_pop_returns_none ... ok [INFO] [stdout] test scanbeam::tests::test_duplicate_mixed_with_unique ... ok [INFO] [stdout] test scanbeam::tests::test_clear_empties_scanbeam ... ok [INFO] [stdout] test scanbeam::tests::test_f64_coordinates ... ok [INFO] [stdout] test scanbeam::tests::test_insert_already_sorted_ascending ... ok [INFO] [stdout] test scanbeam::tests::test_insert_already_sorted_descending ... ok [INFO] [stdout] test scanbeam::tests::test_insert_single_value_len_is_one ... ok [INFO] [stdout] test scanbeam::tests::test_mixed_positive_and_negative ... ok [INFO] [stdout] test scanbeam::tests::test_multiple_values_pop_in_descending_order ... ok [INFO] [stdout] test scanbeam::tests::test_negative_values ... ok [INFO] [stdout] test scanbeam::tests::test_insert_single_value_not_empty ... ok [INFO] [stdout] test scanbeam::tests::test_peek_does_not_remove_value ... ok [INFO] [stdout] test scanbeam::tests::test_new_scanbeam_is_empty ... ok [INFO] [stdout] test scanbeam::tests::test_peek_returns_highest_value ... ok [INFO] [stdout] test scanbeam::tests::test_peek_returns_single_value ... ok [INFO] [stdout] test scanbeam::tests::test_with_capacity_creates_empty_scanbeam ... ok [INFO] [stdout] test snap_rounding::tests::build_hot_pixels_tests::build_hot_pixels_empty_minima_list_produces_empty_hot_pixels ... ok [INFO] [stdout] test snap_rounding::tests::build_hot_pixels_tests::build_hot_pixels_multi_edge_bound_collects_all_vertices ... ok [INFO] [stdout] test scanbeam::tests::test_pop_single_value_then_empty ... ok [INFO] [stdout] test scanbeam::tests::test_pop_returns_single_value ... ok [INFO] [stdout] test snap_rounding::tests::build_hot_pixels_tests::build_hot_pixels_multiple_minima_collects_all_vertices ... ok [INFO] [stdout] test snap_rounding::tests::build_hot_pixels_tests::build_hot_pixels_removes_duplicates ... ok [INFO] [stdout] test quick_clip::tests::test_square_entirely_enclosing_bbox ... ok [INFO] [stdout] test scanbeam::tests::test_duplicate_values_are_ignored ... ok [INFO] [stdout] test snap_rounding::tests::build_hot_pixels_tests::build_hot_pixels_resets_current_hp_idx ... ok [INFO] [stdout] test snap_rounding::tests::build_hot_pixels_tests::build_hot_pixels_single_minimum_collects_all_edge_vertices ... ok [INFO] [stdout] test intersect_util::tests::get_current_x_non_horizontal_at_top_y ... ok [INFO] [stdout] test intersect::tests::intersect_node_with_negative_coordinates ... ok [INFO] [stdout] test snap_rounding::tests::build_hot_pixels_tests::build_hot_pixels_sorts_by_y_descending_then_x_ascending ... ok [INFO] [stdout] test snap_rounding::tests::test_greater_than_equal_returns_false ... ok [INFO] [stdout] test snap_rounding::tests::test_greater_than_greater ... ok [INFO] [stdout] test snap_rounding::tests::test_greater_than_less_returns_false ... ok [INFO] [stdout] test snap_rounding::tests::test_greater_than_or_equal_greater ... ok [INFO] [stdout] test snap_rounding::tests::test_greater_than_or_equal_less ... ok [INFO] [stdout] test snap_rounding::tests::test_less_than_equal_returns_false ... ok [INFO] [stdout] test snap_rounding::tests::test_less_than_less ... ok [INFO] [stdout] test snap_rounding::tests::test_less_than_greater_returns_false ... ok [INFO] [stdout] test snap_rounding::tests::test_round_point_mixed_coordinates ... ok [INFO] [stdout] test snap_rounding::tests::test_round_point_non_half_values ... ok [INFO] [stdout] test snap_rounding::tests::test_round_point_whole_numbers ... ok [INFO] [stdout] test snap_rounding::tests::test_round_towards_max_half_rounds_up ... ok [INFO] [stdout] test snap_rounding::tests::test_round_towards_max_negative_half_rounds_up ... ok [INFO] [stdout] test snap_rounding::tests::test_round_towards_max_zero ... ok [INFO] [stdout] test snap_rounding::tests::test_round_towards_min_half_rounds_down ... ok [INFO] [stdout] test snap_rounding::tests::test_round_towards_min_non_half_uses_standard_rounding ... ok [INFO] [stdout] test snap_rounding::tests::test_round_towards_min_negative_half_rounds_down ... ok [INFO] [stdout] test snap_rounding::tests::test_large_values ... ok [INFO] [stdout] test snap_rounding::tests::test_rounding_same_for_non_half_values ... ok [INFO] [stdout] test snap_rounding::tests::test_rounding_symmetry_for_half_values ... ok [INFO] [stdout] test snap_rounding::tests::test_small_values_near_zero ... ok [INFO] [stdout] test snap_rounding::tests::test_value_is_zero_negative_zero ... ok [INFO] [stdout] test snap_rounding::tests::test_round_towards_min_zero ... ok [INFO] [stdout] test snap_rounding::tests::test_round_point_positive_coordinates ... ok [INFO] [stdout] test snap_rounding::tests::test_value_is_zero_non_zero_values ... ok [INFO] [stdout] test snap_rounding::tests::test_value_is_zero_positive_zero ... ok [INFO] [stdout] test snap_rounding::tests::test_values_are_equal_different_values ... ok [INFO] [stdout] test snap_rounding::tests::test_values_are_equal_infinity ... ok [INFO] [stdout] test snap_rounding::tests::test_values_are_equal_nan_is_never_equal ... ok [INFO] [stdout] test snap_rounding::tests::test_values_are_equal_positive_and_negative_zero ... ok [INFO] [stdout] test snap_rounding::tests::test_values_are_equal_very_close_values ... ok [INFO] [stdout] test snap_rounding::tests::test_values_very_close_to_half ... ok [INFO] [stdout] test snap_rounding::tests::test_values_are_equal_identical_values ... ok [INFO] [stdout] test snap_rounding::tests::test_wround_positive_values ... ok [INFO] [stdout] test snap_rounding::tests::test_wround_negative_values ... ok [INFO] [stdout] test snap_rounding::tests::test_values_are_equal_beyond_ulp_threshold ... ok [INFO] [stdout] test snap_rounding::tests::test_wround_whole_numbers ... ok [INFO] [stdout] test snap_rounding::tests::test_wround_zero ... ok [INFO] [stdout] test topology_correction::collinear_edge_tests::correct_collinear_edges_clean_ring_unchanged ... ok [INFO] [stdout] test topology_correction::collinear_edge_tests::correct_collinear_edges_disjoint_rings_unchanged ... ok [INFO] [stdout] test topology_correction::collinear_edge_tests::correct_collinear_edges_merges_two_rings_sharing_edge ... ok [INFO] [stdout] test topology_correction::collinear_edge_tests::correct_collinear_edges_no_op_on_empty_manager ... ok [INFO] [stdout] test topology_correction::collinear_edge_tests::correct_collinear_edges_removes_fully_degenerate_ring ... ok [INFO] [stdout] test topology_correction::collinear_edge_tests::correct_collinear_edges_removes_spike_at_ring_start ... ok [INFO] [stdout] test topology_correction::tests::assign_new_ring_parents_empty_new_rings_does_nothing ... ok [INFO] [stdout] test topology_correction::tests::assign_new_ring_parents_single_opposite_orientation_assigned_as_child ... ok [INFO] [stdout] test topology_correction::collinear_edge_tests::correct_collinear_edges_l_shaped_merge ... ok [INFO] [stdout] test topology_correction::collinear_edge_tests::correct_collinear_edges_three_rings_chain_merge ... ok [INFO] [stdout] test topology_correction::collinear_edge_tests::correct_collinear_edges_removes_multiple_spikes ... ok [INFO] [stdout] test topology_correction::tests::assign_new_ring_parents_single_same_orientation_assigned_as_sibling ... ok [INFO] [stdout] test topology_correction::collinear_edge_tests::correct_collinear_edges_removes_simple_spike ... ok [INFO] [stdout] test topology_correction::tests::compare_points_larger_y_comes_first ... ok [INFO] [stdout] test topology_correction::tests::compare_points_equal_points ... ok [INFO] [stdout] test topology_correction::tests::correct_chained_rings_disjoint_rings_unchanged ... ok [INFO] [stdout] test topology_correction::tests::compare_points_equal_y_smaller_x_comes_first ... ok [INFO] [stdout] test topology_correction::tests::correct_chained_rings_outer_and_hole_share_edge ... ignored, shared-edge merging not fully implemented yet [INFO] [stdout] test topology_correction::tests::correct_chained_rings_single_shared_point_no_merge ... ok [INFO] [stdout] test topology_correction::tests::correct_chained_rings_two_exteriors_sharing_single_point ... ok [INFO] [stdout] test topology_correction::tests::correct_chained_rings_two_exteriors_sharing_edge ... ok [INFO] [stdout] test topology_correction::tests::correct_ring_self_intersections_returns_true_when_split_occurred ... ok [INFO] [stdout] test topology_correction::tests::correct_ring_self_intersections_returns_true_for_clean_ring ... ok [INFO] [stdout] test topology_correction::tests::correct_ring_self_intersections_skips_already_corrected_ring ... ok [INFO] [stdout] test topology_correction::tests::correct_ring_self_intersections_marks_ring_as_corrected ... ok [INFO] [stdout] test topology_correction::tests::correct_self_intersection_in_ring_rejects_same_index ... ok [INFO] [stdout] test topology_correction::tests::correct_self_intersection_in_ring_rejects_different_rings ... ok [INFO] [stdout] test topology_correction::tests::correct_self_intersection_in_ring_rejects_ring_with_fewer_than_4_points ... ok [INFO] [stdout] test topology_correction::tests::correct_self_intersection_in_ring_splits_figure_8_into_two_rings ... ok [INFO] [stdout] test topology_correction::tests::correct_self_intersections_processes_all_rings ... ok [INFO] [stdout] test topology_correction::tests::correct_topology_clean_ring_unchanged_point_count ... ok [INFO] [stdout] test topology_correction::tests::correct_topology_establishes_parent_child_from_containment ... ok [INFO] [stdout] test topology_correction::tests::correct_topology_fixes_wrong_exterior_orientation ... ok [INFO] [stdout] test topology_correction::tests::correct_topology_fixes_wrong_hole_orientation ... ok [INFO] [stdout] test topology_correction::tests::correct_topology_handles_empty_manager ... ok [INFO] [stdout] test topology_correction::tests::correct_topology_removes_degenerate_rings ... ok [INFO] [stdout] test topology_correction::tests::correct_topology_preserves_correct_orientations ... ok [INFO] [stdout] test topology_correction::tests::correct_topology_handles_nested_hierarchy ... ok [INFO] [stdout] test topology_correction::tests::find_and_correct_repeated_points_no_duplicates_returns_empty ... ok [INFO] [stdout] test topology_correction::tests::find_duplicate_points_no_duplicates ... ok [INFO] [stdout] test topology_correction::tests::find_and_correct_repeated_points_finds_and_splits_figure_8 ... ok [INFO] [stdout] test topology_correction::tests::correct_topology_splits_figure_8_into_two_valid_rings ... ok [INFO] [stdout] test topology_correction::tests::find_duplicate_points_with_duplicates ... ok [INFO] [stdout] test topology_correction::tests::find_parent_in_tree_finds_direct_parent ... ok [INFO] [stdout] test topology_correction::tests::needs_orientation_reversal_exterior_with_negative_area_needs_reversal ... ok [INFO] [stdout] test topology_correction::tests::needs_orientation_reversal_exterior_with_positive_area_no_reversal ... ok [INFO] [stdout] test topology_correction::tests::needs_orientation_reversal_hole_with_negative_area_no_reversal ... ok [INFO] [stdout] test topology_correction::tests::needs_orientation_reversal_hole_with_positive_area_needs_reversal ... ok [INFO] [stdout] test topology_correction::tests::point_index_pair_new ... ok [INFO] [stdout] test topology_correction::tests::points_are_collinear_horizontal_line ... ok [INFO] [stdout] test topology_correction::tests::find_parent_in_tree_returns_none_when_no_parent_contains_ring ... ok [INFO] [stdout] test topology_correction::tests::find_parent_in_tree_with_no_candidate_returns_none ... ok [INFO] [stdout] test topology_correction::tests::points_are_collinear_non_collinear_points ... ok [INFO] [stdout] test topology_correction::tests::points_are_collinear_three_collinear_points ... ok [INFO] [stdout] test topology_correction::tests::points_are_collinear_vertical_line ... ok [INFO] [stdout] test topology_correction::tests::poly2_contains_poly1_outer_not_contained_in_inner ... ok [INFO] [stdout] test topology_correction::tests::reassign_children_if_necessary_leaves_outside_children_alone ... ok [INFO] [stdout] test topology_correction::tests::poly2_contains_poly1_inner_contained_in_outer ... ok [INFO] [stdout] test topology_correction::tests::remove_collinear_points_removes_middle_points ... ok [INFO] [stdout] test topology_correction::tests::reassign_children_if_necessary_moves_child_inside_new_ring ... ok [INFO] [stdout] test topology_correction::tests::remove_collinear_points_keeps_non_collinear ... ok [INFO] [stdout] test topology_correction::tests::ring_has_self_intersection_figure_eight ... ok [INFO] [stdout] test topology_correction::tests::reverse_ring_reverses_points ... ok [INFO] [stdout] test topology_correction::tests::ring_has_self_intersection_simple_square_no_intersection ... ok [INFO] [stdout] test topology_correction::tests::ring_has_self_intersection_small_ring_no_check ... ok [INFO] [stdout] test topology_correction::tests::segments_intersect_crossing_segments ... ok [INFO] [stdout] test topology_correction::tests::segments_intersect_non_intersecting ... ok [INFO] [stdout] test topology_correction::tests::segments_intersect_t_junction ... ok [INFO] [stdout] test topology_correction::tests::sort_ring_points_by_coord_sorts_y_descending_then_x_ascending ... ok [INFO] [stdout] test topology_correction::tests::sort_rings_empty_vec ... ok [INFO] [stdout] test topology_correction::tests::sort_rings_largest_to_smallest_orders_by_abs_area ... ok [INFO] [stdout] test topology_correction::tests::sort_rings_smallest_to_largest_orders_by_abs_area ... ok [INFO] [stdout] test topology_correction::tests::test_correct_tree_adds_demoted_hole_to_top_level ... ok [INFO] [stdout] test topology_correction::tests::segments_intersect_parallel_segments ... ok [INFO] [stdout] test topology_correction::tests::test_correct_tree_removes_degenerate_rings_less_than_3_points ... ok [INFO] [stdout] test topology_correction::tests::test_correct_tree_clears_parent_when_demoting_hole ... ok [INFO] [stdout] test topology_correction::tests::test_correct_tree_removes_zero_area_rings ... ok [INFO] [stdout] test topology_correction::tests::test_merge_rings_reassigns_contained_children_to_new_ring ... ok [INFO] [stdout] test topology_correction::tests::test_process_single_intersection_swaps_hole_origin_with_exterior_in_ilist ... ok [INFO] [stdout] test topology_correction::tests::test_merge_rings_transfers_children_of_absorbed_ring ... ok [INFO] [stdout] test topology_correction::tests::test_origin_is_hole_correct_after_swap ... ok [INFO] [stdout] test util::tests::test_area_line_not_a_ring ... ok [INFO] [stdout] test util::tests::test_area_larger_square ... ok [INFO] [stdout] test util::tests::test_area_triangle ... ok [INFO] [stdout] test util::tests::test_area_unit_square_ccw ... ok [INFO] [stdout] test util::tests::test_area_unit_square_cw ... ok [INFO] [stdout] test util::tests::test_greater_than_equal_is_false ... ok [INFO] [stdout] test util::tests::test_greater_than_less_is_false ... ok [INFO] [stdout] test util::tests::test_greater_than_or_equal_equal ... ok [INFO] [stdout] test util::tests::test_greater_than_or_equal_greater ... ok [INFO] [stdout] test golden::tests::golden_test_intersection_clockwise_polygon - should panic ... ok [INFO] [stdout] test util::tests::test_greater_than_or_equal_less ... ok [INFO] [stdout] test util::tests::test_greater_than_true ... ok [INFO] [stdout] test util::tests::test_less_than_equal_is_false ... ok [INFO] [stdout] test util::tests::test_less_than_true ... ok [INFO] [stdout] test util::tests::test_slopes_equal_3pts_with_i32 ... ok [INFO] [stdout] test util::tests::test_less_than_greater_is_false ... ok [INFO] [stdout] test util::tests::test_slopes_equal_collinear_horizontal ... ok [INFO] [stdout] test util::tests::test_slopes_equal_different_slopes ... ok [INFO] [stdout] test util::tests::test_slopes_equal_collinear_diagonal ... ok [INFO] [stdout] test util::tests::test_slopes_equal_no_overflow ... ok [INFO] [stdout] test util::tests::test_slopes_equal_not_collinear ... ok [INFO] [stdout] test util::tests::test_slopes_equal_parallel_lines ... ok [INFO] [stdout] test util::tests::test_slopes_equal_same_line ... ok [INFO] [stdout] test util::tests::test_value_is_zero_for_zero ... ok [INFO] [stdout] test util::tests::test_value_is_zero_for_nonzero ... ok [INFO] [stdout] test util::tests::test_values_are_equal_different_values ... ok [INFO] [stdout] test util::tests::test_values_are_equal_same_values ... ok [INFO] [stdout] test golden::tests::golden_test_union_clockwise_polygon - should panic ... ok [INFO] [stdout] test util::tests::test_values_are_equal_positive_negative_zero ... ok [INFO] [stdout] test golden::tests::golden_test_difference_clockwise_polygon - should panic ... ok [INFO] [stdout] test util::tests::test_wround_f64 ... ok [INFO] [stdout] test util::tests::test_wround_negative ... ok [INFO] [stdout] test util::tests::test_wround_i32 ... ok [INFO] [stdout] test util::tests::test_wround_positive ... ok [INFO] [stdout] test util::tests::test_wround_zero ... ok [INFO] [stdout] test vatti::tests::test_execute_vatti_empty ... ok [INFO] [stdout] test vatti::tests::test_execute_vatti_crossing_edges_detected ... ok [INFO] [stdout] test vatti::tests::test_execute_vatti_difference_operation ... ok [INFO] [stdout] test vatti::tests::test_execute_vatti_nonzero_fill ... ok [INFO] [stdout] test vatti::tests::test_execute_vatti_multiple_lm_sorted_by_y ... ok [INFO] [stdout] test vatti::tests::test_execute_vatti_intersection_operation ... ok [INFO] [stdout] test util::tests::test_slopes_equal_collinear_vertical ... ok [INFO] [stdout] test vatti::tests::test_execute_vatti_positive_fill ... ok [INFO] [stdout] test vatti::tests::test_execute_vatti_scanbeam_includes_lm_y_values ... ok [INFO] [stdout] test vatti::tests::test_execute_vatti_single_lm_bounds_reach_maxima ... ok [INFO] [stdout] test vatti::tests::test_execute_vatti_union_operation ... ok [INFO] [stdout] test vatti::tests::test_execute_vatti_single_lm_processes_scanbeam ... ok [INFO] [stdout] test vatti::tests::test_execute_vatti_processes_lower_lm_first ... ok [INFO] [stdout] test local_minimum_util::tests::insert_local_minimum_adds_tops_to_scanbeam ... ok [INFO] [stdout] test wagyu::tests::shared_point_union_two_squares_touching_at_corner ... ok [INFO] [stdout] test wagyu::tests::shared_edge_union_two_adjacent_unit_squares ... ok [INFO] [stdout] test wagyu::tests::test_wagyu_clear ... ok [INFO] [stdout] test wagyu::tests::shared_edge_union_two_triangles_sharing_base ... ok [INFO] [stdout] test wagyu::tests::test_wagyu_default ... ok [INFO] [stdout] test wagyu::tests::test_wagyu_get_bounds_empty ... ok [INFO] [stdout] test wagyu::tests::minimal_intersection_two_overlapping_squares ... ok [INFO] [stdout] test wagyu::tests::minimal_union_two_overlapping_squares_for_comparison ... ok [INFO] [stdout] test wagyu::tests::test_wagyu_new ... ok [INFO] [stdout] test winding::tests::is_contributing_difference_clip_inside_subject ... ok [INFO] [stdout] test winding::tests::is_contributing_difference_subject_outside_clip ... ok [INFO] [stdout] test winding::tests::is_contributing_difference_subject_inside_clip ... ok [INFO] [stdout] test winding::tests::is_contributing_even_odd_fill_any_winding_count ... ok [INFO] [stdout] test winding::tests::is_contributing_intersection_negative_alt_fill ... ok [INFO] [stdout] test winding::tests::is_contributing_intersection_non_zero_inside_other ... ok [INFO] [stdout] test winding::tests::is_contributing_intersection_non_zero_outside_other ... ok [INFO] [stdout] test winding::tests::is_contributing_negative_fill_only_negative_winding ... ok [INFO] [stdout] test winding::tests::is_contributing_non_zero_fill_winding_count_not_one ... ok [INFO] [stdout] test winding::tests::is_contributing_positive_fill_only_positive_winding ... ok [INFO] [stdout] test winding::tests::is_contributing_union_non_zero_inside_other ... ok [INFO] [stdout] test winding::tests::is_contributing_union_non_zero_outside_other ... ok [INFO] [stdout] test winding::tests::is_contributing_union_positive_alt_fill ... ok [INFO] [stdout] test winding::tests::is_contributing_xor_always_returns_true ... ok [INFO] [stdout] test winding::tests::is_even_odd_alt_fill_type_clip_checks_subject_fill ... ok [INFO] [stdout] test winding::tests::is_even_odd_alt_fill_type_subject_checks_clip_fill ... ok [INFO] [stdout] test winding::tests::is_even_odd_fill_type_clip_with_even_odd ... ok [INFO] [stdout] test winding::tests::is_even_odd_fill_type_clip_with_non_zero ... ok [INFO] [stdout] test winding::tests::is_even_odd_fill_type_subject_with_even_odd ... ok [INFO] [stdout] test winding::tests::is_even_odd_fill_type_subject_with_non_zero ... ok [INFO] [stdout] test winding::tests::set_winding_count_clip_after_subject_non_zero ... ok [INFO] [stdout] test winding::tests::set_winding_count_first_bound_in_ael ... ok [INFO] [stdout] test winding::tests::set_winding_count_opposite_winding_deltas ... ok [INFO] [stdout] test wagyu::tests::test_wagyu_reverse_rings ... ok [INFO] [stdout] test winding::tests::set_winding_count_second_subject_bound_even_odd ... ok [INFO] [stdout] test winding::tests::set_winding_count_subject_after_clip_non_zero ... ok [INFO] [stdout] test winding::tests::set_winding_count_subject_after_two_clips_even_odd_alt ... ok [INFO] [stdout] test topology_correction::tests::sort_ring_points_by_coord_empty_ring_returns_empty ... ok [INFO] [stdout] test util::tests::test_area_empty_ring ... ok [INFO] [stdout] test wagyu::tests::test_partial_min_max ... ok [INFO] [stdout] test winding::tests::set_winding_count_first_bound_negative_delta ... ok [INFO] [stdout] test winding::tests::set_winding_count_second_subject_bound_non_zero ... ok [INFO] [stdout] test process_horizontal::tests::process_horizontal_left_to_right_basic ... ok [INFO] [stdout] test local_minimum_util::tests::update_bound_current_x_at_bottom ... ok [INFO] [stdout] test snap_rounding::tests::test_greater_than_or_equal_equal ... ok [INFO] [stdout] test snap_rounding::tests::test_round_point_negative_coordinates ... ok [INFO] [stdout] test snap_rounding::tests::test_round_towards_max_non_half_uses_standard_rounding ... ok [INFO] [stdout] test topology_correction::tests::correct_self_intersections_processes_smallest_rings_first ... ok [INFO] [stdout] test topology_correction::tests::correct_self_intersections_returns_true_when_rings_visited ... ok [INFO] [stdout] test wagyu::tests::test_add_degenerate_ring ... ok [INFO] [stdout] test wagyu::tests::test_execute_empty ... ok [INFO] [stdout] test winding::tests::is_contributing_difference_clip_outside_subject ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 642 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.22s [INFO] [stdout] [INFO] [stderr] Running tests/golden.rs (/opt/rustwide/target/debug/deps/golden-dee5c58184e37724) [INFO] [stdout] [INFO] [stdout] running 148 tests [INFO] [stdout] test difference_clockwise_polygon ... ok [INFO] [stdout] test difference_clockwise_polygon_clockwise_hole ... ok [INFO] [stdout] test difference_clockwise_polygon_counter_clockwise_hole ... ok [INFO] [stdout] test difference_counter_clockwise_polygon ... ok [INFO] [stdout] test difference_multi_polygon_with_duplicate_polygon ... ok [INFO] [stdout] test difference_counter_clockwise_polygon_counter_clockwise_hole ... ok [INFO] [stdout] test difference_multi_polygon_with_shared_edge ... ok [INFO] [stdout] test difference_multipolygon_both_clockwise ... ok [INFO] [stdout] test difference_multi_polygon_with_spikes ... ok [INFO] [stdout] test difference_counter_clockwise_polygon_clockwise_hole ... ok [INFO] [stdout] test difference_multipolygon_both_counter_clockwise ... ok [INFO] [stdout] test difference_nested_multi_polygon_outer_clockwise_inner_counter_clockwise ... ok [INFO] [stdout] test difference_nested_multi_polygon_outer_clockwise_inner_clockwise ... ok [INFO] [stdout] test difference_nested_multi_polygon_outer_clockwise_inner_clockwise_hole_clockwise ... ok [INFO] [stdout] test difference_multipolygon_overlap_different_orientations ... ok [INFO] [stdout] test difference_nested_multi_polygon_outer_counter_clockwise_inner_clockwise ... ok [INFO] [stdout] test difference_nested_multi_polygon_outer_counter_clockwise_inner_counter_clockwise ... ok [INFO] [stdout] test difference_nested_multi_polygon_outer_clockwise_inner_counter_clockwise_hole_clockwise ... ok [INFO] [stdout] test difference_nested_multi_polygon_outer_counter_clockwise_inner_clockwise_hole_counter_clockwise ... ok [INFO] [stdout] test difference_nested_multi_polygon_outer_counter_clockwise_inner_counter_clockwise_hole_counter_clockwise ... ok [INFO] [stdout] test difference_nested_multi_polygon_outer_counter_clockwise_inner_clockwise_hole_clockwise ... ok [INFO] [stdout] test difference_polygon_covered_with_hole ... ok [INFO] [stdout] test difference_polygon_with_hole_shared_edge ... ok [INFO] [stdout] test difference_polygon_two_intersecting_holes_and_self_intersection ... ok [INFO] [stdout] test difference_nested_multi_polygon_outer_clockwise_inner_counter_clockwise_hole_counter_clockwise ... ok [INFO] [stdout] test difference_overlapping_multi_polygon ... ok [INFO] [stdout] test difference_nested_multi_polygon_outer_counter_clockwise_inner_counter_clockwise_hole_clockwise ... ok [INFO] [stdout] test difference_polygon_with_exterior_hole ... ok [INFO] [stdout] test intersection_clockwise_polygon ... ok [INFO] [stdout] test intersection_clockwise_polygon_counter_clockwise_hole ... ok [INFO] [stdout] test intersection_clockwise_polygon_clockwise_hole ... ok [INFO] [stdout] test difference_polygon_with_two_holes_outside_exterior_ring ... ok [INFO] [stdout] test difference_polygon_with_double_nested_holes ... ok [INFO] [stdout] test difference_polygon_with_spike ... ok [INFO] [stdout] test intersection_counter_clockwise_polygon ... ok [INFO] [stdout] test difference_polygon_no_interior ... ok [INFO] [stdout] test intersection_counter_clockwise_polygon_clockwise_hole ... ok [INFO] [stdout] test difference_polygon_two_intersecting_holes ... ok [INFO] [stdout] test intersection_counter_clockwise_polygon_counter_clockwise_hole ... ok [INFO] [stdout] test difference_polygon_with_extending_hole ... ok [INFO] [stdout] test intersection_multi_polygon_with_duplicate_polygon ... ok [INFO] [stdout] test difference_polygon_with_hole_with_shared_point ... ok [INFO] [stdout] test difference_nested_multi_polygon_outer_clockwise_inner_clockwise_hole_counter_clockwise ... ok [INFO] [stdout] test intersection_multi_polygon_with_shared_edge ... ok [INFO] [stdout] test difference_self_intersecting_ring_polygon ... ok [INFO] [stdout] test intersection_multi_polygon_with_spikes ... ok [INFO] [stdout] test intersection_multipolygon_both_counter_clockwise ... ok [INFO] [stdout] test intersection_multipolygon_both_clockwise ... ok [INFO] [stdout] test intersection_nested_multi_polygon_outer_clockwise_inner_clockwise ... ok [INFO] [stdout] test intersection_multipolygon_overlap_different_orientations ... ok [INFO] [stdout] test intersection_nested_multi_polygon_outer_clockwise_inner_clockwise_hole_counter_clockwise ... ok [INFO] [stdout] test intersection_nested_multi_polygon_outer_clockwise_inner_clockwise_hole_clockwise ... ok [INFO] [stdout] test intersection_polygon_covered_with_hole ... ok [INFO] [stdout] test intersection_polygon_no_interior ... ok [INFO] [stdout] test intersection_nested_multi_polygon_outer_counter_clockwise_inner_clockwise_hole_clockwise ... ok [INFO] [stdout] test intersection_nested_multi_polygon_outer_counter_clockwise_inner_counter_clockwise_hole_counter_clockwise ... ok [INFO] [stdout] test intersection_nested_multi_polygon_outer_clockwise_inner_counter_clockwise ... ok [INFO] [stdout] test intersection_nested_multi_polygon_outer_clockwise_inner_counter_clockwise_hole_clockwise ... ok [INFO] [stdout] test intersection_nested_multi_polygon_outer_clockwise_inner_counter_clockwise_hole_counter_clockwise ... ok [INFO] [stdout] test intersection_nested_multi_polygon_outer_counter_clockwise_inner_clockwise_hole_counter_clockwise ... ok [INFO] [stdout] test intersection_polygon_two_intersecting_holes ... ok [INFO] [stdout] test intersection_nested_multi_polygon_outer_counter_clockwise_inner_counter_clockwise_hole_clockwise ... ok [INFO] [stdout] test intersection_nested_multi_polygon_outer_counter_clockwise_inner_counter_clockwise ... ok [INFO] [stdout] test intersection_overlapping_multi_polygon ... ok [INFO] [stdout] test intersection_polygon_with_double_nested_holes ... ok [INFO] [stdout] test intersection_nested_multi_polygon_outer_counter_clockwise_inner_clockwise ... ok [INFO] [stdout] test intersection_polygon_two_intersecting_holes_and_self_intersection ... ok [INFO] [stdout] test intersection_polygon_with_extending_hole ... ok [INFO] [stdout] test intersection_polygon_with_exterior_hole ... ok [INFO] [stdout] test intersection_polygon_with_spike ... ok [INFO] [stdout] test intersection_self_intersecting_ring_polygon ... ok [INFO] [stdout] test intersection_polygon_with_two_holes_outside_exterior_ring ... ok [INFO] [stdout] test intersection_polygon_with_hole_shared_edge ... ok [INFO] [stdout] test union_clockwise_polygon ... ok [INFO] [stdout] test union_clockwise_polygon_clockwise_hole ... ok [INFO] [stdout] test union_clockwise_polygon_counter_clockwise_hole ... ok [INFO] [stdout] test union_counter_clockwise_polygon ... ok [INFO] [stdout] test intersection_polygon_with_hole_with_shared_point ... ok [INFO] [stdout] test union_counter_clockwise_polygon_counter_clockwise_hole ... ok [INFO] [stdout] test union_multi_polygon_with_duplicate_polygon ... ok [INFO] [stdout] test union_multi_polygon_with_shared_edge ... ok [INFO] [stdout] test union_nested_multi_polygon_outer_clockwise_inner_counter_clockwise ... ok [INFO] [stdout] test union_nested_multi_polygon_outer_counter_clockwise_inner_clockwise_hole_counter_clockwise ... ok [INFO] [stdout] test union_counter_clockwise_polygon_clockwise_hole ... ok [INFO] [stdout] test union_nested_multi_polygon_outer_counter_clockwise_inner_counter_clockwise_hole_clockwise ... ok [INFO] [stdout] test union_multi_polygon_with_spikes ... ok [INFO] [stdout] test union_nested_multi_polygon_outer_counter_clockwise_inner_clockwise_hole_clockwise ... ok [INFO] [stdout] test union_nested_multi_polygon_outer_counter_clockwise_inner_counter_clockwise_hole_counter_clockwise ... ok [INFO] [stdout] test union_nested_multi_polygon_outer_clockwise_inner_counter_clockwise_hole_clockwise ... ok [INFO] [stdout] test union_overlapping_multi_polygon ... ok [INFO] [stdout] test union_multipolygon_both_clockwise ... ok [INFO] [stdout] test union_polygon_covered_with_hole ... ok [INFO] [stdout] test union_multipolygon_both_counter_clockwise ... ok [INFO] [stdout] test union_multipolygon_overlap_different_orientations ... ok [INFO] [stdout] test union_polygon_with_extending_hole ... ok [INFO] [stdout] test union_polygon_with_hole_shared_edge ... ok [INFO] [stdout] test union_nested_multi_polygon_outer_clockwise_inner_clockwise ... ok [INFO] [stdout] test union_polygon_no_interior ... ok [INFO] [stdout] test union_polygon_with_hole_with_shared_point ... ok [INFO] [stdout] test union_nested_multi_polygon_outer_clockwise_inner_clockwise_hole_clockwise ... ok [INFO] [stdout] test union_polygon_with_spike ... ok [INFO] [stdout] test union_polygon_two_intersecting_holes ... ok [INFO] [stdout] test union_nested_multi_polygon_outer_clockwise_inner_clockwise_hole_counter_clockwise ... ok [INFO] [stdout] test union_nested_multi_polygon_outer_counter_clockwise_inner_clockwise ... ok [INFO] [stdout] test union_polygon_two_intersecting_holes_and_self_intersection ... ok [INFO] [stdout] test union_nested_multi_polygon_outer_counter_clockwise_inner_counter_clockwise ... ok [INFO] [stdout] test union_nested_multi_polygon_outer_clockwise_inner_counter_clockwise_hole_counter_clockwise ... ok [INFO] [stdout] test union_polygon_with_double_nested_holes ... ok [INFO] [stdout] test union_polygon_with_exterior_hole ... ok [INFO] [stdout] test union_self_intersecting_ring_polygon ... ok [INFO] [stdout] test union_polygon_with_two_holes_outside_exterior_ring ... ok [INFO] [stdout] test xor_counter_clockwise_polygon_clockwise_hole ... ok [INFO] [stdout] test xor_counter_clockwise_polygon ... ok [INFO] [stdout] test xor_clockwise_polygon ... ok [INFO] [stdout] test xor_clockwise_polygon_clockwise_hole ... ok [INFO] [stdout] test xor_multipolygon_both_clockwise ... ok [INFO] [stdout] test xor_multi_polygon_with_duplicate_polygon ... ok [INFO] [stdout] test xor_clockwise_polygon_counter_clockwise_hole ... ok [INFO] [stdout] test xor_multipolygon_both_counter_clockwise ... ok [INFO] [stdout] test xor_nested_multi_polygon_outer_clockwise_inner_counter_clockwise ... ok [INFO] [stdout] test xor_multipolygon_overlap_different_orientations ... ok [INFO] [stdout] test xor_nested_multi_polygon_outer_clockwise_inner_clockwise ... ok [INFO] [stdout] test xor_multi_polygon_with_spikes ... ok [INFO] [stdout] test xor_counter_clockwise_polygon_counter_clockwise_hole ... ok [INFO] [stdout] test xor_nested_multi_polygon_outer_clockwise_inner_clockwise_hole_clockwise ... ok [INFO] [stdout] test xor_polygon_covered_with_hole ... ok [INFO] [stdout] test xor_nested_multi_polygon_outer_counter_clockwise_inner_clockwise_hole_clockwise ... ok [INFO] [stdout] test xor_polygon_no_interior ... ok [INFO] [stdout] test xor_multi_polygon_with_shared_edge ... ok [INFO] [stdout] test xor_nested_multi_polygon_outer_clockwise_inner_clockwise_hole_counter_clockwise ... ok [INFO] [stdout] test xor_nested_multi_polygon_outer_counter_clockwise_inner_counter_clockwise_hole_counter_clockwise ... ok [INFO] [stdout] test xor_nested_multi_polygon_outer_clockwise_inner_counter_clockwise_hole_counter_clockwise ... ok [INFO] [stdout] test xor_nested_multi_polygon_outer_counter_clockwise_inner_clockwise ... ok [INFO] [stdout] test xor_nested_multi_polygon_outer_clockwise_inner_counter_clockwise_hole_clockwise ... ok [INFO] [stdout] test xor_nested_multi_polygon_outer_counter_clockwise_inner_clockwise_hole_counter_clockwise ... ok [INFO] [stdout] test xor_polygon_with_double_nested_holes ... ok [INFO] [stdout] test xor_nested_multi_polygon_outer_counter_clockwise_inner_counter_clockwise ... ok [INFO] [stdout] test xor_nested_multi_polygon_outer_counter_clockwise_inner_counter_clockwise_hole_clockwise ... ok [INFO] [stdout] test xor_overlapping_multi_polygon ... ok [INFO] [stdout] test xor_polygon_with_exterior_hole ... ok [INFO] [stdout] test xor_polygon_with_hole_shared_edge ... ok [INFO] [stdout] test xor_polygon_with_hole_with_shared_point ... ok [INFO] [stdout] test xor_polygon_with_extending_hole ... ok [INFO] [stdout] test xor_polygon_two_intersecting_holes ... ok [INFO] [stdout] test xor_polygon_two_intersecting_holes_and_self_intersection ... ok [INFO] [stdout] test xor_self_intersecting_ring_polygon ... ok [INFO] [stdout] test xor_polygon_with_spike ... ok [INFO] [stdout] test xor_polygon_with_two_holes_outside_exterior_ring ... ok [INFO] [stdout] [INFO] [stderr] Running tests/hot_pixel_insertion.rs (/opt/rustwide/target/debug/deps/hot_pixel_insertion-b1f8275d5ef5e3ff) [INFO] [stdout] test result: ok. 148 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.04s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 4 tests [INFO] [stdout] test union_shared_vertical_edge_preserves_hot_pixel ... ignored, Known limitation: vertical edge overlap produces separate polygons [INFO] [stdout] test intersection_touching_at_corner_handles_hot_pixel ... ok [INFO] [stdout] test issue_36_union_shared_horizontal_edge_preserves_hot_pixel ... ok [INFO] [stdout] test xor_shared_edge_preserves_hot_pixel ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/issue_106_clip_bounds.rs (/opt/rustwide/target/debug/deps/issue_106_clip_bounds-44af213a1717202c) [INFO] [stdout] [INFO] [stdout] running 6 tests [INFO] [stdout] test issue_106_all_output_coords_within_clip_bounds ... ok [INFO] [stdout] test issue_106_minimal_u_shape_direct_coords ... ok [INFO] [stdout] test issue_106_u_shape_intersection_drops_left_arm ... ok [INFO] [stdout] test issue_106_two_separate_rectangles_both_preserved ... ok [INFO] [stdout] test issue_106_u_shape_offset_from_clip_edges ... ok [INFO] [stdout] test issue_106_u_shape_union_for_comparison ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 6 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/issue_72_minimal.rs (/opt/rustwide/target/debug/deps/issue_72_minimal-9d31082c4038b5a1) [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test xor_corner_touching_triangles_stay_separate ... ok [INFO] [stdout] test xor_polygon_with_intersecting_holes_against_square ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/issue_80_collinear_merge.rs (/opt/rustwide/target/debug/deps/issue_80_collinear_merge-6327dc349fa246a3) [INFO] [stdout] [INFO] [stdout] running 2 tests [INFO] [stdout] test union_adjacent_squares_produces_rectangle ... ok [INFO] [stdout] test union_subject_clip_produces_valid_geometry ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 2 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stderr] Running tests/real_world.rs (/opt/rustwide/target/debug/deps/real_world-d9dc5e30ce390b80) [INFO] [stdout] [INFO] [stdout] running 10 tests [INFO] [stdout] test real_world_buildings_load_test ... ok [INFO] [stdout] test real_world_buildings_difference_pairwise ... ok [INFO] [stdout] test real_world_buildings_all_operations_random_pairs ... ok [INFO] [stdout] test real_world_buildings_union_area_invariant ... ok [INFO] [stdout] test real_world_buildings_union_pairwise ... ok [INFO] [stdout] test real_world_buildings_intersection_pairwise ... ok [INFO] [stdout] test real_world_buildings_xor_pairwise ... ok [INFO] [stdout] test real_world_wetlands_load_test ... ok [INFO] [stdout] test real_world_wetlands_all_operations ... ok [INFO] [stderr] Running tests/wc2_sorting.rs (/opt/rustwide/target/debug/deps/wc2_sorting-64aea4f4e8112c53) [INFO] [stdout] test real_world_wetlands_union_pairwise ... ok [INFO] [stderr] Running tests/xor_ring_orientation.rs (/opt/rustwide/target/debug/deps/xor_ring_orientation-ff69573644c9712d) [INFO] [stdout] [INFO] [stdout] test result: ok. 10 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 1.08s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 3 tests [INFO] [stdout] test overlapping_clips_with_subject ... ok [INFO] [stdout] test multiple_clips_produce_same_y_intersections ... ok [INFO] [stdout] test sorting_fix_regression_simple_intersection ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 8 tests [INFO] [stdout] test xor_contained_polygon_produces_hole ... ok [INFO] [stdout] test xor_depth_based_orientation_correction ... ok [INFO] [stdout] test xor_handles_clockwise_input ... ok [INFO] [stdout] test xor_multipolygon_produces_separate_exteriors ... ok [INFO] [stdout] test xor_non_overlapping_squares_produces_two_polygons ... ok [INFO] [stdout] test xor_complex_nesting_correct_parent_assignment ... ok [INFO] [stdout] test xor_overlapping_squares_cancels_overlap ... ok [INFO] [stdout] test xor_identical_squares_produces_empty ... ok [INFO] [stderr] Doc-tests wagyu_rs [INFO] [stdout] [INFO] [stdout] test result: ok. 8 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.13s [INFO] [stdout] [INFO] [stdout] [INFO] [stdout] running 39 tests [INFO] [stdout] test src/debug.rs - debug (line 27) ... ignored [INFO] [stdout] test src/lib.rs - (line 14) ... ignored [INFO] [stdout] test src/interrupt.rs - interrupt::interrupt_request (line 68) ... ok [INFO] [stdout] test src/interrupt.rs - interrupt::InterruptGuard (line 144) ... ok [INFO] [stdout] test src/bubble_sort.rs - bubble_sort::bubble_sort (line 33) ... ok [INFO] [stdout] test src/bubble_sort.rs - bubble_sort::bubble_sort_simple (line 97) ... ok [INFO] [stdout] test src/almost_equal.rs - almost_equal::almost_equal (line 114) ... ok [INFO] [stdout] test src/scanbeam.rs - scanbeam::Scanbeam::clear (line 201) ... ok [INFO] [stdout] test src/scanbeam.rs - scanbeam::Scanbeam::insert (line 85) ... ok [INFO] [stdout] test src/point.rs - point::Point (line 21) ... ok [INFO] [stdout] test src/almost_equal.rs - almost_equal::almost_equal_ulps (line 139) ... ok [INFO] [stdout] test src/scanbeam.rs - scanbeam::Scanbeam (line 21) ... ok [INFO] [stdout] test src/scanbeam.rs - scanbeam::Scanbeam::is_empty (line 157) ... ok [INFO] [stdout] test src/interrupt.rs - interrupt (line 14) ... ok [INFO] [stdout] test src/interrupt.rs - interrupt::interrupt_check (line 107) ... ok [INFO] [stdout] test src/quick_clip.rs - quick_clip::quick_lr_clip (line 162) ... ok [INFO] [stdout] test src/snap_rounding.rs - snap_rounding::value_is_zero (line 106) ... ok [INFO] [stdout] test src/scanbeam.rs - scanbeam::Scanbeam::len (line 175) ... ok [INFO] [stdout] test src/point.rs - point::Point::new (line 47) ... ok [INFO] [stdout] test src/scanbeam.rs - scanbeam::Scanbeam::new (line 47) ... ok [INFO] [stdout] test src/scanbeam.rs - scanbeam::Scanbeam::peek (line 139) ... ok [INFO] [stdout] test src/snap_rounding.rs - snap_rounding::round_towards_max (line 240) ... ok [INFO] [stdout] test src/wagyu.rs - wagyu (line 10) ... ignored [INFO] [stdout] test src/wagyu.rs - wagyu::Wagyu::execute (line 232) ... ignored [INFO] [stdout] test src/scanbeam.rs - scanbeam::Scanbeam::with_capacity (line 65) ... ok [INFO] [stdout] test src/snap_rounding.rs - snap_rounding::greater_than_or_equal (line 122) ... ok [INFO] [stdout] test src/snap_rounding.rs - snap_rounding::round_point (line 265) ... ok [INFO] [stdout] test src/snap_rounding.rs - snap_rounding::less_than (line 154) ... ok [INFO] [stdout] test src/scanbeam.rs - scanbeam::Scanbeam::pop (line 117) ... ok [INFO] [stdout] test src/snap_rounding.rs - snap_rounding::values_are_equal (line 51) ... ok [INFO] [stdout] test src/util.rs - util::value_is_zero (line 44) ... ok [INFO] [stdout] test src/snap_rounding.rs - snap_rounding::round_towards_min (line 204) ... ok [INFO] [stdout] test src/util.rs - util::area (line 102) ... ok [INFO] [stdout] test src/snap_rounding.rs - snap_rounding::greater_than (line 138) ... ok [INFO] [stdout] test src/util.rs - util::values_are_equal (line 28) ... ok [INFO] [stdout] test src/util.rs - util::slopes_equal_3pts (line 174) ... ok [INFO] [stdout] test src/util.rs - util::slopes_equal_4pts (line 213) ... ok [INFO] [stdout] test src/util.rs - util::wround (line 250) ... ok [INFO] [stdout] test src/snap_rounding.rs - snap_rounding::wround (line 173) ... ok [INFO] [stdout] [INFO] [stdout] test result: ok. 35 passed; 0 failed; 4 ignored; 0 measured; 0 filtered out; finished in 1.91s [INFO] [stdout] [INFO] running `Command { std: "docker" "inspect" "fd32ff9663de4be06b041beb7dd4916be7dfb56f34409acb92490a402c037eba", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "fd32ff9663de4be06b041beb7dd4916be7dfb56f34409acb92490a402c037eba", kill_on_drop: false }` [INFO] [stdout] fd32ff9663de4be06b041beb7dd4916be7dfb56f34409acb92490a402c037eba