[INFO] fetching crate oxiphysics-viz 0.1.2...
[INFO] testing oxiphysics-viz-0.1.2 against 1.97.0-beta.6+cargoflags=--release for beta-1.98-release-3
[INFO] extracting crate oxiphysics-viz 0.1.2 into /workspace/builds/worker-7-tc1/source
[INFO] started tweaking crates.io crate oxiphysics-viz 0.1.2
[INFO] finished tweaking crates.io crate oxiphysics-viz 0.1.2
[INFO] tweaked toml for crates.io crate oxiphysics-viz 0.1.2 written to /workspace/builds/worker-7-tc1/source/Cargo.toml
[INFO] validating manifest of crates.io crate oxiphysics-viz 0.1.2 on toolchain 1.97.0-beta.6
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate crates.io crate oxiphysics-viz 0.1.2 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" "+1.97.0-beta.6" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Updating crates.io index
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]  Downloading crates ...
[INFO] [stderr]   Downloaded wgpu-types v29.0.3
[INFO] [stderr]   Downloaded raw-window-metal v1.1.0
[INFO] [stderr]   Downloaded wgpu-naga-bridge v29.0.3
[INFO] [stderr]   Downloaded wayland-sys v0.31.11
[INFO] [stderr]   Downloaded gpu-descriptor v0.3.2
[INFO] [stderr]   Downloaded wgpu-core-deps-windows-linux-android v29.0.3
[INFO] [stderr]   Downloaded range-alloc v0.1.5
[INFO] [stderr]   Downloaded glutin_wgl_sys v0.6.1
[INFO] [stderr]   Downloaded wgpu-core-deps-emscripten v29.0.3
[INFO] [stderr]   Downloaded gpu-descriptor-types v0.2.0
[INFO] [stderr]   Downloaded pollster v0.4.0
[INFO] [stderr]   Downloaded nalgebra-macros v0.3.0
[INFO] [stderr]   Downloaded renderdoc-sys v1.1.0
[INFO] [stderr]   Downloaded wasm-bindgen-futures v0.4.72
[INFO] [stderr]   Downloaded wgpu-core-deps-apple v29.0.3
[INFO] [stderr]   Downloaded bit-set v0.9.1
[INFO] [stderr]   Downloaded presser v0.3.1
[INFO] [stderr]   Downloaded khronos-egl v6.0.0
[INFO] [stderr]   Downloaded spirv v0.4.0+sdk-1.4.341.0
[INFO] [stderr]   Downloaded gpu-allocator v0.28.0
[INFO] [stderr]   Downloaded xml-rs v0.8.28
[INFO] [stderr]   Downloaded codespan-reporting v0.13.1
[INFO] [stderr]   Downloaded simba v0.9.1
[INFO] [stderr]   Downloaded matrixmultiply v0.3.10
[INFO] [stderr]   Downloaded safe_arch v0.7.4
[INFO] [stderr]   Downloaded wide v0.7.33
[INFO] [stderr]   Downloaded glam v0.17.3
[INFO] [stderr]   Downloaded glam v0.16.0
[INFO] [stderr]   Downloaded glam v0.15.2
[INFO] [stderr]   Downloaded glam v0.14.0
[INFO] [stderr]   Downloaded glow v0.17.0
[INFO] [stderr]   Downloaded glam v0.19.0
[INFO] [stderr]   Downloaded glam v0.18.0
[INFO] [stderr]   Downloaded glam v0.20.5
[INFO] [stderr]   Downloaded wgpu v29.0.3
[INFO] [stderr]   Downloaded objc2-metal v0.3.2
[INFO] [stderr]   Downloaded glam v0.23.0
[INFO] [stderr]   Downloaded glam v0.22.0
[INFO] [stderr]   Downloaded glam v0.24.2
[INFO] [stderr]   Downloaded wgpu-core v29.0.3
[INFO] [stderr]   Downloaded glam v0.25.0
[INFO] [stderr]   Downloaded wgpu-hal v29.0.3
[INFO] [stderr]   Downloaded nalgebra v0.34.2
[INFO] [stderr]   Downloaded glam v0.27.0
[INFO] [stderr]   Downloaded glam v0.28.0
[INFO] [stderr]   Downloaded ash v0.38.0+1.3.281
[INFO] [stderr]   Downloaded glam v0.29.3
[INFO] [stderr]   Downloaded oxiphysics-gpu v0.1.2
[INFO] [stderr]   Downloaded web-sys v0.3.99
[INFO] [stderr]   Downloaded naga v29.0.3
[INFO] [stderr]   Downloaded glam v0.30.10
[INFO] [stderr]   Downloaded glam v0.32.1
[INFO] [stderr]   Downloaded glam v0.31.1
[INFO] [stderr]   Downloaded oxiphysics-core v0.1.2
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-7-tc1/target:/opt/rustwide/target:rw,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" "-m" "1610612736" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:00c5645b54fe3ce5dae1417175e3c7fb6a6646c021d554ecd63a097b8b9f3602" "sleep" "infinity", kill_on_drop: false }`
[INFO] [stdout] 1e3fe8a0b78ee461b3ac964d2b76f17f959ec5f3b0a79ee152ee71de5aaaefa2
[INFO] running `Command { std: "docker" "start" "1e3fe8a0b78ee461b3ac964d2b76f17f959ec5f3b0a79ee152ee71de5aaaefa2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1e3fe8a0b78ee461b3ac964d2b76f17f959ec5f3b0a79ee152ee71de5aaaefa2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1e3fe8a0b78ee461b3ac964d2b76f17f959ec5f3b0a79ee152ee71de5aaaefa2" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "1e3fe8a0b78ee461b3ac964d2b76f17f959ec5f3b0a79ee152ee71de5aaaefa2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1e3fe8a0b78ee461b3ac964d2b76f17f959ec5f3b0a79ee152ee71de5aaaefa2" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "build" "--frozen" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling autocfg v1.5.1
[INFO] [stderr]    Compiling libm v0.2.16
[INFO] [stderr]    Compiling cfg_aliases v0.2.1
[INFO] [stderr]    Compiling libc v0.2.186
[INFO] [stderr]    Compiling thiserror v2.0.18
[INFO] [stderr]    Compiling bitflags v2.13.0
[INFO] [stderr]    Compiling libloading v0.8.9
[INFO] [stderr]    Compiling syn v2.0.117
[INFO] [stderr]    Compiling zerocopy v0.8.50
[INFO] [stderr]    Compiling log v0.4.32
[INFO] [stderr]    Compiling foldhash v0.2.0
[INFO] [stderr]    Compiling naga v29.0.3
[INFO] [stderr]    Compiling hashbrown v0.16.1
[INFO] [stderr]    Compiling bit-vec v0.9.1
[INFO] [stderr]    Compiling unicode-width v0.2.2
[INFO] [stderr]    Compiling hashbrown v0.17.1
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]    Compiling ash v0.38.0+1.3.281
[INFO] [stderr]    Compiling wayland-sys v0.31.11
[INFO] [stderr]    Compiling codespan-reporting v0.13.1
[INFO] [stderr]    Compiling bit-set v0.9.1
[INFO] [stderr]    Compiling spirv v0.4.0+sdk-1.4.341.0
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling arrayvec v0.7.6
[INFO] [stderr]    Compiling rustc-hash v1.1.0
[INFO] [stderr]    Compiling foldhash v0.1.5
[INFO] [stderr]    Compiling indexmap v2.14.0
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling khronos-egl v6.0.0
[INFO] [stderr]    Compiling raw-window-handle v0.6.2
[INFO] [stderr]    Compiling unicode-ident v1.0.24
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling dlib v0.5.3
[INFO] [stderr]    Compiling gpu-descriptor-types v0.2.0
[INFO] [stderr]    Compiling wgpu-hal v29.0.3
[INFO] [stderr]    Compiling paste v1.0.15
[INFO] [stderr]    Compiling presser v0.3.1
[INFO] [stderr]    Compiling gpu-descriptor v0.3.2
[INFO] [stderr]    Compiling ordered-float v5.3.0
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling matrixmultiply v0.3.10
[INFO] [stderr]    Compiling renderdoc-sys v1.1.0
[INFO] [stderr]    Compiling glow v0.17.0
[INFO] [stderr]    Compiling profiling v1.0.18
[INFO] [stderr]    Compiling approx v0.5.1
[INFO] [stderr]    Compiling num-integer v0.1.46
[INFO] [stderr]    Compiling crossbeam-epoch v0.9.18
[INFO] [stderr]    Compiling num-complex v0.4.6
[INFO] [stderr]    Compiling wgpu-core v29.0.3
[INFO] [stderr]    Compiling litrs v1.0.0
[INFO] [stderr]    Compiling rayon-core v1.13.0
[INFO] [stderr]    Compiling rawpointer v0.2.1
[INFO] [stderr]    Compiling crossbeam-deque v0.8.6
[INFO] [stderr]    Compiling num-rational v0.4.2
[INFO] [stderr]    Compiling getrandom v0.4.2
[INFO] [stderr]    Compiling wgpu v29.0.3
[INFO] [stderr]    Compiling document-features v0.2.12
[INFO] [stderr]    Compiling typenum v1.20.1
[INFO] [stderr]    Compiling bytemuck_derive v1.10.2
[INFO] [stderr]    Compiling thiserror-impl v2.0.18
[INFO] [stderr]    Compiling zerocopy-derive v0.8.50
[INFO] [stderr]    Compiling nalgebra-macros v0.3.0
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling rand v0.10.1
[INFO] [stderr]    Compiling bytemuck v1.25.0
[INFO] [stderr]    Compiling wgpu-types v29.0.3
[INFO] [stderr]    Compiling safe_arch v0.7.4
[INFO] [stderr]    Compiling either v1.16.0
[INFO] [stderr]    Compiling rayon v1.12.0
[INFO] [stderr]    Compiling wide v0.7.33
[INFO] [stderr]    Compiling pollster v0.4.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling simba v0.9.1
[INFO] [stderr]    Compiling half v2.7.1
[INFO] [stderr]    Compiling nalgebra v0.34.2
[INFO] [stderr]    Compiling gpu-allocator v0.28.0
[INFO] [stderr]    Compiling oxiphysics-core v0.1.2
[INFO] [stderr]    Compiling wgpu-naga-bridge v29.0.3
[INFO] [stderr]    Compiling wgpu-core-deps-windows-linux-android v29.0.3
[INFO] [stderr]    Compiling oxiphysics-gpu v0.1.2
[INFO] [stderr]    Compiling oxiphysics-viz v0.1.2 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 8m 13s
[INFO] running `Command { std: "docker" "inspect" "1e3fe8a0b78ee461b3ac964d2b76f17f959ec5f3b0a79ee152ee71de5aaaefa2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1e3fe8a0b78ee461b3ac964d2b76f17f959ec5f3b0a79ee152ee71de5aaaefa2" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--no-run" "--message-format=json" "--release", kill_on_drop: false }`
[INFO] [stderr]    Compiling oxiphysics-viz v0.1.2 (/opt/rustwide/workdir)
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 1m 25s
[INFO] running `Command { std: "docker" "inspect" "1e3fe8a0b78ee461b3ac964d2b76f17f959ec5f3b0a79ee152ee71de5aaaefa2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "exec" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "RUSTDOCFLAGS=--cap-lints=warn" "-w" "/opt/rustwide/workdir" "--user" "0:0" "1e3fe8a0b78ee461b3ac964d2b76f17f959ec5f3b0a79ee152ee71de5aaaefa2" "/opt/rustwide/cargo-home/bin/cargo" "+1.97.0-beta.6" "test" "--frozen" "--release", kill_on_drop: false }`
[INFO] [stderr]     Finished `release` profile [optimized] target(s) in 0.25s
[INFO] [stderr]      Running unittests src/lib.rs (/opt/rustwide/target/release/deps/oxiphysics_viz-40ab2b582bdbba35)
[INFO] [stdout] 
[INFO] [stdout] running 4114 tests
[INFO] [stdout] test advanced_rendering::tests::bvh_ray_triangle_hit ... ok
[INFO] [stdout] test advanced_rendering::tests::aabb_surface_area_unit_cube ... ok
[INFO] [stdout] test advanced_rendering::tests::bvh_triangle_aabb ... ok
[INFO] [stdout] test advanced_rendering::tests::aabb_ray_miss ... ok
[INFO] [stdout] test advanced_rendering::tests::bvh_ray_triangle_miss ... ok
[INFO] [stdout] test advanced_rendering::tests::deferred_shading_has_all_slots ... ok
[INFO] [stdout] test advanced_rendering::tests::environment_map_incomplete_by_default ... ok
[INFO] [stdout] test advanced_rendering::tests::environment_map_roughness_to_mip ... ok
[INFO] [stdout] test advanced_rendering::tests::light_cluster_begin_frame_resets ... ok
[INFO] [stdout] test advanced_rendering::tests::gi_add_and_find_nearest_probe ... ok
[INFO] [stdout] test advanced_rendering::tests::deferred_shading_memory_estimate_positive ... ok
[INFO] [stdout] test advanced_rendering::tests::occlusion_culling_frustum_inside ... ok
[INFO] [stdout] test advanced_rendering::tests::aabb_centroid_unit_cube ... ok
[INFO] [stdout] test advanced_rendering::tests::light_cluster_num_clusters ... ok
[INFO] [stdout] test advanced_rendering::tests::light_cluster_depth_to_slice_clamp ... ok
[INFO] [stdout] test advanced_rendering::tests::light_cluster_index ... ok
[INFO] [stdout] test advanced_rendering::tests::aabb_ray_hit ... ok
[INFO] [stdout] test advanced_rendering::tests::occlusion_culling_frustum_outside ... ok
[INFO] [stdout] test advanced_rendering::tests::occlusion_culling_hiz_levels ... ok
[INFO] [stdout] test advanced_rendering::tests::pbr_material_default_is_white_dielectric ... ok
[INFO] [stdout] test advanced_rendering::tests::pbr_material_f0_dielectric_ior_1_5 ... ok
[INFO] [stdout] test advanced_rendering::tests::pbr_material_f0_effective_metallic ... ok
[INFO] [stdout] test advanced_rendering::tests::pbr_material_is_emissive ... ok
[INFO] [stdout] test advanced_rendering::tests::pbr_material_metallic_preset ... ok
[INFO] [stdout] test advanced_rendering::tests::post_process_aces_range ... ok
[INFO] [stdout] test advanced_rendering::tests::post_process_exposure_multiplier ... ok
[INFO] [stdout] test advanced_rendering::tests::post_process_reinhard_monotone ... ok
[INFO] [stdout] test advanced_rendering::tests::post_process_active_passes_default ... ok
[INFO] [stdout] test advanced_rendering::tests::sh9_probe_evaluate_returns_float ... ok
[INFO] [stdout] test advanced_rendering::tests::shadow_map_csm_4_cascades ... ok
[INFO] [stdout] test advanced_rendering::tests::shadow_map_spot_one_layer ... ok
[INFO] [stdout] test advanced_rendering::tests::shadow_map_csm_splits_monotone ... ok
[INFO] [stdout] test advanced_rendering::tests::ssr_applies_to_smooth_surface ... ok
[INFO] [stdout] test advanced_rendering::tests::ssr_edge_weight_corner ... ok
[INFO] [stdout] test advanced_rendering::tests::ssr_edge_weight_center ... ok
[INFO] [stdout] test advanced_rendering::tests::voxel_grid_voxel_size ... ok
[INFO] [stdout] test animation::tests::test_bezier_cubic_endpoints ... ok
[INFO] [stdout] test animation::tests::test_bezier_cubic_symmetry ... ok
[INFO] [stdout] test advanced_rendering::tests::texture_handle_none_is_none ... ok
[INFO] [stdout] test animation::tests::test_catmull_rom_tangent_symmetric ... ok
[INFO] [stdout] test animation::tests::test_channel_duration ... ok
[INFO] [stdout] test animation::tests::test_channel_ease_in_out_monotone ... ok
[INFO] [stdout] test animation::tests::test_catmull_rom_tangent_flat ... ok
[INFO] [stdout] test animation::tests::test_channel_ease_out_monotone ... ok
[INFO] [stdout] test animation::tests::test_channel_empty_returns_zero ... ok
[INFO] [stdout] test animation::tests::test_channel_cubic_spline_endpoints ... ok
[INFO] [stdout] test animation::tests::test_channel_linear_clamp_before ... ok
[INFO] [stdout] test animation::tests::test_channel_linear_clamp_after ... ok
[INFO] [stdout] test animation::tests::test_channel_single_keyframe ... ok
[INFO] [stdout] test animation::tests::test_channel_sort_by_time ... ok
[INFO] [stdout] test animation::tests::test_channel_step_end ... ok
[INFO] [stdout] test animation::tests::test_clip_channel_count ... ok
[INFO] [stdout] test animation::tests::test_channel_ease_in_monotone ... ok
[INFO] [stdout] test animation::tests::test_channel_linear_midpoint ... ok
[INFO] [stdout] test animation::tests::test_channel_step_start ... ok
[INFO] [stdout] test animation::tests::test_clip_evaluate_all ... ok
[INFO] [stdout] test animation::tests::test_clip_loop_wraps ... ok
[INFO] [stdout] test animation::tests::test_clip_ping_pong_backward ... ok
[INFO] [stdout] test animation::tests::test_clip_ping_pong_forward ... ok
[INFO] [stdout] test animation::tests::test_clip_ping_pong_zero_duration ... ok
[INFO] [stdout] test animation::tests::test_cubic_hermite_endpoints ... ok
[INFO] [stdout] test animation::tests::test_distance3_unit ... ok
[INFO] [stdout] test animation::tests::test_distance3_zero ... ok
[INFO] [stdout] test animation::tests::test_ease_in_cubic_endpoints ... ok
[INFO] [stdout] test animation::tests::test_ease_in_elastic_endpoints ... ok
[INFO] [stdout] test animation::tests::test_ease_in_out_cubic_endpoints ... ok
[INFO] [stdout] test animation::tests::test_ease_in_out_cubic_fn_endpoints ... ok
[INFO] [stdout] test animation::tests::test_ease_in_out_cubic_midpoint_is_half ... ok
[INFO] [stdout] test animation::tests::test_ease_in_out_quad_fn_endpoints ... ok
[INFO] [stdout] test animation::tests::test_ease_in_out_quad_midpoint ... ok
[INFO] [stdout] test animation::tests::test_ease_in_out_quad_fn_midpoint ... ok
[INFO] [stdout] test animation::tests::test_ease_in_quad_endpoints ... ok
[INFO] [stdout] test animation::tests::test_ease_linear_identity ... ok
[INFO] [stdout] test animation::tests::test_cubic_hermite_midpoint_zero_tangents ... ok
[INFO] [stdout] test animation::tests::test_ease_out_bounce_endpoints ... ok
[INFO] [stdout] test animation::tests::test_ease_in_expo_at_zero ... ok
[INFO] [stdout] test animation::tests::test_ease_in_out_back_endpoints ... ok
[INFO] [stdout] test animation::tests::test_ease_out_cubic_endpoints ... ok
[INFO] [stdout] test animation::tests::test_ease_in_expo_at_one ... ok
[INFO] [stdout] test animation::tests::test_ease_out_quad_endpoints ... ok
[INFO] [stdout] test animation::tests::test_easing_output_in_range ... ok
[INFO] [stdout] test animation::tests::test_ease_out_elastic_endpoints ... ok
[INFO] [stdout] test animation::tests::test_clip_loop_zero_duration ... ok
[INFO] [stdout] test animation::tests::test_ease_out_bounce_fn_endpoints ... ok
[INFO] [stdout] test animation::tests::test_eval_curve_before_first_keyframe ... ok
[INFO] [stdout] test animation::tests::test_eval_curve_after_last_keyframe ... ok
[INFO] [stdout] test animation::tests::test_hermite_endpoints ... ok
[INFO] [stdout] test animation::tests::test_eval_curve_empty ... ok
[INFO] [stdout] test animation::tests::test_hermite_midpoint_no_tangents ... ok
[INFO] [stdout] test animation::tests::test_ik_two_bone_fully_extended ... ok
[INFO] [stdout] test animation::tests::test_hermite_nonzero_tangent_effect ... ok
[INFO] [stdout] test animation::tests::test_ik_two_bone_straight_reach ... ok
[INFO] [stdout] test animation::tests::test_keyframe_new_no_tangents ... ok
[INFO] [stdout] test animation::tests::test_interp_type_eq ... ok
[INFO] [stdout] test animation::tests::test_keyframe_with_tangents ... ok
[INFO] [stdout] test animation::tests::test_lerp3_midpoint ... ok
[INFO] [stdout] test animation::tests::test_lerp3_endpoints ... ok
[INFO] [stdout] test animation::tests::test_lerp_keyframes_after_last ... ok
[INFO] [stdout] test animation::tests::test_lerp_keyframes_at_exact_time ... ok
[INFO] [stdout] test animation::tests::test_lerp_keyframes_before_first ... ok
[INFO] [stdout] test animation::tests::test_lerp_keyframes_empty ... ok
[INFO] [stdout] test animation::tests::test_lerp_keyframes_midpoint ... ok
[INFO] [stdout] test animation::tests::test_particle_animation_clamp_before ... ok
[INFO] [stdout] test animation::tests::test_particle_animation_empty ... ok
[INFO] [stdout] test animation::tests::test_particle_animation_n_particles ... ok
[INFO] [stdout] test animation::tests::test_particle_animation_push_and_query ... ok
[INFO] [stdout] test animation::tests::test_particle_animation_total_duration ... ok
[INFO] [stdout] test animation::tests::test_replay_clamp_after ... ok
[INFO] [stdout] test animation::tests::test_replay_clamp_before ... ok
[INFO] [stdout] test animation::tests::test_replay_empty ... ok
[INFO] [stdout] test animation::tests::test_replay_export_frames_count ... ok
[INFO] [stdout] test animation::tests::test_replay_export_frames_zero_fps ... ok
[INFO] [stdout] test animation::tests::test_replay_n_particles ... ok
[INFO] [stdout] test animation::tests::test_replay_interpolation ... ok
[INFO] [stdout] test animation::tests::test_replay_n_steps ... ok
[INFO] [stdout] test animation::tests::test_replay_single_step ... ok
[INFO] [stdout] test animation::tests::test_replay_total_duration ... ok
[INFO] [stdout] test animation::tests::test_spring_damped_approaches_one ... ok
[INFO] [stdout] test animation::tests::test_spring_damped_start_zero ... ok
[INFO] [stdout] test animation::tests::test_spring_moves_toward_target ... ok
[INFO] [stdout] test animation::tests::test_spring_returns_tuple ... ok
[INFO] [stdout] test animation::tests::test_transform_default_scale_one ... ok
[INFO] [stdout] test animation::tests::test_transform_rotation_keys ... ok
[INFO] [stdout] test animation::tests::test_transform_scale_keys ... ok
[INFO] [stdout] test animation::tests::test_transform_translation_keys ... ok
[INFO] [stdout] test animation_system::functions::tests::test_blend_node_lerp_empty ... ok
[INFO] [stdout] test animation_system::functions::tests::test_animator_update_no_crash ... ok
[INFO] [stdout] test animation_system::functions::tests::test_blend_node_missing_clip ... ok
[INFO] [stdout] test animation_system::functions::tests::test_ccd_ik_already_at_target ... ok
[INFO] [stdout] test animation_system::functions::tests::test_ccd_ik_empty_joints ... ok
[INFO] [stdout] test animation_system::functions::tests::test_clip_normalise_time_clamp ... ok
[INFO] [stdout] test animation_system::functions::tests::test_clip_normalise_time_loop ... ok
[INFO] [stdout] test animation_system::functions::tests::test_clip_sample_empty ... ok
[INFO] [stdout] test animation_system::functions::tests::test_cubic_bezier_linear ... ok
[INFO] [stdout] test animation_system::functions::tests::test_cubic_hermite_endpoints ... ok
[INFO] [stdout] test animation_system::functions::tests::test_ease_out_bounce_endpoints ... ok
[INFO] [stdout] test animation_system::functions::tests::test_ease_out_elastic_endpoints ... ok
[INFO] [stdout] test animation_system::functions::tests::test_easing_endpoints ... ok
[INFO] [stdout] test animation_system::functions::tests::test_lod_for_distance ... ok
[INFO] [stdout] test animation_system::functions::tests::test_lod_manager_update_entity ... ok
[INFO] [stdout] test animation_system::functions::tests::test_lod_update_rate ... ok
[INFO] [stdout] test animation_system::functions::tests::test_mat4_mul_identity ... ok
[INFO] [stdout] test animation_system::functions::tests::test_mocap_empty_returns_none ... ok
[INFO] [stdout] test animation_system::functions::tests::test_mocap_interpolation_root ... ok
[INFO] [stdout] test animation_system::functions::tests::test_mocap_single_frame_clamp ... ok
[INFO] [stdout] test animation_system::functions::tests::test_quat_curve_slerp_midpoint ... ok
[INFO] [stdout] test animation_system::functions::tests::test_quat_slerp_at_one ... ok
[INFO] [stdout] test animation_system::functions::tests::test_quat_mul_identity ... ok
[INFO] [stdout] test animation_system::functions::tests::test_quat_slerp_at_zero ... ok
[INFO] [stdout] test animation_system::functions::tests::test_quat_normalize_unit ... ok
[INFO] [stdout] test animation_system::functions::tests::test_scalar_curve_hermite ... ok
[INFO] [stdout] test animation_system::functions::tests::test_scalar_curve_linear_interp ... ok
[INFO] [stdout] test animation_system::functions::tests::test_skeleton_find_bone ... ok
[INFO] [stdout] test animation_system::functions::tests::test_skeleton_world_matrices_identity ... ok
[INFO] [stdout] test animation_system::functions::tests::test_skin_vertex_single_bone ... ok
[INFO] [stdout] test animation_system::functions::tests::test_skin_vertex_two_bones_equal ... ok
[INFO] [stdout] test animation_system::functions::tests::test_state_machine_entry ... ok
[INFO] [stdout] test animation_system::functions::tests::test_state_machine_trigger_transition ... ok
[INFO] [stdout] test animation_system::functions::tests::test_trs_matrix_identity_rotation ... ok
[INFO] [stdout] test animation_system::functions::tests::test_trs_matrix_translation ... ok
[INFO] [stdout] test animation_system::functions::tests::test_vec3_add ... ok
[INFO] [stdout] test animation_system::functions::tests::test_vec3_cross ... ok
[INFO] [stdout] test animation_system::functions::tests::test_vec3_curve_lerp ... ok
[INFO] [stdout] test animation_system::functions::tests::test_vec3_lerp_endpoints ... ok
[INFO] [stdout] test animation_system::functions::tests::test_vec3_normalize_degenerate ... ok
[INFO] [stdout] test animation_system::functions::tests::test_vec3_normalize_unit ... ok
[INFO] [stdout] test annotation_viz::functions::tests::anchor_fixed_offset ... ok
[INFO] [stdout] test annotation_viz::functions::tests::anchor_fixed_does_not_move ... ok
[INFO] [stdout] test annotation_viz::functions::tests::angle_arc_length ... ok
[INFO] [stdout] test annotation_viz::functions::tests::anchor_follow_point ... ok
[INFO] [stdout] test annotation_viz::functions::tests::angle_arc_points_count ... ok
[INFO] [stdout] test animation::tests::test_spring_at_target_stays ... ok
[INFO] [stdout] test annotation_viz::functions::tests::angle_arc_right_angle ... ok
[INFO] [stdout] test animation_system::functions::tests::test_scalar_curve_clamp ... ok
[INFO] [stdout] test annotation_viz::functions::tests::annotation_style_default ... ok
[INFO] [stdout] test annotation_viz::functions::tests::bbox_area ... ok
[INFO] [stdout] test annotation_viz::functions::tests::area_measurement_display ... ok
[INFO] [stdout] test annotation_viz::functions::tests::bbox_center ... ok
[INFO] [stdout] test annotation_viz::functions::tests::bbox_contains_point ... ok
[INFO] [stdout] test annotation_viz::functions::tests::bbox_expand ... ok
[INFO] [stdout] test annotation_viz::functions::tests::bbox_from_center ... ok
[INFO] [stdout] test annotation_viz::functions::tests::bbox_overlap_false ... ok
[INFO] [stdout] test annotation_viz::functions::tests::bbox_overlap_true ... ok
[INFO] [stdout] test annotation_viz::functions::tests::bbox_overlap_area ... ok
[INFO] [stdout] test annotation_viz::functions::tests::bbox_union ... ok
[INFO] [stdout] test annotation_viz::functions::tests::bbox_width_height ... ok
[INFO] [stdout] test annotation_viz::functions::tests::callout_box_area ... ok
[INFO] [stdout] test annotation_viz::functions::tests::callout_box_corners ... ok
[INFO] [stdout] test annotation_viz::functions::tests::callout_box_rounded_perimeter ... ok
[INFO] [stdout] test annotation_viz::functions::tests::collision_avoidance_non_overlapping ... ok
[INFO] [stdout] test annotation_viz::functions::tests::collision_avoidance_reduces_overlap ... ok
[INFO] [stdout] test annotation_viz::functions::tests::compass_rose_direction_count ... ok
[INFO] [stdout] test annotation_viz::functions::tests::compass_rose_north_tip ... ok
[INFO] [stdout] test annotation_viz::functions::tests::coord_axes_custom_labels ... ok
[INFO] [stdout] test annotation_viz::functions::tests::coord_axes_tips ... ok
[INFO] [stdout] test annotation_viz::functions::tests::dimension_line_auto_label ... ok
[INFO] [stdout] test annotation_viz::functions::tests::dimension_line_direction ... ok
[INFO] [stdout] test annotation_viz::functions::tests::dimension_line_length ... ok
[INFO] [stdout] test annotation_viz::functions::tests::dimension_line_midpoint ... ok
[INFO] [stdout] test annotation_viz::functions::tests::dimension_line_with_label ... ok
[INFO] [stdout] test annotation_viz::functions::tests::distance_measurement_display ... ok
[INFO] [stdout] test annotation_viz::functions::tests::estimate_text_bounds_non_empty ... ok
[INFO] [stdout] test annotation_viz::functions::tests::grid_annotation_cells ... ok
[INFO] [stdout] test annotation_viz::functions::tests::grid_annotation_intersections ... ok
[INFO] [stdout] test annotation_viz::functions::tests::leader_line_path_points ... ok
[INFO] [stdout] test annotation_viz::functions::tests::leader_line_straight_length ... ok
[INFO] [stdout] test annotation_viz::functions::tests::leader_line_with_bend ... ok
[INFO] [stdout] test annotation_viz::functions::tests::measure_polygon_area_square ... ok
[INFO] [stdout] test annotation_viz::functions::tests::measure_right_angle ... ok
[INFO] [stdout] test annotation_viz::functions::tests::measure_polygon_perimeter_square ... ok
[INFO] [stdout] test annotation_viz::functions::tests::measure_distance_3d ... ok
[INFO] [stdout] test annotation_viz::functions::tests::measure_triangle_area_unit ... ok
[INFO] [stdout] test annotation_viz::functions::tests::polyline_length_closed ... ok
[INFO] [stdout] test annotation_viz::functions::tests::polyline_length_open ... ok
[INFO] [stdout] test annotation_viz::functions::tests::scale_bar_ticks ... ok
[INFO] [stdout] test annotation_viz::functions::tests::scale_bar_division_width ... ok
[INFO] [stdout] test annotation_viz::functions::tests::text_anchor_top_left_offset ... ok
[INFO] [stdout] test annotation_viz::functions::tests::text_anchor_center_offset_zero ... ok
[INFO] [stdout] test annotation_viz::functions::tests::wrap_text_multiple_lines ... ok
[INFO] [stdout] test annotation_viz::functions::tests::angle_arc_zero_angle ... ok
[INFO] [stdout] test annotation_viz::functions::tests::wrap_text_single_line ... ok
[INFO] [stdout] test annotation_viz::functions::tests::angle_measurement_display ... ok
[INFO] [stdout] test annotation_viz::functions::tests::annotation_layer_count ... ok
[INFO] [stdout] test camera::functions::tests::test_camera_default_up_is_y ... ok
[INFO] [stdout] test annotation_viz::functions::tests::snap_to_grid_basic ... ok
[INFO] [stdout] test camera::functions::tests::test_camera_rig_enqueue_and_count ... ok
[INFO] [stdout] test camera::functions::tests::test_camera_rig_sequential_moves ... ok
[INFO] [stdout] test camera::functions::tests::test_camera_fov_converted_to_radians ... ok
[INFO] [stdout] test camera::functions::tests::test_camera_rig_starts_idle ... ok
[INFO] [stdout] test camera::functions::tests::test_camera_shake_eventually_done ... ok
[INFO] [stdout] test camera::functions::tests::test_add3 ... ok
[INFO] [stdout] test camera::functions::tests::test_camera_shake_decays ... ok
[INFO] [stdout] test camera::functions::tests::test_camera_rig_update_advances_move ... ok
[INFO] [stdout] test camera::functions::tests::test_camera_shake_impulse ... ok
[INFO] [stdout] test camera::functions::tests::test_camera_shake_initial_offset ... ok
[INFO] [stdout] test camera::functions::tests::test_catmull_rom_falls_back_for_few_keyframes ... ok
[INFO] [stdout] test camera::functions::tests::test_cinematic_move_is_done_after_full_duration ... ok
[INFO] [stdout] test camera::functions::tests::test_catmull_rom_with_four_keyframes ... ok
[INFO] [stdout] test camera::functions::tests::test_cinematic_arc_orbits ... ok
[INFO] [stdout] test camera::functions::tests::test_cinematic_move_progress_starts_zero ... ok
[INFO] [stdout] test camera::functions::tests::test_cinematic_crane_moves_up ... ok
[INFO] [stdout] test camera::functions::tests::test_distance_to_target ... ok
[INFO] [stdout] test camera::functions::tests::test_cinematic_jib_pans ... ok
[INFO] [stdout] test camera::functions::tests::test_cross3_standard_basis ... ok
[INFO] [stdout] test camera::functions::tests::test_cinematic_dolly_moves_camera ... ok
[INFO] [stdout] test camera::functions::tests::test_dot3_orthogonal ... ok
[INFO] [stdout] test camera::functions::tests::test_dof_coc_radius ... ok
[INFO] [stdout] test camera::functions::tests::test_fly_camera_initial_forward ... ok
[INFO] [stdout] test camera::functions::tests::test_fly_camera_move_forward ... ok
[INFO] [stdout] test camera::functions::tests::test_dof_blur_increases_with_distance ... ok
[INFO] [stdout] test camera::functions::tests::test_dof_in_focus ... ok
[INFO] [stdout] test camera::functions::tests::test_fly_camera_move_up ... ok
[INFO] [stdout] test camera::functions::tests::test_fly_camera_projection_matrix_valid ... ok
[INFO] [stdout] test camera::functions::tests::test_fly_camera_rotate_pitch_clamp ... ok
[INFO] [stdout] test camera::functions::tests::test_fly_camera_strafe ... ok
[INFO] [stdout] test camera::functions::tests::test_fly_camera_view_matrix_valid ... ok
[INFO] [stdout] test camera::functions::tests::test_forward_is_toward_target ... ok
[INFO] [stdout] test camera::functions::tests::test_frustum_aabb_at_origin_visible ... ok
[INFO] [stdout] test camera::functions::tests::test_frustum_contains_target ... ok
[INFO] [stdout] test camera::functions::tests::test_frustum_excludes_behind_camera ... ok
[INFO] [stdout] test camera::functions::tests::test_frustum_sphere_behind_camera_excluded ... ok
[INFO] [stdout] test camera::functions::tests::test_halton_sequence_base2 ... ok
[INFO] [stdout] test camera::functions::tests::test_frustum_sphere_large_enough_always_visible ... ok
[INFO] [stdout] test camera::functions::tests::test_frustum_aabb_behind_camera_excluded ... ok
[INFO] [stdout] test camera::functions::tests::test_frustum_signed_distance ... ok
[INFO] [stdout] test camera::functions::tests::test_interpolate_after_last ... ok
[INFO] [stdout] test camera::functions::tests::test_interpolate_before_first ... ok
[INFO] [stdout] test camera::functions::tests::test_interpolate_empty_keyframes ... ok
[INFO] [stdout] test camera::functions::tests::test_interpolate_midpoint ... ok
[INFO] [stdout] test camera::functions::tests::test_length3 ... ok
[INFO] [stdout] test camera::functions::tests::test_interpolate_single_keyframe ... ok
[INFO] [stdout] test camera::functions::tests::test_lerp3 ... ok
[INFO] [stdout] test camera::functions::tests::test_look_at_distance ... ok
[INFO] [stdout] test camera::functions::tests::test_mat4_mul_identity ... ok
[INFO] [stdout] test camera::functions::tests::test_multi_target_camera_centroid ... ok
[INFO] [stdout] test camera::functions::tests::test_multi_target_camera_clear ... ok
[INFO] [stdout] test camera::functions::tests::test_multi_target_camera_no_targets ... ok
[INFO] [stdout] test camera::functions::tests::test_multi_target_camera_single_target ... ok
[INFO] [stdout] test camera::functions::tests::test_multi_target_camera_update_changes_position ... ok
[INFO] [stdout] test camera::functions::tests::test_normalize3_unit_length ... ok
[INFO] [stdout] test camera::functions::tests::test_normalize3_zero_passthrough ... ok
[INFO] [stdout] test camera::functions::tests::test_orbit_changes_position ... ok
[INFO] [stdout] test camera::functions::tests::test_orbit_preserves_distance_to_target ... ok
[INFO] [stdout] test camera::functions::tests::test_pan_moves_both_position_and_target ... ok
[INFO] [stdout] test camera::functions::tests::test_perlin_shake_decays_over_time ... ok
[INFO] [stdout] test camera::functions::tests::test_perlin_shake_eventually_done ... ok
[INFO] [stdout] test camera::functions::tests::test_perlin_shake_impulse_increases_amplitude ... ok
[INFO] [stdout] test camera::functions::tests::test_perlin_shake_initial_amplitude ... ok
[INFO] [stdout] test camera::functions::tests::test_perlin_shake_offset_bounds ... ok
[INFO] [stdout] test camera::functions::tests::test_pan_preserves_distance ... ok
[INFO] [stdout] test camera::functions::tests::test_physical_dof_blur_increases_with_distance ... ok
[INFO] [stdout] test camera::functions::tests::test_physical_dof_zero_depth_is_zero ... ok
[INFO] [stdout] test camera::functions::tests::test_physical_dof_range_valid ... ok
[INFO] [stdout] test camera::functions::tests::test_physical_dof_in_focus_is_zero ... ok
[INFO] [stdout] test camera::functions::tests::test_right_perpendicular_to_forward ... ok
[INFO] [stdout] test camera::functions::tests::test_scale3 ... ok
[INFO] [stdout] test camera::functions::tests::test_smooth_noise_bounded ... ok
[INFO] [stdout] test camera::functions::tests::test_sub3 ... ok
[INFO] [stdout] test camera::functions::tests::test_taa_halton_jitter_bounded ... ok
[INFO] [stdout] test camera::functions::tests::test_taa_history_blended_position_empty_is_none ... ok
[INFO] [stdout] test camera::functions::tests::test_taa_history_blended_position_single ... ok
[INFO] [stdout] test camera::functions::tests::test_taa_history_cap_overflow ... ok
[INFO] [stdout] test camera::functions::tests::test_taa_history_push_and_len ... ok
[INFO] [stdout] test camera::functions::tests::test_taa_history_starts_empty ... ok
[INFO] [stdout] test camera::functions::tests::test_up_vector_perpendicular_to_right ... ok
[INFO] [stdout] test camera::functions::tests::test_up_vector_perpendicular_to_forward ... ok
[INFO] [stdout] test camera::functions::tests::test_view_matrix_column_major_homogeneous ... ok
[INFO] [stdout] test camera::functions::tests::test_view_matrix_orthonormal_rows ... ok
[INFO] [stdout] test camera::functions::tests::test_zoom_preserves_forward_direction ... ok
[INFO] [stdout] test camera::functions::tests::test_zoom_moves_position_forward ... ok
[INFO] [stdout] test chart::functions::tests::test_annotation_render ... ok
[INFO] [stdout] test chart::functions::tests::test_axis_range_auto ... ok
[INFO] [stdout] test chart::functions::tests::test_axis_ticks_linear_count ... ok
[INFO] [stdout] test chart::functions::tests::test_bar_chart_categories ... ok
[INFO] [stdout] test chart::functions::tests::test_axis_ticks_count ... ok
[INFO] [stdout] test chart::functions::tests::test_bar_chart_group_total ... ok
[INFO] [stdout] test chart::functions::tests::test_bar_chart_stacked_max ... ok
[INFO] [stdout] test chart::functions::tests::test_bubble_add_point ... ok
[INFO] [stdout] test chart::functions::tests::test_bubble_display_size_range ... ok
[INFO] [stdout] test chart::functions::tests::test_bubble_sorted_z ... ok
[INFO] [stdout] test chart::functions::tests::test_convergence_converged ... ok
[INFO] [stdout] test chart::functions::tests::test_contour_flat_field ... ok
[INFO] [stdout] test chart::functions::tests::test_contour_threshold_count ... ok
[INFO] [stdout] test chart::functions::tests::test_convergence_estimate ... ok
[INFO] [stdout] test chart::functions::tests::test_convergence_rate ... ok
[INFO] [stdout] test chart::functions::tests::test_energy_drift_zero ... ok
[INFO] [stdout] test chart::functions::tests::test_energy_extra_channel ... ok
[INFO] [stdout] test chart::functions::tests::test_error_bars_len ... ok
[INFO] [stdout] test chart::functions::tests::test_energy_series_push ... ok
[INFO] [stdout] test chart::functions::tests::test_error_bars_range ... ok
[INFO] [stdout] test chart::functions::tests::test_heatmap_contour_count ... ok
[INFO] [stdout] test chart::functions::tests::test_heatmap_sample_flat ... ok
[INFO] [stdout] test chart::functions::tests::test_histogram_count_sum ... ok
[INFO] [stdout] test chart::functions::tests::test_histogram_normal_overlay_len ... ok
[INFO] [stdout] test chart::functions::tests::test_line_plot_normalize_bound ... ok
[INFO] [stdout] test chart::functions::tests::test_histogram_density_sum ... ok
[INFO] [stdout] test chart::functions::tests::test_line_plot_x_range ... ok
[INFO] [stdout] test chart::functions::tests::test_log_axis_tick_bounds ... ok
[INFO] [stdout] test chart::functions::tests::test_log_axis_ticks ... ok
[INFO] [stdout] test chart::functions::tests::test_moving_avg_output_len ... ok
[INFO] [stdout] test chart::functions::tests::test_moving_avg_window1 ... ok
[INFO] [stdout] test chart::functions::tests::test_moving_avg_window3 ... ok
[INFO] [stdout] test chart::functions::tests::test_multi_line_legend_count ... ok
[INFO] [stdout] test chart::functions::tests::test_multi_line_x_range ... ok
[INFO] [stdout] test chart::functions::tests::test_parallel_coord_normalized ... ok
[INFO] [stdout] test chart::functions::tests::test_normalize_clamp ... ok
[INFO] [stdout] test chart::functions::tests::test_phase_portrait_add ... ok
[INFO] [stdout] test chart::functions::tests::test_phase_stable ... ok
[INFO] [stdout] test chart::functions::tests::test_polar_plot_add ... ok
[INFO] [stdout] test chart::functions::tests::test_phase_saddle ... ok
[INFO] [stdout] test chart::functions::tests::test_realtime_buffer_capacity ... ok
[INFO] [stdout] test chart::functions::tests::test_realtime_buffer_latest ... ok
[INFO] [stdout] test chart::functions::tests::test_realtime_buffer_mean ... ok
[INFO] [stdout] test chart::functions::tests::test_scatter_add_point ... ok
[INFO] [stdout] test chart::functions::tests::test_scatter_color_max ... ok
[INFO] [stdout] test chart::functions::tests::test_polar_rose_bin ... ok
[INFO] [stdout] test chart::functions::tests::test_sensor_max_speed ... ok
[INFO] [stdout] test chart::functions::tests::test_scatter_count_region ... ok
[INFO] [stdout] test chart::functions::tests::test_sensor_speed_series_len ... ok
[INFO] [stdout] test chart::functions::tests::test_svg_circle_element ... ok
[INFO] [stdout] test chart::functions::tests::test_series_len ... ok
[INFO] [stdout] test chart::functions::tests::test_slice_min_max ... ok
[INFO] [stdout] test chart::functions::tests::test_svg_export_viewbox ... ok
[INFO] [stdout] test chart::functions::tests::test_svg_line_element ... ok
[INFO] [stdout] test chart_3d::tests::test_bar_chart_add_bar ... ok
[INFO] [stdout] test chart_3d::tests::test_bar_chart_empty ... ok
[INFO] [stdout] test chart_3d::tests::test_bar_chart_max_value ... ok
[INFO] [stdout] test chart_3d::tests::test_bar_chart_min_value ... ok
[INFO] [stdout] test chart_3d::tests::test_bar_chart_normalize_all_equal ... ok
[INFO] [stdout] test chart_3d::tests::test_bar_chart_normalize_count ... ok
[INFO] [stdout] test chart_3d::tests::test_bar_chart_normalize_range ... ok
[INFO] [stdout] test chart_3d::tests::test_chart_axes_3d_min_ticks ... ok
[INFO] [stdout] test chart_3d::tests::test_chart_axes_3d_x_spine_endpoints ... ok
[INFO] [stdout] test chart_3d::tests::test_chart_axes_3d_segment_count ... ok
[INFO] [stdout] test chart_3d::tests::test_color_by_value_cool_endpoints ... ok
[INFO] [stdout] test chart_3d::tests::test_color_by_value_equal_range ... ok
[INFO] [stdout] test chart_3d::tests::test_color_by_value_gray ... ok
[INFO] [stdout] test chart_3d::tests::test_color_by_value_hot_zero ... ok
[INFO] [stdout] test chart_3d::tests::test_color_by_value_jet_max ... ok
[INFO] [stdout] test chart_3d::tests::test_color_by_value_unknown_colormap ... ok
[INFO] [stdout] test chart_3d::tests::test_color_by_value_jet_min ... ok
[INFO] [stdout] test chart_3d::tests::test_scatter_add_point ... ok
[INFO] [stdout] test chart_3d::tests::test_scatter_bounding_box ... ok
[INFO] [stdout] test chart_3d::tests::test_scatter_center ... ok
[INFO] [stdout] test chart_3d::tests::test_scatter_bounding_box_empty ... ok
[INFO] [stdout] test chart_3d::tests::test_scatter_center_empty ... ok
[INFO] [stdout] test chart_3d::tests::test_surface_plot_dimensions ... ok
[INFO] [stdout] test chart_3d::tests::test_scatter_empty ... ok
[INFO] [stdout] test chart_3d::tests::test_surface_plot_triangulate_2x2 ... ok
[INFO] [stdout] test chart_3d::tests::test_surface_plot_triangulate_count ... ok
[INFO] [stdout] test chart_3d::tests::test_surface_plot_triangulate_large ... ok
[INFO] [stdout] test camera::functions::tests::test_projection_matrix_far_maps_to_plus_one ... ok
[INFO] [stdout] test camera::functions::tests::test_projection_matrix_near_maps_to_minus_one ... ok
[INFO] [stdout] test chart::functions::tests::test_annotation_font_size ... ok
[INFO] [stdout] test chart_3d::tests::test_surface_plot_x_range ... ok
[INFO] [stdout] test chart_3d::tests::test_surface_plot_z_min_max ... ok
[INFO] [stdout] test chart_3d::tests::test_vector_field_add_arrow ... ok
[INFO] [stdout] test chart_3d::tests::test_vector_field_empty ... ok
[INFO] [stdout] test chart_3d::tests::test_vector_field_zero_vector ... ok
[INFO] [stdout] test colormap::functions::tests::jet_endpoints ... ok
[INFO] [stdout] test chart_3d::tests::test_vector_field_normalized_arrows_length ... ok
[INFO] [stdout] test colormap::functions::tests::test_alpha_blend_transparent_preserves_dst ... ok
[INFO] [stdout] test colormap::functions::tests::test_apply_colormap_length ... ok
[INFO] [stdout] test colormap::functions::tests::test_blend_colormaps_alpha_one ... ok
[INFO] [stdout] test colormap::functions::tests::test_alpha_blend_opaque_over_opaque ... ok
[INFO] [stdout] test colormap::functions::tests::test_blend_rgb_endpoints ... ok
[INFO] [stdout] test colormap::functions::tests::test_blend_colormaps_alpha_zero ... ok
[INFO] [stdout] test colormap::functions::tests::test_blend_colormaps_midpoint ... ok
[INFO] [stdout] test colormap::functions::tests::test_brbg_endpoints ... ok
[INFO] [stdout] test colormap::functions::tests::test_brbg_midpoint_near_white ... ok
[INFO] [stdout] test colormap::functions::tests::test_categorical_colormap ... ok
[INFO] [stdout] test colormap::functions::tests::test_categorical_palette_all_in_range ... ok
[INFO] [stdout] test colormap::functions::tests::test_categorical_map_categories ... ok
[INFO] [stdout] test chart_3d::tests::test_surface_plot_z_shape ... ok
[INFO] [stdout] test chart_3d::tests::test_vector_field_max_magnitude ... ok
[INFO] [stdout] test colormap::functions::tests::test_categorical_palette_all_opaque ... ok
[INFO] [stdout] test colormap::functions::tests::test_cividis_endpoints_distinct ... ok
[INFO] [stdout] test colormap::functions::tests::test_color_difference_identical_is_zero ... ok
[INFO] [stdout] test colormap::functions::tests::test_categorical_palette_length ... ok
[INFO] [stdout] test colormap::functions::tests::test_color_difference_length ... ok
[INFO] [stdout] test colormap::functions::tests::test_cividis_alpha_one ... ok
[INFO] [stdout] test colormap::functions::tests::test_colorbar_with_ticks ... ok
[INFO] [stdout] test colormap::functions::tests::test_colormap_brbg_u8 ... ok
[INFO] [stdout] test colormap::functions::tests::test_colorbar_tick_values ... ok
[INFO] [stdout] test colormap::functions::tests::test_color_difference_viridis_more_uniform_than_jet ... ok
[INFO] [stdout] test colormap::functions::tests::test_colorbar_raster ... ok
[INFO] [stdout] test colormap::functions::tests::test_colormap_legend_tick_labels ... ok
[INFO] [stdout] test colormap::functions::tests::test_colormap_legend_generation ... ok
[INFO] [stdout] test colormap::functions::tests::test_colormap_legend_default_n_ticks ... ok
[INFO] [stdout] test colormap::functions::tests::test_colormap_sample_alpha_255 ... ok
[INFO] [stdout] test colormap::functions::tests::test_colormap_sample_t0_t1_distinct ... ok
[INFO] [stdout] test colormap::functions::tests::test_colormap_turbo_u8_monotone_green ... ok
[INFO] [stdout] test colormap::functions::tests::test_colormap_legend_render_raster ... ok
[INFO] [stdout] test colormap::functions::tests::test_discrete_colormap_empty ... ok
[INFO] [stdout] test colormap::functions::tests::test_discrete_colormap_endpoints_match_original ... ok
[INFO] [stdout] test colormap::functions::tests::test_discrete_colormap_single ... ok
[INFO] [stdout] test colormap::functions::tests::test_discrete_colormap_length ... ok
[INFO] [stdout] test colormap::functions::tests::test_equalize_histogram_constant_field ... ok
[INFO] [stdout] test colormap::functions::tests::test_equalize_histogram_empty ... ok
[INFO] [stdout] test colormap::functions::tests::test_equalize_histogram_range ... ok
[INFO] [stdout] test colormap::functions::tests::test_histogram_colors ... ok
[INFO] [stdout] test colormap::functions::tests::test_equalize_histogram_output_length ... ok
[INFO] [stdout] test colormap::functions::tests::test_histogram_value_colors ... ok
[INFO] [stdout] test colormap::functions::tests::test_hsv_roundtrip ... ok
[INFO] [stdout] test colormap::functions::tests::test_interpolation_mode_nearest ... ok
[INFO] [stdout] test colormap::functions::tests::test_interpolation_mode_step ... ok
[INFO] [stdout] test colormap::functions::tests::test_invert_colormap_t0_equals_t1 ... ok
[INFO] [stdout] test colormap::functions::tests::test_isoluminant_rainbow_endpoints ... ok
[INFO] [stdout] test colormap::functions::tests::test_invert_colormap_t1_equals_t0 ... ok
[INFO] [stdout] test colormap::functions::tests::test_lab_to_rgb_roundtrip ... ok
[INFO] [stdout] test colormap::functions::tests::test_log_normalize_positive_values ... ok
[INFO] [stdout] test colormap::functions::tests::test_log_normalize_single_value ... ok
[INFO] [stdout] test colormap::functions::tests::test_map_scalar_clamps_high ... ok
[INFO] [stdout] test colormap::functions::tests::test_map_scalar_clamps_low ... ok
[INFO] [stdout] test colormap::functions::tests::test_map_scalar_rgba_custom_alpha ... ok
[INFO] [stdout] test colormap::functions::tests::test_map_scalar_rgba_full_alpha ... ok
[INFO] [stdout] test colormap::functions::tests::test_map_scalar_rgba_zero_alpha ... ok
[INFO] [stdout] test colormap::functions::tests::test_map_scalar_zero_range ... ok
[INFO] [stdout] test colormap::functions::tests::test_normalize_range ... ok
[INFO] [stdout] test colormap::functions::tests::test_percentile_normalize ... ok
[INFO] [stdout] test colormap::functions::tests::test_paired_light_darker_than_dark ... ok
[INFO] [stdout] test colormap::functions::tests::test_paired_palette_size ... ok
[INFO] [stdout] test colormap::functions::tests::test_perceptual_distance_black_white_large ... ok
[INFO] [stdout] test colormap::functions::tests::test_perceptual_distance_identical_is_zero ... ok
[INFO] [stdout] test colormap::functions::tests::test_perceptual_lightness_empty ... ok
[INFO] [stdout] test colormap::functions::tests::test_perceptual_lightness_grayscale_monotone ... ok
[INFO] [stdout] test colormap::functions::tests::test_power_normalize_empty ... ok
[INFO] [stdout] test colormap::functions::tests::test_perceptual_lightness_range ... ok
[INFO] [stdout] test colormap::functions::tests::test_perceptual_lightness_viridis_monotone ... ok
[INFO] [stdout] test colormap::functions::tests::test_power_normalize_gamma_one_identity ... ok
[INFO] [stdout] test colormap::functions::tests::test_rainbow_alpha_one ... ok
[INFO] [stdout] test colormap::functions::tests::test_rainbow_endpoints_distinct ... ok
[INFO] [stdout] test colormap::functions::tests::test_rainbow_midpoint_is_valid_color ... ok
[INFO] [stdout] test colormap::functions::tests::test_rdbu_midpoint_near_white ... ok
[INFO] [stdout] test colormap::functions::tests::test_rgb_to_hsl ... ok
[INFO] [stdout] test colormap::functions::tests::test_rgb_to_lab_black_is_l0 ... ok
[INFO] [stdout] test colormap::functions::tests::test_rgb_to_lab_white_is_l100 ... ok
[INFO] [stdout] test colormap::functions::tests::test_seismic_midpoint_near_white ... ok
[INFO] [stdout] test colormap::functions::tests::test_set1_palette_size ... ok
[INFO] [stdout] test colormap::functions::tests::test_symmetric_normalize_center ... ok
[INFO] [stdout] test colormap::functions::tests::test_tab10_all_distinct ... ok
[INFO] [stdout] test colormap::functions::tests::test_tab10_all_opaque ... ok
[INFO] [stdout] test colormap::functions::tests::test_tab10_palette_size ... ok
[INFO] [stdout] test colormap::functions::tests::test_uniformity_score_nonnegative ... ok
[INFO] [stdout] test colormap::functions::tests::test_uniformity_viridis_lower_than_jet ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_adjust_brightness_doubles ... ok
[INFO] [stdout] test colormap::functions::tests::test_power_normalize_range ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_adjust_brightness_clamps ... ok
[INFO] [stdout] test colormap::functions::tests::viridis_endpoints ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_apply_custom_colormap_alpha_255 ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_adjust_saturation_zero_is_grey ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_builder_build_endpoints ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_builder_build_length ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_apply_custom_colormap_length ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_builder_clamped_to_endpoints ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_builder_single_stop ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_builder_empty_returns_black ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_builder_smooth_step_different_from_linear ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_builder_two_stops_midpoint ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_custom_uniformity_score_constant_is_zero ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_cyclic_build_length ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_cyclic_phase_in_range ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_hsv_custom_build_length ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_cyclic_twilight_in_range ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_cyclic_multi_cycle_wraps ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_cyclic_hsv_wraps ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_hsv_saturation_zero_is_grey ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_hsv_rainbow_range ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_is_monotone_lightness_linear_grey ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_hsv_rainbow_red_at_t0 ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_lightness_black ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_lightness_white ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_phase_in_range ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_spline_build_length ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_spline_empty_returns_black ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_spline_four_stops_sorted ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_spline_in_range ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_spline_single_stop ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_jet_blue_at_zero ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_jet_in_range ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_jet_red_at_one ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_map_scalar_custom_midpoint ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_spline_two_stops_midpoint ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_turbo_endpoints_differ ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_turbo_in_range ... ok
[INFO] [stdout] test colormap::functions_2::tests_new_colormap::test_twilight_in_range ... ok
[INFO] [stdout] test cross_section_viz::tests::test_clip_mesh_cube_through_middle ... ok
[INFO] [stdout] test cross_section_viz::tests::test_clip_mesh_parallel_slices_cube ... ok
[INFO] [stdout] test cross_section_viz::tests::test_clip_triangle_intersects ... ok
[INFO] [stdout] test cross_section_viz::tests::test_clip_triangle_no_intersection ... ok
[INFO] [stdout] test cross_section_viz::tests::test_colormap_grid_length ... ok
[INFO] [stdout] test cross_section_viz::tests::test_contours_to_svg_path ... ok
[INFO] [stdout] test cross_section_viz::tests::test_cool_warm_colormap_midpoint ... ok
[INFO] [stdout] test cross_section_viz::tests::test_count_unique_vertices ... ok
[INFO] [stdout] test cross_section_viz::tests::test_cross_section_intersection_empty_b ... ok
[INFO] [stdout] test cross_section_viz::tests::test_cross_section_to_svg_valid ... ok
[INFO] [stdout] test cross_section_viz::tests::test_cross_section_union_no_duplicates ... ok
[INFO] [stdout] test cross_section_viz::tests::test_cutting_plane_local_2d_roundtrip ... ok
[INFO] [stdout] test cross_section_viz::tests::test_cutting_plane_offset ... ok
[INFO] [stdout] test cross_section_viz::tests::test_cutting_plane_project ... ok
[INFO] [stdout] test cross_section_viz::tests::test_cutting_plane_signed_distance ... ok
[INFO] [stdout] test cross_section_viz::tests::test_cutting_plane_tangent_basis_orthonormal ... ok
[INFO] [stdout] test annotation_viz::functions::tests::annotation_style_arrow_area ... ok
[INFO] [stdout] test annotation_viz::functions::tests::annotation_layer_clear ... ok
[INFO] [stdout] test cross_section_viz::tests::test_cylindrical_cut_radial_distance ... ok
[INFO] [stdout] test cross_section_viz::tests::test_extract_contour_sphere_field ... ok
[INFO] [stdout] test cross_section_viz::tests::test_extract_contours_multi_produces_levels ... ok
[INFO] [stdout] test cross_section_viz::tests::test_interpolate_at_world_point ... ok
[INFO] [stdout] test cross_section_viz::tests::test_interpolate_scalar_grid_center ... ok
[INFO] [stdout] test cross_section_viz::tests::test_hatch_lines_inside_square ... ok
[INFO] [stdout] test cross_section_viz::tests::test_parallel_slices_spacing ... ok
[INFO] [stdout] test cross_section_viz::tests::test_polygon_area_2d_triangle ... ok
[INFO] [stdout] test cross_section_viz::tests::test_polygon_area_2d_unit_square ... ok
[INFO] [stdout] test cross_section_viz::tests::test_generate_parallel_slices_count ... ok
[INFO] [stdout] test cross_section_viz::tests::test_jet_colormap_endpoints ... ok
[INFO] [stdout] test cross_section_viz::tests::test_hatch_lines_empty_polygon ... ok
[INFO] [stdout] test cross_section_viz::tests::test_polygon_area_degenerate ... ok
[INFO] [stdout] test cross_section_viz::tests::test_radial_slices_all_pass_through_axis ... ok
[INFO] [stdout] test cross_section_viz::tests::test_sample_stress_field_count ... ok
[INFO] [stdout] test cross_section_viz::tests::test_scalar_grid_gradient_linear ... ok
[INFO] [stdout] test cross_section_viz::tests::test_scalar_grid_laplacian_quadratic ... ok
[INFO] [stdout] test cross_section_viz::tests::test_section_properties_degenerate ... ok
[INFO] [stdout] test cross_section_viz::tests::test_section_properties_unit_square ... ok
[INFO] [stdout] test cross_section_viz::tests::test_segments_bounding_box ... ok
[INFO] [stdout] test cross_section_viz::tests::test_segments_to_svg_path_basic ... ok
[INFO] [stdout] test cross_section_viz::tests::test_sweep_animation_frame_count ... ok
[INFO] [stdout] test cross_section_viz::tests::test_sweep_animation_t_range ... ok
[INFO] [stdout] test cross_section_viz::tests::test_total_segment_length ... ok
[INFO] [stdout] test cross_section_viz::tests::test_tetrahedron_triangles_count ... ok
[INFO] [stdout] test cross_section_viz::tests::test_triangle_area ... ok
[INFO] [stdout] test cross_section_viz::tests::test_triangle_centroid ... ok
[INFO] [stdout] test cross_section_viz::tests::test_unit_cube_triangles_count ... ok
[INFO] [stdout] test cross_section_viz::tests::test_von_mises_hydrostatic ... ok
[INFO] [stdout] test cross_section_viz::tests::test_von_mises_uniaxial ... ok
[INFO] [stdout] test data_pipeline::tests::test_convex_hull_less_than_three_returns_all ... ok
[INFO] [stdout] test data_pipeline::tests::test_convex_hull_indices_in_range ... ok
[INFO] [stdout] test data_pipeline::tests::test_convex_hull_square ... ok
[INFO] [stdout] test data_pipeline::tests::test_correlation_matrix_diagonal_is_one ... ok
[INFO] [stdout] test data_pipeline::tests::test_cross_correlation_length ... ok
[INFO] [stdout] test data_pipeline::tests::test_correlation_matrix_off_diagonal_range ... ok
[INFO] [stdout] test data_pipeline::tests::test_dataseries_new_basic ... ok
[INFO] [stdout] test cross_section_viz::tests::test_radial_slices_count ... ok
[INFO] [stdout] test data_pipeline::tests::test_detect_peaks_no_peaks_in_monotone ... ok
[INFO] [stdout] test cross_section_viz::tests::test_scalar_grid_min_max ... ok
[INFO] [stdout] test data_pipeline::tests::test_detect_peaks_prominence_filters_small ... ok
[INFO] [stdout] test data_pipeline::tests::test_detect_peaks_simple ... ok
[INFO] [stdout] test data_pipeline::tests::test_differentiate_constant_is_zero ... ok
[INFO] [stdout] test data_pipeline::tests::test_fft_power_nonnegative ... ok
[INFO] [stdout] test data_pipeline::tests::test_fft_empty_series_returns_empty ... ok
[INFO] [stdout] test data_pipeline::tests::test_differentiate_length_preserved ... ok
[INFO] [stdout] test data_pipeline::tests::test_differentiate_linear_is_slope ... ok
[INFO] [stdout] test data_pipeline::tests::test_dataseries_new_mismatched_lengths_panics - should panic ... ok
[INFO] [stdout] test data_pipeline::tests::test_fft_power_spectrum_length ... ok
[INFO] [stdout] test data_pipeline::tests::test_filter_range_keeps_interior ... ok
[INFO] [stdout] test data_pipeline::tests::test_heatmap_normalize_cols_range ... ok
[INFO] [stdout] test data_pipeline::tests::test_filter_range_empty_if_out_of_range ... ok
[INFO] [stdout] test data_pipeline::tests::test_heatmap_transpose_shape ... ok
[INFO] [stdout] test data_pipeline::tests::test_heatmap_normalize_rows_range ... ok
[INFO] [stdout] test data_pipeline::tests::test_highpass_plus_lowpass_equals_input ... ok
[INFO] [stdout] test data_pipeline::tests::test_integrate_constant_is_linear ... ok
[INFO] [stdout] test data_pipeline::tests::test_integrate_length_preserved ... ok
[INFO] [stdout] test data_pipeline::tests::test_kmeans_k_geq_n_assigns_all ... ok
[INFO] [stdout] test data_pipeline::tests::test_kmeans_two_clear_clusters ... ok
[INFO] [stdout] test data_pipeline::tests::test_lowpass_constant_signal_unchanged ... ok
[INFO] [stdout] test data_pipeline::tests::test_lowpass_empty_returns_empty ... ok
[INFO] [stdout] test data_pipeline::tests::test_lowpass_length_preserved ... ok
[INFO] [stdout] test data_pipeline::tests::test_heatmap_transpose_values ... ok
[INFO] [stdout] test data_pipeline::tests::test_highpass_constant_is_zero_after_settling ... ok
[INFO] [stdout] test data_pipeline::tests::test_kmeans_empty_returns_empty ... ok
[INFO] [stdout] test data_pipeline::tests::test_mean_basic ... ok
[INFO] [stdout] test data_pipeline::tests::test_normalize_constant_is_all_zeros ... ok
[INFO] [stdout] test data_pipeline::tests::test_normalize_vec_range ... ok
[INFO] [stdout] test data_pipeline::tests::test_resample_endpoints_preserved ... ok
[INFO] [stdout] test data_pipeline::tests::test_resample_length ... ok
[INFO] [stdout] test data_pipeline::tests::test_resample_linear_exact ... ok
[INFO] [stdout] test data_pipeline::tests::test_smooth_constant_is_constant ... ok
[INFO] [stdout] test data_pipeline::tests::test_std_dev_basic ... ok
[INFO] [stdout] test data_pipeline::tests::test_normalize_range_is_zero_to_one ... ok
[INFO] [stdout] test data_pipeline::tests::test_smooth_length_preserved ... ok
[INFO] [stdout] test data_pipeline::tests::test_time_series_stats_autocorr_length ... ok
[INFO] [stdout] test data_pipeline::tests::test_time_series_stats_autocorr_lag0_is_one ... ok
[INFO] [stdout] test data_pipeline::tests::test_smooth_reduces_noise ... ok
[INFO] [stdout] test data_pipeline::tests::test_time_series_stats_mean ... ok
[INFO] [stdout] test data_viz::tests::bar_chart_stacked_totals_sum_correctly ... ok
[INFO] [stdout] test data_pipeline::tests::test_time_series_stats_min_max ... ok
[INFO] [stdout] test data_viz::tests::bar_with_error_stores_error ... ok
[INFO] [stdout] test data_viz::tests::color_mapping_bwr_endpoints ... ok
[INFO] [stdout] test data_viz::tests::color_mapping_viridis_midpoint_is_valid ... ok
[INFO] [stdout] test data_viz::tests::color_mapping_clamps_out_of_range ... ok
[INFO] [stdout] test data_viz::tests::color_mapping_equal_range_uses_midpoint ... ok
[INFO] [stdout] test data_viz::tests::contour_circle_has_segments ... ok
[INFO] [stdout] test data_viz::tests::contour_empty_for_iso_above_all_values ... ok
[INFO] [stdout] test data_viz::tests::contour_single_crossing_produces_segment ... ok
[INFO] [stdout] test data_viz::tests::heatmap_percentile_range_ordered ... ok
[INFO] [stdout] test data_viz::tests::heatmap_symmetric_range_is_symmetric ... ok
[INFO] [stdout] test data_viz::tests::histogram_count_sums_to_n ... ok
[INFO] [stdout] test data_viz::tests::histogram_fd_nonempty ... ok
[INFO] [stdout] test data_viz::tests::histogram_cdf_ends_at_one ... ok
[INFO] [stdout] test data_viz::tests::heatmap_size_matches_grid ... ok
[INFO] [stdout] test data_viz::tests::histogram_fixed_bins_count ... ok
[INFO] [stdout] test data_viz::tests::histogram_pdf_integrates_to_one ... ok
[INFO] [stdout] test data_viz::tests::histogram_scott_nonempty ... ok
[INFO] [stdout] test data_viz::tests::histogram_then_pdf_then_cdf_consistent ... ok
[INFO] [stdout] test data_viz::tests::parallel_coordinates_normalized_in_unit_range ... ok
[INFO] [stdout] test data_viz::tests::plot_data_len_min_of_x_y ... ok
[INFO] [stdout] test data_viz::tests::parallel_coordinates_first_row_normalizes_to_zero ... ok
[INFO] [stdout] test data_viz::tests::histogram_values_in_correct_bins ... ok
[INFO] [stdout] test data_viz::tests::plot_data_is_empty ... ok
[INFO] [stdout] test data_viz::tests::plot_range_manual_ignores_data ... ok
[INFO] [stdout] test data_viz::tests::plot_data_resolved_ranges_valid ... ok
[INFO] [stdout] test data_viz::tests::plot_range_auto_empty ... ok
[INFO] [stdout] test data_viz::tests::plot_range_auto_single_value ... ok
[INFO] [stdout] test data_viz::tests::radar_polygon_points_same_scale ... ok
[INFO] [stdout] test data_viz::tests::rgba_out_of_range_invalid ... ok
[INFO] [stdout] test data_viz::tests::radar_chart_all_axes_same_scale ... ok
[INFO] [stdout] test data_viz::tests::rgba_constructors_valid ... ok
[INFO] [stdout] test data_viz::tests::scatter_2d_z_is_none ... ok
[INFO] [stdout] test data_viz::tests::scatter_3d_point_stored ... ok
[INFO] [stdout] test data_viz::tests::time_series_marker_added ... ok
[INFO] [stdout] test data_viz::tests::scatter_all_colors_valid_after_mapping ... ok
[INFO] [stdout] test data_viz::tests::time_series_visible_data_filters_by_window ... ok
[INFO] [stdout] test data_viz::tests::time_series_no_window_returns_all ... ok
[INFO] [stdout] test data_viz::tests::vector_field_arrow_count_matches_grid ... ok
[INFO] [stdout] test data_viz::tests::vector_field_colors_valid ... ok
[INFO] [stdout] test debug_overlay::tests::test_axes_draws_three_arrows ... ok
[INFO] [stdout] test debug_overlay::tests::test_circle_xz_draws_segments ... ok
[INFO] [stdout] test debug_overlay::tests::test_color_constants ... ok
[INFO] [stdout] test debug_overlay::tests::test_color_with_alpha ... ok
[INFO] [stdout] test debug_overlay::tests::test_constraint_viz_batch ... ok
[INFO] [stdout] test debug_overlay::tests::test_constraint_viz_satisfied ... ok
[INFO] [stdout] test debug_overlay::tests::test_constraint_viz_violated ... ok
[INFO] [stdout] test debug_overlay::tests::test_contact_debug_batch ... ok
[INFO] [stdout] test debug_overlay::tests::test_contact_debug_emits_point_and_arrow ... ok
[INFO] [stdout] test debug_overlay::tests::test_draw_bvh_tree_empty_no_commands ... ok
[INFO] [stdout] test debug_overlay::tests::test_draw_bvh_tree_max_nodes_limit ... ok
[INFO] [stdout] test debug_overlay::tests::test_force_debug_zero_force_no_command ... ok
[INFO] [stdout] test debug_overlay::tests::test_draw_bvh_tree_emits_boxes ... ok
[INFO] [stdout] test debug_overlay::tests::test_force_diagram_free_body ... ok
[INFO] [stdout] test debug_overlay::tests::test_overlay_aabb_expands_to_lines ... ok
[INFO] [stdout] test debug_overlay::tests::test_overlay_clear ... ok
[INFO] [stdout] test debug_overlay::tests::test_overlay_max_commands ... ok
[INFO] [stdout] test debug_overlay::tests::test_force_diagram_draw_force ... ok
[INFO] [stdout] test debug_overlay::tests::test_grid_draws_lines ... ok
[INFO] [stdout] test debug_overlay::tests::test_overlay_statistics_add ... ok
[INFO] [stdout] test debug_overlay::tests::test_overlay_statistics_default ... ok
[INFO] [stdout] test debug_overlay::tests::test_perf_overlay_empty_fps_zero ... ok
[INFO] [stdout] test debug_overlay::tests::test_perf_overlay_fps_constant_framerate ... ok
[INFO] [stdout] test debug_overlay::tests::test_overlay_statistics_draw ... ok
[INFO] [stdout] test debug_overlay::tests::test_perf_overlay_max_min_frame_time ... ok
[INFO] [stdout] test debug_overlay::tests::test_perf_overlay_rolling_window ... ok
[INFO] [stdout] test debug_overlay::tests::test_stress_glyphs_empty_input ... ok
[INFO] [stdout] test debug_overlay::tests::test_stress_glyphs_emit_arrows ... ok
[INFO] [stdout] test debug_overlay::tests::test_stress_glyphs_zero_stresses_no_output ... ok
[INFO] [stdout] test debug_overlay::tests::test_text_column_draw ... ok
[INFO] [stdout] test debug_overlay::tests::test_text_column_add_lines ... ok
[INFO] [stdout] test debug_overlay::tests::test_text_primitive_char_count ... ok
[INFO] [stdout] test debug_overlay::tests::test_text_primitive_with_background ... ok
[INFO] [stdout] test debug_overlay::tests::test_perf_overlay_draw_emits_three_text_commands ... ok
[INFO] [stdout] test debug_overlay::tests::test_torque_debug_emits_arrow ... ok
[INFO] [stdout] test debug_overlay::tests::test_velocity_arrow_batch ... ok
[INFO] [stdout] test debug_overlay::tests::test_velocity_arrow_viz ... ok
[INFO] [stdout] test debug_overlay::tests::test_velocity_arrow_zero_velocity ... ok
[INFO] [stdout] test debug_overlay::tests::test_velocity_field_emits_arrows ... ok
[INFO] [stdout] test debug_overlay::tests::test_velocity_field_skips_low_magnitude ... ok
[INFO] [stdout] test debug_overlay::tests::test_velocity_field_empty_input ... ok
[INFO] [stdout] test error::tests::test_already_exists_error ... ok
[INFO] [stdout] test error::tests::test_colormap_error ... ok
[INFO] [stdout] test error::tests::test_error_chain_breadcrumb ... ok
[INFO] [stdout] test error::tests::test_error_chain_display ... ok
[INFO] [stdout] test error::tests::test_error_collection_display ... ok
[INFO] [stdout] test error::tests::test_error_collection_into_vec ... ok
[INFO] [stdout] test error::tests::test_error_collection_with_errors ... ok
[INFO] [stdout] test error::tests::test_error_context_ok_passthrough ... ok
[INFO] [stdout] test error::tests::test_error_context_wrapper ... ok
[INFO] [stdout] test error::tests::test_error_filter_apply_slice ... ok
[INFO] [stdout] test error::tests::test_error_filter_default_passes_warnings ... ok
[INFO] [stdout] test error::tests::test_error_filter_high_threshold ... ok
[INFO] [stdout] test error::tests::test_error_filter_pass_all ... ok
[INFO] [stdout] test error::tests::test_error_filter_suppress_code ... ok
[INFO] [stdout] test error::tests::test_error_record_new ... ok
[INFO] [stdout] test error::tests::test_error_record_with_location ... ok
[INFO] [stdout] test error::tests::test_error_report_empty ... ok
[INFO] [stdout] test error::tests::test_error_report_filter_by_severity ... ok
[INFO] [stdout] test error::tests::test_error_report_into_result_includes_messages ... ok
[INFO] [stdout] test error::tests::test_error_report_push_and_has_errors ... ok
[INFO] [stdout] test error::tests::test_error_report_push_with_location ... ok
[INFO] [stdout] test error::tests::test_error_report_summary ... ok
[INFO] [stdout] test error::tests::test_error_severity_method ... ok
[INFO] [stdout] test error::tests::test_error_report_only_warnings_not_errors ... ok
[INFO] [stdout] test error::tests::test_fix_hint_non_empty ... ok
[INFO] [stdout] test error::tests::test_general_error_display ... ok
[INFO] [stdout] test error::tests::test_geometry_error_display ... ok
[INFO] [stdout] test error::tests::test_invalid_parameter_error ... ok
[INFO] [stdout] test error::tests::test_log_format_json ... ok
[INFO] [stdout] test error::tests::test_log_format_csv ... ok
[INFO] [stdout] test error::tests::test_log_format_text ... ok
[INFO] [stdout] test error::tests::test_out_of_range_error ... ok
[INFO] [stdout] test error::tests::test_not_found_error ... ok
[INFO] [stdout] test colormap::functions::tests::test_colormap_cividis_u8_alpha ... ok
[INFO] [stdout] test error::tests::test_post_process_error ... ok
[INFO] [stdout] test error::tests::test_retry_hint_geometry_never ... ok
[INFO] [stdout] test data_pipeline::tests::test_cross_correlation_self_is_autocorrelation ... ok
[INFO] [stdout] test error::tests::test_retry_hint_not_found_after_delay ... ok
[INFO] [stdout] test error::tests::test_retry_hint_scene_immediately ... ok
[INFO] [stdout] test error::tests::test_severity_display ... ok
[INFO] [stdout] test error::tests::test_severity_from_error_colormap_is_warning ... ok
[INFO] [stdout] test error::tests::test_severity_is_failure ... ok
[INFO] [stdout] test error::tests::test_severity_from_error_geometry ... ok
[INFO] [stdout] test error::tests::test_severity_labels ... ok
[INFO] [stdout] test error::tests::test_severity_ordering ... ok
[INFO] [stdout] test error::tests::test_shader_error_display ... ok
[INFO] [stdout] test error::tests::test_viz_error_code_mapping ... ok
[INFO] [stdout] test error::tests::test_viz_error_code_numeric ... ok
[INFO] [stdout] test error::tests::test_volume_error ... ok
[INFO] [stdout] test error::tests::test_viz_error_code_display ... ok
[INFO] [stdout] test flow_visualization::tests::test_energy_spectrum_1d_length ... ok
[INFO] [stdout] test flow_visualization::tests::test_energy_spectrum_1d_dc_zero_mean ... ok
[INFO] [stdout] test flow_visualization::tests::test_energy_spectrum_2d_length ... ok
[INFO] [stdout] test flow_visualization::tests::test_flow_stats_min_max ... ok
[INFO] [stdout] test flow_visualization::tests::test_flow_stats_reset ... ok
[INFO] [stdout] test flow_visualization::tests::test_flow_stats_mean ... ok
[INFO] [stdout] test flow_visualization::tests::test_flow_stats_rms_constant_zero_fluctuation ... ok
[INFO] [stdout] test flow_visualization::tests::test_flow_stats_rms_known_value ... ok
[INFO] [stdout] test flow_visualization::tests::test_flow_stats_variance ... ok
[INFO] [stdout] test flow_visualization::tests::test_lambda2_criterion_sign_flip ... ok
[INFO] [stdout] test flow_visualization::tests::test_lic_config_default ... ok
[INFO] [stdout] test flow_visualization::tests::test_lic_custom_noise ... ok
[INFO] [stdout] test flow_visualization::tests::test_lic_output_range ... ok
[INFO] [stdout] test flow_visualization::tests::test_pathline_arc_length ... ok
[INFO] [stdout] test flow_visualization::tests::test_pathline_backward_uniform ... ok
[INFO] [stdout] test flow_visualization::tests::test_pathline_bundle_count ... ok
[INFO] [stdout] test flow_visualization::tests::test_lic_output_size ... ok
[INFO] [stdout] test flow_visualization::tests::test_pathline_forward_uniform ... ok
[INFO] [stdout] test flow_visualization::tests::test_pathline_grid_seeds_count ... ok
[INFO] [stdout] test flow_visualization::tests::test_pathline_terminates_at_boundary ... ok
[INFO] [stdout] test flow_visualization::tests::test_pathline_rk4_circular ... ok
[INFO] [stdout] test flow_visualization::tests::test_pressure_coefficient ... ok
[INFO] [stdout] test flow_visualization::tests::test_pressure_field_interpolate_2d_uniform ... ok
[INFO] [stdout] test flow_visualization::tests::test_pressure_field_iso_contour_2d ... ok
[INFO] [stdout] test flow_visualization::tests::test_pressure_field_mean ... ok
[INFO] [stdout] test flow_visualization::tests::test_pressure_field_iso_surface_3d ... ok
[INFO] [stdout] test flow_visualization::tests::test_pressure_field_min_max ... ok
[INFO] [stdout] test flow_visualization::tests::test_pressure_field_set_get ... ok
[INFO] [stdout] test flow_visualization::tests::test_q_criterion_uniform_zero ... ok
[INFO] [stdout] test flow_visualization::tests::test_q_vortex_cores_threshold ... ok
[INFO] [stdout] test flow_visualization::tests::test_swirling_strength_uniform_zero ... ok
[INFO] [stdout] test flow_visualization::tests::test_swirling_strength_vortex_nonzero ... ok
[INFO] [stdout] test flow_visualization::tests::test_turbulent_kinetic_energy ... ok
[INFO] [stdout] test flow_visualization::tests::test_vec2_cross ... ok
[INFO] [stdout] test flow_visualization::tests::test_vec2_dot ... ok
[INFO] [stdout] test flow_visualization::tests::test_vec2_length ... ok
[INFO] [stdout] test flow_visualization::tests::test_vec2_normalize ... ok
[INFO] [stdout] test flow_visualization::tests::test_vec3_cross_orthogonal ... ok
[INFO] [stdout] test flow_visualization::tests::test_vec3_dot_perpendicular ... ok
[INFO] [stdout] test flow_visualization::tests::test_vec3_length ... ok
[INFO] [stdout] test flow_visualization::tests::test_vec3_normalize_unit ... ok
[INFO] [stdout] test flow_visualization::tests::test_vector_field_2d_index ... ok
[INFO] [stdout] test flow_visualization::tests::test_vector_field_3d_index ... ok
[INFO] [stdout] test flow_visualization::tests::test_vector_field_divergence_uniform ... ok
[INFO] [stdout] test flow_visualization::tests::test_vector_field_curl_2d_vortex ... ok
[INFO] [stdout] test flow_visualization::tests::test_vector_field_fill_uniform ... ok
[INFO] [stdout] test flow_visualization::tests::test_vector_field_interpolate_2d_uniform ... ok
[INFO] [stdout] test flow_visualization::tests::test_vector_field_interpolate_3d_uniform ... ok
[INFO] [stdout] test flow_visualization::tests::test_vector_field_set_get ... ok
[INFO] [stdout] test flow_visualization::tests::test_vorticity_magnitude_uniform_zero ... ok
[INFO] [stdout] test flow_visualization::tests::test_vector_field_vorticity_3d_uniform ... ok
[INFO] [stdout] test flow_viz::tests::test_arrow_segments_basic ... ok
[INFO] [stdout] test flow_viz::tests::test_arrow_segments_zero_length ... ok
[INFO] [stdout] test flow_viz::tests::test_classify_critical_points_zero_field ... ok
[INFO] [stdout] test flow_viz::tests::test_critical_points_partial ... ok
[INFO] [stdout] test flow_viz::tests::test_critical_points_positions_in_bounds ... ok
[INFO] [stdout] test flow_viz::tests::test_critical_points_uniform_field_none ... ok
[INFO] [stdout] test flow_viz::tests::test_critical_points_zero_field ... ok
[INFO] [stdout] test flow_viz::tests::test_divergence_length ... ok
[INFO] [stdout] test flow_viz::tests::test_divergence_linear_x_field ... ok
[INFO] [stdout] test flow_viz::tests::test_divergence_uniform_field_is_zero ... ok
[INFO] [stdout] test flow_viz::tests::test_enstrophy_uniform_zero ... ok
[INFO] [stdout] test flow_viz::tests::test_flow_field_empty ... ok
[INFO] [stdout] test flow_viz::tests::test_flow_field_new_zero ... ok
[INFO] [stdout] test flow_viz::tests::test_flow_field_set_vel ... ok
[INFO] [stdout] test flow_viz::tests::test_flow_field_speed_at ... ok
[INFO] [stdout] test flow_viz::tests::test_flow_field_vel_at_clamped ... ok
[INFO] [stdout] test flow_viz::tests::test_helicity_uniform_zero ... ok
[INFO] [stdout] test flow_viz::tests::test_interpolate_uniform_field ... ok
[INFO] [stdout] test flow_viz::tests::test_interpolate_zero_field ... ok
[INFO] [stdout] test flow_viz::tests::test_lambda2_criterion_length ... ok
[INFO] [stdout] test flow_viz::tests::test_lambda2_uniform_field_no_vortex ... ok
[INFO] [stdout] test flow_viz::tests::test_lic_2d_length ... ok
[INFO] [stdout] test flow_viz::tests::test_normalize3_unit ... ok
[INFO] [stdout] test flow_viz::tests::test_lic_2d_values_in_range ... ok
[INFO] [stdout] test flow_viz::tests::test_normalize3_zero ... ok
[INFO] [stdout] test flow_viz::tests::test_pathline_euler_step_count ... ok
[INFO] [stdout] test flow_viz::tests::test_pathline_euler_uniform_field ... ok
[INFO] [stdout] test flow_viz::tests::test_pathline_euler_zero_stays_put ... ok
[INFO] [stdout] test flow_viz::tests::test_q_criterion_length ... ok
[INFO] [stdout] test flow_viz::tests::test_q_criterion_uniform_is_zero ... ok
[INFO] [stdout] test flow_viz::tests::test_seeding_circle_count ... ok
[INFO] [stdout] test flow_viz::tests::test_seeding_line_endpoints ... ok
[INFO] [stdout] test flow_viz::tests::test_seeding_uniform_count ... ok
[INFO] [stdout] test flow_viz::tests::test_seeding_uniform_in_bounds ... ok
[INFO] [stdout] test flow_viz::tests::test_seeding_uniform_zero_seeds ... ok
[INFO] [stdout] test flow_viz::tests::test_separatrices_no_saddles ... ok
[INFO] [stdout] test flow_viz::tests::test_speed_field_length ... ok
[INFO] [stdout] test flow_viz::tests::test_speed_field_uniform ... ok
[INFO] [stdout] test flow_viz::tests::test_strain_rate_magnitude_uniform_zero ... ok
[INFO] [stdout] test flow_viz::tests::test_streakline_advance_adds_particles ... ok
[INFO] [stdout] test flow_viz::tests::test_streakline_particles_move ... ok
[INFO] [stdout] test flow_viz::tests::test_streamline_rk4_backward ... ok
[INFO] [stdout] test flow_viz::tests::test_streamline_rk4_step_count ... ok
[INFO] [stdout] test flow_viz::tests::test_streamline_rk4_uniform_field ... ok
[INFO] [stdout] test flow_viz::tests::test_streamline_rk4_zero_field_stays_put ... ok
[INFO] [stdout] test flow_viz::tests::test_streamline_rk4_uniform_displacement ... ok
[INFO] [stdout] test flow_viz::tests::test_vec_helpers ... ok
[INFO] [stdout] test flow_viz::tests::test_vector_field_arrows_zero_field ... ok
[INFO] [stdout] test flow_viz::tests::test_vector_field_arrows_uniform ... ok
[INFO] [stdout] test flow_viz::tests::test_vorticity_magnitude_uniform_zero ... ok
[INFO] [stdout] test flow_viz::tests::test_vorticity_same_dimensions ... ok
[INFO] [stdout] test flow_viz::tests::test_vorticity_uniform_field_is_zero ... ok
[INFO] [stdout] test fluid_visualization::tests::test_arrow_glyph_tip_offset ... ok
[INFO] [stdout] test fluid_visualization::tests::test_density_gradient_step_function ... ok
[INFO] [stdout] test fluid_visualization::tests::test_cross3_orthogonal ... ok
[INFO] [stdout] test fluid_visualization::tests::test_density_gradient_uniform_field ... ok
[INFO] [stdout] test fluid_visualization::tests::test_flowline_arc_length ... ok
[INFO] [stdout] test fluid_visualization::tests::test_fluid_snapshot_len ... ok
[INFO] [stdout] test fluid_visualization::tests::test_fluid_snapshot_max_speed_zero ... ok
[INFO] [stdout] test fluid_visualization::tests::test_fluid_snapshot_pressure_range ... ok
[INFO] [stdout] test fluid_visualization::tests::test_hot_rgba_black_at_zero ... ok
[INFO] [stdout] test fluid_visualization::tests::test_hot_rgba_white_at_one ... ok
[INFO] [stdout] test fluid_visualization::tests::test_jet_rgba_blue_at_zero ... ok
[INFO] [stdout] test fluid_visualization::tests::test_jet_rgba_red_at_one ... ok
[INFO] [stdout] test fluid_visualization::tests::test_length3_unit_vectors ... ok
[INFO] [stdout] test fluid_visualization::tests::test_lerp_endpoints ... ok
[INFO] [stdout] test fluid_visualization::tests::test_lic_output_in_range ... ok
[INFO] [stdout] test fluid_visualization::tests::test_lic_output_size ... ok
[INFO] [stdout] test fluid_visualization::tests::test_marching_cubes_no_triangles_for_uniform_field ... ok
[INFO] [stdout] test fluid_visualization::tests::test_marching_cubes_some_triangles_for_sphere ... ok
[INFO] [stdout] test fluid_visualization::tests::test_marching_squares_all_above ... ok
[INFO] [stdout] test fluid_visualization::tests::test_marching_squares_no_crossing ... ok
[INFO] [stdout] test fluid_visualization::tests::test_marching_squares_one_crossing ... ok
[INFO] [stdout] test fluid_visualization::tests::test_noise_texture_size ... ok
[INFO] [stdout] test fluid_visualization::tests::test_noise_texture_values_in_range ... ok
[INFO] [stdout] test fluid_visualization::tests::test_normalize3_produces_unit_vector ... ok
[INFO] [stdout] test fluid_visualization::tests::test_normalize_scalar_clamps ... ok
[INFO] [stdout] test fluid_visualization::tests::test_normalize_scalar_degenerate ... ok
[INFO] [stdout] test fluid_visualization::tests::test_particle_advection ... ok
[INFO] [stdout] test fluid_visualization::tests::test_particle_death_removes_particle ... ok
[INFO] [stdout] test fluid_visualization::tests::test_particle_max_particles_respected ... ok
[INFO] [stdout] test fluid_visualization::tests::test_particle_system_spawn_and_count ... ok
[INFO] [stdout] test fluid_visualization::tests::test_pathline_length ... ok
[INFO] [stdout] test fluid_visualization::tests::test_pressure_contours_multiple_iso ... ok
[INFO] [stdout] test fluid_visualization::tests::test_rgba_alpha_always_one ... ok
[INFO] [stdout] test fluid_visualization::tests::test_ring_seeds_count ... ok
[INFO] [stdout] test fluid_visualization::tests::test_ring_seeds_radius ... ok
[INFO] [stdout] test fluid_visualization::tests::test_rotate_z_90_degrees ... ok
[INFO] [stdout] test fluid_visualization::tests::test_shock_image_size ... ok
[INFO] [stdout] test fluid_visualization::tests::test_sph_density_grid_positive ... ok
[INFO] [stdout] test fluid_visualization::tests::test_sph_density_image_size ... ok
[INFO] [stdout] test fluid_visualization::tests::test_streamline_stops_at_min_speed ... ok
[INFO] [stdout] test fluid_visualization::tests::test_streamline_uniform_field_length ... ok
[INFO] [stdout] test fluid_visualization::tests::test_streamline_uniform_field_position ... ok
[INFO] [stdout] test fluid_visualization::tests::test_tke_heatmap_image_size ... ok
[INFO] [stdout] test fluid_visualization::tests::test_tke_symmetric_fluctuations ... ok
[INFO] [stdout] test fluid_visualization::tests::test_tke_zero_for_identical_snapshots ... ok
[INFO] [stdout] test fluid_visualization::tests::test_trace_streamlines_multiple ... ok
[INFO] [stdout] test fluid_visualization::tests::test_triangle_normal_perpendicular ... ok
[INFO] [stdout] test fluid_visualization::tests::test_trilinear_sample_corner ... ok
[INFO] [stdout] test fluid_visualization::tests::test_trilinear_sample_midpoint ... ok
[INFO] [stdout] test fluid_visualization::tests::test_velocity_arrow_glyphs_2d_count ... ok
[INFO] [stdout] test fluid_visualization::tests::test_velocity_arrow_glyphs_count ... ok
[INFO] [stdout] test fluid_visualization::tests::test_volume_render_ray_empty_density ... ok
[INFO] [stdout] test fluid_visualization::tests::test_vorticity_heatmap_alpha_full ... ok
[INFO] [stdout] test fluid_visualization::tests::test_vorticity_heatmap_size ... ok
[INFO] [stdout] test fluid_visualization::tests::test_vorticity_magnitude_positive ... ok
[INFO] [stdout] test fluid_visualization::tests::test_vorticity_zero_for_uniform_field ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_bubble_max_count ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_bubble_prune ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_bubble_total_internal_reflection ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_bubble_visible_count ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_density_map_positive ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_fluid_stats_cfl ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_fluid_stats_format ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_fluid_stats_mach ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_fluid_stats_reynolds ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_foam_high_velocity ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_foam_no_low_velocity ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_free_surface_crossings_exist ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_free_surface_empty ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_iso_crossings_monotone ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_iso_edge_interp_midpoint ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_lerp_color_t0 ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_lerp_color_t1 ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_lic_output_size ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_lic_uniform_flow_nonzero ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_metaball_field_at_center ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_metaball_field_far ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_pathline_length_increases ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_pressure_apply_count ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_pressure_colormap_valid_range ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_pressure_iso_contours ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_pressure_map_range ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_q_criterion_negative_at_strain ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_q_criterion_positive_at_vortex ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_splat_depth_sort ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_splat_gaussian_decreases ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_splat_gaussian_peak ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_streakline_emit ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_streakline_initial_empty ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_streakline_max_length ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_streamline_stops_zero_vel ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_streamline_trace_many ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_streamline_trace_one_point ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_streamline_trace_steps ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_tke_nonnegative ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_tke_spectrum_nonempty ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_velocity_arrow_above_min ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_velocity_arrow_below_min ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_velocity_arrow_build_field ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_velocity_arrow_tip_displaced ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_velocity_arrows_all_zero ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_volume_slice_extract ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_volume_slice_sample ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_vortex_core_cells ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_vorticity_color_zero ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_vorticity_identity_jacobian ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_vorticity_rotation ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_wave_foam_range ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_wave_fresnel_at_zero ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_wave_fresnel_increases ... ok
[INFO] [stdout] test fluid_viz::functions::tests::test_wave_update_normals ... ok
[INFO] [stdout] test font_rendering::tests::test_annotation_all_returns_all ... ok
[INFO] [stdout] test font_rendering::tests::test_annotation_layer_add_and_len ... ok
[INFO] [stdout] test font_rendering::tests::test_annotation_layer_clear ... ok
[INFO] [stdout] test font_rendering::tests::test_annotation_projection_behind_camera_omitted ... ok
[INFO] [stdout] test font_rendering::tests::test_annotation_projection_centred_is_near_zero ... ok
[INFO] [stdout] test font_rendering::tests::test_annotation_projection_empty ... ok
[INFO] [stdout] test font_rendering::tests::test_annotation_projection_in_front ... ok
[INFO] [stdout] test font_rendering::tests::test_annotation_projection_screen_coords_finite ... ok
[INFO] [stdout] test font_rendering::tests::test_ascii_default_glyph_a_nonzero ... ok
[INFO] [stdout] test font_rendering::tests::test_ascii_default_glyph_bits_a_nonzero ... ok
[INFO] [stdout] test font_rendering::tests::test_ascii_default_has_all_printable ... ok
[INFO] [stdout] test font_rendering::tests::test_ascii_default_space_is_blank ... ok
[INFO] [stdout] test font_rendering::tests::test_bitmap_font_add_and_get_glyph ... ok
[INFO] [stdout] test font_rendering::tests::test_bitmap_font_advance_for_known_char ... ok
[INFO] [stdout] test error::tests::test_scene_error ... ok
[INFO] [stdout] test error::tests::test_error_collection_empty ... ok
[INFO] [stdout] test debug_overlay::tests::test_force_debug_emits_arrow_for_nonzero_force ... ok
[INFO] [stdout] test data_pipeline::tests::test_integrate_starts_at_zero ... ok
[INFO] [stdout] test data_pipeline::tests::test_detect_peaks_empty_short_data ... ok
[INFO] [stdout] test font_rendering::tests::test_bitmap_font_ascii_placeholder ... ok
[INFO] [stdout] test font_rendering::tests::test_bitmap_font_glyph_count ... ok
[INFO] [stdout] test font_rendering::tests::test_bitmap_font_measure_width ... ok
[INFO] [stdout] test font_rendering::tests::test_glyph_bitmap_is_empty_zero_dimensions ... ok
[INFO] [stdout] test font_rendering::tests::test_glyph_bitmap_is_not_empty ... ok
[INFO] [stdout] test font_rendering::tests::test_bitmap_font_replace_glyph ... ok
[INFO] [stdout] test font_rendering::tests::test_glyph_bitmap_new_all_zero ... ok
[INFO] [stdout] test font_rendering::tests::test_glyph_bitmap_oob_get_returns_zero ... ok
[INFO] [stdout] test font_rendering::tests::test_glyph_bitmap_oob_set_is_noop ... ok
[INFO] [stdout] test font_rendering::tests::test_glyph_bitmap_pixel_count ... ok
[INFO] [stdout] test font_rendering::tests::test_glyph_bitmap_set_get_pixel ... ok
[INFO] [stdout] test font_rendering::tests::test_glyph_bits_out_of_range_returns_none ... ok
[INFO] [stdout] test font_rendering::tests::test_sdf_font_all_negative_is_transparent ... ok
[INFO] [stdout] test font_rendering::tests::test_sdf_font_corners_are_transparent ... ok
[INFO] [stdout] test font_rendering::tests::test_sdf_font_disc_center_is_opaque ... ok
[INFO] [stdout] test font_rendering::tests::test_sdf_font_render_glyph_size ... ok
[INFO] [stdout] test font_rendering::tests::test_sdf_font_render_missing_glyph ... ok
[INFO] [stdout] test font_rendering::tests::test_sdf_font_glyph_count ... ok
[INFO] [stdout] test font_rendering::tests::test_sdf_font_insert_custom ... ok
[INFO] [stdout] test font_rendering::tests::test_sdf_font_generate_and_has_glyph ... ok
[INFO] [stdout] test font_rendering::tests::test_sdf_font_render_zero_scale ... ok
[INFO] [stdout] test font_rendering::tests::test_text_layout_all_chars_present ... ok
[INFO] [stdout] test font_rendering::tests::test_text_layout_clipped ... ok
[INFO] [stdout] test font_rendering::tests::test_text_layout_basic ... ok
[INFO] [stdout] test font_rendering::tests::test_text_layout_newline_resets_x ... ok
[INFO] [stdout] test font_rendering::tests::test_text_layout_empty_string ... ok
[INFO] [stdout] test font_rendering::tests::test_text_layout_wrapping ... ok
[INFO] [stdout] test font_rendering::tests::test_text_layout_no_wrapping_single_line ... ok
[INFO] [stdout] test font_rendering::tests::test_text_renderer_measure_width ... ok
[INFO] [stdout] test font_rendering::tests::test_text_renderer_pixel_coords_advance ... ok
[INFO] [stdout] test font_rendering::tests::test_text_renderer_space_has_no_pixels ... ok
[INFO] [stdout] test gizmos::tests::test_axis_color_y_is_green ... ok
[INFO] [stdout] test gizmos::tests::test_axis_color_x_is_red ... ok
[INFO] [stdout] test gizmos::tests::test_axis_color_z_is_blue ... ok
[INFO] [stdout] test font_rendering::tests::test_text_renderer_renders_known_glyph ... ok
[INFO] [stdout] test gizmos::tests::test_clear_empties_buffer ... ok
[INFO] [stdout] test gizmos::tests::test_disabled_layer_hidden_from_drain ... ok
[INFO] [stdout] test gizmos::tests::test_drain_layer_selective ... ok
[INFO] [stdout] test gizmos::tests::test_drain_lines_sorted_back_to_front ... ok
[INFO] [stdout] test gizmos::tests::test_drain_lines_sorted_front_to_back ... ok
[INFO] [stdout] test gizmos::tests::test_drain_clears_buffer ... ok
[INFO] [stdout] test gizmos::tests::test_draw_aabb_adds_twelve_lines ... ok
[INFO] [stdout] test gizmos::tests::test_draw_arrow_adds_lines ... ok
[INFO] [stdout] test gizmos::tests::test_draw_axis_adds_three_lines ... ok
[INFO] [stdout] test gizmos::tests::test_draw_ball_socket_constraint_generates_lines ... ok
[INFO] [stdout] test gizmos::tests::test_draw_capsule_generates_lines ... ok
[INFO] [stdout] test gizmos::tests::test_draw_body_forces_multiple ... ok
[INFO] [stdout] test gizmos::tests::test_draw_contact_generates_lines ... ok
[INFO] [stdout] test gizmos::tests::test_draw_contact_manifold_multiple ... ok
[INFO] [stdout] test gizmos::tests::test_draw_cross_adds_three_lines ... ok
[INFO] [stdout] test gizmos::tests::test_draw_contact_normal_glyph_generates_lines ... ok
[INFO] [stdout] test gizmos::tests::test_draw_force_arrow_scaled_draws_arrow ... ok
[INFO] [stdout] test gizmos::tests::test_draw_force_arrow_scaled_skips_tiny_force ... ok
[INFO] [stdout] test gizmos::tests::test_draw_grid_line_count ... ok
[INFO] [stdout] test gizmos::tests::test_draw_hinge_constraint_generates_lines ... ok
[INFO] [stdout] test gizmos::tests::test_draw_line_adds_one_line ... ok
[INFO] [stdout] test gizmos::tests::test_draw_rotate_gizmo_adds_lines ... ok
[INFO] [stdout] test gizmos::tests::test_draw_prismatic_constraint_generates_lines ... ok
[INFO] [stdout] test gizmos::tests::test_draw_scale_gizmo_adds_lines ... ok
[INFO] [stdout] test gizmos::tests::test_draw_selection_sphere_adds_lines ... ok
[INFO] [stdout] test gizmos::tests::test_draw_sphere_adds_three_circles ... ok
[INFO] [stdout] test gizmos::tests::test_draw_transform_gizmo_scale_mode ... ok
[INFO] [stdout] test gizmos::tests::test_draw_transform_gizmo_rotate_mode ... ok
[INFO] [stdout] test gizmos::tests::test_draw_transform_gizmo_translate_mode ... ok
[INFO] [stdout] test gizmos::tests::test_draw_translate_gizmo_adds_lines ... ok
[INFO] [stdout] test gizmos::tests::test_draw_velocity_arrow_length ... ok
[INFO] [stdout] test gizmos::tests::test_enabled_layer_appears_in_drain ... ok
[INFO] [stdout] test gizmos::tests::test_is_layer_enabled ... ok
[INFO] [stdout] test gizmos::tests::test_push_pop_transform_identity ... ok
[INFO] [stdout] test gizmos::tests::test_rotate_gizmo_segment_count_minimum ... ok
[INFO] [stdout] test gizmos::tests::test_transform_compose ... ok
[INFO] [stdout] test gizmos::tests::test_transform_identity_no_op ... ok
[INFO] [stdout] test gizmos::tests::test_transform_translates_points ... ok
[INFO] [stdout] test gizmos::tests::test_transform_translation ... ok
[INFO] [stdout] test gizmos::tests::test_transform_uniform_scale ... ok
[INFO] [stdout] test gizmos::tests::test_velocity_trail_cap_overflow ... ok
[INFO] [stdout] test gizmos::tests::test_draw_cone_generates_lines ... ok
[INFO] [stdout] test gizmos::tests::test_velocity_trail_draw_single_point_no_lines ... ok
[INFO] [stdout] test gizmos::tests::test_velocity_trail_push_and_len ... ok
[INFO] [stdout] test gizmos::tests::test_velocity_trail_starts_empty ... ok
[INFO] [stdout] test gizmos::tests::test_velocity_trail_draw_generates_lines ... ok
[INFO] [stdout] test glyph_renderer::tests::test_arrow_glyph_base_at_zero ... ok
[INFO] [stdout] test glyph_renderer::tests::test_arrow_glyph_min_segments ... ok
[INFO] [stdout] test glyph_renderer::tests::test_arrow_glyph_has_vertices ... ok
[INFO] [stdout] test glyph_renderer::tests::test_arrow_glyph_tip_at_unit_z ... ok
[INFO] [stdout] test glyph_renderer::tests::test_cross3_orthogonal ... ok
[INFO] [stdout] test glyph_renderer::tests::test_arrow_glyph_more_segments_more_verts ... ok
[INFO] [stdout] test glyph_renderer::tests::test_dot3_orthogonal ... ok
[INFO] [stdout] test glyph_renderer::tests::test_arrow_glyph_all_indices_in_bounds ... ok
[INFO] [stdout] test glyph_renderer::tests::test_ellipsoid_center_translation ... ok
[INFO] [stdout] test glyph_renderer::tests::test_ellipsoid_identity_frame_unit_sphere ... ok
[INFO] [stdout] test glyph_renderer::tests::test_ellipsoid_vertex_count ... ok
[INFO] [stdout] test glyph_renderer::tests::test_ellipsoid_negative_eigenvalues ... ok
[INFO] [stdout] test glyph_renderer::tests::test_glyph_instance_new ... ok
[INFO] [stdout] test glyph_renderer::tests::test_glyph_type_variants ... ok
[INFO] [stdout] test glyph_renderer::tests::test_hedgehog_directions_normalized ... ok
[INFO] [stdout] test glyph_renderer::tests::test_hedgehog_empty_dims ... ok
[INFO] [stdout] test glyph_renderer::tests::test_hedgehog_count ... ok
[INFO] [stdout] test glyph_renderer::tests::test_hedgehog_glyph_type_arrow ... ok
[INFO] [stdout] test glyph_renderer::tests::test_hedgehog_grid_positions ... ok
[INFO] [stdout] test glyph_renderer::tests::test_normalize3_unit_vector ... ok
[INFO] [stdout] test glyph_renderer::tests::test_normalize3_zero_returns_fallback ... ok
[INFO] [stdout] test glyph_renderer::tests::test_oriented_discs_count ... ok
[INFO] [stdout] test glyph_renderer::tests::test_oriented_discs_empty ... ok
[INFO] [stdout] test glyph_renderer::tests::test_oriented_discs_normals_normalized ... ok
[INFO] [stdout] test glyph_renderer::tests::test_oriented_discs_radius_preserved ... ok
[INFO] [stdout] test glyph_renderer::tests::test_streamribbon_empty_path ... ok
[INFO] [stdout] test glyph_renderer::tests::test_streamribbon_same_count_as_path ... ok
[INFO] [stdout] test glyph_renderer::tests::test_streamribbon_single_point ... ok
[INFO] [stdout] test glyph_renderer::tests::test_streamribbon_width_correct ... ok
[INFO] [stdout] test gpu_viz::tests::test_batch_draw_calls_groups_by_material ... ok
[INFO] [stdout] test glyph_renderer::tests::test_sub3_basic ... ok
[INFO] [stdout] test gpu_viz::tests::test_batch_draw_calls_single_material ... ok
[INFO] [stdout] test gpu_viz::tests::test_cull_aabb_from_center_half ... ok
[INFO] [stdout] test gpu_viz::tests::test_draw_call_instanced ... ok
[INFO] [stdout] test gpu_viz::tests::test_frustum_cull_object_behind_camera_is_culled ... ok
[INFO] [stdout] test gpu_viz::tests::test_draw_call_single ... ok
[INFO] [stdout] test gpu_viz::tests::test_frustum_cull_object_in_front_not_culled ... ok
[INFO] [stdout] test gpu_viz::tests::test_gpu_buffer_kinds ... ok
[INFO] [stdout] test gpu_viz::tests::test_frustum_plane_distance_sign ... ok
[INFO] [stdout] test gpu_viz::tests::test_gpu_buffer_size ... ok
[INFO] [stdout] test gpu_viz::tests::test_gpu_mesh_empty ... ok
[INFO] [stdout] test gpu_viz::tests::test_gpu_mesh_byte_sizes ... ok
[INFO] [stdout] test gpu_viz::tests::test_gpu_mesh_triangle_count ... ok
[INFO] [stdout] test gpu_viz::tests::test_instance_buffer_byte_size ... ok
[INFO] [stdout] test gpu_viz::tests::test_gpu_vertex_construction ... ok
[INFO] [stdout] test gpu_viz::tests::test_instance_buffer_push_and_len ... ok
[INFO] [stdout] test gpu_viz::tests::test_lod_system_empty_returns_none ... ok
[INFO] [stdout] test gpu_viz::tests::test_lod_system_farther_gives_lower_lod ... ok
[INFO] [stdout] test gpu_viz::tests::test_lod_system_level_count ... ok
[INFO] [stdout] test gpu_viz::tests::test_lod_system_selects_highest_detail_close ... ok
[INFO] [stdout] test gpu_viz::tests::test_lod_system_selects_lowest_detail_far ... ok
[INFO] [stdout] test gpu_viz::tests::test_mesh_builder_single_triangle_normals_unit_length ... ok
[INFO] [stdout] test gpu_viz::tests::test_mesh_builder_quad ... ok
[INFO] [stdout] test gpu_viz::tests::test_mesh_builder_vertex_count ... ok
[INFO] [stdout] test gpu_viz::tests::test_particle_build_instance_buffer ... ok
[INFO] [stdout] test gpu_viz::tests::test_particle_depth_sort_front_to_back_is_descending_distance ... ok
[INFO] [stdout] test gpu_viz::tests::test_particle_gpu_system_add_and_count ... ok
[INFO] [stdout] test gpu_viz::tests::test_post_process_default_bloom_enabled ... ok
[INFO] [stdout] test gpu_viz::tests::test_post_process_disabled_none_active ... ok
[INFO] [stdout] test gpu_viz::tests::test_render_pipeline_opaque_defaults ... ok
[INFO] [stdout] test gpu_viz::tests::test_render_pipeline_transparent ... ok
[INFO] [stdout] test gpu_viz::tests::test_sdf_renderer_default_values ... ok
[INFO] [stdout] test gpu_viz::tests::test_transfer_function_empty_returns_zero ... ok
[INFO] [stdout] test gpu_viz::tests::test_transfer_function_interpolates ... ok
[INFO] [stdout] test gpu_viz::tests::test_transfer_function_opacity_clamped ... ok
[INFO] [stdout] test gpu_viz::tests::test_transfer_function_opacity_in_range ... ok
[INFO] [stdout] test gpu_viz::tests::test_transfer_function_sample_above_range ... ok
[INFO] [stdout] test gpu_viz::tests::test_transfer_function_sample_below_range ... ok
[INFO] [stdout] test gpu_viz::tests::test_uniform_block_ambient_positive ... ok
[INFO] [stdout] test gpu_viz::tests::test_uniform_block_default_identity_matrices ... ok
[INFO] [stdout] test gpu_viz::tests::test_volume_renderer_out_of_bounds_returns_zero ... ok
[INFO] [stdout] test gpu_viz::tests::test_volume_renderer_sample_voxel ... ok
[INFO] [stdout] test gpu_viz::tests::test_instance_buffer_transform_layout ... ok
[INFO] [stdout] test gpu_viz::tests::test_volume_renderer_voxel_count ... ok
[INFO] [stdout] test graph_viz::tests::test_adj_matrix_disconnected ... ok
[INFO] [stdout] test graph_viz::tests::test_adj_matrix_directed_path ... ok
[INFO] [stdout] test graph_viz::tests::test_adj_matrix_from_triangle_degree ... ok
[INFO] [stdout] test graph_viz::tests::test_adj_matrix_single_node_connected ... ok
[INFO] [stdout] test graph_viz::tests::test_bfs_distance_path ... ok
[INFO] [stdout] test graph_viz::tests::test_bfs_invalid_src_empty ... ok
[INFO] [stdout] test graph_viz::tests::test_bfs_order_path ... ok
[INFO] [stdout] test graph_viz::tests::test_bfs_unreachable_node ... ok
[INFO] [stdout] test graph_viz::tests::test_adj_matrix_is_connected_triangle ... ok
[INFO] [stdout] test graph_viz::tests::test_circular_layout_all_on_circle ... ok
[INFO] [stdout] test graph_viz::tests::test_circular_layout_evenly_spaced ... ok
[INFO] [stdout] test graph_viz::tests::test_circular_layout_single_node ... ok
[INFO] [stdout] test graph_viz::tests::test_circular_layout_zero_nodes ... ok
[INFO] [stdout] test graph_viz::tests::test_dfs_disconnected_partial_visit ... ok
[INFO] [stdout] test graph_viz::tests::test_dfs_path_graph_order ... ok
[INFO] [stdout] test graph_viz::tests::test_dfs_visits_all_nodes_connected ... ok
[INFO] [stdout] test graph_viz::tests::test_dijkstra_invalid_src ... ok
[INFO] [stdout] test graph_viz::tests::test_dijkstra_no_path ... ok
[INFO] [stdout] test graph_viz::tests::test_dijkstra_path_exists ... ok
[INFO] [stdout] test graph_viz::tests::test_dijkstra_shortest_weight ... ok
[INFO] [stdout] test graph_viz::tests::test_dijkstra_src_equals_dst ... ok
[INFO] [stdout] test graph_viz::tests::test_dist2_known ... ok
[INFO] [stdout] test graph_viz::tests::test_dist2_zero ... ok
[INFO] [stdout] test graph_viz::tests::test_edge_directed_weight ... ok
[INFO] [stdout] test graph_viz::tests::test_edge_undirected ... ok
[INFO] [stdout] test graph_viz::tests::test_force_directed_moves_nodes ... ok
[INFO] [stdout] test graph_viz::tests::test_force_directed_no_panic_empty ... ok
[INFO] [stdout] test graph_viz::tests::test_force_directed_positions_finite ... ok
[INFO] [stdout] test graph_viz::tests::test_force_directed_single_node ... ok
[INFO] [stdout] test graph_viz::tests::test_graph_layout_bounding_box_empty ... ok
[INFO] [stdout] test graph_viz::tests::test_graph_layout_bounding_box ... ok
[INFO] [stdout] test graph_viz::tests::test_hierarchical_layout_empty_no_panic ... ok
[INFO] [stdout] test graph_viz::tests::test_hierarchical_layout_path_y_monotone ... ok
[INFO] [stdout] test graph_viz::tests::test_hierarchical_layout_positions_finite ... ok
[INFO] [stdout] test graph_viz::tests::test_node_new_default_position ... ok
[INFO] [stdout] test graph_viz::tests::test_stats_avg_path_length_path ... ok
[INFO] [stdout] test graph_viz::tests::test_stats_clustering_complete_triangle ... ok
[INFO] [stdout] test graph_viz::tests::test_node_color_default ... ok
[INFO] [stdout] test graph_viz::tests::test_stats_empty_graph ... ok
[INFO] [stdout] test graph_viz::tests::test_stats_degree_distribution_count ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_bundle_edges_count ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_bundled_edge_polyline_length ... ok
[INFO] [stdout] test graph_viz::tests::test_stats_triangle_degrees ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_bundled_edge_sample_endpoints ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_color_nodes_by_category_different_categories ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_color_nodes_by_category_wraps ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_color_nodes_by_scalar_extremes ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_color_nodes_by_scalar_uniform ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_community_count_all_distinct ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_community_count_single ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_community_detection_connected_graph ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_community_detection_two_components ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_edge_weight_hints_count ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_edge_weight_hints_width_monotone ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_edge_weight_hints_empty ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_heatmap_from_adj_triangle ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_heatmap_to_csv_lines ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_scalar_to_color_clamp ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_heatmap_to_rgba_size ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_scalar_to_color_one_is_red ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_scalar_to_color_zero_is_blue ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_selection_clear ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_selection_rect ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_selection_toggle ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_viewport_graph_to_screen_center ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_viewport_round_trip ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_viewport_visible_bounds_grow_on_zoom_out ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_viewport_visible_nodes ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_viewport_zoom_around_anchor ... ok
[INFO] [stdout] test graph_viz::tests_extended::test_viewport_pan ... ok
[INFO] [stdout] test hdr_framebuffer::tests::all_tone_mappers_clamp_output ... ok
[INFO] [stdout] test hdr_framebuffer::tests::hdr_framebuffer_set_and_get ... ok
[INFO] [stdout] test hdr_framebuffer::tests::add_pixel_accumulates ... ok
[INFO] [stdout] test hdr_framebuffer::tests::to_ldr_produces_correct_length ... ok
[INFO] [stdout] test hdr_framebuffer::tests::linear_to_srgb_roundtrip ... ok
[INFO] [stdout] test hdr_framebuffer::tests::hdr_rasterizer_draws_triangle ... ok
[INFO] [stdout] test hdr_framebuffer::tests::tone_map_aces_clamps_output ... ok
[INFO] [stdout] test hdr_framebuffer::tests::tone_map_reinhard_identity_at_zero ... ok
[INFO] [stdout] test heatmap::tests::test_animation_duration ... ok
[INFO] [stdout] test heatmap::tests::test_animation_frame_count ... ok
[INFO] [stdout] test heatmap::tests::test_animation_sample_at_frame_0 ... ok
[INFO] [stdout] test heatmap::tests::test_animation_sample_at_midpoint ... ok
[INFO] [stdout] test heatmap::tests::test_animation_sample_clamps_below ... ok
[INFO] [stdout] test heatmap::tests::test_animation_single_frame ... ok
[INFO] [stdout] test heatmap::tests::test_arrow_glyph_as_segment ... ok
[INFO] [stdout] test heatmap::tests::test_arrow_glyph_clamp_length ... ok
[INFO] [stdout] test heatmap::tests::test_arrow_glyph_tip_direction ... ok
[INFO] [stdout] test heatmap::tests::test_arrow_glyph_zero_direction ... ok
[INFO] [stdout] test heatmap::tests::test_arrow_glyphs_from_field_count ... ok
[INFO] [stdout] test heatmap::tests::test_contour_all_below_level ... ok
[INFO] [stdout] test heatmap::tests::test_contour_arc_length_positive ... ok
[INFO] [stdout] test heatmap::tests::test_contour_no_crossings ... ok
[INFO] [stdout] test heatmap::tests::test_contour_set_empty_levels ... ok
[INFO] [stdout] test heatmap::tests::test_contour_set_closest_contour ... ok
[INFO] [stdout] test heatmap::tests::test_contour_set_n_levels ... ok
[INFO] [stdout] test heatmap::tests::test_contour_simple_vertical_crossing ... ok
[INFO] [stdout] test heatmap::tests::test_gradient_constant_field_zero_gradient ... ok
[INFO] [stdout] test heatmap::tests::test_gradient_linear_field_y ... ok
[INFO] [stdout] test heatmap::tests::test_grid_dx_dy ... ok
[INFO] [stdout] test heatmap::tests::test_grid_get_set ... ok
[INFO] [stdout] test heatmap::tests::test_grid_min_max ... ok
[INFO] [stdout] test heatmap::tests::test_gradient_linear_field_x ... ok
[INFO] [stdout] test heatmap::tests::test_grid_new_fill_value ... ok
[INFO] [stdout] test heatmap::tests::test_grid_out_of_bounds_returns_zero ... ok
[INFO] [stdout] test heatmap::tests::test_grid_sample_corners ... ok
[INFO] [stdout] test heatmap::tests::test_point_to_segment_dist_off_segment ... ok
[INFO] [stdout] test heatmap::tests::test_point_to_segment_dist_on_segment ... ok
[INFO] [stdout] test heatmap::tests::test_grid_sample_bilinear_center ... ok
[INFO] [stdout] test heatmap::tests::test_renderer_uniform_grid_uniform_color ... ok
[INFO] [stdout] test heatmap::tests::test_renderer_with_range ... ok
[INFO] [stdout] test heatmap::tests::test_renderer_output_size ... ok
[INFO] [stdout] test heatmap::tests::test_seed_points_line_x ... ok
[INFO] [stdout] test heatmap::tests::test_renderer_alpha_is_255 ... ok
[INFO] [stdout] test heatmap::tests::test_seed_points_line_y ... ok
[INFO] [stdout] test heatmap::tests::test_seed_points_random_in_bounds ... ok
[INFO] [stdout] test heatmap::tests::test_streamline_min_velocity_stops ... ok
[INFO] [stdout] test heatmap::tests::test_seed_points_uniform_corners ... ok
[INFO] [stdout] test heatmap::tests::test_seed_points_uniform_count ... ok
[INFO] [stdout] test heatmap::tests::test_streamline_seed_is_first_point ... ok
[INFO] [stdout] test heatmap::tests::test_streamline_uniform_field_direction ... ok
[INFO] [stdout] test heatmap::tests::test_vector_field_curl_irrotational ... ok
[INFO] [stdout] test heatmap::tests::test_vector_field_divergence_uniform ... ok
[INFO] [stdout] test heatmap::tests::test_vector_field_get ... ok
[INFO] [stdout] test heatmap::tests::test_vector_field_magnitude_grid ... ok
[INFO] [stdout] test heatmap::tests::test_vector_field_sample_at_corner ... ok
[INFO] [stdout] test instancing::tests::test_billboard_faces_camera_forward_not_zero ... ok
[INFO] [stdout] test instancing::tests::test_billboard_right_and_up_orthogonal ... ok
[INFO] [stdout] test instancing::tests::test_billboard_size_scales_axes ... ok
[INFO] [stdout] test instancing::tests::test_billboard_translation_preserved ... ok
[INFO] [stdout] test instancing::tests::test_buffer_add_sets_dirty ... ok
[INFO] [stdout] test instancing::tests::test_buffer_clear_removes_all ... ok
[INFO] [stdout] test instancing::tests::test_buffer_mark_clean_clears_dirty ... ok
[INFO] [stdout] test instancing::tests::test_buffer_starts_empty ... ok
[INFO] [stdout] test instancing::tests::test_buffer_update_sets_dirty ... ok
[INFO] [stdout] test instancing::tests::test_buffer_with_capacity ... ok
[INFO] [stdout] test instancing::tests::test_build_sphere_mesh_higher_resolution_more_vertices ... ok
[INFO] [stdout] test instancing::tests::test_build_sphere_mesh_index_count_multiple_of_3 ... ok
[INFO] [stdout] test instancing::tests::test_build_sphere_mesh_indices_in_bounds ... ok
[INFO] [stdout] test instancing::tests::test_build_sphere_mesh_normals_unit ... ok
[INFO] [stdout] test instancing::tests::test_build_sphere_mesh_vertices_on_sphere ... ok
[INFO] [stdout] test instancing::tests::test_frustum_cull_inside ... ok
[INFO] [stdout] test instancing::tests::test_frustum_cull_large_sphere_encompasses ... ok
[INFO] [stdout] test heatmap::tests::test_streamline_stops_at_boundary ... ok
[INFO] [stdout] test instancing::tests::test_frustum_cull_outside_x ... ok
[INFO] [stdout] test instancing::tests::test_frustum_cull_straddling_plane ... ok
[INFO] [stdout] test instancing::tests::test_identity_mat4_diagonal ... ok
[INFO] [stdout] test instancing::tests::test_instance_data_default_same_as_identity ... ok
[INFO] [stdout] test instancing::tests::test_instance_data_fields ... ok
[INFO] [stdout] test instancing::tests::test_instanced_renderer_cull_all_visible ... ok
[INFO] [stdout] test instancing::tests::test_instance_data_identity_default ... ok
[INFO] [stdout] test instancing::tests::test_instanced_renderer_cull_some_outside ... ok
[INFO] [stdout] test instancing::tests::test_mesh_template_bounding_radius ... ok
[INFO] [stdout] test instancing::tests::test_mesh_template_triangle_count ... ok
[INFO] [stdout] test instancing::tests::test_particle_age_fraction_clamps_to_one ... ok
[INFO] [stdout] test instancing::tests::test_particle_age_fraction_initial ... ok
[INFO] [stdout] test instancing::tests::test_particle_is_dead_after_max_lifetime ... ok
[INFO] [stdout] test instancing::tests::test_particle_to_instance_data_age_fraction_in_custom ... ok
[INFO] [stdout] test instancing::tests::test_particle_to_instance_data_alpha_fades ... ok
[INFO] [stdout] test instancing::tests::test_particle_step_advances_position ... ok
[INFO] [stdout] test instancing::tests::test_particle_to_instance_data_translation ... ok
[INFO] [stdout] test instancing::tests::test_vec3_dot_orthogonal ... ok
[INFO] [stdout] test instancing::tests::test_vec3_cross_unit_vectors ... ok
[INFO] [stdout] test fluid_visualization::tests::test_fluid_snapshot_cell_index ... ok
[INFO] [stdout] test instancing::tests::test_vec3_len ... ok
[INFO] [stdout] test flow_visualization::tests::test_integral_length_scale_constant ... ok
[INFO] [stdout] test interactive_viz::tests::test_camera_default ... ok
[INFO] [stdout] test interactive_viz::tests::test_camera_orbit_preserves_distance ... ok
[INFO] [stdout] test interactive_viz::tests::test_camera_pan_shifts_both ... ok
[INFO] [stdout] test interactive_viz::tests::test_camera_zoom_reduces_distance ... ok
[INFO] [stdout] test interactive_viz::tests::test_camera_view_matrix_identity_like ... ok
[INFO] [stdout] test interactive_viz::tests::test_camera_projection_matrix_near_far ... ok
[INFO] [stdout] test interactive_viz::tests::test_mat4_identity_mul ... ok
[INFO] [stdout] test interactive_viz::tests::test_picker_center_pixel_ray ... ok
[INFO] [stdout] test interactive_viz::tests::test_picker_different_pixels_different_rays ... ok
[INFO] [stdout] test interactive_viz::tests::test_picker_direction_is_unit ... ok
[INFO] [stdout] test interactive_viz::tests::test_render_command_draw_line_debug ... ok
[INFO] [stdout] test interactive_viz::tests::test_scene_add_object ... ok
[INFO] [stdout] test interactive_viz::tests::test_render_command_draw_text_debug ... ok
[INFO] [stdout] test interactive_viz::tests::test_scene_object_default_visible ... ok
[INFO] [stdout] test interactive_viz::tests::test_scene_object_transform_identity ... ok
[INFO] [stdout] test interactive_viz::tests::test_scene_render_commands_hidden ... ok
[INFO] [stdout] test interactive_viz::tests::test_scene_select_hit ... ok
[INFO] [stdout] test interactive_viz::tests::test_scene_select_miss ... ok
[INFO] [stdout] test interactive_viz::tests::test_scene_update_noop ... ok
[INFO] [stdout] test interactive_viz::tests::test_simple_mesh_bounding_sphere_tetra ... ok
[INFO] [stdout] test interactive_viz::tests::test_simple_mesh_bounding_sphere_empty ... ok
[INFO] [stdout] test interactive_viz::tests::test_simple_mesh_ray_intersect_cube_hit ... ok
[INFO] [stdout] test interactive_viz::tests::test_timeline_new ... ok
[INFO] [stdout] test interactive_viz::tests::test_scene_render_commands_visible ... ok
[INFO] [stdout] test interactive_viz::tests::test_simple_mesh_ray_intersect_miss ... ok
[INFO] [stdout] test interactive_viz::tests::test_timeline_pause_stops_advance ... ok
[INFO] [stdout] test interactive_viz::tests::test_timeline_play_and_step ... ok
[INFO] [stdout] test interactive_viz::tests::test_timeline_t_normalised ... ok
[INFO] [stdout] test interactive_viz::tests::test_timeline_zero_duration ... ok
[INFO] [stdout] test interactive_viz::tests::test_update_looping_clip_wraps ... ok
[INFO] [stdout] test interactive_viz::tests::test_update_advances_clip_elapsed ... ok
[INFO] [stdout] test interactive_viz::tests::test_timeline_seek_clamp ... ok
[INFO] [stdout] test interactive_viz::tests::test_timeline_stops_at_end ... ok
[INFO] [stdout] test interactive_viz::tests::test_update_nonlooping_clip_stops ... ok
[INFO] [stdout] test isosurface::tests::test_compute_normal_degenerate ... ok
[INFO] [stdout] test isosurface::tests::test_compute_normal_unit_length ... ok
[INFO] [stdout] test isosurface::tests::test_compute_normal_xy_plane ... ok
[INFO] [stdout] test isosurface::tests::test_dual_contouring_2d_empty ... ok
[INFO] [stdout] test isosurface::tests::test_dual_contouring_2d_finds_crossing ... ok
[INFO] [stdout] test isosurface::tests::test_dual_contouring_2d_no_crossing ... ok
[INFO] [stdout] test isosurface::tests::test_interpolate_edge_at_start ... ok
[INFO] [stdout] test isosurface::tests::test_interpolate_edge_at_end ... ok
[INFO] [stdout] test isosurface::tests::test_interpolate_edge_midpoint ... ok
[INFO] [stdout] test isosurface::tests::test_isosurface_mesh_triangle_count ... ok
[INFO] [stdout] test isosurface::tests::test_marching_cubes_flat_field_no_triangles ... ok
[INFO] [stdout] test isosurface::tests::test_marching_cubes_too_small_returns_empty ... ok
[INFO] [stdout] test isosurface::tests::test_scalar_field_get_set ... ok
[INFO] [stdout] test isosurface::tests::test_marching_cubes_triangles_have_unit_normals ... ok
[INFO] [stdout] test isosurface::tests::test_sphere_sdf_inside ... ok
[INFO] [stdout] test isosurface::tests::test_scalar_field_default_zero ... ok
[INFO] [stdout] test isosurface::tests::test_marching_cubes_sphere_positive_count ... ok
[INFO] [stdout] test isosurface::tests::test_sphere_sdf_on_surface ... ok
[INFO] [stdout] test isosurface::tests::test_sphere_sdf_outside ... ok
[INFO] [stdout] test isosurface::tests::test_torus_sdf_on_tube_surface ... ok
[INFO] [stdout] test isosurface::tests::test_sphere_sdf_radius ... ok
[INFO] [stdout] test isosurface::tests::test_torus_sdf_inside_tube ... ok
[INFO] [stdout] test medical_viz::functions::expanded_medical_tests::test_dicom_to_hu ... ok
[INFO] [stdout] test medical_viz::functions::expanded_medical_tests::test_dose_dvh ... ok
[INFO] [stdout] test medical_viz::functions::expanded_medical_tests::test_dicom_voxel_volume ... ok
[INFO] [stdout] test medical_viz::functions::expanded_medical_tests::test_dose_max ... ok
[INFO] [stdout] test medical_viz::functions::expanded_medical_tests::test_dose_set_get ... ok
[INFO] [stdout] test medical_viz::functions::expanded_medical_tests::test_dose_sample_at ... ok
[INFO] [stdout] test medical_viz::functions::expanded_medical_tests::test_dose_v20 ... ok
[INFO] [stdout] test medical_viz::functions::expanded_medical_tests::test_incision_avg_depth ... ok
[INFO] [stdout] test medical_viz::functions::expanded_medical_tests::test_incision_length ... ok
[INFO] [stdout] test medical_viz::functions::expanded_medical_tests::test_surgical_incision_total ... ok
[INFO] [stdout] test medical_viz::functions::expanded_medical_tests::test_surgical_plan_collision ... ok
[INFO] [stdout] test medical_viz::functions::expanded_medical_tests::test_trocar_volume ... ok
[INFO] [stdout] test medical_viz::functions::expanded_medical_tests::test_tumor_isosurface ... ok
[INFO] [stdout] test medical_viz::functions::expanded_medical_tests::test_tumor_volume ... ok
[INFO] [stdout] test medical_viz::functions::expanded_medical_tests::test_surgical_plan_no_collision ... ok
[INFO] [stdout] test medical_viz::functions::expanded_medical_tests::test_tumor_contains_inside ... ok
[INFO] [stdout] test medical_viz::functions::expanded_medical_tests::test_vessel_arteries_filter ... ok
[INFO] [stdout] test medical_viz::functions::expanded_medical_tests::test_vessel_length ... ok
[INFO] [stdout] test medical_viz::functions::expanded_medical_tests::test_vessel_tree_length ... ok
[INFO] [stdout] test medical_viz::functions::expanded_medical_tests::test_vessel_volume ... ok
[INFO] [stdout] test medical_viz::functions::expanded_viz_tests::test_ct_slice_intensity_at ... ok
[INFO] [stdout] test medical_viz::functions::expanded_viz_tests::test_ct_slice_to_rgba_len ... ok
[INFO] [stdout] test medical_viz::functions::expanded_viz_tests::test_ct_window_soft_tissue_clamp ... ok
[INFO] [stdout] test medical_viz::functions::expanded_viz_tests::test_dicom_banner ... ok
[INFO] [stdout] test medical_viz::functions::expanded_viz_tests::test_dicom_is_axial ... ok
[INFO] [stdout] test medical_viz::functions::expanded_viz_tests::test_ct_pixel_to_hu ... ok
[INFO] [stdout] test medical_viz::functions::expanded_viz_tests::test_isodose_contour_length ... ok
[INFO] [stdout] test medical_viz::functions::expanded_viz_tests::test_dvh_curve_v_at_dose ... ok
[INFO] [stdout] test medical_viz::functions::expanded_viz_tests::test_extract_isodose_contours ... ok
[INFO] [stdout] test medical_viz::functions::expanded_viz_tests::test_landmark_count_by_type ... ok
[INFO] [stdout] test medical_viz::functions::expanded_viz_tests::test_landmark_project_axial_inside ... ok
[INFO] [stdout] test medical_viz::functions::expanded_viz_tests::test_landmark_project_axial_outside ... ok
[INFO] [stdout] test medical_viz::functions::expanded_viz_tests::test_mpr_pixel_at ... ok
[INFO] [stdout] test medical_viz::functions::expanded_viz_tests::test_landmark_set_within_radius ... ok
[INFO] [stdout] test medical_viz::functions::expanded_viz_tests::test_mpr_standard_views_count ... ok
[INFO] [stdout] test medical_viz::functions::expanded_viz_tests::test_mri_t1_csf_dark ... ok
[INFO] [stdout] test medical_viz::functions::expanded_viz_tests::test_mri_t2_csf_bright ... ok
[INFO] [stdout] test medical_viz::functions::expanded_viz_tests::test_planar_measure_distance ... ok
[INFO] [stdout] test medical_viz::functions::expanded_viz_tests::test_pet_suv_image_render_len ... ok
[INFO] [stdout] test medical_viz::functions::expanded_viz_tests::test_mri_signal_map_normalise ... ok
[INFO] [stdout] test medical_viz::functions::expanded_viz_tests::test_suv_bw_basic ... ok
[INFO] [stdout] test medical_viz::functions::expanded_viz_tests::test_pseudo_color_hot_high ... ok
[INFO] [stdout] test medical_viz::functions::expanded_viz_tests::test_pseudo_color_jet_low ... ok
[INFO] [stdout] test medical_viz::functions::expanded_viz_tests::test_tumor_contour_area ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_anatomy_atlas_find_by_label ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_electro_physiology_activated_vertex ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_electro_physiology_time_advance ... ok
[INFO] [stdout] test medical_viz::functions::expanded_viz_tests::test_tumor_contour_contains ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_heatmap_color_at_center ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_anatomy_atlas_toggle_visibility ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_electro_physiology_isochrones ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_heatmap_update_data ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_heatmap_out_of_bounds ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_isosurface_all_inside ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_isosurface_mixed_produces_tris ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_measurement_angle_90 ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_measurement_voi ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_measurement_distance ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_mip_renderer_max_value ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_rgba_blend_transparent_background ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_rgba_premultiply ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_soft_tissue_transfer_func ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_transfer_func_endpoints ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_vessel_segment_length ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_vessel_tree_segment_count ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_slice_plane_axial_extraction ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_volume_data_get_set ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_transfer_func_monotone_alpha ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_vessel_tree_dfs ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_volume_data_sample_center ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_volume_data_value_range ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_volume_gradient_near_edge ... ok
[INFO] [stdout] test medical_viz::functions::tests::test_volume_renderer_ray_casting ... ok
[INFO] [stdout] test mesh_gen::functions::expanded_mesh_tests::test_axes_gizmo_three_axes ... ok
[INFO] [stdout] test mesh_gen::functions::expanded_mesh_tests::test_bicubic_patch_flat_plane ... ok
[INFO] [stdout] test mesh_gen::functions::expanded_mesh_tests::test_bicubic_patch_vertex_count ... ok
[INFO] [stdout] test mesh_gen::functions::expanded_mesh_tests::test_frustum_cone_when_top_radius_zero ... ok
[INFO] [stdout] test mesh_gen::functions::expanded_mesh_tests::test_frustum_vertex_count ... ok
[INFO] [stdout] test mesh_gen::functions::expanded_mesh_tests::test_generate_capsule_vertex_count ... ok
[INFO] [stdout] test mesh_gen::functions::expanded_mesh_tests::test_generate_cylinder_triangle_count ... ok
[INFO] [stdout] test mesh_gen::functions::expanded_mesh_tests::test_geodesic_sphere_normals_unit ... ok
[INFO] [stdout] test mesh_gen::functions::expanded_mesh_tests::test_geodesic_sphere_vertex_count_grows_with_subdivisions ... ok
[INFO] [stdout] test mesh_gen::functions::expanded_mesh_tests::test_geodesic_sphere_verts_on_surface ... ok
[INFO] [stdout] test mesh_gen::functions::new_mesh_tests::test_annulus_normals_y_up ... ok
[INFO] [stdout] test mesh_gen::functions::new_mesh_tests::test_annulus_outer_verts_at_outer_radius ... ok
[INFO] [stdout] test mesh_gen::functions::new_mesh_tests::test_annulus_inner_verts_at_inner_radius ... ok
[INFO] [stdout] test mesh_gen::functions::new_mesh_tests::test_annulus_vertex_count ... ok
[INFO] [stdout] test mesh_gen::functions::new_mesh_tests::test_arrow_glyph_zero_direction_returns_empty ... ok
[INFO] [stdout] test mesh_gen::functions::new_mesh_tests::test_arrow_glyph_apex_near_tip ... ok
[INFO] [stdout] test mesh_gen::functions::new_mesh_tests::test_arrow_glyph_triangle_indices_in_bounds ... ok
[INFO] [stdout] test mesh_gen::functions::new_mesh_tests::test_arrow_glyph_non_empty ... ok
[INFO] [stdout] test mesh_gen::functions::new_mesh_tests::test_cylinder_top_bottom_caps_exist ... ok
[INFO] [stdout] test mesh_gen::functions::new_mesh_tests::test_cone_base_cap_center_at_origin ... ok
[INFO] [stdout] test mesh_gen::functions::new_mesh_tests::test_disc_solid_vertex_count ... ok
[INFO] [stdout] test mesh_gen::functions::new_mesh_tests::test_disc_solid_normals_y_up ... ok
[INFO] [stdout] test mesh_gen::functions::new_mesh_tests::test_disc_solid_verts_on_plane ... ok
[INFO] [stdout] test mesh_gen::functions::new_mesh_tests::test_frustum_side_normals_outward ... ok
[INFO] [stdout] test mesh_gen::functions::new_mesh_tests::test_icosphere_is_geodesic_sphere ... ok
[INFO] [stdout] test mesh_gen::functions::new_mesh_tests::test_icosphere_normals_unit ... ok
[INFO] [stdout] test mesh_gen::functions::new_mesh_tests::test_icosphere_subdivision_grows ... ok
[INFO] [stdout] test mesh_gen::functions::new_mesh_tests::test_terrain_flat_normals_y_up ... ok
[INFO] [stdout] test mesh_gen::functions::new_mesh_tests::test_icosphere_verts_on_sphere ... ok
[INFO] [stdout] test mesh_gen::functions::new_mesh_tests::test_terrain_flat_vertex_count ... ok
[INFO] [stdout] test mesh_gen::functions::new_mesh_tests::test_terrain_height_values_applied ... ok
[INFO] [stdout] test mesh_gen::functions::new_mesh_tests::test_terrain_sinusoidal_normals_unit ... ok
[INFO] [stdout] test mesh_gen::functions::new_mesh_tests::test_terrain_triangle_indices_in_bounds ... ok
[INFO] [stdout] test mesh_gen::functions::new_mesh_tests::test_torus_normals_unit_high_seg ... ok
[INFO] [stdout] test mesh_gen::functions::new_mesh_tests::test_uv_sphere_verts_on_surface ... ok
[INFO] [stdout] test mesh_gen::functions::tests::test_capsule_non_empty ... ok
[INFO] [stdout] test mesh_gen::functions::tests::test_cone_has_apex ... ok
[INFO] [stdout] test mesh_gen::functions::tests::test_plane_vertex_count ... ok
[INFO] [stdout] test mesh_gen::functions::tests::test_cylinder_vertex_count ... ok
[INFO] [stdout] test mesh_gen::functions::tests::test_torus_vertex_count ... ok
[INFO] [stdout] test mesh_gen::functions::tests::test_torus_normals_unit ... ok
[INFO] [stdout] test mesh_gen::functions::tests::test_uv_sphere_normals_unit ... ok
[INFO] [stdout] test mesh_gen::functions::tests::test_uv_sphere_triangle_count ... ok
[INFO] [stdout] test mesh_gen::functions::tests::test_uv_sphere_vertex_count ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_arrow_mesh_zero_length_returns_empty ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_axes_gizmo_origin_offset ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_bicubic_patch_indices_in_bounds ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_arrow_mesh_non_empty_for_valid_direction ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_bicubic_patch_single_div_4_tris ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_disc_annulus_triangle_count ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_disc_min_sectors_clamped ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_disc_solid_triangle_count ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_arrow_x_axis_consistent ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_arrow_uvs_count_matches_vertices ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_disc_solid_center_vertex_at_origin ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_box_flat_returns_degenerate_box ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_arrow_z_axis_consistent ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_box_centered_nonzero ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_capsule_index_bounds ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_capsule_normals_unit ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_cone_base_verts_at_y_zero ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_cone_mesh_side_normals_outward ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_cone_mesh_uvs_in_range ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_cone_triangle_bounds ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_cylinder_mesh_normals_unit ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_cylinder_mesh_uvs_in_range ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_cylinder_mesh_min_sectors ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_cylinder_side_normals_horizontal ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_cylinder_triangle_bounds ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_frustum_bottom_y_minus_half_h ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_frustum_index_bounds ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_plane_mesh_indices_in_bounds ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_plane_mesh_consistent_for_tilted_normal ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_plane_mesh_subdivision_grows_with_n ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_sphere_normals_perpendicular_to_surface ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_plane_subdivision_index_bounds ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_plane_y_up_all_same_y ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_sphere_verts_on_surface ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_torus_major_radius_determines_extent ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_torus_mesh_centered ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_torus_mesh_indices_in_bounds ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_torus_mesh_uvs_in_range ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_generate_torus_triangle_bounds ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_geodesic_sphere_all_verts_on_sphere ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_mesh_data_flat_indices_length ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_mesh_data_aabb_box_tight ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_mesh_data_is_consistent_box ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_geodesic_sphere_subdivision_2_counts ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_mesh_data_is_consistent_cone ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_mesh_data_is_consistent_cylinder ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_mesh_data_merge_indices_offset_correctly ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_mesh_data_recompute_normals_unit_for_sphere ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_mesh_data_recompute_normals_unit_for_torus ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_mesh_data_scale_updates_positions ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_mesh_data_scale_does_not_change_triangle_count ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_mesh_data_translate_does_not_change_normals ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_tangent_space_box_count_matches ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_tangent_space_bitangents_unit ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_tangent_space_empty_mesh_empty_result ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_terrain_triangle_count_formula ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_terrain_constant_height_normals_up ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_terrain_vertex_x_z_spacing ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_uv_sphere_triangle_indices_in_bounds ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_generate_arrow_consistent ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_generate_arrow_indices_in_bounds ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_generate_arrow_non_empty ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_generate_arrow_zero_direction_empty ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_generate_box_12_triangles ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_generate_box_normals_axis_aligned ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_generate_box_normals_unit ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_generate_box_uvs_consistent ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_generate_cone_mesh_consistent ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_generate_cone_mesh_has_apex ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_generate_cone_mesh_indices_in_bounds ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_generate_cylinder_mesh_consistent ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_generate_cylinder_mesh_has_caps ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_generate_cylinder_mesh_indices_in_bounds ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_generate_plane_mesh_uvs_in_range ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_generate_plane_mesh_vertex_count ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_generate_sphere_indices_in_bounds ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_generate_sphere_normals_unit ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_generate_sphere_triangle_count ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_generate_sphere_uvs_in_range ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_generate_plane_mesh_normals_consistent ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_generate_sphere_vertex_count ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_generate_torus_mesh_consistent ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_generate_torus_mesh_normals_unit ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_generate_torus_mesh_vertex_count ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_mesh_data_aabb_empty ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_mesh_data_aabb_sphere ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_mesh_data_empty ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_mesh_data_flat_indices ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_mesh_data_merge ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_mesh_data_is_consistent_sphere ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_mesh_data_recompute_normals ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_mesh_data_scale ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_mesh_data_translate ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_tangent_space_orthogonal_to_normal ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_tangent_space_plane_y_up ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_tangent_space_sphere_count ... ok
[INFO] [stdout] test mesh_gen::functions_2::tests_mesh_gen_ext::param_disc_centre_vertex_is_first ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_tangent_space_tangents_unit ... ok
[INFO] [stdout] test mesh_gen::functions_2::tests_mesh_gen_ext::param_disc_triangle_count_equals_n_segs ... ok
[INFO] [stdout] test mesh_gen::functions_2::tests_mesh_gen_ext::param_disc_normals_point_z ... ok
[INFO] [stdout] test mesh_gen::functions_2::tests_mesh_gen_ext::param_mesh_bounding_box_unit_square ... ok
[INFO] [stdout] test mesh_gen::functions_2::tests_mesh_gen_ext::param_mesh_empty_zero_counts ... ok
[INFO] [stdout] test mesh_gen::functions_2::tests_mesh_gen_ext::param_mesh_scale_doubles_positions ... ok
[INFO] [stdout] test mesh_gen::functions_2::tests_mesh_gen_ext::param_mesh_translate_moves_vertices ... ok
[INFO] [stdout] test mesh_gen::functions_2::tests_mesh_gen_ext::param_mesh_triangle_count_six_indices ... ok
[INFO] [stdout] test mesh_gen::functions_2::tests_mesh_gen_ext::param_mobius_non_empty ... ok
[INFO] [stdout] test mesh_gen::functions_2::tests_mesh_gen_ext::param_sphere_area_approx_4pi_r2 ... ok
[INFO] [stdout] test mesh_gen::functions_2::tests_mesh_gen_ext::param_sphere_non_empty ... ok
[INFO] [stdout] test mesh_gen::functions_2::tests_mesh_gen_ext::param_sphere_normals_unit ... ok
[INFO] [stdout] test mesh_gen::functions_2::tests_mesh_gen_ext::param_sphere_vertices_on_surface ... ok
[INFO] [stdout] test mesh_gen::functions_2::tests_mesh_gen_ext::param_torus_bounding_box_within_major_plus_minor ... ok
[INFO] [stdout] test mesh_gen::functions_2::tests_mesh_gen_ext::param_torus_non_empty ... ok
[INFO] [stdout] test mesh_gen::functions_2::tests_mesh_gen_ext::recompute_normals_disc_points_up ... ok
[INFO] [stdout] test mesh_gen::functions_2::tests_mesh_gen_ext::recompute_normals_sphere_produces_unit_normals ... ok
[INFO] [stdout] test mesh_gen::functions_2::tests_mesh_gen_ext::sine_displacement_changes_z ... ok
[INFO] [stdout] test mesh_gen::functions_2::tests_mesh_gen_ext::sine_displacement_zero_amplitude_no_change ... ok
[INFO] [stdout] test mesh_render::tests::test_batch_draw_calls_empty ... ok
[INFO] [stdout] test mesh_render::tests::test_batch_draw_calls_groups_by_material ... ok
[INFO] [stdout] test mesh_render::tests::test_bounding_box_sphere_symmetric ... ok
[INFO] [stdout] test mesh_render::tests::test_build_box_12_triangles ... ok
[INFO] [stdout] test mesh_render::tests::test_build_sphere_vertex_count ... ok
[INFO] [stdout] test mesh_render::tests::test_draw_line_sets_pixels ... ok
[INFO] [stdout] test mesh_render::tests::test_framebuffer_clear ... ok
[INFO] [stdout] test mesh_render::tests::test_generate_lod_no_reduction_large_threshold_is_zero ... ok
[INFO] [stdout] test mesh_render::tests::test_generate_lod_reduces_large_threshold ... ok
[INFO] [stdout] test mesh_render::tests::test_generate_lod_returns_valid_indices ... ok
[INFO] [stdout] test mesh_render::tests::test_mat4_identity_transforms_point_unchanged ... ok
[INFO] [stdout] test mesh_render::tests::test_mat4_perspective_far_plane ... ok
[INFO] [stdout] test mesh_render::tests::test_mesh_instance_set_add_and_count ... ok
[INFO] [stdout] test mesh_render::tests::test_mesh_instance_set_clear ... ok
[INFO] [stdout] test mesh_render::tests::test_mesh_render_stats_record_draw ... ok
[INFO] [stdout] test mesh_render::tests::test_mesh_render_stats_reset ... ok
[INFO] [stdout] test mesh_render::tests::test_mesh_render_stats_verts_per_tri ... ok
[INFO] [stdout] test mesh_render::tests::test_mesh_skin_data_add_bone ... ok
[INFO] [stdout] test mesh_render::tests::test_mesh_skin_data_skin_position_identity ... ok
[INFO] [stdout] test mesh_render::tests::test_phong_shader_normal_aligned_with_light ... ok
[INFO] [stdout] test mesh_render::tests::test_skin_vertex_normalize_weights ... ok
[INFO] [stdout] test mesh_render::tests::test_skin_vertex_single_bone ... ok
[INFO] [stdout] test metaball::extended_tests::test_field_bounds_empty_returns_zero ... ok
[INFO] [stdout] test metaball::extended_tests::test_field_bounds_single_ball ... ok
[INFO] [stdout] test metaball::extended_tests::test_field_bounds_two_balls ... ok
[INFO] [stdout] test metaball::extended_tests::test_field_grid_empty_field_all_zero ... ok
[INFO] [stdout] test metaball::extended_tests::test_field_grid_get_out_of_range_returns_none ... ok
[INFO] [stdout] test metaball::extended_tests::test_field_grid_matches_direct_eval_at_corners ... ok
[INFO] [stdout] test metaball::extended_tests::test_field_grid_trilinear_at_grid_point ... ok
[INFO] [stdout] test metaball::extended_tests::test_field_grid_trilinear_monotone_along_axis ... ok
[INFO] [stdout] test metaball::extended_tests::test_field_grid_vertex_count ... ok
[INFO] [stdout] test metaball::extended_tests::test_field_stats_count ... ok
[INFO] [stdout] test metaball::extended_tests::test_field_stats_empty_field_mean_zero ... ok
[INFO] [stdout] test metaball::extended_tests::test_field_stats_single_ball_positive ... ok
[INFO] [stdout] test metaball::extended_tests::test_field_stats_std_dev ... ok
[INFO] [stdout] test metaball::extended_tests::test_lerp_keyframe_alpha_one ... ok
[INFO] [stdout] test metaball::extended_tests::test_lerp_keyframe_alpha_zero ... ok
[INFO] [stdout] test metaball::extended_tests::test_lerp_keyframe_equal_times ... ok
[INFO] [stdout] test metaball::extended_tests::test_sdf_multi_sphere_empty_infinity ... ok
[INFO] [stdout] test metaball::extended_tests::test_sdf_multi_sphere_single_sphere ... ok
[INFO] [stdout] test metaball::extended_tests::test_sdf_multi_sphere_two_spheres_smooth_union ... ok
[INFO] [stdout] test metaball::extended_tests::test_sdf_smooth_min_returns_smaller_when_far_apart ... ok
[INFO] [stdout] test metaball::extended_tests::test_sdf_smooth_min_zero_k_gives_min ... ok
[INFO] [stdout] test metaball::extended_tests::test_sdf_smooth_min_symmetric_when_equal ... ok
[INFO] [stdout] test metaball::extended_tests::test_sdf_sphere_inside_negative ... ok
[INFO] [stdout] test metaball::extended_tests::test_sdf_sphere_on_surface ... ok
[INFO] [stdout] test metaball::extended_tests::test_sdf_sphere_outside_positive ... ok
[INFO] [stdout] test metaball::extended_tests::test_track_clamp_after_end ... ok
[INFO] [stdout] test metaball::extended_tests::test_track_clamp_before_start ... ok
[INFO] [stdout] test metaball::extended_tests::test_track_interpolation_midpoint ... ok
[INFO] [stdout] test metaball::extended_tests::test_track_len_and_is_empty ... ok
[INFO] [stdout] test metaball::extended_tests::test_track_push_maintains_sorted_order ... ok
[INFO] [stdout] test metaball::extended_tests::test_track_sample_empty_returns_none ... ok
[INFO] [stdout] test metaball::extended_tests::test_track_single_keyframe ... ok
[INFO] [stdout] test metaball::extended_tests::test_wyvill_bounds_empty ... ok
[INFO] [stdout] test metaball::extended_tests::test_wyvill_bounds_single_ball ... ok
[INFO] [stdout] test metaball::extended_tests::test_wyvill_distance_to_point ... ok
[INFO] [stdout] test metaball::extended_tests::test_wyvill_field_empty_zero ... ok
[INFO] [stdout] test metaball::extended_tests::test_wyvill_field_sum ... ok
[INFO] [stdout] test metaball::extended_tests::test_wyvill_gradient_direction ... ok
[INFO] [stdout] test metaball::extended_tests::test_wyvill_len_and_is_empty ... ok
[INFO] [stdout] test metaball::extended_tests::test_wyvill_max_at_centre ... ok
[INFO] [stdout] test metaball::extended_tests::test_wyvill_strength_scales_value ... ok
[INFO] [stdout] test metaball::extended_tests::test_wyvill_translate ... ok
[INFO] [stdout] test metaball::extended_tests::test_wyvill_zero_outside_radius ... ok
[INFO] [stdout] test metaball::tests::test_compute_normal_is_unit_length ... ok
[INFO] [stdout] test metaball::tests::test_compute_normal_points_outward ... ok
[INFO] [stdout] test metaball::tests::test_field_empty_returns_zero ... ok
[INFO] [stdout] test metaball::tests::test_field_gradient_direction ... ok
[INFO] [stdout] test metaball::tests::test_field_sum_two_balls ... ok
[INFO] [stdout] test metaball::tests::test_grid_resolution_cells ... ok
[INFO] [stdout] test metaball::tests::test_interpolate_edge_equal_values_returns_midpoint ... ok
[INFO] [stdout] test metaball::tests::test_interpolate_edge_midpoint ... ok
[INFO] [stdout] test metaball::tests::test_isosurface_empty_field_no_triangles ... ok
[INFO] [stdout] test metaball::tests::test_isosurface_finer_grid_more_or_equal_triangles ... ok
[INFO] [stdout] test metaball::tests::test_isosurface_single_ball_produces_triangles ... ok
[INFO] [stdout] test metaball::tests::test_isosurface_triangles_have_valid_normals ... ok
[INFO] [stdout] test metaball::tests::test_merged_pairs_overlapping ... ok
[INFO] [stdout] test metaball::tests::test_merged_pairs_separated ... ok
[INFO] [stdout] test metaball::tests::test_merged_pairs_three_balls ... ok
[INFO] [stdout] test metaball::tests::test_metaball_distance_to ... ok
[INFO] [stdout] test metaball::tests::test_metaball_distance_to_self_is_zero ... ok
[INFO] [stdout] test metaball::tests::test_metaball_field_at_centre_is_large ... ok
[INFO] [stdout] test metaball::tests::test_metaball_field_decreases_with_distance ... ok
[INFO] [stdout] test metaball::tests::test_metaball_field_is_isotropic ... ok
[INFO] [stdout] test metaball::tests::test_translate_all_moves_all_balls ... ok
[INFO] [stdout] test metaball::tests::test_translate_single_ball ... ok
[INFO] [stdout] test metaball::tests::test_update_centres_per_ball ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_ball_stick_aabb_non_empty ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_ball_stick_no_atoms_aabb_none ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_ball_stick_water ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_bond_single_constructor ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_catmull_rom_t0_equals_p1 ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_catmull_rom_t1_equals_p2 ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_color_by_scheme_cpk_count ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_color_by_scheme_uniform ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_cpk_radius_oxygen ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_cpk_vdw_scale ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_cpk_volume_positive ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_cross3_orthogonal ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_crystal_supercell_atom_count ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_cubic_cell_volume ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_density_grid_index_consistency ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_density_grid_interpolate_corner ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_density_grid_max_min ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_density_grid_out_of_bounds_returns_zero ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_density_grid_position ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_density_grid_slice_z ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_detect_bonds_close_atoms ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_detect_bonds_far_atoms ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_element_covalent_hydrogen ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_element_cpk_color_oxygen_red ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_element_from_symbol_roundtrip ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_element_vdw_carbon ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_energy_landscape_contour_levels_count ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_energy_landscape_minimum_zero ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_iso_triangle_centroid ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_iso_triangle_face_normal_unit_length ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_lattice_vectors_cubic_orthogonal ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_marching_squares_step_function_produces_segment ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_marching_squares_uniform_above_no_contour ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_mo_density_at_zero_occupation ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_mo_phase_seeds_empty_at_high_threshold ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_mol_color_blend_midpoint ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_molecular_scene_empty_primitive_count ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_molecular_scene_with_cpk ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_molecule_add_atom_increments_count ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_molecule_formula_water ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_normalize3_unit_vector_unchanged ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_normalize3_zero_vector ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_ortho_cell_wireframe_12_edges ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_rainbow_color_red_at_zero ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_ramachandran_by_ss ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_ramachandran_density_map_size ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_ramachandran_favoured_fraction_helical ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_rdf_bin_count_matches_n_bins ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_rdf_empty_gives_zero_g ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_rdf_first_peak_r_some ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_ribbon_empty_input ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_ribbon_two_residues_produces_segments ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_selector_by_element ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_selector_select_all ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_selector_within_distance ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_trajectory_advance_wraps ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_trajectory_rmsd_same_is_zero ... ok
[INFO] [stdout] test molecular_viz::functions::tests::test_trajectory_total_energy ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_blackbody_ramp_endpoints ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_blackbody_ramp_midpoint ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_clip_scalar_field ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_clipping_plane_signed_distance ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_clipping_plane_visible ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_clipping_stack_filter_nodes ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_clipping_stack_filter_segments ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_colorize_temperatures_length ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_convergence_rate ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_cool_colormap_range ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_coupled_arrows_below_threshold_filtered ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_coupled_arrows_count ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_coupling_error ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_dashboard_all_converged ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_dashboard_iteration_limit ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_dashboard_not_converged ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_em_field_line_rk4 ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_em_field_line_uniform_euler ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_em_field_lines_to_segments ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_extract_interface_no_crossing ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_extract_interface_single_crossing ... ok
[INFO] [stdout] test font_rendering::tests::test_bitmap_font_advance_for_missing_char_fallback ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_field_node_construction ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_fsi_coupling_lines_count ... ok
[INFO] [stdout] test gizmos::tests::test_draw_selection_highlight_adds_12_lines ... ok
[INFO] [stdout] test instancing::tests::test_buffer_remove_sets_dirty ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_fsi_snapshot_initial_state ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_uv_sphere_min_sectors_clamped ... ok
[INFO] [stdout] test mesh_gen::functions_2::extra_mesh_tests::test_axes_gizmo_index_bounds_all_axes ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_hot_colormap_zero ... ok
[INFO] [stdout] test mesh_gen::functions_2::mesh_data_tests::test_generate_box_24_vertices ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_fsi_structural_arrows_filtered ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_interpolate_scalar_idw ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_interface_normal_lines ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_interpolate_vector_field ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_iso_contour_2x2_single_crossing ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_fsi_fluid_arrows_count ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_iso_contour_uniform_no_crossing ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_hot_colormap_one ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_multiphysics_residual_norm ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_normalize_scalar_clamped ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_normalize_scalar_degenerate ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_rgba_lerp_midpoint ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_rgba_lerp_endpoints ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_scalar_profile_bar_height ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_smooth_scalar_field_uniform ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_thermal_mechanical_overlay_length ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_smooth_scalar_field_reduces_peak ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_time_series_interpolate_out_of_range ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_timeline_fixed_sync_step ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_timeline_global_bounds ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_scalar_profile_bars_count ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_interpolate_scalar_nearest ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_thermal_mechanical_overlay_pure_thermal ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_timeline_sample_all ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_timeline_sync_grid_length ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_vec3_dot ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_vec3_norm_unit ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_vec3_norm_zero ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_vec3_cross ... ok
[INFO] [stdout] test multiphysics_viz::functions_2::tests::test_vec3_add ... ok
[INFO] [stdout] test network_visualization::tests::test_animation_edge_appear ... ok
[INFO] [stdout] test network_visualization::tests::test_animation_interpolate_position ... ok
[INFO] [stdout] test network_visualization::tests::test_animation_event_count ... ok
[INFO] [stdout] test network_visualization::tests::test_animation_node_disappear ... ok
[INFO] [stdout] test network_visualization::tests::test_animation_frame_at_start ... ok
[INFO] [stdout] test network_visualization::tests::test_animation_sample_empty ... ok
[INFO] [stdout] test network_visualization::tests::test_animation_sample_frames ... ok
[INFO] [stdout] test network_visualization::tests::test_barnes_hut_repulsion ... ok
[INFO] [stdout] test network_visualization::tests::test_community_greedy ... ok
[INFO] [stdout] test network_visualization::tests::test_community_label_propagation ... ok
[INFO] [stdout] test network_visualization::tests::test_animation_edge_disappear ... ok
[INFO] [stdout] test network_visualization::tests::test_community_members ... ok
[INFO] [stdout] test network_visualization::tests::test_community_spectral_k2 ... ok
[INFO] [stdout] test network_visualization::tests::test_community_spectral_k_geq_n ... ok
[INFO] [stdout] test network_visualization::tests::test_degree_distribution_pmf ... ok
[INFO] [stdout] test network_visualization::tests::test_community_num_communities ... ok
[INFO] [stdout] test network_visualization::tests::test_animation_node_move ... ok
[INFO] [stdout] test network_visualization::tests::test_edge_label ... ok
[INFO] [stdout] test network_visualization::tests::test_force_directed_default ... ok
[INFO] [stdout] test network_visualization::tests::test_community_modularity_range ... ok
[INFO] [stdout] test network_visualization::tests::test_force_directed_config ... ok
[INFO] [stdout] test network_visualization::tests::test_force_directed_chain ... ok
[INFO] [stdout] test network_visualization::tests::test_force_directed_empty ... ok
[INFO] [stdout] test network_visualization::tests::test_force_directed_single_node ... ok
[INFO] [stdout] test network_visualization::tests::test_force_directed_applies ... ok
[INFO] [stdout] test network_visualization::tests::test_graph_adjacency_matrix ... ok
[INFO] [stdout] test network_visualization::tests::test_graph_bfs ... ok
[INFO] [stdout] test network_visualization::tests::test_graph_default ... ok
[INFO] [stdout] test network_visualization::tests::test_graph_dfs ... ok
[INFO] [stdout] test network_visualization::tests::test_graph_directed_edge ... ok
[INFO] [stdout] test network_visualization::tests::test_graph_has_edge ... ok
[INFO] [stdout] test network_visualization::tests::test_graph_edge_count ... ok
[INFO] [stdout] test network_visualization::tests::test_graph_neighbors ... ok
[INFO] [stdout] test network_visualization::tests::test_graph_degree ... ok
[INFO] [stdout] test network_visualization::tests::test_graph_node_count ... ok
[INFO] [stdout] test network_visualization::tests::test_graph_node_mut ... ok
[INFO] [stdout] test network_visualization::tests::test_hierarchical_applies ... ok
[INFO] [stdout] test network_visualization::tests::test_hierarchical_assign_layers ... ok
[INFO] [stdout] test network_visualization::tests::test_hierarchical_default ... ok
[INFO] [stdout] test network_visualization::tests::test_hierarchical_empty ... ok
[INFO] [stdout] test network_visualization::tests::test_hierarchical_minimize_crossings ... ok
[INFO] [stdout] test network_visualization::tests::test_metrics_avg_path_chain ... ok
[INFO] [stdout] test network_visualization::tests::test_metrics_betweenness ... ok
[INFO] [stdout] test network_visualization::tests::test_metrics_clustering_triangle ... ok
[INFO] [stdout] test network_visualization::tests::test_metrics_degree_distribution ... ok
[INFO] [stdout] test network_visualization::tests::test_metrics_density ... ok
[INFO] [stdout] test network_visualization::tests::test_metrics_global_clustering ... ok
[INFO] [stdout] test network_visualization::tests::test_node_builder ... ok
[INFO] [stdout] test network_visualization::tests::test_metrics_pagerank_sums_to_one ... ok
[INFO] [stdout] test network_viz::tests::test_add_edge_increments_count ... ok
[INFO] [stdout] test network_viz::tests::test_add_node_increments_count ... ok
[INFO] [stdout] test network_viz::tests::test_adjacency_matrix_degree ... ok
[INFO] [stdout] test network_viz::tests::test_adjacency_matrix_empty_graph ... ok
[INFO] [stdout] test network_viz::tests::test_adjacency_matrix_from_graph_symmetric ... ok
[INFO] [stdout] test network_viz::tests::test_betweenness_centrality_empty_graph ... ok
[INFO] [stdout] test network_viz::tests::test_betweenness_centrality_non_negative ... ok
[INFO] [stdout] test network_viz::tests::test_circular_layout_empty_graph ... ok
[INFO] [stdout] test network_viz::tests::test_circular_layout_positions_distinct ... ok
[INFO] [stdout] test network_viz::tests::test_circular_layout_equidistant_from_center ... ok
[INFO] [stdout] test network_viz::tests::test_edge_crossings_crossing_x ... ok
[INFO] [stdout] test network_viz::tests::test_circular_layout_single_node ... ok
[INFO] [stdout] test network_viz::tests::test_betweenness_centrality_path_graph_middle_highest ... ok
[INFO] [stdout] test network_viz::tests::test_edge_stores_from_to_weight ... ok
[INFO] [stdout] test network_viz::tests::test_force_directed_layout_single_node_no_crash ... ok
[INFO] [stdout] test network_viz::tests::test_edge_crossings_no_crossing ... ok
[INFO] [stdout] test network_viz::tests::test_hierarchical_layout_levels ... ok
[INFO] [stdout] test network_viz::tests::test_hierarchical_layout_single_level ... ok
[INFO] [stdout] test network_viz::tests::test_force_directed_layout_positions_change ... ok
[INFO] [stdout] test network_viz::tests::test_network_graph_default_empty ... ok
[INFO] [stdout] test network_viz::tests::test_node_id_stored ... ok
[INFO] [stdout] test network_viz::tests::test_spring_embedder_single_node_no_crash ... ok
[INFO] [stdout] test neural_rendering::tests::test_deep_render_image_init ... ok
[INFO] [stdout] test neural_rendering::tests::test_deep_render_image_mean_luminance_black ... ok
[INFO] [stdout] test neural_rendering::tests::test_deep_render_image_rgba8_length ... ok
[INFO] [stdout] test neural_rendering::tests::test_deep_render_image_set_get_pixel ... ok
[INFO] [stdout] test neural_rendering::tests::test_gaussian_covariance_symmetric ... ok
[INFO] [stdout] test neural_rendering::tests::test_gaussian_density_max_at_center ... ok
[INFO] [stdout] test neural_rendering::tests::test_gaussian_splatting_bounding_sphere_empty ... ok
[INFO] [stdout] test neural_rendering::tests::test_gaussian_splatting_bounding_sphere_nonempty ... ok
[INFO] [stdout] test neural_rendering::tests::test_gaussian_splatting_empty_scene_white ... ok
[INFO] [stdout] test neural_rendering::tests::test_hash_grid_level_hash_deterministic ... ok
[INFO] [stdout] test neural_rendering::tests::test_hash_grid_lookup_in_range ... ok
[INFO] [stdout] test neural_rendering::tests::test_hsl_to_rgb_pure_red ... ok
[INFO] [stdout] test neural_rendering::tests::test_instant_ngp_param_count_positive ... ok
[INFO] [stdout] test neural_rendering::tests::test_instant_ngp_encode_length ... ok
[INFO] [stdout] test neural_rendering::tests::test_instant_ngp_query_density_nonneg ... ok
[INFO] [stdout] test network_viz::tests::test_spring_embedder_positions_change ... ok
[INFO] [stdout] test neural_rendering::tests::test_latent_space_viz_add_point ... ok
[INFO] [stdout] test neural_rendering::tests::test_latent_space_viz_embedding_distance_zero_self ... ok
[INFO] [stdout] test neural_rendering::tests::test_latent_space_viz_cluster_color_range ... ok
[INFO] [stdout] test neural_rendering::tests::test_latent_space_viz_pca_projection ... ok
[INFO] [stdout] test neural_rendering::tests::test_latent_space_viz_distance_matrix_diagonal_zero ... ok
[INFO] [stdout] test neural_rendering::tests::test_mlp_layer_output_dim ... ok
[INFO] [stdout] test neural_rendering::tests::test_mlp_relu_non_negative ... ok
[INFO] [stdout] test neural_rendering::tests::test_mlp_sigmoid_range ... ok
[INFO] [stdout] test neural_rendering::tests::test_nerf_pos_enc_dim ... ok
[INFO] [stdout] test neural_rendering::tests::test_nerf_query_color_range ... ok
[INFO] [stdout] test neural_rendering::tests::test_nerf_query_density_nonneg ... ok
[INFO] [stdout] test neural_rendering::tests::test_nerf_volume_integral_empty_samples ... ok
[INFO] [stdout] test neural_rendering::tests::test_nerf_volume_stratified_monotone ... ok
[INFO] [stdout] test neural_rendering::tests::test_nerf_volume_stratified_sample_count ... ok
[INFO] [stdout] test neural_rendering::tests::test_nerf_volume_render_ray_color_range ... ok
[INFO] [stdout] test neural_rendering::tests::test_neural_denoiser_output_same_size ... ok
[INFO] [stdout] test neural_rendering::tests::test_nerf_volume_render_ray_alpha_range ... ok
[INFO] [stdout] test neural_rendering::tests::test_neural_sdf_normal_unit_length ... ok
[INFO] [stdout] test neural_rendering::tests::test_pe_frequency_doubling ... ok
[INFO] [stdout] test neural_rendering::tests::test_neural_sdf_query_fields ... ok
[INFO] [stdout] test neural_rendering::tests::test_pe_point_output_dim ... ok
[INFO] [stdout] test neural_rendering::tests::test_nerf_volume_samples_in_range ... ok
[INFO] [stdout] test neural_rendering::tests::test_pe_scalar_with_input_dim ... ok
[INFO] [stdout] test neural_rendering::tests::test_pe_scalar_output_dim ... ok
[INFO] [stdout] test neural_rendering::tests::test_neural_sdf_sphere_trace_or_none ... ok
[INFO] [stdout] test neural_rendering::tests::test_style_transfer_loss_zero_for_equal_grams ... ok
[INFO] [stdout] test particle_effects::tests::test_billboard_all_same_z ... ok
[INFO] [stdout] test neural_rendering::tests::test_style_transfer_gram_diagonal_nonneg ... ok
[INFO] [stdout] test particle_effects::tests::test_billboard_centered_at_pos ... ok
[INFO] [stdout] test particle_effects::tests::test_billboard_forms_square ... ok
[INFO] [stdout] test neural_rendering::tests::test_neural_denoiser_kernel_weights_sum_to_one ... ok
[INFO] [stdout] test particle_effects::tests::test_billboard_four_corners ... ok
[INFO] [stdout] test particle_effects::tests::test_explosion_particles_alive ... ok
[INFO] [stdout] test particle_effects::tests::test_fire_emitter_color_at_age_zero ... ok
[INFO] [stdout] test particle_effects::tests::test_explosion_zero_particles ... ok
[INFO] [stdout] test particle_effects::tests::test_explosion_particles_start_at_center ... ok
[INFO] [stdout] test neural_rendering::tests::test_pe_sin_cos_pairs ... ok
[INFO] [stdout] test particle_effects::tests::test_fire_emitter_color_at_age_one ... ok
[INFO] [stdout] test particle_effects::tests::test_explosion_spawns_n_particles ... ok
[INFO] [stdout] test particle_effects::tests::test_fire_emitter_color_midpoint ... ok
[INFO] [stdout] test neural_rendering::tests::test_pe_different_inputs_produce_different_encodings ... ok
[INFO] [stdout] test particle_effects::tests::test_fire_emitter_emit_large_dt ... ok
[INFO] [stdout] test particle_effects::tests::test_fire_emitter_emit_zero_dt ... ok
[INFO] [stdout] test particle_effects::tests::test_particle_age_advances ... ok
[INFO] [stdout] test particle_effects::tests::test_particle_normalized_age_clamps_to_one ... ok
[INFO] [stdout] test particle_effects::tests::test_particle_normalized_age_zero_at_start ... ok
[INFO] [stdout] test particle_effects::tests::test_particle_opacity_fades ... ok
[INFO] [stdout] test particle_effects::tests::test_particle_normalized_age_half ... ok
[INFO] [stdout] test particle_effects::tests::test_particle_opacity_zero_at_end ... ok
[INFO] [stdout] test particle_effects::tests::test_fire_emitter_particles_alive ... ok
[INFO] [stdout] test particle_effects::tests::test_particle_dies_after_lifetime ... ok
[INFO] [stdout] test particle_effects::tests::test_particle_position_advances ... ok
[INFO] [stdout] test particle_effects::tests::test_particle_zero_lifetime ... ok
[INFO] [stdout] test particle_effects::tests::test_particle_starts_alive ... ok
[INFO] [stdout] test particle_effects::tests::test_pool_add_drops_over_limit ... ok
[INFO] [stdout] test particle_effects::tests::test_pool_add_within_limit ... ok
[INFO] [stdout] test particle_effects::tests::test_pool_alive_dead_count ... ok
[INFO] [stdout] test particle_effects::tests::test_pool_capacity ... ok
[INFO] [stdout] test particle_effects::tests::test_pool_update_ages_particles ... ok
[INFO] [stdout] test particle_effects::tests::test_pool_update_removes_dead ... ok
[INFO] [stdout] test particle_effects::tests::test_smoke_emitter_large_dt ... ok
[INFO] [stdout] test particle_effects::tests::test_smoke_emitter_zero_dt ... ok
[INFO] [stdout] test particle_effects::tests::test_sort_back_to_front_ordering ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_arrow_buffer_max_magnitude ... ok
[INFO] [stdout] test particle_effects::tests::test_sort_empty_slice ... ok
[INFO] [stdout] test particle_effects::tests::test_sort_single_particle ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_arrow_buffer_add_and_count ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_arrow_buffer_max_magnitude_empty ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_attenuated_size_at_reference ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_attenuated_size_close ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_arrow_buffer_to_line_data_length ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_arrow_zero_velocity ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_attenuate_buffer ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_billboard_two_particles ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_billboard_vertex_count ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_attenuated_size_far ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_color_by_property_clamps ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_colormap_clamps_above_one ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_color_by_temperature ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_colormap_clamps_below_zero ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_colormap_grayscale_one_is_white ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_colormap_cool_midpoint ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_color_by_velocity ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_colormap_grayscale_zero_is_black ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_colormap_hot_one_is_white ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_colormap_hot_zero_is_black ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_colormap_viridis_endpoints_distinct ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_frustum_cull_sphere_inside_all_planes ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_colormap_plasma_midpoint_in_range ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_gaussian_splat_at_center_is_one ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_gaussian_splat_falls_off_with_distance ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_lod_level_close ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_lod_level_far ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_lod_level_mid ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_frustum_cull_sphere_outside_plane ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_lod_level_very_far ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_lod_render_radius_decreases_with_distance ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_metaball_field_add_particle_and_sample ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_metaball_field_single_blob ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_metaball_field_empty ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_metaball_isosurface_scan_crossing ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_particle_buffer_add_returns_true ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_particle_buffer_clear ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_particle_buffer_from_positions ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_particle_buffer_from_positions_empty ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_particle_buffer_full_returns_false ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_particle_buffer_new_empty ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_particle_buffer_to_vertex_data_length ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_particle_buffer_to_vertex_data_values ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_particle_lod_close_returns_zero ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_particle_lod_far_returns_last ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_particle_lod_radius_basic ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_particle_lod_radius_zero_distance ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_point_sprite_renderer_basic ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_point_sprite_renderer_clear ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_point_sprite_stretch_increases_size ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_metaball_two_blobs_merge ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_scalar_colorizer_normalizes ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_point_sprite_to_vertex_data ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_scalar_colorizer_zero_range ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_sort_back_to_front ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_scalar_colorizer_array ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_sort_buffer_single_particle ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_sort_front_to_back ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_sph_density_empty ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_sph_density_falls_off_with_distance ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_sph_density_single_particle ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_sphere_impostor_radius ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_sphere_impostor_vertex_count ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_trail_add_point ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_trail_aging_removes_old ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_trail_alpha_fade ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_trail_line_strip_data ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_trail_max_points ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_velocity_glyph_count ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_velocity_glyph_tip_position ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_velocity_glyph_zero_velocity ... ok
[INFO] [stdout] test particle_trails::tests::test_particle_trail_add_point ... ok
[INFO] [stdout] test particle_trails::tests::test_particle_trail_max_length_enforced ... ok
[INFO] [stdout] test particle_trails::tests::test_particle_trail_starts_empty ... ok
[INFO] [stdout] test particle_trails::tests::test_particle_trail_unlimited_when_max_zero ... ok
[INFO] [stdout] test particle_trails::tests::test_particle_trail_trim_old_keeps_recent ... ok
[INFO] [stdout] test particle_renderer::functions::tests::test_sort_buffer_depth_ordering ... ok
[INFO] [stdout] test particle_trails::tests::test_particle_trail_clear ... ok
[INFO] [stdout] test particle_trails::tests::test_ribbon_trail_clear ... ok
[INFO] [stdout] test particle_trails::tests::test_particle_trail_trim_old_removes_stale_points ... ok
[INFO] [stdout] test particle_trails::tests::test_particle_trail_fade_alpha_applied ... ok
[INFO] [stdout] test particle_trails::tests::test_ribbon_trail_edges_symmetric_around_center ... ok
[INFO] [stdout] test particle_trails::tests::test_ribbon_trail_empty ... ok
[INFO] [stdout] test particle_trails::tests::test_ribbon_trail_single_point ... ok
[INFO] [stdout] test particle_trails::tests::test_ribbon_trail_two_points_produce_two_edge_pairs ... ok
[INFO] [stdout] test particle_trails::tests::test_ribbon_trail_width_is_correct ... ok
[INFO] [stdout] test particle_trails::tests::test_rk4_circular_field_radius_preserved ... ok
[INFO] [stdout] test particle_trails::tests::test_rk4_negative_step_returns_start ... ok
[INFO] [stdout] test particle_trails::tests::test_rk4_returns_start_when_t_end_le_t0 ... ok
[INFO] [stdout] test particle_trails::tests::test_rk4_step_count ... ok
[INFO] [stdout] test particle_trails::tests::test_rk4_uniform_field_x ... ok
[INFO] [stdout] test particle_trails::tests::test_rk4_zero_velocity_field ... ok
[INFO] [stdout] test particle_trails::tests::test_streamline_seeder_count ... ok
[INFO] [stdout] test particle_trails::tests::test_streamline_seeder_empty_seeds ... ok
[INFO] [stdout] test particle_trails::tests::test_streamline_seeder_integration_length_controls_path_length ... ok
[INFO] [stdout] test particle_trails::tests::test_streamline_seeder_uniform_field_straight ... ok
[INFO] [stdout] test particle_trails::tests::test_trail_point_new ... ok
[INFO] [stdout] test particle_trails::tests::test_trail_point_simple_defaults ... ok
[INFO] [stdout] test particle_trails::tests::test_trail_renderer_clear ... ok
[INFO] [stdout] test particle_trails::tests::test_trail_renderer_get_trail_missing_returns_none ... ok
[INFO] [stdout] test particle_trails::tests::test_trail_renderer_multiple_particles ... ok
[INFO] [stdout] test particle_trails::tests::test_trail_renderer_remove_trail ... ok
[INFO] [stdout] test particle_trails::tests::test_trail_renderer_trim_all ... ok
[INFO] [stdout] test particle_trails::tests::test_trail_renderer_update_appends_points ... ok
[INFO] [stdout] test particle_trails::tests::test_trail_renderer_update_colored ... ok
[INFO] [stdout] test particle_trails::tests::test_trail_renderer_update_creates_trail ... ok
[INFO] [stdout] test particle_trails::tests::test_trail_style_alpha_at_endpoints ... ok
[INFO] [stdout] test particle_trails::tests::test_trail_style_width_by_age ... ok
[INFO] [stdout] test particle_trails::tests::test_trail_style_width_constant ... ok
[INFO] [stdout] test particle_trails::tests::test_vec3_add ... ok
[INFO] [stdout] test particle_trails::tests::test_vec3_cross_orthogonal ... ok
[INFO] [stdout] test particle_trails::tests::test_vec3_dot ... ok
[INFO] [stdout] test particle_trails::tests::test_vec3_normalize_unit_vector ... ok
[INFO] [stdout] test particle_trails::tests::test_vec3_sub ... ok
[INFO] [stdout] test path_viz::tests::test_add_arrow_heads_last_segment ... ok
[INFO] [stdout] test path_viz::tests::test_arc_length_monotone ... ok
[INFO] [stdout] test path_viz::tests::test_arc_length_single_point ... ok
[INFO] [stdout] test path_viz::tests::test_arc_length_straight_line ... ok
[INFO] [stdout] test path_viz::tests::test_cool_warm_endpoints ... ok
[INFO] [stdout] test path_viz::tests::test_curvature_corner_is_positive ... ok
[INFO] [stdout] test path_viz::tests::test_curvature_endpoint_is_zero ... ok
[INFO] [stdout] test path_viz::tests::test_curvature_straight_line_is_zero ... ok
[INFO] [stdout] test path_viz::tests::test_find_intersections_no_overlap ... ok
[INFO] [stdout] test path_viz::tests::test_find_intersections_same_path ... ok
[INFO] [stdout] test path_viz::tests::test_flight_path_altitude_segments_count ... ok
[INFO] [stdout] test path_viz::tests::test_flight_path_peak_altitude ... ok
[INFO] [stdout] test path_viz::tests::test_frenet_frame_orthogonality ... ok
[INFO] [stdout] test path_viz::tests::test_frenet_frame_tangent_normalized ... ok
[INFO] [stdout] test path_viz::tests::test_generate_ribbon_vertex_count ... ok
[INFO] [stdout] test path_viz::tests::test_generate_segments_count ... ok
[INFO] [stdout] test path_viz::tests::test_generate_segments_empty_path ... ok
[INFO] [stdout] test path_viz::tests::test_generate_tube_vertex_count ... ok
[INFO] [stdout] test path_viz::tests::test_jet_midpoint_green ... ok
[INFO] [stdout] test path_viz::tests::test_particle_trails_clear ... ok
[INFO] [stdout] test path_viz::tests::test_particle_trails_max_history ... ok
[INFO] [stdout] test path_viz::tests::test_particle_trails_segments_alpha_fade ... ok
[INFO] [stdout] test path_viz::tests::test_path_data_arc_length ... ok
[INFO] [stdout] test path_viz::tests::test_path_data_is_empty ... ok
[INFO] [stdout] test path_viz::tests::test_smooth_path_zero_window_identity ... ok
[INFO] [stdout] test path_viz::tests::test_smooth_path_reduces_spike ... ok
[INFO] [stdout] test path_viz::tests::test_generate_tube_triangle_count ... ok
[INFO] [stdout] test path_viz::tests::test_trajectory_set_filter_by_time ... ok
[INFO] [stdout] test path_viz::tests::test_rainbow_endpoints_distinct ... ok
[INFO] [stdout] test path_viz::tests::test_trajectory_set_speed_statistics_no_vel ... ok
[INFO] [stdout] test path_viz::tests::test_trajectory_set_speed_statistics_with_vel ... ok
[INFO] [stdout] test path_viz::tests::test_path_data_len ... ok
[INFO] [stdout] test path_viz::tests::test_path_segment_length ... ok
[INFO] [stdout] test path_viz::tests::test_trajectory_set_total_length ... ok
[INFO] [stdout] test performance_viz::tests::test_ascii_bar_graph_empty ... ok
[INFO] [stdout] test performance_viz::tests::test_ascii_bar_graph_dimensions ... ok
[INFO] [stdout] test performance_viz::tests::test_convergence_not_converged ... ok
[INFO] [stdout] test performance_viz::tests::test_convergence_converged ... ok
[INFO] [stdout] test performance_viz::tests::test_convergence_reduction_factor ... ok
[INFO] [stdout] test path_viz::tests::test_smooth_path_output_length_preserved ... ok
[INFO] [stdout] test performance_viz::tests::test_benchmark_chart_fastest ... ok
[INFO] [stdout] test performance_viz::tests::test_flame_graph_max_depth ... ok
[INFO] [stdout] test performance_viz::tests::test_flame_graph_spans_at_depth ... ok
[INFO] [stdout] test performance_viz::tests::test_flame_graph_total_for_label ... ok
[INFO] [stdout] test performance_viz::tests::test_fps_counter_basic ... ok
[INFO] [stdout] test performance_viz::tests::test_benchmark_relative_means ... ok
[INFO] [stdout] test performance_viz::tests::test_benchmark_from_samples_mean ... ok
[INFO] [stdout] test performance_viz::tests::test_fps_mean_frame_time ... ok
[INFO] [stdout] test performance_viz::tests::test_fps_hud_string ... ok
[INFO] [stdout] test performance_viz::tests::test_gpu_graph_mean ... ok
[INFO] [stdout] test performance_viz::tests::test_fps_sparkline_len ... ok
[INFO] [stdout] test performance_viz::tests::test_gpu_peak_temp ... ok
[INFO] [stdout] test performance_viz::tests::test_convergence_log10 ... ok
[INFO] [stdout] test performance_viz::tests::test_memory_panel_total ... ok
[INFO] [stdout] test performance_viz::tests::test_overlay_hud_lines_not_empty ... ok
[INFO] [stdout] test performance_viz::tests::test_heatmap_normalise ... ok
[INFO] [stdout] test performance_viz::tests::test_physics_timings_bar_segments_count ... ok
[INFO] [stdout] test performance_viz::tests::test_physics_timings_total ... ok
[INFO] [stdout] test performance_viz::tests::test_physics_timings_fractions_sum ... ok
[INFO] [stdout] test performance_viz::tests::test_heatmap_splat_increases_value ... ok
[INFO] [stdout] test performance_viz::tests::test_rect_contains ... ok
[INFO] [stdout] test performance_viz::tests::test_rgba_lerp_extremes ... ok
[INFO] [stdout] test performance_viz::tests::test_rgba_lerp_half ... ok
[INFO] [stdout] test performance_viz::tests::test_ringbuffer_basic ... ok
[INFO] [stdout] test performance_viz::tests::test_ringbuffer_empty ... ok
[INFO] [stdout] test performance_viz::tests::test_heatmap_to_rgba_image_length ... ok
[INFO] [stdout] test performance_viz::tests::test_memory_category_peak ... ok
[INFO] [stdout] test performance_viz::tests::test_ringbuffer_min_max ... ok
[INFO] [stdout] test performance_viz::tests::test_ringbuffer_overflow ... ok
[INFO] [stdout] test performance_viz::tests::test_thread_timeline_mean_util ... ok
[INFO] [stdout] test performance_viz::tests::test_thread_timeline_utilisation ... ok
[INFO] [stdout] test performance_viz::tests::test_timestep_max_len_enforced ... ok
[INFO] [stdout] test performance_viz::tests::test_timestep_mean_dt ... ok
[INFO] [stdout] test performance_viz::tests::test_timestep_acceptance_rate ... ok
[INFO] [stdout] test phase_field_viz::tests::test_clamp_above ... ok
[INFO] [stdout] test phase_field_viz::tests::test_clamp_below ... ok
[INFO] [stdout] test phase_field_viz::tests::test_composition_histogram_bucket_sum ... ok
[INFO] [stdout] test phase_field_viz::tests::test_composition_histogram_uniform_bins ... ok
[INFO] [stdout] test phase_field_viz::tests::test_composition_mean ... ok
[INFO] [stdout] test phase_field_viz::tests::test_convergence_monitor_convergence_rate_negative ... ok
[INFO] [stdout] test phase_field_viz::tests::test_convergence_monitor_min_residual ... ok
[INFO] [stdout] test phase_field_viz::tests::test_convergence_monitor_no_convergence ... ok
[INFO] [stdout] test phase_field_viz::tests::test_convergence_monitor_record_and_converge ... ok
[INFO] [stdout] test phase_field_viz::tests::test_convergence_monitor_render_empty_is_empty_vec ... ok
[INFO] [stdout] test phase_field_viz::tests::test_convergence_monitor_csv_header ... ok
[INFO] [stdout] test phase_field_viz::tests::test_dendrite_tips_detect_empty_uniform ... ok
[INFO] [stdout] test phase_field_viz::tests::test_dendrite_tips_detect_step_field_finds_tips ... ok
[INFO] [stdout] test phase_field_viz::tests::test_convergence_monitor_render_plot_size ... ok
[INFO] [stdout] test phase_field_viz::tests::test_extract_front_step_field ... ok
[INFO] [stdout] test phase_field_viz::tests::test_extract_front_uniform_field_empty ... ok
[INFO] [stdout] test phase_field_viz::tests::test_grain_rgba_background_is_black ... ok
[INFO] [stdout] test phase_field_viz::tests::test_composition_viz_render_size ... ok
[INFO] [stdout] test phase_field_viz::tests::test_grain_rgba_nonzero_grain_nonblack ... ok
[INFO] [stdout] test phase_field_viz::tests::test_grain_structure_area_fraction ... ok
[INFO] [stdout] test phase_field_viz::tests::test_grain_structure_dominant_grain ... ok
[INFO] [stdout] test phase_field_viz::tests::test_hash_u32_different_seeds_differ ... ok
[INFO] [stdout] test phase_field_viz::tests::test_grain_structure_grain_count ... ok
[INFO] [stdout] test phase_field_viz::tests::test_hash_u32_in_unit_interval ... ok
[INFO] [stdout] test phase_field_viz::tests::test_hue_to_rgb_green ... ok
[INFO] [stdout] test phase_field_viz::tests::test_hue_to_rgb_red ... ok
[INFO] [stdout] test phase_field_viz::tests::test_interface_width_rgba_buffer_size ... ok
[INFO] [stdout] test phase_field_viz::tests::test_interface_width_step_field ... ok
[INFO] [stdout] test phase_field_viz::tests::test_interface_width_uniform_field ... ok
[INFO] [stdout] test phase_field_viz::tests::test_lerp_endpoints ... ok
[INFO] [stdout] test phase_field_viz::tests::test_lerp_midpoint ... ok
[INFO] [stdout] test phase_field_viz::tests::test_misorientation_angle_deg ... ok
[INFO] [stdout] test phase_field_viz::tests::test_misorientation_map_size ... ok
[INFO] [stdout] test phase_field_viz::tests::test_order_param_field_get_set ... ok
[INFO] [stdout] test phase_field_viz::tests::test_order_param_field_gradient_zero_uniform ... ok
[INFO] [stdout] test phase_field_viz::tests::test_order_param_field_mean ... ok
[INFO] [stdout] test phase_field_viz::tests::test_order_param_field_solid_fraction ... ok
[INFO] [stdout] test phase_field_viz::tests::test_order_param_field_to_rgba_length ... ok
[INFO] [stdout] test phase_field_viz::tests::test_phase_fraction_arc_angles_span_2pi ... ok
[INFO] [stdout] test phase_field_viz::tests::test_phase_fraction_pie_dominant ... ok
[INFO] [stdout] test phase_field_viz::tests::test_phase_fraction_pie_total ... ok
[INFO] [stdout] test phase_field_viz::tests::test_render_front_overlay_correct_size ... ok
[INFO] [stdout] test phase_field_viz::tests::test_thermal_overlay_alpha_zero_equals_phase ... ok
[INFO] [stdout] test phase_field_viz::tests::test_thermal_overlay_output_size ... ok
[INFO] [stdout] test physics_animation::tests::test_anim_transform_from_position ... ok
[INFO] [stdout] test physics_animation::tests::test_blender_crossfade_at_one ... ok
[INFO] [stdout] test physics_animation::tests::test_anim_transform_identity ... ok
[INFO] [stdout] test physics_animation::tests::test_clip_duration_grows_with_keyframes ... ok
[INFO] [stdout] test physics_animation::tests::test_blender_crossfade_at_zero ... ok
[INFO] [stdout] test physics_animation::tests::test_clip_empty_returns_identity ... ok
[INFO] [stdout] test physics_animation::tests::test_blender_empty_returns_identity ... ok
[INFO] [stdout] test phase_field_viz::tests::test_order_param_field_std_dev_uniform ... ok
[INFO] [stdout] test physics_animation::tests::test_clip_sample_after_end_returns_last ... ok
[INFO] [stdout] test physics_animation::tests::test_blender_single_clip ... ok
[INFO] [stdout] test physics_animation::tests::test_clip_looping ... ok
[INFO] [stdout] test physics_animation::tests::test_easing_ease_in_out_symmetric ... ok
[INFO] [stdout] test physics_animation::tests::test_easing_ease_in_slower_than_linear ... ok
[INFO] [stdout] test physics_animation::tests::test_easing_linear_midpoint ... ok
[INFO] [stdout] test physics_animation::tests::test_easing_spring_ends_near_one ... ok
[INFO] [stdout] test physics_animation::tests::test_easing_ease_out_faster_than_linear ... ok
[INFO] [stdout] test physics_animation::tests::test_easing_spring_starts_at_zero ... ok
[INFO] [stdout] test physics_animation::tests::test_easing_linear_endpoints ... ok
[INFO] [stdout] test physics_animation::tests::test_easing_bezier_endpoints ... ok
[INFO] [stdout] test physics_animation::tests::test_fabrik_fully_extended ... ok
[INFO] [stdout] test physics_animation::tests::test_fabrik_preserves_root ... ok
[INFO] [stdout] test physics_animation::tests::test_fabrik_single_joint_returns_chain ... ok
[INFO] [stdout] test physics_animation::tests::test_fabrik_two_bone_reaches_target ... ok
[INFO] [stdout] test physics_animation::tests::test_keyframe_ordering ... ok
[INFO] [stdout] test physics_animation::tests::test_len3_zero ... ok
[INFO] [stdout] test physics_animation::tests::test_lerp_transform_at_one ... ok
[INFO] [stdout] test physics_animation::tests::test_clip_sample_before_start_returns_first ... ok
[INFO] [stdout] test physics_animation::tests::test_clip_single_keyframe ... ok
[INFO] [stdout] test physics_animation::tests::test_clip_two_keyframes_midpoint ... ok
[INFO] [stdout] test physics_animation::tests::test_lerp_transform_at_zero ... ok
[INFO] [stdout] test physics_animation::tests::test_lerp_transform_midpoint ... ok
[INFO] [stdout] test physics_animation::tests::test_morph_target_half_weight ... ok
[INFO] [stdout] test physics_animation::tests::test_morph_target_full_weight ... ok
[INFO] [stdout] test physics_animation::tests::test_normalize3_unit_vector ... ok
[INFO] [stdout] test physics_animation::tests::test_morph_target_zero_weight ... ok
[INFO] [stdout] test physics_animation::tests::test_slerp_quat_at_one_returns_b ... ok
[INFO] [stdout] test physics_animation::tests::test_slerp_quat_at_zero_returns_a ... ok
[INFO] [stdout] test physics_animation::tests::test_slerp_quat_result_is_unit ... ok
[INFO] [stdout] test physics_animation::tests::test_slerp_quat_identity_to_identity ... ok
[INFO] [stdout] test physics_animation::tests::test_trajectory_falls_under_gravity ... ok
[INFO] [stdout] test physics_animation::tests::test_trajectory_first_point_is_initial ... ok
[INFO] [stdout] test physics_animation::tests::test_trajectory_horizontal_motion ... ok
[INFO] [stdout] test physics_animation::tests::test_trajectory_length ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_chart_pan ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_chart_zoom ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_colormap_legend_ticks ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_convergence_absolute ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_convergence_rate ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_convergence_relative ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_convergence_sparkline ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_colormap_legend_fit ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_dashboard_config_visibility ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_convergence_monitor ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_colormap_legend_normalize ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_dashboard_standard_layout ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_data_stream_buffer_overflow ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_dashboard_out_of_bounds ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_dashboard_config_panel_count ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_data_stream_statistics ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_energy_drift ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_energy_time_series_window ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_heatmap_cell_normalize ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_heatmap_renderer_dimensions ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_histogram_renderer_normalize ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_data_stream_latest_n ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_heatmap_resample ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_maxwell_boltzmann ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_histogram_renderer_bins ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_multi_panel_by_name ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_momentum_time_series_conservation ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_param_sweep_convergence ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_param_sweep_optimal ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_performance_profiler_fps ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_multi_panel_layout_grid ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_performance_profiler_sum ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_phase_space_density ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_real_time_metrics_fps ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_phase_space_diagram ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_snapshot_buffer_ring ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_real_time_metrics_step_time ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_svg_builder_render ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_svg_coord_mapping ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_time_series_buffer_range ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_time_series_buffer_capacity ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_time_series_interpolate ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_velocity_histogram_binning ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_alert_system_acknowledge_all ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_alert_system_clear_acknowledged ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_alert_system_energy_spike ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_alert_system_penetration ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_body_inspector_ke ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_velocity_histogram_mean ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_body_inspector_selected_ke ... ok
[INFO] [stdout] test physics_dashboard::functions::expanded_dashboard_tests::test_velocity_histogram_pdf ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_constraint_state_at_limits ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_constraint_state_normalized_position ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_contact_panel_mean_count ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_contact_panel_histogram ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_energy_panel_anomaly ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_energy_panel_mean_ke ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_energy_sample_total ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_parameter_sweep_scatter_pair ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_performance_panel_avg_fps ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_material_state_linear_curve ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_material_state_stress_at_strain ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_performance_panel_peak_memory ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_performance_panel_avg_ms ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_performance_panel_phase_fractions_sum ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_sim_dashboard_paused ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_sim_compare_mean_abs_diff ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_sim_dashboard_step ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_sim_dashboard_status_string ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_sim_dashboard_total_energy ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_sim_trace_sample_at ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_sim_trace_std_dev ... ok
[INFO] [stdout] test picking::tests::pick_all_sorted_ascending ... ok
[INFO] [stdout] test picking::tests::ray_hits_triangle_through_centre ... ok
[INFO] [stdout] test picking::tests::ray_misses_triangle_offset ... ok
[INFO] [stdout] test picking::tests::pick_returns_nearest_hit ... ok
[INFO] [stdout] test physics_dashboard::functions::tests::test_time_range_normalize ... ok
[INFO] [stdout] test picking::tests::selection_set_aabb ... ok
[INFO] [stdout] test picking::tests::selection_set_toggle ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_bloom_filter_kernel_dark_unchanged ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_bloom_filter_kernel_bright_spreads ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_bloom_filter_kernel_default_three_level ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_dof_bokeh_empty_image_no_panic ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_bloom_filter_kernel_no_passes_returns_copy ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_dof_bokeh_coc_at_focus ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_dof_bokeh_coc_outside_range ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_dof_bokeh_preserves_dimensions ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_fxaa_hq_constant_image_unchanged ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_fxaa_hq_preserves_dimensions ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_fxaa_hq_smooths_checkerboard ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_lens_flare_star_apply_preserves_dimensions ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_lens_flare_star_centre_bright ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_lens_flare_star_far_from_source_dim ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_radial_ca_nonzero_shift_changes_corners ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_lens_flare_star_zero_brightness_no_change ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_radial_ca_preserves_dimensions ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_ssao_kernel_empty_returns_default ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_ssao_kernel_get_wraps ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_radial_ca_zero_shift_preserves_image ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_ssao_kernel_length ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_ssao_kernel_samples_on_hemisphere ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_ssr_blends_reflection_near_bottom ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_ssr_ground_mirror_preserves_dimensions ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_ssr_zero_intensity_copies_image ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_vignette_lens_apply_preserves_dimensions ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_vignette_lens_factor_centre_is_one ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_vignette_lens_factor_decreases_with_radius ... ok
[INFO] [stdout] test post_processing::advanced_effects::tests_new_post::test_vignette_lens_zero_strength_no_change ... ok
[INFO] [stdout] test post_processing::core::tests::test_color_clamp ... ok
[INFO] [stdout] test post_processing::core::tests::test_color_luminance_black ... ok
[INFO] [stdout] test post_processing::core::tests::test_color_lerp_midpoint ... ok
[INFO] [stdout] test post_processing::effects::tests::test_bloom_extract_bright_passes_bright_rejects_dark ... ok
[INFO] [stdout] test post_processing::core::tests::test_color_luminance_white ... ok
[INFO] [stdout] test post_processing::effects::tests::test_dof_blur_radius_clamped ... ok
[INFO] [stdout] test post_processing::effects::tests::test_aces_monotone_increasing ... ok
[INFO] [stdout] test post_processing::effects::tests::test_aces_output_in_range ... ok
[INFO] [stdout] test post_processing::effects::tests::test_dof_blur_radius_increases_away_from_focus ... ok
[INFO] [stdout] test post_processing::effects::tests::test_dof_blur_radius_zero_at_focus ... ok
[INFO] [stdout] test post_processing::effects::tests::test_gaussian_blur_constant_image ... ok
[INFO] [stdout] test post_processing::effects::tests::test_pipeline_empty_pass_through ... ok
[INFO] [stdout] test post_processing::effects::tests::test_gaussian_kernel_sums_to_one ... ok
[INFO] [stdout] test post_processing::effects::tests::test_reinhard_half_at_one ... ok
[INFO] [stdout] test post_processing::effects::tests::test_reinhard_maps_zero_to_zero ... ok
[INFO] [stdout] test post_processing::effects::tests::test_vignette_center_unaffected_with_zero_strength ... ok
[INFO] [stdout] test post_processing::effects::tests::test_pipeline_with_tone_mapping ... ok
[INFO] [stdout] test post_processing::effects::tests::test_vignette_darkens_corners_vs_center ... ok
[INFO] [stdout] test post_processing::filters::tests::test_ao_apply_darkens_occluded_region ... ok
[INFO] [stdout] test post_processing::filters::tests::test_ao_map_flat_depth_no_occlusion ... ok
[INFO] [stdout] test post_processing::filters::tests::test_apply_color_grading_applies_to_all_pixels ... ok
[INFO] [stdout] test post_processing::filters::tests::test_bloom_effect_bright_pixel_spreads ... ok
[INFO] [stdout] test post_processing::filters::tests::test_color_grading_exposure_doubles_brightness ... ok
[INFO] [stdout] test post_processing::filters::tests::test_color_grading_identity_no_change ... ok
[INFO] [stdout] test post_processing::filters::tests::test_color_grading_saturation_zero_greyscale ... ok
[INFO] [stdout] test post_processing::filters::tests::test_bloom_effect_dark_image_unchanged ... ok
[INFO] [stdout] test post_processing::filters::tests::test_tone_mapping_operator_aces_output_in_range ... ok
[INFO] [stdout] test post_processing::filters::tests::test_motion_blur_constant_field_preserves_color ... ok
[INFO] [stdout] test post_processing::filters::tests::test_motion_blur_zero_velocity_no_change ... ok
[INFO] [stdout] test post_processing::filters::tests::test_tone_mapping_operator_filmic_clamps ... ok
[INFO] [stdout] test post_processing::filters::tests::test_tone_mapping_operator_reinhard_maps_zero_to_zero ... ok
[INFO] [stdout] test post_processing::filters::tests::test_tone_mapping_operator_uncharted2_output_in_range ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_bilateral_constant_image_unchanged ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_bilateral_preserves_dimensions ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_bilateral_smooths_noise ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_cbs_brightness_increases_all_channels ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_cbs_identity_no_change ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_cbs_saturation_zero_gives_greyscale ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_chromatic_aberration_effect_preserves_dimensions ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_chromatic_aberration_effect_shifts_red_channel ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_chromatic_aberration_effect_zero_shift_identity ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_color_grader_contrast_above_one_increases_range ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_cbs_apply_full_image ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_color_grader_identity ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_chromatic_aberration_neutral_identity ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_dof_lens_coc_at_focal_distance_is_zero ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_dof_lens_coc_increases_with_defocus ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_fxaa_constant_image_unchanged ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_fxaa_preserves_image_dimensions ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_fxaa_smooths_hard_edge ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_histogram_eq_output_range ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_histogram_eq_constant_image_no_panic ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_histogram_eq_preserves_dimensions ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_sharpen_increases_edge_pixels ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_sharpen_uniform_image_unchanged ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_sobel_hard_edge_detects_edge ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_sobel_constant_image_zero_edges ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_srgb_apply_brightens_dark_values ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_srgb_apply_image_preserves_dimensions ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_srgb_decode_black_white_fixed_points ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_sobel_preserves_dimensions ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_srgb_encode_decode_roundtrip ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_srgb_encode_black_white_fixed_points ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_unsharp_mask_constant_image_unchanged ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_unsharp_mask_preserves_dimensions ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_unsharp_mask_sharpens_edge ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_vignette_effect_center_is_low ... ok
[INFO] [stdout] test post_processing::image_filters::tests::test_vignette_effect_corner_is_stronger ... ok
[INFO] [stdout] test post_processing::processor::tests::test_chromatic_aberration_nonzero_shift_changes_channels ... ok
[INFO] [stdout] test post_processing::processor::tests::test_chromatic_aberration_zero_shift_unchanged ... ok
[INFO] [stdout] test post_processing::processor::tests::test_dof_empty_image ... ok
[INFO] [stdout] test post_processing::processor::tests::test_dof_in_focus_unchanged ... ok
[INFO] [stdout] test post_processing::processor::tests::test_dof_preserves_dimensions ... ok
[INFO] [stdout] test post_processing::processor::tests::test_dof_out_of_focus_blurs ... ok
[INFO] [stdout] test post_processing::processor::tests::test_lens_flare_nonzero_intensity_brightens ... ok
[INFO] [stdout] test post_processing::processor::tests::test_lens_flare_preserves_dimensions ... ok
[INFO] [stdout] test post_processing::processor::tests::test_post_processor_default_constructs ... ok
[INFO] [stdout] test post_processing::processor::tests::test_lens_flare_zero_intensity_no_change ... ok
[INFO] [stdout] test postprocess::tests::test_chromatic_aberration_strength_zero_no_change ... ok
[INFO] [stdout] test postprocess::tests::test_chromatic_aberration_no_panic ... ok
[INFO] [stdout] test postprocess::tests::test_compute_ssao_no_occlusion_empty_depth ... ok
[INFO] [stdout] test postprocess::tests::test_dof_in_focus_pixels_unchanged ... ok
[INFO] [stdout] test postprocess::tests::test_dof_out_of_focus_blurs ... ok
[INFO] [stdout] test postprocess::tests::test_marching_cubes_all_below_no_tris ... ok
[INFO] [stdout] test postprocess::tests::test_marching_cubes_one_corner_inside ... ok
[INFO] [stdout] test postprocess::tests::test_marching_cubes_mixed_produces_triangles ... ok
[INFO] [stdout] test postprocess::tests::test_scalar_field_linear_gradient ... ok
[INFO] [stdout] test postprocess::tests::test_smoothstep_endpoints ... ok
[INFO] [stdout] test postprocess::tests::test_smoothstep_clamps ... ok
[INFO] [stdout] test postprocess::tests::test_ssao_samples_unit_hemisphere ... ok
[INFO] [stdout] test postprocess::tests::test_streamline_uniform_x_field ... ok
[INFO] [stdout] test postprocess::tests::test_marching_cubes_all_above_no_tris ... ok
[INFO] [stdout] test postprocess::tests::test_taa_blend_alpha_one ... ok
[INFO] [stdout] test postprocess::tests::test_taa_blend_intermediate ... ok
[INFO] [stdout] test postprocess::tests::test_taa_blend_alpha_zero ... ok
[INFO] [stdout] test postprocess::tests::test_taa_clamp_history_no_panic ... ok
[INFO] [stdout] test postprocess::tests::test_tonemap_aces_range ... ok
[INFO] [stdout] test postprocess::tests::test_tonemap_reinhard_range ... ok
[INFO] [stdout] test postprocess::tests::test_vignette_centre_unchanged ... ok
[INFO] [stdout] test postprocess::tests::test_vignette_darkens_corners ... ok
[INFO] [stdout] test primitives::expanded_prim_tests::test_bvh_query_finds_overlap ... ok
[INFO] [stdout] test primitives::expanded_prim_tests::test_bvh_build_empty ... ok
[INFO] [stdout] test postprocess::tests::test_vector_field_uniform_interpolation ... ok
[INFO] [stdout] test primitives::expanded_prim_tests::test_bvh_single_object ... ok
[INFO] [stdout] test primitives::expanded_prim_tests::test_frame_stats_record ... ok
[INFO] [stdout] test primitives::expanded_prim_tests::test_draw_call_batch_merge ... ok
[INFO] [stdout] test primitives::expanded_prim_tests::test_frame_stats_triangles_per_second ... ok
[INFO] [stdout] test primitives::expanded_prim_tests::test_frustum_identity_contains_origin ... ok
[INFO] [stdout] test primitives::expanded_prim_tests::test_instance_batch_count ... ok
[INFO] [stdout] test primitives::expanded_prim_tests::test_occlusion_query ... ok
[INFO] [stdout] test primitives::expanded_prim_tests::test_render_aabb_center ... ok
[INFO] [stdout] test primitives::expanded_prim_tests::test_render_aabb_half_extents ... ok
[INFO] [stdout] test primitives::expanded_prim_tests::test_render_aabb_intersects ... ok
[INFO] [stdout] test primitives::expanded_prim_tests::test_render_state_default ... ok
[INFO] [stdout] test primitives::expanded_prim_tests::test_render_state_transparent ... ok
[INFO] [stdout] test primitives::tests::test_aabb_wireframe_edges ... ok
[INFO] [stdout] test primitives::tests::test_cylinder_has_caps ... ok
[INFO] [stdout] test primitives::tests::test_sphere_vertex_count ... ok
[INFO] [stdout] test primitives::tests::test_box_mesh_triangles ... ok
[INFO] [stdout] test primitives::tests::test_sphere_wireframe_3circles ... ok
[INFO] [stdout] test procedural_texture::tests::test_fbm_deterministic ... ok
[INFO] [stdout] test procedural_texture::tests::test_fbm_range ... ok
[INFO] [stdout] test procedural_texture::tests::test_fbm_zero_octaves ... ok
[INFO] [stdout] test procedural_texture::tests::test_hash2_deterministic ... ok
[INFO] [stdout] test procedural_texture::tests::test_hash2_different_inputs ... ok
[INFO] [stdout] test procedural_texture::tests::test_fbm_more_octaves_more_detail ... ok
[INFO] [stdout] test procedural_texture::tests::test_hash2_range ... ok
[INFO] [stdout] test procedural_texture::tests::test_mix_endpoints ... ok
[INFO] [stdout] test procedural_texture::tests::test_mix_midpoint ... ok
[INFO] [stdout] test procedural_texture::tests::test_mix_negative_range ... ok
[INFO] [stdout] test procedural_texture::tests::test_noise_type_clone ... ok
[INFO] [stdout] test procedural_texture::tests::test_perlin2d_deterministic ... ok
[INFO] [stdout] test procedural_texture::tests::test_perlin2d_varies_spatially ... ok
[INFO] [stdout] test procedural_texture::tests::test_perlin2d_range ... ok
[INFO] [stdout] test procedural_texture::tests::test_perlin3d_range ... ok
[INFO] [stdout] test procedural_texture::tests::test_noise_type_equality ... ok
[INFO] [stdout] test procedural_texture::tests::test_perlin_seed_affects_output ... ok
[INFO] [stdout] test procedural_texture::tests::test_perlin_new_permutation_length ... ok
[INFO] [stdout] test procedural_texture::tests::test_smoothstep_endpoints ... ok
[INFO] [stdout] test procedural_texture::tests::test_smoothstep_midpoint ... ok
[INFO] [stdout] test procedural_texture::tests::test_smoothstep_monotone ... ok
[INFO] [stdout] test procedural_texture::tests::test_smoothstep_range ... ok
[INFO] [stdout] test procedural_texture::tests::test_synthesis_alpha_always_255 ... ok
[INFO] [stdout] test procedural_texture::tests::test_synthesis_pixel_count ... ok
[INFO] [stdout] test procedural_texture::tests::test_synthesis_pixel_values_in_range ... ok
[INFO] [stdout] test procedural_texture::tests::test_synthesis_zero_dimensions ... ok
[INFO] [stdout] test procedural_texture::tests::test_texture_all_noise_types_return_valid_rgba ... ok
[INFO] [stdout] test procedural_texture::tests::test_texture_sample_rgba_range_fbm ... ok
[INFO] [stdout] test procedural_texture::tests::test_texture_bias_shifts_output ... ok
[INFO] [stdout] test procedural_texture::tests::test_wood_deterministic ... ok
[INFO] [stdout] test procedural_texture::tests::test_wood_range ... ok
[INFO] [stdout] test procedural_texture::tests::test_wood_varies_spatially ... ok
[INFO] [stdout] test real_time_viz::tests::test_billboard_corners_form_quad ... ok
[INFO] [stdout] test real_time_viz::tests::test_drs_increases_on_high_fps ... ok
[INFO] [stdout] test real_time_viz::tests::test_drs_reduces_on_low_fps ... ok
[INFO] [stdout] test real_time_viz::tests::test_drs_scaled_resolution ... ok
[INFO] [stdout] test real_time_viz::tests::test_frame_timer_elapsed ... ok
[INFO] [stdout] test procedural_texture::tests::test_texture_sample_rgba_range_perlin ... ok
[INFO] [stdout] test procedural_texture::tests::test_wood_zero_noise_strength_smooth ... ok
[INFO] [stdout] test real_time_viz::tests::test_frame_timer_initial_fps ... ok
[INFO] [stdout] test real_time_viz::tests::test_frame_timer_on_target ... ok
[INFO] [stdout] test real_time_viz::tests::test_frame_timer_push_and_measured_fps ... ok
[INFO] [stdout] test real_time_viz::tests::test_frustum_sphere_inside ... ok
[INFO] [stdout] test real_time_viz::tests::test_gamma_correct_identity_at_one ... ok
[INFO] [stdout] test real_time_viz::tests::test_gbuffer_write_read_albedo ... ok
[INFO] [stdout] test real_time_viz::tests::test_gbuffer_clear ... ok
[INFO] [stdout] test real_time_viz::tests::test_hiz_buffer_clear ... ok
[INFO] [stdout] test real_time_viz::tests::test_halton_sequence_range ... ok
[INFO] [stdout] test real_time_viz::tests::test_hiz_buffer_initial_depth_max ... ok
[INFO] [stdout] test real_time_viz::tests::test_hiz_buffer_is_occluded ... ok
[INFO] [stdout] test real_time_viz::tests::test_hiz_buffer_update_and_query ... ok
[INFO] [stdout] test real_time_viz::tests::test_instance_batch_clear ... ok
[INFO] [stdout] test real_time_viz::tests::test_instance_batch_full_returns_true ... ok
[INFO] [stdout] test real_time_viz::tests::test_instance_batch_push_and_len ... ok
[INFO] [stdout] test real_time_viz::tests::test_irradiance_grid_dirty_count ... ok
[INFO] [stdout] test real_time_viz::tests::test_irradiance_grid_probe_count ... ok
[INFO] [stdout] test real_time_viz::tests::test_irradiance_grid_sample_zero_coefficients ... ok
[INFO] [stdout] test real_time_viz::tests::test_irradiance_probe_evaluate_zero_coefficients ... ok
[INFO] [stdout] test real_time_viz::tests::test_irradiance_probe_non_negative ... ok
[INFO] [stdout] test real_time_viz::tests::test_lod_selector_culled_at_far_range ... ok
[INFO] [stdout] test real_time_viz::tests::test_lod_selector_high_at_close_range ... ok
[INFO] [stdout] test real_time_viz::tests::test_lod_selector_medium ... ok
[INFO] [stdout] test real_time_viz::tests::test_lod_selector_projected_pixels_decreases_with_distance ... ok
[INFO] [stdout] test real_time_viz::tests::test_particle_age_normalized ... ok
[INFO] [stdout] test real_time_viz::tests::test_particle_emit_and_update ... ok
[INFO] [stdout] test real_time_viz::tests::test_particle_max_capacity ... ok
[INFO] [stdout] test real_time_viz::tests::test_plane_signed_dist ... ok
[INFO] [stdout] test real_time_viz::tests::test_shadow_map_closer_depth_wins ... ok
[INFO] [stdout] test real_time_viz::tests::test_shadow_map_depth_update ... ok
[INFO] [stdout] test real_time_viz::tests::test_shadow_map_is_in_shadow ... ok
[INFO] [stdout] test real_time_viz::tests::test_smoothstep_bounds ... ok
[INFO] [stdout] test real_time_viz::tests::test_ssao_noise_vector_unit_length ... ok
[INFO] [stdout] test real_time_viz::tests::test_ssao_sample_kernel_count ... ok
[INFO] [stdout] test real_time_viz::tests::test_ssao_sample_kernel_z_positive ... ok
[INFO] [stdout] test real_time_viz::tests::test_taa_blend_factor_clamp ... ok
[INFO] [stdout] test real_time_viz::tests::test_taa_jitter_halton_sequence ... ok
[INFO] [stdout] test real_time_viz::tests::test_taa_accumulate_converges ... ok
[INFO] [stdout] test real_time_viz::tests::test_tone_map_aces_bounded ... ok
[INFO] [stdout] test real_time_viz::tests::test_tone_map_linear_clamps ... ok
[INFO] [stdout] test real_time_viz::tests::test_tone_map_reinhard_bounded ... ok
[INFO] [stdout] test scene::functions::tests::test_aabb_centre ... ok
[INFO] [stdout] test scene::functions::tests::test_aabb_expand ... ok
[INFO] [stdout] test scene::functions::tests::test_aabb_half_extents ... ok
[INFO] [stdout] test scene::functions::tests::test_aabb_intersects_sphere_inside ... ok
[INFO] [stdout] test scene::functions::tests::test_aabb_intersects_sphere_outside ... ok
[INFO] [stdout] test scene::functions::tests::test_aabb_union ... ok
[INFO] [stdout] test scene::functions::tests::test_add_child_node ... ok
[INFO] [stdout] test scene::functions::tests::test_add_root_node ... ok
[INFO] [stdout] test scene::functions::tests::test_all_nodes_visible_by_default ... ok
[INFO] [stdout] test scene::functions::tests::test_camera_view_matrix_eye_on_axis ... ok
[INFO] [stdout] test scene::functions::tests::test_camera_orthographic_projection_correct_scale ... ok
[INFO] [stdout] test scene::functions::tests::test_camera_perspective_projection_not_zero ... ok
[INFO] [stdout] test scene::functions::tests::test_cull_offscreen_nodes_become_invisible ... ok
[INFO] [stdout] test scene::functions::tests::test_cull_within_ndc_stays_visible ... ok
[INFO] [stdout] test scene::functions::tests::test_depth_child_is_one ... ok
[INFO] [stdout] test scene::functions::tests::test_cull_no_panic_empty_scene ... ok
[INFO] [stdout] test scene::functions::tests::test_depth_root_is_zero ... ok
[INFO] [stdout] test scene::functions::tests::test_depth_grandchild_is_two ... ok
[INFO] [stdout] test scene::functions::tests::test_find_by_name_found ... ok
[INFO] [stdout] test scene::functions::tests::test_find_by_name_not_found ... ok
[INFO] [stdout] test scene::functions::tests::test_frustum_contains_origin ... ok
[INFO] [stdout] test scene::functions::tests::test_frustum_culler_build_and_query ... ok
[INFO] [stdout] test scene::functions::tests::test_frustum_culler_out_of_range_invisible ... ok
[INFO] [stdout] test scene::functions::tests::test_frustum_culler_visible_list ... ok
[INFO] [stdout] test scene::functions::tests::test_identity_matrix_is_identity ... ok
[INFO] [stdout] test scene::functions::tests::test_instance_data_identity_transform ... ok
[INFO] [stdout] test scene::functions::tests::test_instance_data_push_and_len ... ok
[INFO] [stdout] test scene::functions::tests::test_light_directional_color_intensity ... ok
[INFO] [stdout] test scene::functions::tests::test_light_area_properties ... ok
[INFO] [stdout] test scene::functions::tests::test_light_manager_add_find ... ok
[INFO] [stdout] test scene::functions::tests::test_light_manager_remove ... ok
[INFO] [stdout] test scene::functions::tests::test_light_manager_total_intensity ... ok
[INFO] [stdout] test scene::functions::tests::test_lod_boundary_selects_correct_level ... ok
[INFO] [stdout] test scene::functions::tests::test_light_spot_properties ... ok
[INFO] [stdout] test scene::functions::tests::test_lod_empty_config_returns_none ... ok
[INFO] [stdout] test scene::functions::tests::test_lod_empty_returns_none ... ok
[INFO] [stdout] test scene::functions::tests::test_lod_exact_threshold ... ok
[INFO] [stdout] test scene::functions::tests::test_lod_far_distance_returns_lowest_detail ... ok
[INFO] [stdout] test scene::functions::tests::test_lod_select_nearest ... ok
[INFO] [stdout] test scene::functions::tests::test_lod_near_distance_returns_highest_detail ... ok
[INFO] [stdout] test scene::functions::tests::test_light_point_properties ... ok
[INFO] [stdout] test scene::functions::tests::test_material_default_white ... ok
[INFO] [stdout] test scene::functions::tests::test_material_emissive ... ok
[INFO] [stdout] test scene::functions::tests::test_material_metallic ... ok
[INFO] [stdout] test scene::functions::tests::test_new_scene_is_empty ... ok
[INFO] [stdout] test scene::functions::tests::test_remove_root_node ... ok
[INFO] [stdout] test scene::functions::tests::test_render_queue_len_and_clear ... ok
[INFO] [stdout] test scene::functions::tests::test_render_queue_sort_opaque_front_to_back ... ok
[INFO] [stdout] test scene::functions::tests::test_render_queue_sort_transparent_back_to_front ... ok
[INFO] [stdout] test scene::functions::tests::test_scale_in_matrix ... ok
[INFO] [stdout] test scene::functions::tests::test_scene_camera_default_view_matrix_non_zero ... ok
[INFO] [stdout] test scene::functions::tests::test_scene_camera_fly_forward_moves_toward_target ... ok
[INFO] [stdout] test scene::functions::tests::test_rotation_90_deg_around_z ... ok
[INFO] [stdout] test scene::functions::tests::test_scene_camera_orbit_changes_position ... ok
[INFO] [stdout] test scene::functions::tests::test_scene_camera_shake_and_decay ... ok
[INFO] [stdout] test scene::functions::tests::test_scene_camera_shake_view_differs_from_clean ... ok
[INFO] [stdout] test scene::functions::tests::test_scene_camera_orthographic_proj ... ok
[INFO] [stdout] test scene::functions::tests::test_scene_cull_with_frustum_all_inside ... ok
[INFO] [stdout] test scene::functions::tests::test_remove_node_children_reparented ... ok
[INFO] [stdout] test scene::functions::tests::test_scene_default ... ok
[INFO] [stdout] test scene::functions::tests::test_scene_camera_perspective_proj_diagonal_nonzero ... ok
[INFO] [stdout] test scene::functions::tests::test_scene_descendants ... ok
[INFO] [stdout] test scene::functions::tests::test_scene_environment_fog_factor_at_zero ... ok
[INFO] [stdout] test scene::functions::tests::test_scene_light_directional_constant_attenuation ... ok
[INFO] [stdout] test scene::functions::tests::test_scene_environment_fog_factor_decreases ... ok
[INFO] [stdout] test scene::functions::tests::test_scene_environment_default ... ok
[INFO] [stdout] test scene::functions::tests::test_scene_light_point_attenuation_at_zero_distance ... ok
[INFO] [stdout] test scene::functions::tests::test_scene_light_point_attenuation_decreases_with_distance ... ok
[INFO] [stdout] test scene::functions::tests::test_scene_geometry_nodes ... ok
[INFO] [stdout] test scene::functions::tests::test_scene_serialize_preserves_visibility ... ok
[INFO] [stdout] test scene::functions::tests::test_set_invisible ... ok
[INFO] [stdout] test scene::functions::tests::test_scene_light_shadow_frustum_directional ... ok
[INFO] [stdout] test scene::functions::tests::test_shadow_map_empty_scene_is_identity ... ok
[INFO] [stdout] test scene::functions::tests::test_shadow_map_multiple_nodes_finite ... ok
[INFO] [stdout] test scene::functions::tests::test_shadow_map_single_node_no_panic ... ok
[INFO] [stdout] test scene::functions::tests::test_translation_in_matrix ... ok
[INFO] [stdout] test scene::functions::tests::test_world_transform_root_equals_local ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_env_map_irradiance_approx_all_finite ... ok
[INFO] [stdout] test scene::functions::tests::test_world_transform_child_accumulates_parent ... ok
[INFO] [stdout] test scene::functions::tests::test_scene_light_spotlight_cone_attenuation ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_env_map_texels ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_env_map_solid_color_sample_returns_color ... ok
[INFO] [stdout] test scene::functions::tests::test_set_visible_toggles ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_fog_apply_to_color_full_fog_gives_fog_color ... ok
[INFO] [stdout] test scene::functions::tests::test_scene_serialize_deserialize_round_trip ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_hdr_tone_mapper_soft_clip_at_max ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_fog_exponential_at_zero_distance_is_one ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_fog_exponential_squared_at_zero_is_one ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_fog_linear_between_near_far ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_hdr_tone_mapper_exposure_zero_identity ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_hdr_tone_mapper_key_gain_zero_luminance ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_hdr_tone_mapper_positive_ev_brightens ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_hdr_tone_mapper_soft_clip_below_knee_unchanged ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_hdr_tone_mapper_srgb_encode_0_and_1 ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_lod_manager_add_object ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_lod_manager_out_of_range_returns_none ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_lod_manager_compute_all_lods_empty_config ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_scene_stats_cull_ratio ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_scene_stats_cull_ratio_zero_total ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_shadow_map_set_get_depth ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_scene_stats_initial_zero ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_scene_stats_merge ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_shadow_map_initial_depth_is_one ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_skybox_sample_does_not_panic_on_any_direction ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_shadow_map_out_of_bounds_returns_one ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_skybox_sample_positive_x ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_lod_manager_selects_correct_lod ... ok
[INFO] [stdout] test scientific_plot::tests::test_axis_explicit_range ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_skybox_solid_color_dimensions ... ok
[INFO] [stdout] test scientific_plot::tests::test_axis_default_auto_range ... ok
[INFO] [stdout] test scene::functions::tests_new_scene::test_shadow_map_pcf_all_ones_shadow_zero ... ok
[INFO] [stdout] test scientific_plot::tests::test_axis_effective_range_auto_pads ... ok
[INFO] [stdout] test scientific_plot::tests::test_axis_scale_log ... ok
[INFO] [stdout] test scientific_plot::tests::test_axis_effective_range_degenerate ... ok
[INFO] [stdout] test scientific_plot::tests::test_axis_tick_positions_count ... ok
[INFO] [stdout] test scientific_plot::tests::test_axis_effective_range_respects_explicit ... ok
[INFO] [stdout] test scientific_plot::tests::test_axis_tick_positions_include_endpoints ... ok
[INFO] [stdout] test scientific_plot::tests::test_color_scheme_custom_clamp ... ok
[INFO] [stdout] test scientific_plot::tests::test_color_scheme_custom_svg ... ok
[INFO] [stdout] test scientific_plot::tests::test_color_scheme_grayscale_svg ... ok
[INFO] [stdout] test scientific_plot::tests::test_data_point_no_error ... ok
[INFO] [stdout] test scientific_plot::tests::test_layout_min_one_panel ... ok
[INFO] [stdout] test scientific_plot::tests::test_contour_svg_contains_polyline ... ok
[INFO] [stdout] test scientific_plot::tests::test_line_style_dashed_has_dash ... ok
[INFO] [stdout] test scientific_plot::tests::test_layout_n_panels ... ok
[INFO] [stdout] test scientific_plot::tests::test_line_style_solid_has_no_dash ... ok
[INFO] [stdout] test scientific_plot::tests::test_data_point_with_error ... ok
[INFO] [stdout] test scientific_plot::tests::test_line_style_dotted_dash ... ok
[INFO] [stdout] test scientific_plot::tests::test_plot_add_series ... ok
[INFO] [stdout] test scientific_plot::tests::test_palette_color_cycles ... ok
[INFO] [stdout] test scientific_plot::tests::test_plot_data_bounds_empty ... ok
[INFO] [stdout] test scientific_plot::tests::test_plot_data_bounds_with_series ... ok
[INFO] [stdout] test scientific_plot::tests::test_plot_set_axes ... ok
[INFO] [stdout] test scientific_plot::tests::test_render_marker_cross_lines ... ok
[INFO] [stdout] test scientific_plot::tests::test_render_marker_diamond_polygon ... ok
[INFO] [stdout] test scientific_plot::tests::test_render_marker_none_empty ... ok
[INFO] [stdout] test scientific_plot::tests::test_series_builder_color ... ok
[INFO] [stdout] test scientific_plot::tests::test_series_builder_marker ... ok
[INFO] [stdout] test scientific_plot::tests::test_series_builder_line_style ... ok
[INFO] [stdout] test scientific_plot::tests::test_series_empty_range_none ... ok
[INFO] [stdout] test scientific_plot::tests::test_series_x_range ... ok
[INFO] [stdout] test scientific_plot::tests::test_series_y_range_nonempty ... ok
[INFO] [stdout] test scientific_plot::tests::test_svg_bar_series_contains_rect ... ok
[INFO] [stdout] test scientific_plot::tests::test_svg_contains_svg_tag ... ok
[INFO] [stdout] test scientific_plot::tests::test_svg_contains_axis_label ... ok
[INFO] [stdout] test scientific_plot::tests::test_surface_svg_contains_polygon ... ok
[INFO] [stdout] test scientific_plot::tests::test_svg_contains_title ... ok
[INFO] [stdout] test scientific_plot::tests::test_svg_legend_present ... ok
[INFO] [stdout] test scientific_plot::tests::test_svg_hidden_legend ... ok
[INFO] [stdout] test scientific_plot::tests::test_svg_error_bar_present ... ok
[INFO] [stdout] test scientific_plot::tests::test_svg_no_title_when_empty ... ok
[INFO] [stdout] test scientific_plot::tests::test_svg_line_series_contains_path ... ok
[INFO] [stdout] test scientific_plots::tests::test_attractor_correlation_dimension_needs_10_points ... ok
[INFO] [stdout] test scientific_plot::tests::test_svg_multiple_series ... ok
[INFO] [stdout] test scientific_plot::tests::test_vector_field_svg_contains_line ... ok
[INFO] [stdout] test scientific_plots::tests::test_attractor_correlation_dimension_lorenz ... ok
[INFO] [stdout] test scientific_plots::tests::test_axis_normalise_linear ... ok
[INFO] [stdout] test scientific_plots::tests::test_axis_normalise_log ... ok
[INFO] [stdout] test scientific_plot::tests::test_svg_scatter_contains_circle ... ok
[INFO] [stdout] test scientific_plot::tests::test_xml_escape ... ok
[INFO] [stdout] test scientific_plot::tests::test_svg_size_attribute ... ok
[INFO] [stdout] test scientific_plots::tests::test_bifurcation_scatter_points_count ... ok
[INFO] [stdout] test scientific_plots::tests::test_fixed_point_detection_logistic_growth ... ok
[INFO] [stdout] test scientific_plots::tests::test_fixed_point_stability_stable_node ... ok
[INFO] [stdout] test scientific_plots::tests::test_fixed_point_stability_stable_spiral ... ok
[INFO] [stdout] test scientific_plots::tests::test_bifurcation_diagram_period_one_at_r25 ... ok
[INFO] [stdout] test scientific_plots::tests::test_fixed_point_stability_unstable_node ... ok
[INFO] [stdout] test scientific_plots::tests::test_linspace_endpoints ... ok
[INFO] [stdout] test scientific_plots::tests::test_fixed_point_stability_saddle ... ok
[INFO] [stdout] test scientific_plots::tests::test_log_axis_labels_format ... ok
[INFO] [stdout] test scientific_plots::tests::test_log_axis_ticks_decades ... ok
[INFO] [stdout] test scientific_plots::tests::test_lorenz_trajectory_length ... ok
[INFO] [stdout] test scientific_plots::tests::test_lyapunov_history_length ... ok
[INFO] [stdout] test scientific_plots::tests::test_lyapunov_chaotic_logistic_r39 ... ok
[INFO] [stdout] test scientific_plots::tests::test_nice_step_round_numbers ... ok
[INFO] [stdout] test scientific_plots::tests::test_linear_axis_ticks_in_range ... ok
[INFO] [stdout] test scientific_plots::tests::test_hann_window_endpoints_near_zero ... ok
[INFO] [stdout] test scientific_plots::tests::test_phase_portrait_arrow_at_bounds ... ok
[INFO] [stdout] test scientific_plots::tests::test_bifurcation_period_doubling_detected ... ok
[INFO] [stdout] test scientific_plots::tests::test_plot_series_bounding_box ... ok
[INFO] [stdout] test scientific_plots::tests::test_lyapunov_stable_r1 ... ok
[INFO] [stdout] test scientific_plots::tests::test_phase_portrait_grid_size ... ok
[INFO] [stdout] test scientific_plots::tests::test_lyapunov_stable_logistic_r25 ... ok
[INFO] [stdout] test scientific_plots::tests::test_plot_point_distance ... ok
[INFO] [stdout] test scientific_plots::tests::test_poincare_positive_crossing_only ... ok
[INFO] [stdout] test scientific_plots::tests::test_plot_series_empty ... ok
[INFO] [stdout] test scientific_plots::tests::test_poincare_section_oscillating_trajectory ... ok
[INFO] [stdout] test scientific_plots::tests::test_plot_point_same_is_zero ... ok
[INFO] [stdout] test scientific_plots::tests::test_poincare_section_crossings_z_plane ... ok
[INFO] [stdout] test scientific_plots::tests::test_rossler_trajectory_grows ... ok
[INFO] [stdout] test scientific_plots::tests::test_stft_bin_count ... ok
[INFO] [stdout] test scientific_plots::tests::test_stft_dc_signal_peak_at_zero ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_axis_effective_range_auto ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_axis_effective_range_single_value_expanded ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_color_lerp_midpoint ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_color_lerp_t0_is_a ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_color_rgb_components ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_color_rgba_alpha ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_colorize_array ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_axis_effective_range_fixed ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_colormap_bwr_midpoint_is_white ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_colormap_clamp_below_zero ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_color_lerp_t1_is_b ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_colormap_jet_t0_is_blue ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_colormap_greys_monotone ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_colormap_clamp_above_one ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_colormap_jet_t1_is_red ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_contour_extract_all_levels ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_contour_extract_level_no_panic ... ok
[INFO] [stdout] test scientific_plots::tests::test_stft_frame_count ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_contour_data_range ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_contour_auto_levels ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_export_format_equality ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_export_options_default ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_histogram2d_multiple_points ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_contour_from_function ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_histogram2d_out_of_range_ignored ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_contour_value_at ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_layout_add_panels ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_histogram2d_single_point ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_layout_axis_range ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_layout_describe_contains_title ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_layout_empty ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_line_plot_auto_range ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_line_plot_empty ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_layout_fill_empty ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_line_plot_set_labels ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_layout_panel_bounds ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_layout_share_axes ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_line_series_interpolate_at ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_line_series_interpolate_clamp_high ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_line_series_len ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_line_plot_multiple_series ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_line_series_resample ... ok
[INFO] [stdout] test scientific_plots::tests::test_stft_pure_tone_peak_frequency ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_line_series_y_range ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_linspace_count ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_linspace_endpoints ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_phase_compute_nullcline ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_line_series_interpolate_clamp_low ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_linspace_one ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_linspace_zero ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_line_plot_add_series ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_phase_portrait_add_trajectory ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_phase_portrait_integrate_2d_uniform ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_phase_portrait_empty ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_phase_portrait_integrate_3d ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_phase_trajectory_arc_length ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_phase_trajectory_from_xy ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_phase_trajectory_from_xyz ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_scatter_add_xy ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_scatter_add_point ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_scatter_auto_color_range ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_scatter_color_for_no_colormap ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_scatter_color_for_with_colormap ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_scatter_x_range ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_scatter_empty ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_surface_color_for_vertex ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_surface_from_function_vertex_count ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_surface_lighting_apply ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_surface_triangle_count ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_surface_z_range ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_svg_exporter_contains_polyline ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_svg_exporter_contains_svg_tag ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_svg_exporter_empty_plot ... ok
[INFO] [stdout] test scientific_plotting::functions::tests::test_svg_exporter_title ... ok
[INFO] [stdout] test scientific_viz::tests::bifurcation_logistic_period1_for_small_r ... ok
[INFO] [stdout] test scientific_viz::tests::bifurcation_diagram_points_in_unit_interval ... ok
[INFO] [stdout] test scientific_viz::tests::build_tensor_glyphs_from_diagonal_tensor ... ok
[INFO] [stdout] test scientific_viz::tests::error_band_bootstrap_ci_structure ... ok
[INFO] [stdout] test scientific_viz::tests::bifurcation_logistic_chaotic_for_large_r ... ok
[INFO] [stdout] test scientific_viz::tests::error_band_empty_samples ... ok
[INFO] [stdout] test scientific_viz::tests::error_band_mean_within_band ... ok
[INFO] [stdout] test scientific_viz::tests::error_band_upper_greater_than_lower ... ok
[INFO] [stdout] test scientific_viz::tests::fractal_escape_time_coloring ... ok
[INFO] [stdout] test scientific_viz::tests::fractal_orbit_trap_positive ... ok
[INFO] [stdout] test scientific_viz::tests::hodograph_mean_speed_correct ... ok
[INFO] [stdout] test scientific_viz::tests::hodograph_arc_length_positive ... ok
[INFO] [stdout] test scientific_viz::tests::julia_set_render_dimensions ... ok
[INFO] [stdout] test scientific_viz::tests::hodograph_projectile_linear_vy ... ok
[INFO] [stdout] test scientific_viz::tests::lissajous_amplitude_bounds ... ok
[INFO] [stdout] test scientific_viz::tests::lissajous_circle_at_equal_freqs_and_phase ... ok
[INFO] [stdout] test scientific_viz::tests::lissajous_integer_ratio_is_closed ... ok
[INFO] [stdout] test scientific_viz::tests::lissajous_bounding_box_within_amplitude ... ok
[INFO] [stdout] test scientific_viz::tests::mandelbrot_far_point_escapes_fast ... ok
[INFO] [stdout] test scientific_viz::tests::lissajous_point_count ... ok
[INFO] [stdout] test scientific_viz::tests::mandelbrot_origin_does_not_escape ... ok
[INFO] [stdout] test scientific_viz::tests::mandelbrot_render_dimensions ... ok
[INFO] [stdout] test scientific_viz::tests::network_color_by_degree_changes_colors ... ok
[INFO] [stdout] test scientific_viz::tests::network_degree_updated_on_add_edge ... ok
[INFO] [stdout] test scientific_viz::tests::network_layout_nodes_on_canvas ... ok
[INFO] [stdout] test scientific_viz::tests::phase_diagram_add_region_and_line ... ok
[INFO] [stdout] test scientific_viz::tests::phase_diagram_clausius_clapeyron_points_count ... ok
[INFO] [stdout] test scientific_viz::tests::phase_diagram_tie_line_at_correct_temperature ... ok
[INFO] [stdout] test scientific_viz::tests::phase_diagram_clausius_clapeyron_pressure_increases ... ok
[INFO] [stdout] test scientific_viz::tests::phase_diagram_triple_and_critical_point ... ok
[INFO] [stdout] test scientific_viz::tests::phase_portrait_classify_stable_node ... ok
[INFO] [stdout] test scientific_viz::tests::phase_portrait_fixed_point_at_zero_velocity ... ok
[INFO] [stdout] test scientific_viz::tests::phase_portrait_trajectory_length ... ok
[INFO] [stdout] test scientific_viz::tests::tensor_glyph_anisotropic_fa_near_one ... ok
[INFO] [stdout] test scientific_viz::tests::tensor_glyph_ellipsoid_axes_match_eigenvalues ... ok
[INFO] [stdout] test scientific_viz::tests::tensor_glyph_isotropic_fa_is_zero ... ok
[INFO] [stdout] test scientific_viz::tests::tensor_glyph_linear_anisotropy_extreme ... ok
[INFO] [stdout] test scientific_viz::tests::tensor_glyph_scale_applied_to_axes ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_apply_morph_shorter_target_doesnt_panic ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_apply_morph_targets_half_weight ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_apply_morph_targets_full_weight ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_apply_morph_targets_two_targets ... ok
[INFO] [stdout] test scientific_viz::tests::phase_portrait_vector_field_count ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_apply_morph_targets_zero_weight ... ok
[INFO] [stdout] test scientific_viz::tests::tensor_glyph_surface_points_count ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_glsl_compose ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_glsl_define_flag ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_glsl_define_with_value ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_glsl_multiple_defines ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_glsl_extension_directive ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_mat4_transform_point_identity ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_glsl_preamble_es_precision ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_glsl_preamble_version_line ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_mat4_transform_point_translation ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_morph_target_creation ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_ibl_probe_intensity_scales_output ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_ibl_probe_non_negative ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_ibl_probe_uniform_grey_consistent ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_identity4_correct ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_glsl_preamble_no_precision_for_desktop ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_pcf_fetch_depth ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_pcf_fully_lit_when_receiver_shallower ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_pcf_fully_shadowed_when_receiver_deeper ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_pcf_radius_zero_single_tap ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_pose_bind_pose_identity ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_sh9_basis_l0_constant ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_sh9_basis_length_9 ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_skeleton_add_joint ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_skeleton_find_joint ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_skin_position_identity_joint ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_skin_position_no_joints_gives_zero ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::aniso_brdf_directional_albedo_in_range ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::aniso_brdf_fresnel_approaches_one_at_grazing ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_skinning_vertex_two_joints ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_skin_position_two_joints_blended ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::aniso_brdf_energy_not_above_incident_simple_check ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::aniso_brdf_evaluate_nonneg ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_skinning_vertex_single_joint ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::aniso_brdf_ndf_positive ... ok
[INFO] [stdout] test shader::functions::extended_tests::test_skinning_vertex_normalize ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::bssrdf_diffusion_profile_positive ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::bssrdf_sigma_tr_positive ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::bssrdf_transmittance_decreases_with_distance ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::bssrdf_transmittance_one_at_zero_distance ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::fog_blend_scene_returns_fog_color_at_high_density ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::fog_height_falloff_reduces_density_at_high_altitude ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::fog_inscatter_returns_finite_values ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::fog_phase_normalised_approximately ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::fog_transmittance_decreases_with_distance ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::fog_transmittance_one_at_zero_distance ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::iridescence_colors_vary_with_angle ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::iridescence_evaluate_rgb_in_unit_range ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::iridescence_fresnel_zero_at_normal_incidence_for_low_ior ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::iridescence_opd_increases_with_thickness ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::particle_sprite_circle_alpha_inside ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::particle_sprite_circle_alpha_outside ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::particle_sprite_final_color_glow ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::particle_sprite_gaussian_alpha_max_at_centre ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::aniso_brdf_fresnel_at_normal_incidence_equals_f0 ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::particle_sprite_soft_blend_same_depth ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::particle_sprite_soft_blend_far_scene ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::sss_dipole_reflectance_decreases_with_distance ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::sss_evaluate_clamps_grazing_angles ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::sss_evaluate_sss_non_negative ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::sss_fresnel_schlick_at_normal_incidence ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::sss_marble_albedo_range ... ok
[INFO] [stdout] test shader::functions::new_shader_tests::sss_fresnel_schlick_increases_at_grazing ... ok
[INFO] [stdout] test shader::functions::tests::ggx_distribution_peak_at_ndoth_one ... ok
[INFO] [stdout] test shader::functions::tests::ggx_distribution_roughness_one_lower_peak_than_roughness_point_one ... ok
[INFO] [stdout] test shader::functions::tests::material_set_get_uniform_roundtrip ... ok
[INFO] [stdout] test shader::functions::tests::phong_lighting_90_degree_incidence_zero_diffuse ... ok
[INFO] [stdout] test shader::functions::tests::phong_lighting_direct_incidence_nonzero ... ok
[INFO] [stdout] test shader::functions::tests::render_pass_material_count ... ok
[INFO] [stdout] test shader::functions::tests::schlick_fresnel_cos_one_gives_f0 ... ok
[INFO] [stdout] test shader::functions::tests::test_compute_shader_source ... ok
[INFO] [stdout] test shader::functions::tests::schlick_fresnel_cos_zero_gives_white ... ok
[INFO] [stdout] test shader::functions::tests::test_compute_tbn ... ok
[INFO] [stdout] test shader::functions::tests::test_cubemap_face_negative_y ... ok
[INFO] [stdout] test shader::functions::tests::test_cubemap_face_positive_x ... ok
[INFO] [stdout] test shader::functions::tests::test_equirectangular_uv ... ok
[INFO] [stdout] test shader::functions::tests::test_geometry_smith ... ok
[INFO] [stdout] test shader::functions::tests::test_decode_normal_map_center ... ok
[INFO] [stdout] test shader::functions::tests::test_pbr_f0_metal ... ok
[INFO] [stdout] test shader::functions::tests::test_look_at_matrix ... ok
[INFO] [stdout] test shader::functions::tests::test_pbr_f0_dielectric ... ok
[INFO] [stdout] test shader::functions::tests::test_render_pass_clear_color ... ok
[INFO] [stdout] test shader::functions::tests::test_sh_basis_l1 ... ok
[INFO] [stdout] test shader::functions::tests::test_pbr_to_material ... ok
[INFO] [stdout] test shader::functions::tests::test_sh_irradiance ... ok
[INFO] [stdout] test shader::functions::tests::test_shadow_map_ortho_dimensions ... ok
[INFO] [stdout] test shader::functions::tests::test_tbn_transform_identity ... ok
[INFO] [stdout] test shader::functions::tests::test_shadow_map_setup ... ok
[INFO] [stdout] test shader::functions::tests::test_uniform_buffer ... ok
[INFO] [stdout] test shader_effects::tests::test_chromatic_aberration_center_unchanged ... ok
[INFO] [stdout] test shader_effects::tests::test_chromatic_aberration_r_and_b_opposite ... ok
[INFO] [stdout] test shader_effects::tests::test_chromatic_aberration_returns_three_channels ... ok
[INFO] [stdout] test shader_effects::tests::test_chromatic_aberration_zero_strength_identity ... ok
[INFO] [stdout] test shader_effects::tests::test_coc_larger_aperture_increases_blur ... ok
[INFO] [stdout] test shader_effects::tests::test_coc_increases_with_distance_from_focus ... ok
[INFO] [stdout] test shader_effects::tests::test_coc_non_negative ... ok
[INFO] [stdout] test shader_effects::tests::test_coc_zero_at_focus_distance ... ok
[INFO] [stdout] test shader_effects::tests::test_coc_zero_depth_returns_zero ... ok
[INFO] [stdout] test shader_effects::tests::test_film_grain_different_uv_different_value ... ok
[INFO] [stdout] test shader_effects::tests::test_film_grain_deterministic ... ok
[INFO] [stdout] test shader_effects::tests::test_film_grain_in_range ... ok
[INFO] [stdout] test shader_effects::tests::test_film_grain_zero_intensity_is_zero ... ok
[INFO] [stdout] test shader_effects::tests::test_fresnel_at_grazing_angle_returns_one ... ok
[INFO] [stdout] test shader_effects::tests::test_fresnel_monotone_decreasing_with_cos_theta ... ok
[INFO] [stdout] test shader_effects::tests::test_fresnel_at_zero_angle_returns_f0 ... ok
[INFO] [stdout] test shader_effects::tests::test_fresnel_output_in_range ... ok
[INFO] [stdout] test shader_effects::tests::test_lens_flare_at_light_source_is_one ... ok
[INFO] [stdout] test shader_effects::tests::test_lens_flare_beyond_radius_is_zero ... ok
[INFO] [stdout] test shader_effects::tests::test_lens_flare_falloff_with_distance ... ok
[INFO] [stdout] test shader_effects::tests::test_pbr_brdf_non_negative ... ok
[INFO] [stdout] test shader_effects::tests::test_pbr_brdf_roughness_effect ... ok
[INFO] [stdout] test shader_effects::tests::test_lens_flare_output_in_range ... ok
[INFO] [stdout] test shader_effects::tests::test_pbr_brdf_zero_metallic_returns_zero ... ok
[INFO] [stdout] test shader_effects::tests::test_phong_full_diffuse_front_lit ... ok
[INFO] [stdout] test shader_effects::tests::test_phong_ambient_only_when_no_light ... ok
[INFO] [stdout] test shader_effects::tests::test_phong_output_in_range ... ok
[INFO] [stdout] test shader_effects::tests::test_phong_specular_at_perfect_reflection ... ok
[INFO] [stdout] test shader_effects::tests::test_phong_with_unnormalized_vectors ... ok
[INFO] [stdout] test shader_effects::tests::test_rim_lighting_facing_camera_is_min ... ok
[INFO] [stdout] test shader_effects::tests::test_rim_lighting_output_in_range ... ok
[INFO] [stdout] test shader_effects::tests::test_rim_lighting_silhouette_is_max ... ok
[INFO] [stdout] test shader_effects::tests::test_toon_shading_four_steps_uniform ... ok
[INFO] [stdout] test shader_effects::tests::test_toon_shading_one_step_always_zero ... ok
[INFO] [stdout] test shader_effects::tests::test_shader_params_default_valid ... ok
[INFO] [stdout] test shader_effects::tests::test_shader_params_new ... ok
[INFO] [stdout] test shader_effects::tests::test_toon_shading_output_in_range ... ok
[INFO] [stdout] test shader_effects::tests::test_toon_shading_two_steps ... ok
[INFO] [stdout] test shader_effects::tests::test_vignette_beyond_radius_darkens ... ok
[INFO] [stdout] test shader_effects::tests::test_vignette_center_is_full_bright ... ok
[INFO] [stdout] test shader_effects::tests::test_vignette_zero_strength_is_one ... ok
[INFO] [stdout] test shader_effects::tests::test_vignette_output_in_range ... ok
[INFO] [stdout] test slice_renderer::tests::test_cell_count ... ok
[INFO] [stdout] test slice_renderer::tests::test_contour_lines_all_above ... ok
[INFO] [stdout] test slice_renderer::tests::test_contour_lines_all_below ... ok
[INFO] [stdout] test slice_renderer::tests::test_contour_lines_degenerate ... ok
[INFO] [stdout] test slice_renderer::tests::test_contour_lines_no_panic ... ok
[INFO] [stdout] test slice_renderer::tests::test_custom_plane_orthonormal ... ok
[INFO] [stdout] test slice_renderer::tests::test_project_origin_gives_zero_uv ... ok
[INFO] [stdout] test slice_renderer::tests::test_project_world_roundtrip_xz ... ok
[INFO] [stdout] test slice_renderer::tests::test_project_world_roundtrip_xy ... ok
[INFO] [stdout] test slice_renderer::tests::test_sample_scalar_constant_field ... ok
[INFO] [stdout] test slice_renderer::tests::test_sample_scalar_count ... ok
[INFO] [stdout] test slice_renderer::tests::test_sample_vector_count ... ok
[INFO] [stdout] test slice_renderer::tests::test_project_world_roundtrip_yz ... ok
[INFO] [stdout] test slice_renderer::tests::test_scalar_to_colormap_empty ... ok
[INFO] [stdout] test slice_renderer::tests::test_slice_image_default_pixel ... ok
[INFO] [stdout] test slice_renderer::tests::test_sample_scalar_x_coordinate ... ok
[INFO] [stdout] test slice_renderer::tests::test_sample_vector_projects_correctly ... ok
[INFO] [stdout] test slice_renderer::tests::test_scalar_to_colormap_alpha_preserved ... ok
[INFO] [stdout] test slice_renderer::tests::test_uv_to_world_origin ... ok
[INFO] [stdout] test slice_renderer::tests::test_scalar_to_colormap_pixel_count ... ok
[INFO] [stdout] test slice_renderer::tests::test_slice_image_multiple_pixels ... ok
[INFO] [stdout] test slice_renderer::tests::test_slice_image_pixel_count ... ok
[INFO] [stdout] test slice_renderer::tests::test_uv_to_world_step ... ok
[INFO] [stdout] test slice_renderer::tests::test_xz_plane_normal ... ok
[INFO] [stdout] test slice_renderer::tests::test_vector_arrows_empty ... ok
[INFO] [stdout] test slice_renderer::tests::test_yz_plane_normal ... ok
[INFO] [stdout] test slice_renderer::tests::test_vector_arrows_one ... ok
[INFO] [stdout] test statistical_viz::tests::test_auto_range_empty ... ok
[INFO] [stdout] test slice_renderer::tests::test_vector_arrows_shaft_tip ... ok
[INFO] [stdout] test statistical_viz::tests::test_auto_range_encloses_data ... ok
[INFO] [stdout] test slice_renderer::tests::test_xy_plane_normal ... ok
[INFO] [stdout] test slice_renderer::tests::test_slice_image_set_get_roundtrip ... ok
[INFO] [stdout] test slice_renderer::tests::test_xy_plane_project_x_axis ... ok
[INFO] [stdout] test statistical_viz::tests::test_bland_altman_known_bias ... ok
[INFO] [stdout] test statistical_viz::tests::test_bland_altman_loa_width ... ok
[INFO] [stdout] test statistical_viz::tests::test_bland_altman_n ... ok
[INFO] [stdout] test statistical_viz::tests::test_bland_altman_within_loa_all ... ok
[INFO] [stdout] test statistical_viz::tests::test_bland_altman_zero_bias_identical ... ok
[INFO] [stdout] test statistical_viz::tests::test_box_plot_detects_outliers ... ok
[INFO] [stdout] test statistical_viz::tests::test_box_plot_empty ... ok
[INFO] [stdout] test statistical_viz::tests::test_box_plot_iqr ... ok
[INFO] [stdout] test statistical_viz::tests::test_box_plot_is_outlier ... ok
[INFO] [stdout] test statistical_viz::tests::test_box_plot_median_sorted ... ok
[INFO] [stdout] test statistical_viz::tests::test_box_plot_no_outliers_normal_range ... ok
[INFO] [stdout] test statistical_viz::tests::test_correlation_heatmap_get ... ok
[INFO] [stdout] test statistical_viz::tests::test_ecdf_empty ... ok
[INFO] [stdout] test statistical_viz::tests::test_correlation_heatmap_diagonal_one ... ok
[INFO] [stdout] test statistical_viz::tests::test_ecdf_len ... ok
[INFO] [stdout] test statistical_viz::tests::test_ecdf_median ... ok
[INFO] [stdout] test statistical_viz::tests::test_ecdf_probability_one_at_max ... ok
[INFO] [stdout] test statistical_viz::tests::test_ecdf_probability_zero_below_min ... ok
[INFO] [stdout] test statistical_viz::tests::test_error_bar_asymmetric ... ok
[INFO] [stdout] test statistical_viz::tests::test_error_bar_plot_y_range ... ok
[INFO] [stdout] test statistical_viz::tests::test_error_bar_plot_from_groups ... ok
[INFO] [stdout] test statistical_viz::tests::test_error_bar_symmetric_upper_lower ... ok
[INFO] [stdout] test statistical_viz::tests::test_histogram_bin_centre ... ok
[INFO] [stdout] test statistical_viz::tests::test_gaussian_kde_integrates_approx_one ... ok
[INFO] [stdout] test statistical_viz::tests::test_histogram_empty ... ok
[INFO] [stdout] test statistical_viz::tests::test_histogram_cumulative_ends_at_one ... ok
[INFO] [stdout] test statistical_viz::tests::test_histogram_n_bins ... ok
[INFO] [stdout] test statistical_viz::tests::test_histogram_mode_bin ... ok
[INFO] [stdout] test statistical_viz::tests::test_histogram_total_count ... ok
[INFO] [stdout] test statistical_viz::tests::test_histogram_single_value ... ok
[INFO] [stdout] test statistical_viz::tests::test_mean_empty_is_nan ... ok
[INFO] [stdout] test statistical_viz::tests::test_mean_basic ... ok
[INFO] [stdout] test statistical_viz::tests::test_normalize_degenerate_range ... ok
[INFO] [stdout] test statistical_viz::tests::test_normalize_to_range_clamp ... ok
[INFO] [stdout] test statistical_viz::tests::test_normalize_to_range_endpoints ... ok
[INFO] [stdout] test statistical_viz::tests::test_pearson_uncorrelated ... ok
[INFO] [stdout] test statistical_viz::tests::test_percentile_median ... ok
[INFO] [stdout] test statistical_viz::tests::test_probit_symmetry ... ok
[INFO] [stdout] test statistical_viz::tests::test_percentile_min_max ... ok
[INFO] [stdout] test statistical_viz::tests::test_qq_plot_empty ... ok
[INFO] [stdout] test statistical_viz::tests::test_qq_plot_length ... ok
[INFO] [stdout] test statistical_viz::tests::test_qq_plot_uniform_theoretical_in_unit_interval ... ok
[INFO] [stdout] test statistical_viz::tests::test_quartiles_simple ... ok
[INFO] [stdout] test statistical_viz::tests::test_scatter_matrix_pair_count ... ok
[INFO] [stdout] test statistical_viz::tests::test_time_series_band_width ... ok
[INFO] [stdout] test statistical_viz::tests::test_std_dev_zero_for_constant ... ok
[INFO] [stdout] test statistical_viz::tests::test_scatter_pair_pearson_anti_corr ... ok
[INFO] [stdout] test statistical_viz::tests::test_time_series_len ... ok
[INFO] [stdout] test statistical_viz::tests::test_sort_f64_basic ... ok
[INFO] [stdout] test statistical_viz::tests::test_scatter_pair_pearson_perfect ... ok
[INFO] [stdout] test statistical_viz::tests::test_variance_uniform ... ok
[INFO] [stdout] test statistical_viz::tests::test_violin_plot_empty ... ok
[INFO] [stdout] test statistical_viz::tests::test_time_series_mean_constant ... ok
[INFO] [stdout] test statistical_viz::tests::test_violin_plot_kde_n_points ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_arrow_glyphs_count_for_long_line ... ok
[INFO] [stdout] test statistical_viz::tests::test_violin_plot_kde_non_negative ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_color_by_velocity_length_matches_points ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_arrow_glyphs_direction_along_x ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_arrow_glyphs_empty_when_short_line ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_detect_vortex_cores_uniform_field_none ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_color_by_velocity_empty_mags_returns_white ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_detect_vortex_cores_circular_field ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_enhanced_lic_output_dimensions ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_enhanced_lic_pixels_in_range ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_ftle_output_dimensions ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_euler_uniform_field ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_ftle_threshold_returns_correct_indices ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_ftle_shear_flow_nonzero ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_ftle_uniform_field_near_zero ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_jobard_lefer_produces_at_least_one_line ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_jobard_lefer_lines_have_points ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_lic_pixels_in_range ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_lic_texture_get ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_pathline_time_stamps ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_q_criterion_pure_rotation ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_q_criterion_pure_strain_negative ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_rk4_uniform_field_exact ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_rk4_vs_euler_circular ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_seed_random_count ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_seed_random_within_bounds ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_seed_uniform_grid_count ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_seed_uniform_grid_single_cell ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_streakline_particle_count ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_streakline_particles_spread ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_streakline_zero_interval ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_stream_ribbon_edges_offset_from_centre ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_stream_ribbon_len_positive ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_stream_surface_area_positive ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_stream_surface_n_streamlines_matches_seed_count ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_stream_surface_total_points_nonzero ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_streamline_arc_length_uniform ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_streamline_empty ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_streamline_is_empty_false ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_topology_kind_saddle_for_hyperbolic_flow ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_topology_stagnation_detected_near_origin ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_lic_uniform_field_non_uniform_output ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_pathline_stagnation ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_trace_streamline_circular_field_curves ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_trace_streamline_uniform_field ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_tracer_stagnation_stop ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_tracer_velocity_magnitudes_filled ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_velocity_color_clamped ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_velocity_color_one_is_red ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_velocity_color_zero_is_blue ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_velocity_ribbon_edges_offset ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_trace_streamlines_grid_count ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_pathline_uniform_time_dep ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_tracer_uniform_field ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_velocity_ribbon_len_matches_streamline ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_velocity_ribbon_wider_at_higher_speed ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::contact_force_colors_length ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::contact_force_friction_ratio_zero_normal ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::contact_force_friction_ratio ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::contact_force_lines_length ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::contact_force_total_force ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::contact_force_total_force_only_normal ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::hydro_pressure_colors_length ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::hydrostress_dynamic_pressure ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::hydrostress_total_stress_has_viscous_term ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::hydrostress_total_stress_hydrostatic ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::hydrostress_viscous_von_mises_zero_for_hydrostatic ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::plastic_strain_accumulate_increases_eps ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::plastic_strain_colors_length ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::plastic_strain_zero_not_yielded ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::strain_energy_colors_length ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::strain_energy_density_positive_for_compression ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_lic_output_dimensions ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::strain_energy_density_zero_for_zero_strain ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::contact_force_lines_end_offset_in_normal_direction ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::strain_energy_field_length ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::strain_energy_symmetric_in_stress_strain_swap ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::strain_tensor_zero_volumetric ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::strain_tensor_volumetric_isotropic ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::superquadric_exponents_in_valid_range ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::superquadric_generate_length ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::superquadric_glyph_from_stress_uniaxial ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::yield_indicator_colors_green_when_not_yielded ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::yield_indicator_colors_red_when_yielded ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_damage_field_accumulate_miner ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_damage_field_capped_at_one ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_damage_field_colors_length ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_damage_field_initial_zero ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::superquadric_glyph_implicit_inside_small_point ... ok
[INFO] [stdout] test stress_viz::functions::new_stress_viz_tests::superquadric_glyph_implicit_zero_at_surface ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_deviatoric_trace_zero ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_damage_field_max ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_frobenius_norm ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_fatigue_life_color_low_cycles_different_from_high ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_hydrostatic_zero_von_mises ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_fatigue_life_colormap_length ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_interpolate_stress_midpoint ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_mohr_circle_hydrostatic ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_mohr_circle_points ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_mohr_circle_uniaxial ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_octahedral_shear ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_principal_eigenvectors_orthogonal ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_principal_stress_arrows ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_principal_stress_sum_equals_trace ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_pure_shear_lode_angle ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_safety_factor_colors_red_when_yielded ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_principal_stresses_diagonal ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_safety_factor_above_yield ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_safety_factor_yielded ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_stress_concentration_colors_length ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_stress_concentration_zero_nominal ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_stress_field_average ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_stress_field_max_vm ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_stress_concentration_factor_nominal ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_stress_invariant_colors ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_stress_invariants ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_stress_path ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_stress_path_to_lines ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_stress_path_triaxiality_history ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_stress_path_pq_data ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_stress_tensor_sub ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_stress_tensor_factories ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_stress_tensor_wrapper_consistency ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_stress_trajectory_length ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_triaxiality_uniaxial ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_von_mises_colors_length ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_stress_trajectory_seed_is_first_point ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_yield_surface_colors_length ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_tensor_glyph_generation ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_yield_surface_tresca ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_yield_surface_von_mises_inside ... ok
[INFO] [stdout] test stress_viz::functions::tests::test_yield_surface_von_mises_outside ... ok
[INFO] [stdout] test structural_viz::tests::test_convergence_not_converged ... ok
[INFO] [stdout] test structural_viz::tests::test_convergence_has_converged ... ok
[INFO] [stdout] test structural_viz::tests::test_convergence_log_residuals ... ok
[INFO] [stdout] test structural_viz::tests::test_crack_path_total_length ... ok
[INFO] [stdout] test structural_viz::tests::test_convergence_reduction_ratio ... ok
[INFO] [stdout] test structural_viz::tests::test_convergence_push_and_len ... ok
[INFO] [stdout] test structural_viz::tests::test_coolwarm_endpoints ... ok
[INFO] [stdout] test structural_viz::tests::test_crack_path_wireframe ... ok
[INFO] [stdout] test structural_viz::tests::test_damage_field_colors_undamaged_white ... ok
[INFO] [stdout] test structural_viz::tests::test_deformed_overlay_max_displacement ... ok
[INFO] [stdout] test structural_viz::tests::test_deformed_overlay_positions ... ok
[INFO] [stdout] test structural_viz::tests::test_displacement_magnitudes ... ok
[INFO] [stdout] test structural_viz::tests::test_damage_field_fraction ... ok
[INFO] [stdout] test structural_viz::tests::test_element_type_is_volumetric ... ok
[INFO] [stdout] test structural_viz::tests::test_damage_field_mean ... ok
[INFO] [stdout] test structural_viz::tests::test_fatigue_iso_levels ... ok
[INFO] [stdout] test structural_viz::tests::test_element_type_node_count ... ok
[INFO] [stdout] test structural_viz::tests::test_fatigue_log_colors_count ... ok
[INFO] [stdout] test structural_viz::tests::test_fem_mesh_aabb ... ok
[INFO] [stdout] test structural_viz::tests::test_fem_mesh_add_nodes ... ok
[INFO] [stdout] test structural_viz::tests::test_fem_mesh_element_centroid ... ok
[INFO] [stdout] test structural_viz::tests::test_fem_surface_colored_tri3 ... ok
[INFO] [stdout] test structural_viz::tests::test_glyph_set_segments ... ok
[INFO] [stdout] test structural_viz::tests::test_fem_mesh_aabb_empty ... ok
[INFO] [stdout] test structural_viz::tests::test_grayscale_midpoint ... ok
[INFO] [stdout] test structural_viz::tests::test_jet_endpoints ... ok
[INFO] [stdout] test structural_viz::tests::test_line_plot_add_convergence ... ok
[INFO] [stdout] test structural_viz::tests::test_mode_shape_max_amplitude ... ok
[INFO] [stdout] test structural_viz::tests::test_mode_shape_sample_zero_time ... ok
[INFO] [stdout] test structural_viz::tests::test_mode_shape_normalize ... ok
[INFO] [stdout] test structural_viz::tests::test_rgba_lerp_clamp ... ok
[INFO] [stdout] test structural_viz::tests::test_scalars_to_colors_same_value ... ok
[INFO] [stdout] test structural_viz::tests::test_rgba_lerp_midpoint ... ok
[INFO] [stdout] test structural_viz::tests::test_sed_shear ... ok
[INFO] [stdout] test structural_viz::tests::test_sed_uniaxial ... ok
[INFO] [stdout] test structural_viz::tests::test_stress_principal_diagonal ... ok
[INFO] [stdout] test structural_viz::tests::test_structural_scene_add_colored_mesh ... ok
[INFO] [stdout] test structural_viz::tests::test_structural_scene_primitive_count ... ok
[INFO] [stdout] test structural_viz::tests::test_vec3_add ... ok
[INFO] [stdout] test structural_viz::tests::test_vec3_cross ... ok
[INFO] [stdout] test structural_viz::tests::test_vec3_dot ... ok
[INFO] [stdout] test structural_viz::tests::test_vec3_length_unit ... ok
[INFO] [stdout] test structural_viz::tests::test_vec3_normalize ... ok
[INFO] [stdout] test structural_viz::tests::test_vec3_normalize_zero ... ok
[INFO] [stdout] test structural_viz::tests::test_von_mises_hydrostatic_zero ... ok
[INFO] [stdout] test structural_viz::tests::test_von_mises_uniaxial ... ok
[INFO] [stdout] test structural_viz::tests::test_wireframe_from_fem_mesh ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_axial_radial_diffusivity ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_cross3_orthogonality ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_dot3 ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_dti_fa_color_map_length ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_dti_grayscale_isotropic ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_dti_process_length ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_dti_tracking_mask ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_dti_voxel_from_tensor ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_eig3_eigenvectors_orthonormal ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_eig3_diagonal_tensor_sorted ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_dti_statistics ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_eig3_isotropic_eigenvalues ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_eig3_reconstruction ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_fa_linear_is_near_one ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_frobenius_norm_identity ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_geodesic_distance_positive ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_geodesic_distance_self_zero ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_glyph_builder_clamp ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_fa_isotropic_is_zero ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_glyph_builder_field ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_fa_range ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_glyph_builder_grid ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_glyph_builder_scale ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_hyperstreamline_forward_moves ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_hyperstreamline_bidirectional_longer ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_glyph_builder_semi_axes_positive ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_hyperstreamline_fa_above_threshold ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_hyperstreamline_many_seeds ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_is_positive_definite ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_hyperstreamline_stops_on_isotropic ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_is_positive_semidefinite ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_lerp_endpoints ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_lode_angle_range ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_log_exp_roundtrip ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_lerp_midpoint_spd ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_normalize3_zero_vector ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_normalize3_unit_vector ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_relative_anisotropy ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_stress_decompose_deviatoric_traceless ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_stress_von_mises_field ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_stress_decompose_hydrostatic ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_tensor_invariants_diagonal ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_stress_trajectories_count ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_mean_diffusivity ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_stress_hydrostatic_field ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_mat3_identity_multiply ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_topology_classify_isotropic ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_topology_classify_field ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_topology_classify_linear_degenerate ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_topology_classify_regular ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_topology_degeneracy_measure_isotropic ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_voigt_mat3_roundtrip ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_von_mises_hydrostatic_zero ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_topology_find_degenerate_points ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_volume_ratio_isotropic ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_von_mises_uniaxial ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_weighted_mean_equal_weights ... ok
[INFO] [stdout] test terrain_renderer::tests::test_diamond_square_correct_length ... ok
[INFO] [stdout] test terrain_renderer::tests::test_diamond_square_deterministic ... ok
[INFO] [stdout] test terrain_renderer::tests::test_diamond_square_different_seeds_differ ... ok
[INFO] [stdout] test terrain_renderer::tests::test_diamond_square_size_1 ... ok
[INFO] [stdout] test tensor_visualization::functions::tests::test_topology_classify_planar_degenerate ... ok
[INFO] [stdout] test terrain_renderer::tests::test_heightfield_bilinear_clamp_negative ... ok
[INFO] [stdout] test terrain_renderer::tests::test_heightfield_bilinear_linear_ramp ... ok
[INFO] [stdout] test terrain_renderer::tests::test_diamond_square_smooth_roughness_small_range ... ok
[INFO] [stdout] test terrain_renderer::tests::test_heightfield_bilinear_exact_corner ... ok
[INFO] [stdout] test terrain_renderer::tests::test_heightfield_bilinear_midpoint ... ok
[INFO] [stdout] test terrain_renderer::tests::test_heightfield_get_out_of_bounds ... ok
[INFO] [stdout] test terrain_renderer::tests::test_heightfield_get_set ... ok
[INFO] [stdout] test terrain_renderer::tests::test_heightfield_from_heights_panic_on_size_mismatch ... ok
[INFO] [stdout] test terrain_renderer::tests::test_heightfield_new_zeroed ... ok
[INFO] [stdout] test terrain_renderer::tests::test_lod_compute_lod_far_returns_max ... ok
[INFO] [stdout] test terrain_renderer::tests::test_heightfield_set_out_of_bounds_noop ... ok
[INFO] [stdout] test terrain_renderer::tests::test_lod_compute_lod_close_returns_0 ... ok
[INFO] [stdout] test terrain_renderer::tests::test_lod_has_at_least_one_level ... ok
[INFO] [stdout] test terrain_renderer::tests::test_lod_compute_lod_clamped ... ok
[INFO] [stdout] test terrain_renderer::tests::test_lod_levels_decrease_in_size ... ok
[INFO] [stdout] test terrain_renderer::tests::test_normals_flat_field_points_up ... ok
[INFO] [stdout] test terrain_renderer::tests::test_lod_spacing_doubles ... ok
[INFO] [stdout] test terrain_renderer::tests::test_normals_count_matches_field_size ... ok
[INFO] [stdout] test terrain_renderer::tests::test_normals_tilted_slope ... ok
[INFO] [stdout] test terrain_renderer::tests::test_normals_unit_length ... ok
[INFO] [stdout] test terrain_renderer::tests::test_slope_flat_is_zero ... ok
[INFO] [stdout] test terrain_renderer::tests::test_slope_ramp ... ok
[INFO] [stdout] test terrain_renderer::tests::test_stats_empty_field ... ok
[INFO] [stdout] test terrain_renderer::tests::test_stats_min_max_correct ... ok
[INFO] [stdout] test terrain_renderer::tests::test_texture_below_zero_is_water ... ok
[INFO] [stdout] test terrain_renderer::tests::test_stats_flat_field_zero_slope ... ok
[INFO] [stdout] test terrain_renderer::tests::test_stats_roughness_nonzero_for_varied_heights ... ok
[INFO] [stdout] test terrain_renderer::tests::test_texture_high_is_rock ... ok
[INFO] [stdout] test terrain_renderer::tests::test_texture_low_is_sand ... ok
[INFO] [stdout] test terrain_renderer::tests::test_texture_mid_is_grass ... ok
[INFO] [stdout] test terrain_renderer::tests::test_water_height_varies_with_time ... ok
[INFO] [stdout] test terrain_renderer::tests::test_water_amplitude_bounded ... ok
[INFO] [stdout] test terrain_viz::tests::test_conical_terrain_peak_at_center ... ok
[INFO] [stdout] test terrain_renderer::tests::test_texture_very_high_is_snow ... ok
[INFO] [stdout] test terrain_renderer::tests::test_texture_rgb_components_in_range ... ok
[INFO] [stdout] test terrain_renderer::tests::test_water_base_height_at_origin ... ok
[INFO] [stdout] test terrain_renderer::tests::test_water_height_varies_with_position ... ok
[INFO] [stdout] test terrain_viz::tests::test_contour_elevation_tagged ... ok
[INFO] [stdout] test terrain_viz::tests::test_contour_extract_all ... ok
[INFO] [stdout] test terrain_viz::tests::test_contour_single_peak ... ok
[INFO] [stdout] test terrain_viz::tests::test_contour_flat_terrain_no_segments ... ok
[INFO] [stdout] test terrain_viz::tests::test_cross_section_elevation_gain ... ok
[INFO] [stdout] test terrain_viz::tests::test_cross_section_flat_terrain ... ok
[INFO] [stdout] test terrain_viz::tests::test_cross_section_length ... ok
[INFO] [stdout] test terrain_viz::tests::test_elevation_ramp_clamp_below ... ok
[INFO] [stdout] test terrain_viz::tests::test_elevation_ramp_clamp_above ... ok
[INFO] [stdout] test terrain_viz::tests::test_elevation_ramp_hypsometric_endpoints ... ok
[INFO] [stdout] test terrain_viz::tests::test_elevation_ramp_empty ... ok
[INFO] [stdout] test terrain_viz::tests::test_elevation_ramp_midpoint_interpolation ... ok
[INFO] [stdout] test terrain_viz::tests::test_elevation_ramp_sorted_after_add ... ok
[INFO] [stdout] test terrain_viz::tests::test_elevation_ramp_single_stop ... ok
[INFO] [stdout] test terrain_viz::tests::test_erosion_map_color_negative ... ok
[INFO] [stdout] test terrain_viz::tests::test_erosion_map_color_positive ... ok
[INFO] [stdout] test terrain_viz::tests::test_heightfield_basic_set_get ... ok
[INFO] [stdout] test terrain_viz::tests::test_heightfield_bilinear_sample_corners ... ok
[INFO] [stdout] test terrain_viz::tests::test_heightfield_bilinear_sample_out_of_range ... ok
[INFO] [stdout] test terrain_viz::tests::test_heightfield_lod_mesh_step1 ... ok
[INFO] [stdout] test terrain_viz::tests::test_erosion_map_max_abs_sediment ... ok
[INFO] [stdout] test terrain_viz::tests::test_heightfield_lod_mesh_step2 ... ok
[INFO] [stdout] test terrain_viz::tests::test_erosion_map_set_get ... ok
[INFO] [stdout] test terrain_viz::tests::test_heightfield_slope_flat ... ok
[INFO] [stdout] test terrain_viz::tests::test_heightfield_min_max ... ok
[INFO] [stdout] test terrain_viz::tests::test_heightfield_normal_flat ... ok
[INFO] [stdout] test terrain_viz::tests::test_heightfield_out_of_bounds ... ok
[INFO] [stdout] test terrain_viz::tests::test_heightfield_world_pos ... ok
[INFO] [stdout] test terrain_viz::tests::test_hillshade_flat_overhead_sun ... ok
[INFO] [stdout] test terrain_viz::tests::test_hillshade_values_in_range ... ok
[INFO] [stdout] test terrain_viz::tests::test_hillshade_map_length ... ok
[INFO] [stdout] test terrain_viz::tests::test_shadow_hill_casts_shadow ... ok
[INFO] [stdout] test terrain_viz::tests::test_shadow_flat_no_self_shadow ... ok
[INFO] [stdout] test terrain_viz::tests::test_slope_aspect_flat ... ok
[INFO] [stdout] test terrain_viz::tests::test_shadow_fraction_range ... ok
[INFO] [stdout] test terrain_viz::tests::test_sinusoidal_terrain_range ... ok
[INFO] [stdout] test terrain_viz::tests::test_splat_layer_weight_out_of_altitude ... ok
[INFO] [stdout] test terrain_viz::tests::test_slope_aspect_tilted ... ok
[INFO] [stdout] test terrain_viz::tests::test_splat_layer_weight_in_range ... ok
[INFO] [stdout] test terrain_viz::tests::test_texture_splat_blend_normalised ... ok
[INFO] [stdout] test terrain_viz::tests::test_texture_splat_empty ... ok
[INFO] [stdout] test terrain_viz::tests::test_sun_direction_overhead ... ok
[INFO] [stdout] test terrain_viz::tests::test_sun_direction_unit_length ... ok
[INFO] [stdout] test terrain_viz::tests::test_slope_aspect_color_valid ... ok
[INFO] [stdout] test terrain_viz::tests::test_vegetation_map_color_green ... ok
[INFO] [stdout] test terrain_viz::tests::test_vegetation_map_mean_density ... ok
[INFO] [stdout] test terrain_viz::tests::test_vegetation_map_set_get ... ok
[INFO] [stdout] test terrain_viz::tests::test_vegetation_populate_from_terrain ... ok
[INFO] [stdout] test terrain_viz::tests::test_water_quad_has_two_triangles ... ok
[INFO] [stdout] test terrain_viz::tests::test_water_surface_flood_fraction_all ... ok
[INFO] [stdout] test tests::test_arrow_mesh_non_empty ... ok
[INFO] [stdout] test terrain_viz::tests::test_water_surface_flood_fraction_none ... ok
[INFO] [stdout] test tests::test_axis_triad_has_three_lines ... ok
[INFO] [stdout] test terrain_viz::tests::test_water_surface_shoreline ... ok
[INFO] [stdout] test tests::test_axis_triad_x_axis_is_red ... ok
[INFO] [stdout] test tests::test_colormap_jet_midpoint ... ok
[INFO] [stdout] test tests::test_colormap_monotone_luminance ... ok
[INFO] [stdout] test tests::test_colormap_viridis_range ... ok
[INFO] [stdout] test tests::test_contact_normal_lines_direction ... ok
[INFO] [stdout] test tests::test_axis_triad_scaled ... ok
[INFO] [stdout] test tests::test_box_mesh_24_vertices_36_indices ... ok
[INFO] [stdout] test tests::test_color_constructors ... ok
[INFO] [stdout] test tests::test_flip_normals_inverts_direction ... ok
[INFO] [stdout] test tests::test_grid_lines_count ... ok
[INFO] [stdout] test tests::test_jet_colormap_endpoints ... ok
[INFO] [stdout] test tests::test_grid_lines_min_one_division ... ok
[INFO] [stdout] test tests::test_mesh_aabb_basic ... ok
[INFO] [stdout] test tests::test_mesh_aabb_empty_mesh ... ok
[INFO] [stdout] test tests::test_plane_mesh_has_4_vertices ... ok
[INFO] [stdout] test tests::test_recolor_mesh_changes_all_vertices ... ok
[INFO] [stdout] test tests::test_registry_duplicate_returns_error ... ok
[INFO] [stdout] test tests::test_merge_lines_empty ... ok
[INFO] [stdout] test tests::test_registry_iter ... ok
[INFO] [stdout] test tests::test_registry_len_and_is_empty ... ok
[INFO] [stdout] test tests::test_registry_not_found_returns_error ... ok
[INFO] [stdout] test tests::test_registry_register_and_get ... ok
[INFO] [stdout] test tests::test_scale_mesh_doubles_positions ... ok
[INFO] [stdout] test tests::test_streamline_circular_field ... ok
[INFO] [stdout] test tests::test_sphere_mesh_scales_with_subdivisions ... ok
[INFO] [stdout] test tests::test_merge_lines_sums_counts ... ok
[INFO] [stdout] test tests::test_registry_remove ... ok
[INFO] [stdout] test tests::test_streamline_uniform_field ... ok
[INFO] [stdout] test tests::test_stress_principal_identity ... ok
[INFO] [stdout] test tests::test_streamline_uniform_field_straight ... ok
[INFO] [stdout] test tests::test_stress_color_compression ... ok
[INFO] [stdout] test tests::test_viz_config_debug_mode_has_overlay ... ok
[INFO] [stdout] test tests::test_viridis_colormap_endpoints ... ok
[INFO] [stdout] test tests::test_viz_config_default_colormap_viridis ... ok
[INFO] [stdout] test tests::test_viz_config_default_valid_depth_range ... ok
[INFO] [stdout] test tests::test_viz_config_invalid_depth_range ... ok
[INFO] [stdout] test tests::test_viz_context_begin_frame_increments_counter ... ok
[INFO] [stdout] test tests::test_translate_mesh_shifts_positions ... ok
[INFO] [stdout] test tests::test_viz_context_begin_frame_resets_stats ... ok
[INFO] [stdout] test tests::test_viz_context_map_scalar_returns_valid_color ... ok
[INFO] [stdout] test tests::test_viz_context_record_lines ... ok
[INFO] [stdout] test tests::test_viz_context_record_triangles ... ok
[INFO] [stdout] test tests::test_viz_stats_accumulate ... ok
[INFO] [stdout] test tests::test_viz_stats_default_zero ... ok
[INFO] [stdout] test tests::test_viz_stats_fps_infinite_when_zero_time ... ok
[INFO] [stdout] test tests::test_viz_stats_fps_nonzero ... ok
[INFO] [stdout] test tests::test_viz_stats_reset ... ok
[INFO] [stdout] test tests::test_von_mises_isotropic ... ok
[INFO] [stdout] test tests::test_wireframe_box_12_edges ... ok
[INFO] [stdout] test tests::test_von_mises_uniaxial ... ok
[INFO] [stdout] test tests::test_wireframe_box_has_12_lines ... ok
[INFO] [stdout] test tests::test_wireframe_aabb ... ok
[INFO] [stdout] test tests::test_wireframe_sphere_on_unit_sphere ... ok
[INFO] [stdout] test text_renderer::tests::test_bitmap_font_glyphs_count ... ok
[INFO] [stdout] test text_renderer::tests::test_bitmap_font_out_of_range_returns_block ... ok
[INFO] [stdout] test text_renderer::tests::test_bitmap_font_digits_non_zero ... ok
[INFO] [stdout] test text_renderer::tests::test_bitmap_font_printable_range ... ok
[INFO] [stdout] test text_renderer::tests::test_draw_axis_labels_offscreen_excluded ... ok
[INFO] [stdout] test text_renderer::tests::test_bitmap_font_space_glyph_is_empty ... ok
[INFO] [stdout] test text_renderer::tests::test_draw_axis_labels_text_format ... ok
[INFO] [stdout] test text_renderer::tests::test_draw_axis_labels_x_generates_labels ... ok
[INFO] [stdout] test text_renderer::tests::test_font_metrics_default_8x8 ... ok
[INFO] [stdout] test text_renderer::tests::test_label_3d_to_2d_positive_x_maps_right ... ok
[INFO] [stdout] test text_renderer::tests::test_font_metrics_monospace_constructor ... ok
[INFO] [stdout] test text_renderer::tests::test_label_3d_to_2d_identity_at_origin ... ok
[INFO] [stdout] test text_renderer::tests::test_number_format_fixed_two_decimal ... ok
[INFO] [stdout] test text_renderer::tests::test_label_3d_to_2d_behind_camera_returns_none ... ok
[INFO] [stdout] test text_renderer::tests::test_number_format_auto_small_uses_fixed ... ok
[INFO] [stdout] test tests::test_wireframe_sphere_line_count ... ok
[INFO] [stdout] test text_renderer::tests::test_number_format_auto_large_uses_scientific ... ok
[INFO] [stdout] test text_renderer::tests::test_number_format_fixed_zero_decimal ... ok
[INFO] [stdout] test text_renderer::tests::test_number_format_scientific ... ok
[INFO] [stdout] test text_renderer::tests::test_pixel_buffer_new_transparent ... ok
[INFO] [stdout] test text_renderer::tests::test_number_format_zero_auto ... ok
[INFO] [stdout] test text_renderer::tests::test_render_text_empty_string_no_pixels ... ok
[INFO] [stdout] test text_renderer::tests::test_render_text_marks_pixels ... ok
[INFO] [stdout] test text_renderer::tests::test_number_format_negative ... ok
[INFO] [stdout] test text_renderer::tests::test_pixel_buffer_out_of_bounds_write_ignored ... ok
[INFO] [stdout] test text_renderer::tests::test_text_height_empty_string ... ok
[INFO] [stdout] test text_renderer::tests::test_text_height_single_line ... ok
[INFO] [stdout] test text_renderer::tests::test_text_height_two_lines ... ok
[INFO] [stdout] test text_renderer::tests::test_text_width_empty_string ... ok
[INFO] [stdout] test text_renderer::tests::test_text_width_single_char ... ok
[INFO] [stdout] test text_renderer::tests::test_text_width_ten_chars ... ok
[INFO] [stdout] test text_renderer::tests::test_text_width_two_chars ... ok
[INFO] [stdout] test topology_viz::tests::test_barcode_caps_infinite_death ... ok
[INFO] [stdout] test text_renderer::tests::test_pixel_buffer_set_get ... ok
[INFO] [stdout] test topology_viz::tests::test_barcode_dimension_filter ... ok
[INFO] [stdout] test topology_viz::tests::test_contour_tree_height_function ... ok
[INFO] [stdout] test text_renderer::tests::test_render_text_clips_to_buffer ... ok
[INFO] [stdout] test topology_viz::tests::test_contour_tree_leaves ... ok
[INFO] [stdout] test topology_viz::tests::test_barcode_interval_count ... ok
[INFO] [stdout] test topology_viz::tests::test_barcode_sort_by_persistence ... ok
[INFO] [stdout] test topology_viz::tests::test_contour_tree_arc_persistences ... ok
[INFO] [stdout] test topology_viz::tests::test_contour_tree_simple_path ... ok
[INFO] [stdout] test topology_viz::tests::test_diagram_betti_numbers ... ok
[INFO] [stdout] test topology_viz::tests::test_diagram_bottleneck_shifted ... ok
[INFO] [stdout] test topology_viz::tests::test_diagram_from_tuples ... ok
[INFO] [stdout] test topology_viz::tests::test_diagram_max_persistence ... ok
[INFO] [stdout] test topology_viz::tests::test_diagram_wasserstein_zero_for_same ... ok
[INFO] [stdout] test topology_viz::tests::test_feature_essential ... ok
[INFO] [stdout] test topology_viz::tests::test_discrete_gradient ... ok
[INFO] [stdout] test topology_viz::tests::test_feature_persistence ... ok
[INFO] [stdout] test topology_viz::tests::test_diagram_significant_features ... ok
[INFO] [stdout] test topology_viz::tests::test_diagram_bottleneck_identical ... ok
[INFO] [stdout] test topology_viz::tests::test_feature_midlife ... ok
[INFO] [stdout] test topology_viz::tests::test_morse_smale_cancel_pairs ... ok
[INFO] [stdout] test topology_viz::tests::test_morse_smale_euler_characteristic ... ok
[INFO] [stdout] test topology_viz::tests::test_reeb_graph_betti_1_cycle ... ok
[INFO] [stdout] test topology_viz::tests::test_morse_smale_count_by_index ... ok
[INFO] [stdout] test topology_viz::tests::test_reeb_graph_connected_components ... ok
[INFO] [stdout] test topology_viz::tests::test_reeb_graph_torus ... ok
[INFO] [stdout] test topology_viz::tests::test_reeb_graph_from_mesh ... ok
[INFO] [stdout] test topology_viz::tests::test_reeb_graph_simplification ... ok
[INFO] [stdout] test topology_viz::tests::test_simplification_keeps_essential ... ok
[INFO] [stdout] test topology_viz::tests::test_reeb_graph_add_nodes_edges ... ok
[INFO] [stdout] test topology_viz::tests::test_simplification_reeb_graph ... ok
[INFO] [stdout] test topology_viz::tests::test_topo_color_lerp ... ok
[INFO] [stdout] test topology_viz::tests::test_viz_style_alpha_range ... ok
[INFO] [stdout] test topology_viz::tests::test_viz_style_color_by_dimension ... ok
[INFO] [stdout] test topology_viz::tests::test_viz_style_diagram_points ... ok
[INFO] [stdout] test topology_viz::tests::test_simplification_removes_low_persistence ... ok
[INFO] [stdout] test streamlines::functions_2::tests::test_jobard_lefer_circular_field_multiple_lines ... ok
[INFO] [stdout] test topology_viz::tests::test_viz_style_barcode_bars ... ok
[INFO] [stdout] test topology_viz::tests::test_viz_style_point_size_scales ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::barcode_bar_count ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::barcode_build_lines_has_correct_count ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::birth_death_pair_essential_infinity ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::birth_death_pair_diagram_point ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::birth_death_pair_persistence ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::build_birth_death_scatter_count ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::color4_lerp_midpoint ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::contour_tree_build_lines ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::contour_tree_leaf_count ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::critical_point_glyph_color_maximum_is_red ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::euler_characteristic_curve_lines_count ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::critical_point_glyph_label_is_value ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::gradient_field_linear_has_constant_gradient ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::gradient_max_magnitude_linear_field ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::fiber_surface_sample_finds_points ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::fiber_surface_sample_empty_when_no_match ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::line_segment_length_3d_diagonal ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::euler_characteristic_min_max ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::jacobi_set_from_identity_map_has_some_segments ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::line_segment_length_unit ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::gradient_field_from_constant_has_zero_magnitude ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::morse_complex_count_of_type ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::morse_complex_euler_characteristic_torus ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::morse_complex_all_arcs_count ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::jacobi_set_segment_to_line ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::morse_complex_euler_characteristic_sphere ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::noise_removal_update_threshold ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::morse_index_saddle1_is_1 ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::noise_removal_counts ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::persistence_color_max_is_red ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::persistence_color_zero_is_blue ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::noise_removal_build_glyphs ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::persistence_diagram_color_for_dim ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::persistence_diagram_bottleneck_zero_when_identical ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::reeb_graph_add_nodes_and_arcs ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::reeb_graph_build_lines_count ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::persistence_diagram_diagonal_present ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::persistence_diagram_build_glyphs_count ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::render_critical_points_count ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::persistence_diagram_no_diagonal_when_disabled ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::tracked_feature_mean_persistence ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::tracked_feature_trace_line_count ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::simplification_apply_threshold_cancels_pairs ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::reeb_graph_node_lookup ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::simplification_no_cancellation_below_threshold ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::tracker_register_and_record ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::unstable_manifold_build_lines ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::unstable_manifold_total_points ... ok
[INFO] [stdout] test topology_viz_ext::functions::tests::unstable_manifold_trace_arc_length ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_apply_transfer_function ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_classification_ct_tissues_air_transparent ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_classification_ct_tissues_bone_opaque ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_classification_empty_returns_transparent ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_classification_in_range ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_classification_out_of_range_transparent ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_classification_to_transfer_function ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_composite_front_to_back_accumulates_alpha ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_composite_front_to_back_early_termination ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_gradient_magnitude_1d_boundaries ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_gradient_magnitude_1d_flat ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_gradient_magnitude_1d_ramp ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_gradient_modulated_opacity_max_gradient ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_gradient_modulated_opacity_zero_gradient ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_histogram_auto_tf_has_entries ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_histogram_cdf_monotone ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_histogram_frequency_sums_to_one ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_histogram_from_data_basic ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_histogram_from_data_constant_returns_none ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_histogram_from_data_empty_returns_none ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_histogram_peak_bucket_in_range ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_histogram_percentile_monotone ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_material_class_contains ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_normalize_scalar_basic ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_normalize_scalar_constant_returns_half ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_normalize_slice_basic ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_normalize_slice_empty ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_raymarch_1d_empty_data ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_raymarch_1d_opaque_data_not_transparent ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_raymarch_1d_transparent_data_stays_transparent ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_render_quality_step_sizes ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_two_part_tf_build_lut_size ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_two_part_tf_fire_style_increases_brightness ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_two_part_tf_global_opacity_scale ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_two_part_tf_sample_combines_color_and_opacity ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_two_part_tf_to_transfer_function ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_two_part_tf_xray_style_non_trivial ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_volume_rendering_params_default ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_volume_rendering_params_quality_preview ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests::test_volume_rendering_params_with_lighting ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_2d_tf_bilinear_midpoint ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_2d_tf_dimension_clamping ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_2d_tf_flatten_to_1d_point_count ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_2d_tf_new_transparent ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_2d_tf_set_and_sample_corner ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_classification_table_classify ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_classification_table_ct_tissues ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_classification_table_gap_transparent ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_gradient_mag_opacity_clamped_output ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_classification_table_to_tf ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_gradient_mag_opacity_floor ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_gradient_mag_opacity_max_gradient ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_gradient_mag_opacity_zero_gradient ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_preintegration_diagonal_nonzero ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_pwl_opacity_build_lut ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_pwl_opacity_clamps_values ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_pwl_opacity_default_endpoints ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_preintegration_symmetry ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_pwl_opacity_midpoint_interpolation ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_pwl_opacity_single_knot_constant ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_pwl_opacity_add_knot ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_pwl_opacity_to_transfer_function ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_preintegration_sample_transparent_same ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_preintegration_table_build_no_panic ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_pwl_opacity_empty_returns_zero ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_two_part_tf_fire ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_two_part_tf_global_opacity ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_two_part_tf_to_transfer_function ... ok
[INFO] [stdout] test transfer_functions::functions::extended_tests_2::test_two_part_tf_xray ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_editor_sample_scalar ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_editor_add_at ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_editor_normalize ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_editor_select_nearest ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_gradient_default_endpoints ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_gradient_build_lut_count ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_gradient_inferno_brightness_increases ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_gradient_rainbow_monotone_hue_count ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_gradient_midpoint_interpolation ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_gradient_sample_with_opacity ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_opacity_constant ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_opacity_gaussian_peak ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_opacity_linear_ramp ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_opacity_scale_factor ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_opacity_step ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_opacity_tent ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_rgba_lerp_midpoint ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_rgba_premultiply ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_rgba_to_u8 ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_tf_build_lut_count ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_tf_pressure_symmetric_midpoint ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_tf_remove_near ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_tf_sample_clamped_above ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_tf_sample_empty_returns_transparent ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_tf_sample_linear_interpolation ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_tf_sample_single_point ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_tf_temperature_non_trivial ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_boxplot_empty_data ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_boxplot_five_number_summary ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_boxplot_from_data_five_numbers ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_boxplot_iqr_positive ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_boxplot_no_outliers_uniform ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_boxplot_notched ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_boxplot_outliers_detected ... ok
[INFO] [stdout] test transfer_functions::functions::tests::test_gradient_bwr_symmetric ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_calibration_error_empty ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_calibration_error_perfect ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_ci_bootstrap_empty_data ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_ci_contains ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_ci_normal_95_percent_width ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_ci_bootstrap_width_positive ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_ci_normal_contains_mean ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_ci_percentile_level ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_ci_percentile_bounds_in_data_range ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_ci_width_symmetric ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_confidence_ellipse_zero_points ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_confidence_ellipse_unit_circle ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_ensemble_labelled_member ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_ensemble_mean_single_member ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_ensemble_max_spread_positive ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_ensemble_mean_two_members ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_ensemble_n_members_and_n_times ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_ensemble_multi_envelope_levels ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_ensemble_percentile_envelope_ordering ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_ensemble_spread_empty ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_ensemble_spaghetti ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_ensemble_spread_identical ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_ensemble_spread_identical_members ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_ensemble_to_error_band ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_error_band_area_positive ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_error_band_empty ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_error_band_explicit ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_error_band_label ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_error_band_midline ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_error_band_symmetric ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_error_band_with_color ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_error_bar_symmetric ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_error_bars_conversion ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_fan_chart_basic ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_fan_chart_wider_at_higher_percentile ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_lcg_different_seeds ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_lcg_produces_different_values ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_probit_midpoint_zero ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_probit_monotone ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_probit_symmetry ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_reliability_diagram_empty ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_sensitivity_chart_add_factor ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_sensitivity_chart_clamp ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_sensitivity_chart_empty ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_sensitivity_chart_interaction_indices ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_sensitivity_chart_spider_vertices ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_sensitivity_chart_tornado_order ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_sensitivity_chart_total_s1 ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_sensitivity_plot_add_factor ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_sensitivity_plot_ranked_s1 ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_uncertainty_band_confidence_band_zero_sigma ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_uncertainty_band_len_and_is_empty ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_uncertainty_band_percentile_95 ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_violin_bandwidth_override ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_violin_iqr_positive ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_violin_kde_grid_length ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_violin_kde_positive_near_data ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_violin_kde_zero_bandwidth ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_violin_labelled ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_violin_median ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_violin_scott_bandwidth_positive ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_violin_shape_left_right ... ok
[INFO] [stdout] test uncertainty_viz::tests::test_violin_silverman_bandwidth_positive ... ok
[INFO] [stdout] test volume_renderer::tests::isosurface_empty_grid_no_vertices ... ok
[INFO] [stdout] test volume_renderer::tests::isosurface_produces_vertices_on_crossing ... ok
[INFO] [stdout] test volume_renderer::tests::isosurface_single_cell_grid_no_panic ... ok
[INFO] [stdout] test volume_renderer::tests::isosurface_uniform_above_isovalue_no_surface ... ok
[INFO] [stdout] test volume_renderer::tests::isosurface_vertices_lie_on_edges ... ok
[INFO] [stdout] test volume_renderer::tests::raycast_opaque_field_accumulates_alpha ... ok
[INFO] [stdout] test volume_renderer::tests::raycast_output_clamped_to_0_1 ... ok
[INFO] [stdout] test volume_renderer::tests::raycast_step_outside_grid_terminates ... ok
[INFO] [stdout] test volume_renderer::tests::raycast_zero_dir_returns_transparent ... ok
[INFO] [stdout] test volume_renderer::tests::raycast_zero_opacity_returns_transparent ... ok
[INFO] [stdout] test volume_renderer::tests::transfer_fn_above_range_clamps_to_last ... ok
[INFO] [stdout] test volume_renderer::tests::transfer_fn_below_range_clamps_to_first ... ok
[INFO] [stdout] test volume_renderer::tests::transfer_fn_empty_returns_zero ... ok
[INFO] [stdout] test volume_renderer::tests::transfer_fn_interpolates_color ... ok
[INFO] [stdout] test volume_renderer::tests::transfer_fn_interpolates_opacity ... ok
[INFO] [stdout] test volume_renderer::tests::transfer_fn_single_point ... ok
[INFO] [stdout] test volume_renderer::tests::transfer_fn_sorted_after_insertion ... ok
[INFO] [stdout] test volume_renderer::tests::volume_stats_bins_at_least_one ... ok
[INFO] [stdout] test volume_renderer::tests::volume_stats_constant_grid ... ok
[INFO] [stdout] test volume_renderer::tests::volume_stats_empty_grid ... ok
[INFO] [stdout] test volume_renderer::tests::volume_stats_histogram_total_count ... ok
[INFO] [stdout] test volume_renderer::tests::volume_stats_num_bins_respected ... ok
[INFO] [stdout] test volume_renderer::tests::volume_stats_range ... ok
[INFO] [stdout] test volume_renderer::tests::voxel_grid_extent ... ok
[INFO] [stdout] test volume_renderer::tests::voxel_grid_get_out_of_bounds_returns_zero ... ok
[INFO] [stdout] test volume_renderer::tests::voxel_grid_new_is_zero ... ok
[INFO] [stdout] test volume_renderer::tests::voxel_grid_sample_at_corner ... ok
[INFO] [stdout] test volume_renderer::tests::voxel_grid_sample_outside_returns_zero ... ok
[INFO] [stdout] test volume_renderer::tests::voxel_grid_trilinear_midpoint_gradient ... ok
[INFO] [stdout] test volume_renderer::tests::voxel_grid_from_data_panics_on_mismatch ... ok
[INFO] [stdout] test volume_renderer::tests::voxel_grid_trilinear_midpoint_uniform ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_adaptive_marcher_empty_volume ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_adaptive_marcher_miss ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_brick_volume_fill ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_adaptive_marcher_valid_alpha_range ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_brick_volume_set_get ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_brick_volume_to_volume_roundtrip ... ok
[INFO] [stdout] test volume_renderer::tests::voxel_grid_set_and_get ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_brick_volume_total_bricks ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_dvr_accumulator_opaque_reduces_transmittance ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_dvr_accumulator_result_valid_range ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_dvr_accumulator_starts_clear ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_dvr_accumulator_termination ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_dvr_accumulator_transparent_step_no_change ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_emission_absorption_adds_color ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_early_termination_marcher_empty ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_emission_absorption_fresh ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_early_termination_step_count_nonzero_for_non_empty ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_emission_absorption_result_alpha ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_empty_space_skipping_miss ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_emission_absorption_transmittance_decreases ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_mip_ray_dense_volume_nonzero ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_occupancy_grid_brick_count ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_mip_ray_empty_volume ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_mip_renderer_pixel_count ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_empty_space_skipping_empty_volume ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_phong_shading_frontal_light ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_occupancy_grid_empty_volume ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_occupancy_grid_full_volume ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_phong_shading_result_clamped ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_occupancy_grid_outside_returns_false ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_volume_clamp_values ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_phong_shading_back_light ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_mip_miss_returns_zero ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_volume_gradient_flat_is_zero ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_volume_histogram_bins ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_volume_histogram_empty_single_bin ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_volume_histogram_sum ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_volume_gradient_magnitude_positive ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_volume_normal_at_unit_length ... ok
[INFO] [stdout] test volume_rendering::functions::extended_volume_tests::test_volume_normalize ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_aabb_intersect_hit ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_aabb_intersect_miss ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_brick_count ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_brick_volume_fill_and_minmax ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_brick_volume_creation ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_brick_volume_set_get ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_camera_center_ray_toward_target ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_composite_back_to_front ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_composite_front_to_back_transparent ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_composite_front_to_back_opaque ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_compute_opacity_beer_lambert_formula ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_compute_opacity_beer_lambert_high_absorption ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_compute_opacity_beer_lambert_zero_absorption ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_early_termination_marcher_misses ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_early_termination_marcher_opaque_volume ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_emission_absorption_fully_absorbed ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_emission_absorption_model_accumulate ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_extract_slice_x ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_extract_slice_z ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_extract_slice_y ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_gaussian_blob_peak ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_gradient_at_sphere_center_is_near_zero ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_gradient_constant_field_is_zero ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_gradient_magnitude_constant_zero ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_gradient_magnitude_positive_for_varying_field ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_gradient_non_zero ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_iso_surface_normal_unit_length ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_isosurface_empty_volume ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_isosurface_full_volume ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_isosurface_sphere_produces_triangles ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_ray_march_empty_volume_zero_alpha ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_plasma_tf_endpoint ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_ray_march_returns_valid_alpha ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_sample_trilinear_constant ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_smoke_tf_zero_transparent ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_transfer_function_at_control_point ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_ray_marcher_empty_volume ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_transfer_function_f64_clamps_below ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_transfer_function_f64_interpolation ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_transfer_function_interpolation ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_volume_add_sphere ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_volume_average_density ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_volume_cell_size ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_volume_fill ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_volume_from_scalar_field_constant ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_volume_grid_outside_returns_zero ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_volume_grid_sample_at_corner ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_volume_min_max ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_volume_renderer_no_panic ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_accumulate_rgba_alpha_max_one ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_volume_voxel_count ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_accumulate_rgba_empty ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_accumulate_rgba_single_sample ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_gradient_magnitude_same_dimensions ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_gradient_magnitude_uniform_is_zero ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_gradient_magnitude_non_negative ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_iso_surface_all_above_iso ... ok
[INFO] [stdout] test volume_rendering::functions::tests::test_volume_normal_unit_length ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_iso_surface_all_below_iso ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_gradient_magnitude_linear_x ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_iso_surface_crossing_produces_vertices ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_iso_surface_small_volume ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_ray_march_density_uniform ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_ray_march_empty_dir ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_ray_march_exits_volume ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_ray_march_through_volume ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_sample_trilinear_interpolation ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_sample_trilinear_out_of_range_clamps ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_transfer_function_clamp_above_one ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_sample_trilinear_uniform ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_transfer_function_empty_colormap ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_transfer_function_clamp_below_zero ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_transfer_function_two_entry_midpoint ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_transfer_function_single_entry ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_volume_data_empty ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_volume_data_extent ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_volume_data_index_in_bounds ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_volume_data_index_out_of_bounds ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_volume_histogram_empty ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_volume_data_new ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_volume_histogram_n_bins ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_sample_trilinear_corner ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_volume_histogram_total_count ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_volume_data_get_clamp ... ok
[INFO] [stdout] test vr_visualization::tests::test_audio_add_source_returns_index ... ok
[INFO] [stdout] test volumetric_rendering::tests::test_volume_histogram_uniform ... ok
[INFO] [stdout] test vr_visualization::tests::test_audio_attenuation_at_one_metre ... ok
[INFO] [stdout] test vr_visualization::tests::test_audio_doppler_stationary ... ok
[INFO] [stdout] test vr_visualization::tests::test_audio_perceived_out_of_range ... ok
[INFO] [stdout] test vr_visualization::tests::test_camera_projection_aspect_effect ... ok
[INFO] [stdout] test vr_visualization::tests::test_audio_attenuation_decreases_with_distance ... ok
[INFO] [stdout] test vr_visualization::tests::test_audio_doppler_source_approaching ... ok
[INFO] [stdout] test vr_visualization::tests::test_camera_projection_fov_effect ... ok
[INFO] [stdout] test vr_visualization::tests::test_camera_projection_matrix_shape ... ok
[INFO] [stdout] test vr_visualization::tests::test_camera_view_matrix_is_4x4 ... ok
[INFO] [stdout] test vr_visualization::tests::test_haptic_encode_force_max ... ok
[INFO] [stdout] test vr_visualization::tests::test_haptic_encode_force_mid ... ok
[INFO] [stdout] test vr_visualization::tests::test_haptic_encode_force_zero ... ok
[INFO] [stdout] test vr_visualization::tests::test_object_world_aabb_translated ... ok
[INFO] [stdout] test vr_visualization::tests::test_overlay_force_arrow_scaled ... ok
[INFO] [stdout] test vr_visualization::tests::test_haptic_vibration_pattern_increasing_intensity ... ok
[INFO] [stdout] test vr_visualization::tests::test_overlay_force_arrow_tip_position ... ok
[INFO] [stdout] test vr_visualization::tests::test_camera_view_matrix_identity_orientation ... ok
[INFO] [stdout] test vr_visualization::tests::test_scene_add_object_count ... ok
[INFO] [stdout] test vr_visualization::tests::test_scene_frustum_cull_empty_scene ... ok
[INFO] [stdout] test vr_visualization::tests::test_scene_new_ipd ... ok
[INFO] [stdout] test vr_visualization::tests::test_scene_ray_cast_hits_object ... ok
[INFO] [stdout] test vr_visualization::tests::test_scene_ray_cast_misses_object ... ok
[INFO] [stdout] test vr_visualization::tests::test_scene_ray_cast_no_objects ... ok
[INFO] [stdout] test vr_visualization::tests::test_overlay_new_all_enabled ... ok
[INFO] [stdout] test vr_visualization::tests::test_scene_stereo_view_matrices_differ ... ok
[INFO] [stdout] test vr_visualization::tests::test_scene_frustum_cull_object_behind_near ... ok
[INFO] [stdout] test vr_visualization::tests::test_scene_update_no_panic ... ok
[INFO] [stdout] test wasm_canvas::tests::blend_pixel_transparent_overlay ... ok
[INFO] [stdout] test vr_visualization::tests::test_overlay_velocity_trail_passthrough ... ok
[INFO] [stdout] test wasm_canvas::tests::canvas_buffer_correct_size ... ok
[INFO] [stdout] test wasm_canvas::tests::clear_fills_all_pixels ... ok
[INFO] [stdout] test wasm_canvas::tests::draw_filled_rect_pixels_correct ... ok
[INFO] [stdout] test vr_visualization::tests::test_haptic_vibration_pattern_length ... ok
[INFO] [stdout] test wasm_canvas::tests::draw_line_bresenham ... ok
[INFO] [stdout] test wasm_canvas::tests::draw_text_abc_produces_pixels ... ok
[INFO] [stdout] test wasm_canvas::tests::set_and_get_pixel ... ok
[INFO] [stdout] test vr_visualization::tests::test_object_world_aabb_identity_transform ... ok
[INFO] [stdout] test wgpu_renderer::tests::test_mat4_mul_identity ... ok
[INFO] [stdout] test wasm_canvas::tests::draw_text_three_distinct_regions ... ok
[INFO] [stdout] test wgpu_renderer::tests::test_render_cpu_produces_pixels ... ok
[INFO] [stdout] test wgpu_renderer::tests::test_to_hdr_framebuffer ... ok
[INFO] [stdout] test wgpu_renderer::tests::test_to_ldr_bytes ... ok
[INFO] [stdout] test wgpu_renderer::tests::test_upload_mesh_cpu_variant_stored ... ok
[INFO] [stdout] test wgpu_renderer::tests::test_vertex_normals_triangle ... ok
[INFO] [stdout] test wgpu_renderer::tests::test_renderer_construction ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_aa_params_alpha_smoothstep_mid_falloff ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_aa_params_alpha_beyond_falloff_zero ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_build_aa_feature_edge_batch_count ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_aa_params_feature_edge_color_yellowish ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_color_map_add_stop_sorted ... ok
[INFO] [stdout] test wgpu_renderer::tests::test_look_at_sets_view ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_aa_params_silhouette_on_top ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_aabb_wireframe_rich_correct_corner_count ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_color_map_single_stop_always_that_color ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_contact_normal_lines_empty ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_cull_batch_partial_visibility ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_debug_draw_arrow_zero_dir_no_lines ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_aabb_wireframe_rich_nonsymmetric_box ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_color_map_heat_midpoint_is_green ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_debug_draw_circle_line_count_matches_segments ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_debug_draw_circle_normal_x_axis ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_contact_normal_lines_count ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_debug_draw_circle_zero_normal_skipped ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_debug_draw_multiple_operations_accumulate ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_depth_fade_at_near_plane_is_one ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_depth_fade_clamped_below_zero ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_detect_feature_edges_high_threshold_includes_fewer ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_frustum_wireframe_from_fov_wider_fov_larger_far_plane ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_frustum_wireframe_edge_count_is_12 ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_renderer_byte_size_after_multiple_pushes ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_renderer_draw_grid_large ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_renderer_flush_produces_correct_label ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_renderer_draw_frustum_near_corners_closer_than_far ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_renderer_push_segment_explicit_color ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_renderer_push_uses_default_color ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_segment_aabb_both_inside ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_rich_wireframe_mesh_empty_counts ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_segment_aabb_parallel_along_y_inside_slab ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_wire_segment_gpu_midpoint ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_wire_segment_gpu_zero_length ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_wireframe_batch_add_increments_len ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_wireframe_batch_new_empty_label ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_segment_aabb_touches_corner ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_wireframe_builder_colored_edge_stored ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_wire_segment_gpu_color_stored ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_wire_segment_gpu_half_width ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_wireframe_builder_empty_build ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_wireframe_batch_byte_size_proportional ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_wireframe_batch_is_empty_after_no_adds ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_wireframe_edge_canonical_key_both_orderings ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_wireframe_edge_new_stores_fields ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_wireframe_mesh_from_aabb_vertex_positions ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_wireframe_mesh_from_capsule_line_bounds ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_wireframe_mesh_from_grid_vertex_count ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_wireframe_mesh_from_sphere_line_bounds ... ok
[INFO] [stdout] test wireframe::extras::extra_wire_tests::test_wireframe_mesh_merge_vertex_indices_valid ... ok
[INFO] [stdout] test wireframe::extras::tests::test_debug_draw_arrow ... ok
[INFO] [stdout] test wireframe::extras::tests::test_debug_draw_circle ... ok
[INFO] [stdout] test wireframe::extras::tests::test_debug_draw_clear ... ok
[INFO] [stdout] test wireframe::extras::tests::test_debug_draw_cross ... ok
[INFO] [stdout] test wireframe::extras::tests::test_debug_draw_line ... ok
[INFO] [stdout] test wireframe::extras::tests::test_wireframe_mesh_from_aabb_12_edges ... ok
[INFO] [stdout] test wireframe::extras::tests::test_wireframe_mesh_from_capsule ... ok
[INFO] [stdout] test wireframe::extras::tests::test_wireframe_mesh_from_grid ... ok
[INFO] [stdout] test wireframe::extras::tests::test_wireframe_mesh_from_sphere ... ok
[INFO] [stdout] test wireframe::extras::tests::test_wireframe_mesh_merge ... ok
[INFO] [stdout] test wireframe::extras::tests_wireframe_ext::axis_arrows_labels_xyz ... ok
[INFO] [stdout] test wireframe::extras::tests_wireframe_ext::axis_arrows_lengths_equal_size ... ok
[INFO] [stdout] test wireframe::extras::tests_wireframe_ext::capsule_outline_has_vertical_lines ... ok
[INFO] [stdout] test wireframe::extras::tests_wireframe_ext::capsule_outline_non_empty ... ok
[INFO] [stdout] test wireframe::extras::tests_wireframe_ext::circle_wireframe_radius_respected ... ok
[INFO] [stdout] test wireframe::extras::tests_wireframe_ext::circle_wireframe_segment_count ... ok
[INFO] [stdout] test wireframe::extras::tests_wireframe_ext::circle_wireframe_segments_close_loop ... ok
[INFO] [stdout] test wireframe::extras::tests_wireframe_ext::depth_buffer_clear ... ok
[INFO] [stdout] test wireframe::extras::tests_wireframe_ext::depth_buffer_insert_and_count ... ok
[INFO] [stdout] test wireframe::extras::tests_wireframe_ext::depth_buffer_sort_back_to_front_order ... ok
[INFO] [stdout] test wireframe::extras::tests_wireframe_ext::depth_buffer_sort_front_to_back_order ... ok
[INFO] [stdout] test wireframe::extras::tests_wireframe_ext::floor_grid_n_cells_stored ... ok
[INFO] [stdout] test wireframe::extras::tests_wireframe_ext::floor_grid_segment_count_2x2 ... ok
[INFO] [stdout] test wireframe::extras::tests_wireframe_ext::floor_grid_total_length_positive ... ok
[INFO] [stdout] test wireframe::extras::tests_wireframe_ext::segment_length_diagonal ... ok
[INFO] [stdout] test wireframe::extras::tests_wireframe_ext::segment_length_unit ... ok
[INFO] [stdout] test wireframe::extras::tests_wireframe_ext::segment_midpoint_correct ... ok
[INFO] [stdout] test wireframe::extras::tests_wireframe_ext::segment_unit_direction_x ... ok
[INFO] [stdout] test wireframe::extras::tests_wireframe_ext::segment_unit_direction_zero_len ... ok
[INFO] [stdout] test wireframe::extras::tests_wireframe_ext::segment_with_label_stored ... ok
[INFO] [stdout] test wireframe::mesh_ops::expanded_wire_tests::test_build_aa_wireframe_batch ... ok
[INFO] [stdout] test wireframe::extras::tests_wireframe_ext::segment_with_thickness_stored ... ok
[INFO] [stdout] test wireframe::mesh_ops::expanded_wire_tests::test_depth_fade_near_to_far ... ok
[INFO] [stdout] test wireframe::extras::tests_wireframe_ext::segment_z_slab_intersect_false ... ok
[INFO] [stdout] test wireframe::extras::tests_wireframe_ext::segment_z_slab_intersect_true ... ok
[INFO] [stdout] test wireframe::mesh_ops::expanded_wire_tests::test_apply_depth_fade_to_batch ... ok
[INFO] [stdout] test wireframe::mesh_ops::expanded_wire_tests::test_detect_feature_edges_cube_all_at_90deg ... ok
[INFO] [stdout] test wireframe::mesh_ops::expanded_wire_tests::test_aa_params_alpha_at_distance ... ok
[INFO] [stdout] test wireframe::mesh_ops::expanded_wire_tests::test_detect_feature_edges_flat_none ... ok
[INFO] [stdout] test wireframe::mesh_ops::expanded_wire_tests::test_detect_silhouette_edges_single_triangle_boundary ... ok
[INFO] [stdout] test wireframe::mesh_ops::expanded_wire_tests::test_edges_to_wireframe ... ok
[INFO] [stdout] test wireframe::mesh_ops::expanded_wire_tests::test_extract_mesh_edges_cube_unique ... ok
[INFO] [stdout] test wireframe::mesh_ops::expanded_wire_tests::test_dihedral_angle_deg_coplanar ... ok
[INFO] [stdout] test wireframe::mesh_ops::expanded_wire_tests::test_extract_mesh_edges_triangle ... ok
[INFO] [stdout] test wireframe::mesh_ops::expanded_wire_tests::test_generate_wireframe_overlay ... ok
[INFO] [stdout] test wireframe::mesh_ops::expanded_wire_tests::test_triangle_normal_degenerate ... ok
[INFO] [stdout] test wireframe::mesh_ops::expanded_wire_tests::test_triangle_normal_z_up ... ok
[INFO] [stdout] test wireframe::mesh_ops::expanded_wire_tests::test_wire_segment_gpu_length ... ok
[INFO] [stdout] test wireframe::mesh_ops::expanded_wire_tests::test_wireframe_batch_from_mesh ... ok
[INFO] [stdout] test wireframe::mesh_ops::expanded_wire_tests::test_wireframe_batch_merge ... ok
[INFO] [stdout] test wireframe::mesh_ops::expanded_wire_tests::test_mesh_edge_canonical ... ok
[INFO] [stdout] test wireframe::primitives::tests::test_contact_normal_lines_count ... ok
[INFO] [stdout] test wireframe::primitives::tests::test_contact_normal_lines_empty ... ok
[INFO] [stdout] test wireframe::primitives::tests::test_debug_draw_arrow ... ok
[INFO] [stdout] test wireframe::primitives::tests::test_debug_draw_arrow_zero_dir ... ok
[INFO] [stdout] test wireframe::primitives::tests::test_debug_draw_circle ... ok
[INFO] [stdout] test wireframe::primitives::tests::test_debug_draw_cross ... ok
[INFO] [stdout] test wireframe::primitives::tests::test_wireframe_aabb ... ok
[INFO] [stdout] test wireframe::primitives::tests::test_debug_draw_clear ... ok
[INFO] [stdout] test wireframe::primitives::tests::test_debug_draw_line ... ok
[INFO] [stdout] test wireframe::primitives::tests::test_wireframe_box_has_12_lines ... ok
[INFO] [stdout] test wireframe::primitives::tests::test_wireframe_mesh_from_sphere ... ok
[INFO] [stdout] test wireframe::primitives::tests::test_wireframe_mesh_from_aabb_12_edges ... ok
[INFO] [stdout] test wireframe::primitives::tests::test_wireframe_mesh_from_capsule ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_color_map_empty_returns_black ... ok
[INFO] [stdout] test wireframe::primitives::tests::test_wireframe_mesh_merge ... ok
[INFO] [stdout] test wireframe::primitives::tests::test_wireframe_sphere_line_count ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_color_map_heat_endpoints ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_color_map_add_stop_interpolates ... ok
[INFO] [stdout] test wireframe::primitives::tests::test_wireframe_mesh_from_grid ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_line_style_dashdot_pattern ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_cull_batch_all_culled ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_cull_batch_all_visible ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_line_style_dashed_has_dash ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_color_map_clamped_beyond_range ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_color_map_grayscale_midpoint ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_line_style_dotted_has_pattern ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_line_style_solid_no_dash ... ok
[INFO] [stdout] test wgpu_renderer::tests::test_upload_mesh_and_frame ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_render_bvh_tree_depth_limit ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_render_bvh_tree_three_nodes ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_renderer_byte_size ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_render_bvh_tree_single_node ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_renderer_bvh_node_depth_color ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_renderer_clear ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_renderer_draw_axes_segment_count ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_renderer_draw_box_produces_12_segments ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_renderer_draw_axes_colors ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_renderer_draw_bvh_node_segment_count ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_renderer_draw_capsule_segment_count ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_renderer_draw_cylinder_segment_count ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_renderer_draw_grid_segment_count ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_renderer_draw_frustum_segment_count ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_renderer_draw_sphere_latlon_segment_count ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_renderer_flush_to_batch ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_renderer_draw_sphere_3_great_circles ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_renderer_new_empty ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_segment_aabb_no_intersect ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_renderer_push_and_count ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_segment_aabb_parallel_outside_slab ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_segment_aabb_endpoint_inside ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_vertex_buffer_data_byte_size ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_segment_aabb_intersects_through_center ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_vertex_buffer_data_offsets ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_vertex_buffer_data_stride ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_wireframe_overlay_config_defaults ... ok
[INFO] [stdout] test wireframe::renderer::rich_wireframe_tests::test_aabb_wireframe_normals_nonzero ... ok
[INFO] [stdout] test wireframe::renderer::rich_wireframe_tests::test_aabb_wireframe_rich_edge_bounds ... ok
[INFO] [stdout] test wireframe::renderer::rich_wireframe_tests::test_aabb_wireframe_rich_12_edges ... ok
[INFO] [stdout] test wireframe::renderer::rich_wireframe_tests::test_builder_add_triangle_mesh_dedup ... ok
[INFO] [stdout] test wireframe::renderer::rich_wireframe_tests::test_frustum_wireframe_12_edges ... ok
[INFO] [stdout] test wireframe::renderer::rich_wireframe_tests::test_builder_deduplicates_edges ... ok
[INFO] [stdout] test wireframe::renderer::rich_wireframe_tests::test_hidden_line_backface_triangle_hides_edge ... ok
[INFO] [stdout] test wireframe::renderer::rich_wireframe_tests::test_frustum_normals_inward ... ok
[INFO] [stdout] test wireframe::renderer::rich_wireframe_tests::test_hidden_line_single_triangle_no_occlusion ... ok
[INFO] [stdout] test wireframe::renderer::rich_wireframe_tests::test_rich_wireframe_mesh_merge ... ok
[INFO] [stdout] test wireframe::renderer::rich_wireframe_tests::test_wireframe_edge_canonical_key_sorted ... ok
[INFO] [stdout] test wireframe::renderer::renderer_tests::test_vertex_buffer_data_from_batch ... ok
[INFO] [stdout] test wireframe::renderer::rich_wireframe_tests::test_wireframe_edge_default_white ... ok
[INFO] [stdout] test wireframe::renderer::rich_wireframe_tests::test_frustum_wireframe_from_fov ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 4114 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.35s
[INFO] [stderr]    Doc-tests oxiphysics_viz
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] running 8 tests
[INFO] [stdout] test src/gizmos.rs - gizmos::GizmoBuilder (line 669) ... ignored
[INFO] [stdout] test src/transfer_functions/types.rs - transfer_functions::types::TransferFunction (line 39) - compile ... ok
[INFO] [stdout] test src/gizmos.rs - gizmos (line 19) - compile ... ok
[INFO] [stdout] test src/text_renderer.rs - text_renderer::number_format (line 399) - compile ... ok
[INFO] [stdout] test src/hdr_framebuffer.rs - hdr_framebuffer (line 24) ... ok
[INFO] [stdout] test src/picking.rs - picking (line 12) ... ok
[INFO] [stdout] test src/wasm_canvas.rs - wasm_canvas (line 16) ... ok
[INFO] [stdout] test src/wgpu_renderer.rs - wgpu_renderer (line 52) ... ok
[INFO] [stdout] 
[INFO] [stdout] test result: ok. 7 passed; 0 failed; 1 ignored; 0 measured; 0 filtered out; finished in 0.05s
[INFO] [stdout] 
[INFO] [stdout] all doctests ran in 0.82s; merged doctests compilation took 0.75s
[INFO] running `Command { std: "docker" "inspect" "1e3fe8a0b78ee461b3ac964d2b76f17f959ec5f3b0a79ee152ee71de5aaaefa2", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "1e3fe8a0b78ee461b3ac964d2b76f17f959ec5f3b0a79ee152ee71de5aaaefa2", kill_on_drop: false }`
[INFO] [stdout] 1e3fe8a0b78ee461b3ac964d2b76f17f959ec5f3b0a79ee152ee71de5aaaefa2
