From 5ea43e852082db911bf8b56a2416b9e23cf8c3bd Mon Sep 17 00:00:00 2001 From: Eval Exec Date: Thu, 8 Oct 2026 01:16:46 +0800 Subject: [PATCH] refactor: colocate production unit tests with strict test suffix --- crates/neomacs-diagnostics/src/flamegraph.rs | 1 + .../tests/{mod.rs => flamegraph_test.rs} | 0 crates/neomacs-diagnostics/src/metrics.rs | 1 + .../metrics/tests/{mod.rs => metrics_test.rs} | 0 crates/neomacs-diagnostics/src/pprof.rs | 1 + .../src/pprof/tests/{mod.rs => pprof_test.rs} | 0 crates/neomacs-diagnostics/src/report.rs | 1 + .../report/tests/{mod.rs => report_test.rs} | 0 crates/neomacs-diagnostics/src/server.rs | 1 + .../server/tests/{mod.rs => server_test.rs} | 0 .../src/child_frame_animation.rs | 1 + .../{mod.rs => child_frame_animation_test.rs} | 0 .../src/display_identity.rs | 1 + .../{mod.rs => display_identity_test.rs} | 0 .../src/effect_config.rs | 1 + .../tests/{mod.rs => effect_config_test.rs} | 0 crates/neomacs-display-protocol/src/face.rs | 1 + .../src/face/tests/{mod.rs => face_test.rs} | 0 crates/neomacs-display-protocol/src/font.rs | 1 + .../src/font/tests/{mod.rs => font_test.rs} | 0 .../src/frame_chrome.rs | 1 + .../tests/{mod.rs => frame_chrome_test.rs} | 0 .../src/frame_glyphs.rs | 1 + .../tests/{mod.rs => frame_glyphs_test.rs} | 0 .../src/frame_time.rs | 1 + .../tests/{mod.rs => frame_time_test.rs} | 0 .../neomacs-display-protocol/src/geometry.rs | 1 + .../tests/{mod.rs => geometry_test.rs} | 0 .../src/glyph_matrix.rs | 1 + .../tests/{mod.rs => glyph_matrix_test.rs} | 1 + .../src/glyph_matrix/text_geometry.rs | 1 + .../tests/{mod.rs => text_geometry_test.rs} | 0 .../src/input_latency.rs | 198 +------- .../src/input_progress.rs | 107 +---- .../src/interaction_projection.rs | 1 + ...{mod.rs => interaction_projection_test.rs} | 0 .../src/motion_spec.rs | 1 + .../tests/{mod.rs => motion_spec_test.rs} | 0 .../src/popup_placement.rs | 1 + .../tests/{mod.rs => popup_placement_test.rs} | 0 .../src/present_mapping.rs | 1 + .../tests/{mod.rs => present_mapping_test.rs} | 0 .../src/presentation_origin.rs | 1 + .../{mod.rs => presentation_origin_test.rs} | 0 .../src/presented_frame.rs | 1 + .../tests/{mod.rs => presented_frame_test.rs} | 0 .../src/presented_pointer.rs | 1 + .../src/presented_pointer/scroll.rs | 77 +--- .../{mod.rs => presented_pointer_test.rs} | 0 .../presented_pointer/tests/scroll_test.rs | 73 +++ crates/neomacs-display-protocol/src/scene.rs | 1 + .../src/scene/tests/{mod.rs => scene_test.rs} | 0 .../src/scroll_animation.rs | 1 + .../{mod.rs => scroll_animation_test.rs} | 0 .../src/sealed_frame_presentation.rs | 1 + ...d.rs => sealed_frame_presentation_test.rs} | 0 .../src/snapshot_text.rs | 1 + .../tests/{mod.rs => snapshot_text_test.rs} | 0 .../src/terminal_color.rs | 1 + .../tests/{mod.rs => terminal_color_test.rs} | 0 .../src/tests/input_latency_test.rs | 194 ++++++++ .../src/tests/input_progress_test.rs | 103 +++++ .../src/toolbar_icon.rs | 1 + .../tests/{mod.rs => toolbar_icon_test.rs} | 0 .../src/tooltip/lifetime.rs | 1 + .../tests/{mod.rs => lifetime_test.rs} | 0 .../src/transition_policy.rs | 1 + .../{mod.rs => transition_policy_test.rs} | 0 .../src/tty_palette.rs | 1 + .../tests/{mod.rs => tty_palette_test.rs} | 0 crates/neomacs-display-protocol/src/types.rs | 1 + .../src/types/tests/{mod.rs => types_test.rs} | 0 .../src/window_animation.rs | 1 + .../{mod.rs => window_animation_test.rs} | 0 .../src/window_chrome.rs | 1 + .../tests/{mod.rs => window_chrome_test.rs} | 0 .../src/xterm_palette.rs | 1 + .../tests/{mod.rs => xterm_palette_test.rs} | 0 .../src/xwidget_extent.rs | 1 + .../tests/{mod.rs => xwidget_extent_test.rs} | 0 .../src/backend/tty/rif.rs | 1 + .../tty/rif/tests/{mod.rs => rif_test.rs} | 0 .../src/backend/wgpu/animation.rs | 1 + .../tests/{mod.rs => animation_test.rs} | 0 .../src/backend/wgpu/drm_device.rs | 1 + .../tests/{mod.rs => drm_device_test.rs} | 0 .../src/backend/wgpu/events.rs | 1 + .../events/tests/{mod.rs => events_test.rs} | 0 .../src/display_scale.rs | 1 + .../tests/{mod.rs => display_scale_test.rs} | 0 .../src/macos_bundle_runtime.rs | 1 + .../{mod.rs => macos_bundle_runtime_test.rs} | 0 .../src/menus/controller.rs | 1 + .../tests/{mod.rs => controller_test.rs} | 0 .../neomacs-display-runtime/src/menus/help.rs | 1 + .../menus/help/tests/{mod.rs => help_test.rs} | 0 .../src/menus/session.rs | 1 + .../session/tests/{mod.rs => session_test.rs} | 0 .../src/presentation/pacing.rs | 12 +- .../src/presentation/retirement.rs | 1 + .../tests/{mod.rs => retirement_test.rs} | 0 .../src/presentation/tests/pacing_test.rs | 8 + .../tests/wayland_test.rs | 65 +++ .../src/presentation_feedback/wayland.rs | 69 +-- .../src/redisplay/maintenance.rs | 57 +-- .../src/redisplay/tests/maintenance_test.rs | 53 +++ .../src/render_thread/child_frames.rs | 1 + .../tests/{mod.rs => child_frames_test.rs} | 0 .../src/render_thread/cursor.rs | 1 + .../cursor/tests/{mod.rs => cursor_test.rs} | 0 .../src/render_thread/device_loss.rs | 1 + .../tests/{mod.rs => device_loss_test.rs} | 0 .../continuity/pane_layout.rs | 1 + .../tests/{mod.rs => pane_layout_test.rs} | 0 .../frame_compositor/continuity/reflow.rs | 1 + .../reflow/tests/{mod.rs => reflow_test.rs} | 0 .../frame_compositor/continuity/scroll.rs | 1 + .../scroll/tests/{mod.rs => scroll_test.rs} | 0 .../frame_compositor/continuity/selection.rs | 1 + .../tests/{mod.rs => selection_test.rs} | 0 .../frame_compositor/continuity/theme.rs | 1 + .../theme/tests/{mod.rs => theme_test.rs} | 0 .../frame_compositor/input_scroll.rs | 1 + .../{tests.rs => tests/input_scroll_test.rs} | 0 .../frame_compositor/layout_continuity.rs | 1 + .../{mod.rs => layout_continuity_test.rs} | 0 .../frame_compositor/layout_driver.rs | 1 + .../tests/{mod.rs => layout_driver_test.rs} | 0 .../render_thread/frame_compositor/motion.rs | 1 + .../motion/tests/{mod.rs => motion_test.rs} | 0 .../src/render_thread/frame_ingest.rs | 1 + .../tests/{mod.rs => frame_ingest_test.rs} | 0 .../src/render_thread/frame_state.rs | 1 + .../tests/{mod.rs => frame_state_test.rs} | 0 .../src/render_thread/frame_windows.rs | 1 + .../tests/{mod.rs => frame_windows_test.rs} | 0 .../src/render_thread/input.rs | 1 + .../input/tests/{mod.rs => input_test.rs} | 0 .../src/render_thread/mod.rs | 1 + .../src/render_thread/modifier_sides.rs | 1 + .../modifier_sides_test.rs} | 0 .../src/render_thread/pointer_events.rs | 122 +---- .../render_pass/composition_targets.rs | 2 +- .../{mod.rs => composition_targets_test.rs} | 0 .../src/render_thread/render_pass/mod.rs | 2 +- .../render_pass/retained_scroll.rs | 15 +- .../retained_scroll_test.rs} | 0 .../render_pass/retained_static.rs | 1 + .../tests/{mod.rs => retained_static_test.rs} | 0 .../src/render_thread/render_pass/scene.rs | 2 +- .../native_boundary_test.rs} | 0 .../pane_size_boundary_test.rs} | 0 .../pinned_lifecycle_test.rs} | 0 .../retained_owner_test.rs} | 0 .../scene/{tests.rs => tests/scene_test.rs} | 8 +- .../tests/{mod.rs => render_pass_test.rs} | 0 .../tests/retained_scroll_geometry_test.rs | 9 + .../src/render_thread/state.rs | 1 + .../state/tests/{mod.rs => state_test.rs} | 0 .../src/render_thread/surface_readback.rs | 1 + .../{mod.rs => surface_readback_test.rs} | 0 .../src/render_thread/terminal_commands.rs | 1 + .../{mod.rs => terminal_commands_test.rs} | 0 .../src/render_thread/terminal_expansion.rs | 1 + .../{mod.rs => terminal_expansion_test.rs} | 0 .../tests/pointer_events_webview_test.rs | 113 +++++ .../{tests.rs => tests/render_thread_test.rs} | 0 .../src/render_thread/thread_handle.rs | 1 + .../tests/{mod.rs => thread_handle_test.rs} | 0 .../src/render_thread/toolbar.rs | 1 + .../toolbar/tests/{mod.rs => toolbar_test.rs} | 0 .../src/render_thread/transitions.rs | 1 + .../tests/{mod.rs => transitions_test.rs} | 0 .../src/terminal/colors.rs | 1 + .../colors/tests/{mod.rs => colors_test.rs} | 0 .../src/terminal/content.rs | 1 + .../content/tests/{mod.rs => content_test.rs} | 0 .../src/terminal/view.rs | 1 + .../view/tests/{mod.rs => view_test.rs} | 0 .../src/tests/window_icon_test.rs | 43 ++ .../src/tests/window_identity_test.rs | 23 + .../src/thread_comm.rs | 1 + .../src/thread_comm/frame_opacity.rs | 2 +- .../tests/{mod.rs => frame_opacity_test.rs} | 0 .../tests/{mod.rs => thread_comm_test.rs} | 0 .../src/window_icon.rs | 47 +- .../src/window_identity.rs | 27 +- .../neomacs-font-materializer/src/fontdb.rs | 1 + .../fontdb/tests/{mod.rs => fontdb_test.rs} | 0 .../neomacs-layout-engine/src/bidi/reorder.rs | 1 + .../reorder/tests/{mod.rs => reorder_test.rs} | 0 .../src/bidi/resolver.rs | 1 + .../tests/{mod.rs => resolver_test.rs} | 0 .../neomacs-layout-engine/src/bidi/tables.rs | 1 + .../tables/tests/{mod.rs => tables_test.rs} | 0 .../neomacs-layout-engine/src/bidi/types.rs | 1 + .../types/tests/{mod.rs => types_test.rs} | 0 .../src/buffer_source/body_render.rs | 2 +- ...ow_storage.rs => mini_row_storage_test.rs} | 0 .../src/buffer_source/end_of_buffer_rows.rs | 1 + .../{mod.rs => end_of_buffer_rows_test.rs} | 0 .../src/buffer_source/fringe_arrows.rs | 1 + .../tests/{mod.rs => fringe_arrows_test.rs} | 0 .../src/buffer_source/owned_capture.rs | 107 +---- .../src/buffer_source/producer/mod.rs | 1 + .../tests/{mod.rs => producer_test.rs} | 0 .../src/buffer_source/producer/vocabulary.rs | 1 + .../tests/{mod.rs => vocabulary_test.rs} | 0 .../src/buffer_source/row_route/mod.rs | 1 + .../tests/{mod.rs => row_route_test.rs} | 0 .../buffer_source/tests/owned_capture_test.rs | 102 +++++ ...s => property_keys_budget_support_test.rs} | 0 ...s => source_budget_default_policy_test.rs} | 0 ...s => source_budget_policy_aliases_test.rs} | 0 ..._source_tests.rs => window_source_test.rs} | 0 .../src/buffer_source/window_geometry.rs | 1 + .../tests/{mod.rs => window_geometry_test.rs} | 0 .../src/buffer_source/window_source.rs | 9 +- .../tests/{mod.rs => window_source_test.rs} | 0 .../neomacs-layout-engine/src/composition.rs | 1 + .../tests/{mod.rs => composition_test.rs} | 0 .../src/display_face_layout.rs | 1 + .../{mod.rs => display_face_layout_test.rs} | 0 .../src/display_frame_output.rs | 1 + .../{mod.rs => display_frame_output_test.rs} | 0 .../neomacs-layout-engine/src/display_item.rs | 1 + .../tests/{mod.rs => display_item_test.rs} | 0 .../src/display_pixel_calc.rs | 1 + .../{mod.rs => display_pixel_calc_test.rs} | 0 .../src/display_property.rs | 1 + .../{mod.rs => display_property_test.rs} | 0 .../src/display_row/builder.rs | 1 + .../builder/tests/{mod.rs => builder_test.rs} | 0 .../src/display_row/finalizer.rs | 1 + .../tests/{mod.rs => finalizer_test.rs} | 0 .../src/display_row/geometry.rs | 1 + .../tests/{mod.rs => geometry_test.rs} | 0 .../src/display_row/mod.rs | 2 +- .../src/display_row/source_append.rs | 1 + .../tests/{mod.rs => source_append_test.rs} | 0 .../src/display_row/source_render.rs | 1 + .../tests/{mod.rs => source_render_test.rs} | 0 .../src/display_row/source_state.rs | 2 +- .../tests/{mod.rs => source_state_test.rs} | 0 .../{test.rs => tests/display_row_test.rs} | 0 .../src/display_row/trailing_whitespace.rs | 1 + .../{mod.rs => trailing_whitespace_test.rs} | 0 .../src/display_source.rs | 1 + .../tests/{mod.rs => display_source_test.rs} | 0 .../src/display_source_overflow.rs | 1 + ...mod.rs => display_source_overflow_test.rs} | 0 ...s => compiled_collection_mutation_test.rs} | 0 .../tests/display_source_resolver_test.rs | 2 +- .../src/display_status_line.rs | 1 + .../{mod.rs => display_status_line_test.rs} | 0 .../neomacs-layout-engine/src/display_when.rs | 1 + .../tests/{mod.rs => display_when_test.rs} | 0 crates/neomacs-layout-engine/src/engine.rs | 1 + .../src/engine/mini_source_start.rs | 2 +- .../src/engine/mini_source_stop.rs | 2 +- .../src/engine/tests/edit_sync_engine_test.rs | 4 +- ...edit_sync_source_budget_consumers_test.rs} | 0 ...t_sync_source_budget_replay_retry_test.rs} | 0 .../engine/tests/{mod.rs => engine_test.rs} | 23 +- ...oll_sites.rs => mini_scroll_sites_test.rs} | 0 ...rce_start.rs => mini_source_start_test.rs} | 0 ...ource_stop.rs => mini_source_stop_test.rs} | 0 .../neomacs-layout-engine/src/font/catalog.rs | 1 + .../catalog/tests/{mod.rs => catalog_test.rs} | 0 .../src/font/font_match.rs | 1 + .../tests/{mod.rs => font_match_test.rs} | 0 .../src/font/fontconfig.rs | 1 + .../src/font/fontconfig/candidate_cache.rs | 73 +-- .../fontconfig/tests/candidate_cache_test.rs | 69 +++ .../tests/{mod.rs => fontconfig_test.rs} | 0 .../neomacs-layout-engine/src/font/metrics.rs | 1 + .../metrics/tests/{mod.rs => metrics_test.rs} | 0 .../neomacs-layout-engine/src/font/policy.rs | 1 + .../policy/tests/{mod.rs => policy_test.rs} | 0 .../src/font/resolver.rs | 1 + .../tests/{mod.rs => resolver_test.rs} | 0 .../tests/worker_policy_cache_budget_test.rs | 26 ++ .../src/font/resolver/worker_policy.rs | 32 +- .../neomacs-layout-engine/src/font/sizing.rs | 1 + .../sizing/tests/{mod.rs => sizing_test.rs} | 0 .../src/font_backend/native_asset_cache.rs | 1 + .../{mod.rs => native_asset_cache_test.rs} | 0 .../src/font_backend/windows/mod.rs | 1 + .../windows/tests/{mod.rs => windows_test.rs} | 0 .../src/frame_face_arena.rs | 1 + .../{mod.rs => frame_face_arena_test.rs} | 0 .../src/frame_presentation.rs | 1 + .../{mod.rs => frame_presentation_test.rs} | 0 .../src/glyph_row_writer.rs | 2 +- .../glyph_row_writer_test.rs} | 0 .../neomacs-layout-engine/src/gui_chrome.rs | 1 + .../tests/{mod.rs => gui_chrome_test.rs} | 0 .../src/incremental_layout/edit_sync.rs | 8 +- .../src/incremental_layout/mode_line_gate.rs | 4 +- ...cy.rs => edit_sync_default_policy_test.rs} | 0 ...it_sync_lazy_proof_policy_absence_test.rs} | 0 ...it_sync_lazy_proof_policy_aliases_test.rs} | 0 ...es.rs => edit_sync_policy_aliases_test.rs} | 0 ... => mode_line_gate_default_policy_test.rs} | 0 ... => mode_line_gate_policy_aliases_test.rs} | 0 .../neomacs-layout-engine/src/neovm_bridge.rs | 3 +- .../{ => tests}/line_count_test.rs | 0 .../tests/{mod.rs => neovm_bridge_test.rs} | 0 .../src/output/builder.rs | 1 + .../builder/tests/{mod.rs => builder_test.rs} | 0 .../src/output/window_state.rs | 3 +- ...reparation.rs => mini_preparation_test.rs} | 0 .../tests/{mod.rs => window_state_test.rs} | 0 .../src/presentation/pointer.rs | 1 + .../pointer/tests/{mod.rs => pointer_test.rs} | 0 .../src/presentation/presented_pointer_map.rs | 1 + .../{mod.rs => presented_pointer_map_test.rs} | 0 .../src/row_layout/font_measurement.rs | 114 +---- .../src/row_layout/input.rs | 44 +- .../src/row_layout/mapped_input.rs | 29 +- .../src/row_layout/program.rs | 423 +----------------- .../src/row_layout/spacing_input.rs | 46 +- .../row_layout/tests/font_measurement_test.rs | 110 +++++ .../src/row_layout/tests/input_test.rs | 40 ++ .../src/row_layout/tests/mapped_input_test.rs | 25 ++ .../src/row_layout/tests/program_test.rs | 416 +++++++++++++++++ .../row_layout/tests/spacing_input_test.rs | 42 ++ .../src/row_layout/tests/worker_test.rs | 133 ++++++ .../src/row_layout/worker.rs | 137 +----- .../src/scroll_policy.rs | 1 + .../tests/{mod.rs => scroll_policy_test.rs} | 0 .../neomacs-layout-engine/src/tty_menu_bar.rs | 1 + .../tests/{mod.rs => tty_menu_bar_test.rs} | 0 crates/neomacs-layout-engine/src/types.rs | 1 + .../src/types/tests/{mod.rs => types_test.rs} | 0 crates/neomacs-layout-engine/src/unicode.rs | 1 + .../unicode/tests/{mod.rs => unicode_test.rs} | 0 .../src/window_output.rs | 1 + .../src/window_output/row_geometry.rs | 56 +-- .../row_geometry/{ => tests}/lookup_test.rs | 0 .../src/window_output/snapshot_rows.rs | 47 +- .../window_output/tests/row_geometry_test.rs | 50 +++ .../window_output/tests/snapshot_rows_test.rs | 43 ++ .../tests/{mod.rs => window_output_test.rs} | 0 crates/neomacs-perf/src/artifact.rs | 1 + .../tests/{mod.rs => artifact_test.rs} | 0 crates/neomacs-perf/src/capture.rs | 1 + .../capture/tests/{mod.rs => capture_test.rs} | 0 crates/neomacs-perf/src/catalog.rs | 1 + .../catalog/tests/{mod.rs => catalog_test.rs} | 0 crates/neomacs-perf/src/cli.rs | 1 + .../src/cli/tests/{mod.rs => cli_test.rs} | 0 crates/neomacs-perf/src/comparison.rs | 1 + .../tests/{mod.rs => comparison_test.rs} | 0 crates/neomacs-perf/src/counters.rs | 1 + .../tests/{mod.rs => counters_test.rs} | 0 crates/neomacs-perf/src/harness.rs | 1 + .../src/harness/scenarios/bounded_search.rs | 1 + .../tests/{mod.rs => bounded_search_test.rs} | 0 .../src/harness/scenarios/builtin_call.rs | 1 + .../tests/{mod.rs => builtin_call_test.rs} | 0 .../src/harness/scenarios/search_shape.rs | 1 + .../tests/{mod.rs => search_shape_test.rs} | 0 .../src/harness/scenarios/vm_loop.rs | 1 + .../harness/scenarios/vm_loop/first_entry.rs | 1 + .../tests/{mod.rs => first_entry_test.rs} | 0 .../vm_loop/tests/{mod.rs => vm_loop_test.rs} | 0 .../harness/tests/{mod.rs => harness_test.rs} | 5 + crates/neomacs-perf/src/host.rs | 1 + .../src/host/tests/{mod.rs => host_test.rs} | 0 crates/neomacs-perf/src/input_latency.rs | 63 +-- crates/neomacs-perf/src/native_video.rs | 1 + .../tests/{mod.rs => native_video_test.rs} | 0 crates/neomacs-perf/src/portable_dump.rs | 1 + .../tests/{mod.rs => portable_dump_test.rs} | 0 crates/neomacs-perf/src/profile.rs | 1 + .../profile/tests/{mod.rs => profile_test.rs} | 0 crates/neomacs-perf/src/suite.rs | 1 + .../src/suite/tests/{mod.rs => suite_test.rs} | 0 .../src/tests/input_latency_test.rs | 59 +++ .../src/external_buffer.rs | 1 + .../tests/{mod.rs => external_buffer_test.rs} | 0 .../src/glyph_atlas/allocator.rs | 1 + .../tests/{mod.rs => allocator_test.rs} | 0 .../src/glyph_atlas/mod.rs | 1 + .../tests/{mod.rs => glyph_atlas_test.rs} | 0 .../src/gpu_frame_timing.rs | 1 + .../{mod.rs => gpu_frame_timing_test.rs} | 0 .../neomacs-renderer-wgpu/src/image_bands.rs | 2 +- .../{tests.rs => tests/image_bands_test.rs} | 0 .../neomacs-renderer-wgpu/src/image_cache.rs | 1 + ...iagnostic.rs => decode_diagnostic_test.rs} | 0 .../tests/{mod.rs => image_cache_test.rs} | 2 +- .../neomacs-renderer-wgpu/src/image_scale.rs | 2 +- .../{tests.rs => tests/image_scale_test.rs} | 0 .../src/image_sequence.rs | 1 + .../tests/{mod.rs => image_sequence_test.rs} | 0 .../neomacs-renderer-wgpu/src/media_budget.rs | 1 + .../tests/{mod.rs => media_budget_test.rs} | 0 .../src/native_presentation/abi.rs | 15 +- .../src/native_presentation/clock.rs | 33 +- .../src/native_presentation/query.rs | 103 +---- .../src/native_presentation/tests/abi_test.rs | 11 + .../native_presentation/tests/clock_test.rs | 29 ++ .../native_presentation/tests/query_test.rs | 99 ++++ .../src/renderer/composition_ring.rs | 1 + .../{mod.rs => composition_ring_test.rs} | 0 .../src/renderer/content.rs | 1 + .../content/tests/{mod.rs => content_test.rs} | 0 .../src/renderer/cursor_effects.rs | 1 + .../tests/{mod.rs => cursor_effects_test.rs} | 0 .../src/renderer/cursor_presentation.rs | 1 + .../{mod.rs => cursor_presentation_test.rs} | 0 .../src/renderer/deform.rs | 1 + .../deform/tests/{mod.rs => deform_test.rs} | 0 .../src/renderer/effect_common.rs | 1 + .../tests/{mod.rs => effect_common_test.rs} | 0 .../src/renderer/effects_state.rs | 1 + .../tests/{mod.rs => effects_state_test.rs} | 0 .../src/renderer/glyphs.rs | 1 + .../glyphs/tests/{mod.rs => glyphs_test.rs} | 0 .../src/renderer/gpu_budget.rs | 1 + .../tests/{mod.rs => gpu_budget_test.rs} | 0 .../src/renderer/layer_media.rs | 1 + .../tests/{mod.rs => layer_media_test.rs} | 0 .../src/renderer/layout_pass.rs | 1 + .../tests/{mod.rs => layout_pass_test.rs} | 0 .../src/renderer/pattern_effects.rs | 1 + .../tests/{mod.rs => pattern_effects_test.rs} | 0 .../src/renderer/pointer_override.rs | 1 + .../{mod.rs => pointer_override_test.rs} | 0 .../src/renderer/row_reuse.rs | 1 + .../tests/{mod.rs => row_reuse_test.rs} | 0 .../src/renderer/snapshot_pool.rs | 1 + .../tests/{mod.rs => snapshot_pool_test.rs} | 0 .../src/renderer/transitions.rs | 1 + .../tests/{mod.rs => transitions_test.rs} | 0 .../src/renderer/ui_overlays.rs | 1 + .../tests/{mod.rs => ui_overlays_test.rs} | 0 .../src/renderer/window_effects.rs | 1 + .../tests/{mod.rs => window_effects_test.rs} | 0 .../src/shader_surface_cache.rs | 1 + .../{mod.rs => shader_surface_cache_test.rs} | 0 .../src/tooltip_layout.rs | 1 + .../tests/{mod.rs => tooltip_layout_test.rs} | 0 crates/neomacs-renderer-wgpu/src/vertex.rs | 1 + .../vertex/tests/{mod.rs => vertex_test.rs} | 0 .../neomacs-renderer-wgpu/src/video_cache.rs | 1 + .../tests/{mod.rs => video_cache_test.rs} | 0 .../src/vulkan_dmabuf.rs | 1 + .../tests/{mod.rs => vulkan_dmabuf_test.rs} | 0 crates/neomacs-renderer-wgpu/src/xbm.rs | 1 + .../src/xbm/tests/{mod.rs => xbm_test.rs} | 0 crates/neomacs-renderer-wgpu/src/xpm.rs | 1 + .../src/xpm/tests/{mod.rs => xpm_test.rs} | 0 .../src/platform/linux/decoder.rs | 36 +- .../decoder/tests/{mod.rs => decoder_test.rs} | 17 +- .../src/platform/linux/dmabuf.rs | 1 + .../dmabuf/tests/{mod.rs => dmabuf_test.rs} | 0 .../neomacs-video/src/platform/linux/frame.rs | 1 + .../frame/tests/{mod.rs => frame_test.rs} | 0 crates/neomacs-webview/src/load_state.rs | 1 + .../tests/{mod.rs => load_state_test.rs} | 0 .../src/platform/linux/display.rs | 1 + .../display/tests/{mod.rs => display_test.rs} | 0 .../neomacs-webview/src/platform/linux/sys.rs | 1 + .../linux/sys/tests/{mod.rs => sys_test.rs} | 0 .../src/platform/macos/focus.rs | 1 + .../focus/tests/{mod.rs => focus_test.rs} | 0 crates/neomacs/src/bin/neomacsclient.rs | 6 +- ...itor_tests.rs => alternate_editor_test.rs} | 0 .../{timeout_tests.rs => timeout_test.rs} | 0 .../{transport_tests.rs => transport_test.rs} | 0 crates/neomacs/src/build_info.rs | 1 + .../tests/{mod.rs => build_info_test.rs} | 0 crates/neomacs/src/daemon.rs | 2 +- .../daemon/tests/{mod.rs => daemon_test.rs} | 0 crates/neomacs/src/input_bridge.rs | 1 + .../tests/{mod.rs => input_bridge_test.rs} | 0 ...olicy.rs => frame_snapshot_policy_test.rs} | 0 crates/neomacs/src/tests/main_test.rs | 2 +- crates/neomacs/src/tests/tty_output_test.rs | 279 ++++++++++++ crates/neomacs/src/tty_output.rs | 286 +----------- crates/neovm-core/src/buffer/buffer.rs | 1 + .../buffer/tests/{mod.rs => buffer_test.rs} | 4 + crates/neovm-core/src/buffer/buffer_text.rs | 1 + .../tests/{mod.rs => buffer_text_test.rs} | 3 + .../neovm-core/src/buffer/edit_transaction.rs | 2 +- ...transpose_gnu.rs => transpose_gnu_test.rs} | 0 crates/neovm-core/src/buffer/gap_buffer.rs | 1 + .../tests/{mod.rs => gap_buffer_test.rs} | 0 crates/neovm-core/src/buffer/overlay.rs | 1 + .../overlay/tests/{mod.rs => overlay_test.rs} | 0 crates/neovm-core/src/buffer/overlay_bplus.rs | 12 +- crates/neovm-core/src/buffer/overlay_index.rs | 1 + .../{local_move.rs => local_move_test.rs} | 0 .../tests/{mod.rs => overlay_index_test.rs} | 1 + crates/neovm-core/src/buffer/overlay_order.rs | 1 + .../tests/{mod.rs => overlay_order_test.rs} | 0 .../overlay_bplus_traversal_storage_test.rs | 8 + .../neovm-core/src/buffer/text/backend/mod.rs | 1 + .../conformance_test.rs} | 0 crates/neovm-core/src/buffer/text_index.rs | 2 +- .../tests/{mod.rs => text_index_test.rs} | 0 crates/neovm-core/src/buffer/text_props.rs | 1 + ...ce_graft.rs => source_slice_graft_test.rs} | 0 .../tests/{mod.rs => text_props_test.rs} | 3 + ...ob.rs => watched_prop_demand_knob_test.rs} | 0 ..._demand.rs => watched_prop_demand_test.rs} | 0 crates/neovm-core/src/buffer/undo.rs | 1 + .../undo/tests/{mod.rs => undo_test.rs} | 0 crates/neovm-core/src/display_evaluation.rs | 1 + .../{mod.rs => display_evaluation_test.rs} | 0 .../src/emacs_core/commands/abbrev/mod.rs | 2 +- .../abbrev/tests/{mod.rs => abbrev_test.rs} | 0 .../emacs_core/commands/interactive/mod.rs | 2 +- .../tests/{mod.rs => interactive_test.rs} | 0 .../src/emacs_core/commands/kbd/mod.rs | 2 +- .../kbd/tests/{mod.rs => kbd_test.rs} | 0 .../src/emacs_core/commands/keyboard/mod.rs | 1 + .../src/emacs_core/commands/keyboard/pure.rs | 2 +- .../tests/{mod.rs => keyboard_test.rs} | 0 .../keyboard/tests/{pure.rs => pure_test.rs} | 0 .../src/emacs_core/commands/keymap/mod.rs | 2 +- .../keymap/tests/{mod.rs => keymap_test.rs} | 0 .../src/emacs_core/commands/kmacro/mod.rs | 2 +- .../kmacro/tests/{mod.rs => kmacro_test.rs} | 0 .../src/emacs_core/commands/minibuffer/mod.rs | 2 +- ...se_table.rs => compare_case_table_test.rs} | 0 .../tests/{mod.rs => minibuffer_test.rs} | 1 + .../src/emacs_core/commands/register/mod.rs | 2 +- .../tests/{mod.rs => register_test.rs} | 0 .../src/emacs_core/display/display/mod.rs | 2 +- .../display/tests/{mod.rs => display_test.rs} | 6 + ...isplay.rs => popup_idle_redisplay_test.rs} | 0 .../emacs_core/display/display_host/mod.rs | 2 +- .../{display_host.rs => display_host_test.rs} | 0 .../emacs_core/display/display_spec/mod.rs | 2 +- .../tests/{mod.rs => display_spec_test.rs} | 0 .../emacs_core/display/display_when/mod.rs | 2 +- .../tests/{mod.rs => display_when_test.rs} | 0 .../src/emacs_core/display/dispnew/mod.rs | 1 + .../src/emacs_core/display/dispnew/pure.rs | 2 +- .../dispnew/tests/{mod.rs => dispnew_test.rs} | 1 + ...icit_redraw.rs => explicit_redraw_test.rs} | 0 .../{idle_redraw.rs => idle_redraw_test.rs} | 0 .../src/emacs_core/display/font/mod.rs | 2 +- .../font/tests/{mod.rs => font_test.rs} | 1 + .../src/emacs_core/display/fontset/mod.rs | 2 +- .../fontset/tests/{mod.rs => fontset_test.rs} | 0 .../src/emacs_core/display/frame/mod.rs | 2 +- .../tests/{selection.rs => selection_test.rs} | 0 .../src/emacs_core/display/hscroll/mod.rs | 2 +- .../hscroll/tests/{mod.rs => hscroll_test.rs} | 0 .../src/emacs_core/display/image/mod.rs | 2 +- .../image/tests/{mod.rs => image_test.rs} | 0 .../src/emacs_core/display/image_path/mod.rs | 2 +- .../tests/{mod.rs => image_path_test.rs} | 0 .../src/emacs_core/display/neo/modifiers.rs | 1 + .../tests/{mod.rs => modifiers_test.rs} | 0 .../src/emacs_core/display/neo/scroll.rs | 185 +------- .../emacs_core/display/neo/terminal/mod.rs | 2 +- .../tests/{mod.rs => terminal_test.rs} | 0 .../display/neo/tests/scroll_test.rs | 181 ++++++++ .../tests/{runtime.rs => runtime_test.rs} | 0 .../src/emacs_core/display/terminal/mod.rs | 1 + .../src/emacs_core/display/terminal/pure.rs | 4 +- ...ration.rs => gc_context_migration_test.rs} | 0 ...ownership.rs => gc_heap_ownership_test.rs} | 0 ...le_redisplay.rs => idle_redisplay_test.rs} | 0 ...einstall.rs => registry_reinstall_test.rs} | 0 .../tests/{mod.rs => terminal_test.rs} | 2 + .../tests/{runtime.rs => runtime_test.rs} | 0 .../src/emacs_core/display/window_cmds/mod.rs | 3 +- ...defaults.rs => core_hook_defaults_test.rs} | 0 ...k_restore.rs => core_hook_restore_test.rs} | 0 ...ion_chrome.rs => selection_chrome_test.rs} | 0 .../tests/{mod.rs => window_cmds_test.rs} | 5 + ...eload.rs => window_system_preload_test.rs} | 0 .../display/window_edge_drag/mod.rs | 2 +- .../{mod.rs => window_edge_drag_test.rs} | 0 .../src/emacs_core/display/xdisp/mod.rs | 29 +- .../xdisp/mode_line_numeric_padding.rs | 2 +- .../emacs_core/display/xdisp/motion/mod.rs | 2 +- .../motion/tests/{mod.rs => motion_test.rs} | 0 ...de_line_flow.rs => mode_line_flow_test.rs} | 0 ...gc_roots.rs => mode_line_gc_roots_test.rs} | 0 ...> mode_line_incremental_lifetimes_test.rs} | 0 ...rs => mode_line_incremental_roots_test.rs} | 0 ..._spine.rs => mode_line_live_spine_test.rs} | 0 ...s => mode_line_multibyte_identity_test.rs} | 0 ...r_flow.rs => mode_line_outer_flow_test.rs} | 0 ...rs.rs => mode_line_outer_handlers_test.rs} | 0 ...=> numeric_padding_default_policy_test.rs} | 0 .../xdisp/tests/xdisp_row_edge_test.rs | 9 + .../xdisp/tests/{mod.rs => xdisp_test.rs} | 9 + .../src/emacs_core/display/xfaces/mod.rs | 6 +- .../tests/{builtins.rs => builtins_test.rs} | 0 ..._ownership.rs => gc_tls_ownership_test.rs} | 0 .../xfaces/tests/{mod.rs => xfaces_test.rs} | 0 .../tests/{runtime.rs => runtime_test.rs} | 0 .../src/emacs_core/editing/bookmark/mod.rs | 2 +- .../tests/{mod.rs => bookmark_test.rs} | 0 .../src/emacs_core/editing/buffer/mod.rs | 2 +- .../buffer/tests/{mod.rs => buffer_test.rs} | 2 + ...n_primitives.rs => gdn_primitives_test.rs} | 0 ...nu.rs => set_buffer_multibyte_gnu_test.rs} | 0 .../src/emacs_core/editing/dired/mod.rs | 2 +- ...se_table.rs => compare_case_table_test.rs} | 0 .../dired/tests/{mod.rs => dired_test.rs} | 1 + .../src/emacs_core/editing/editfns/mod.rs | 2 +- .../editfns/tests/{mod.rs => editfns_test.rs} | 0 .../src/emacs_core/editing/indent/mod.rs | 2 +- .../indent/tests/{mod.rs => indent_test.rs} | 0 .../src/emacs_core/editing/marker/mod.rs | 2 +- .../marker/tests/{mod.rs => marker_test.rs} | 0 .../src/emacs_core/editing/mode/mod.rs | 4 +- ...stom_type_gc.rs => custom_type_gc_test.rs} | 0 .../mode/tests/{mod.rs => mode_test.rs} | 0 .../src/emacs_core/editing/navigation/mod.rs | 2 +- .../{line_index.rs => line_index_test.rs} | 0 .../tests/{mod.rs => navigation_test.rs} | 2 + ...y_gnu.rs => selective_display_gnu_test.rs} | 0 .../src/emacs_core/editing/rect/mod.rs | 2 +- .../rect/tests/{mod.rs => rect_test.rs} | 0 .../src/emacs_core/editing/undo/mod.rs | 2 +- .../tests/{kill_ring.rs => kill_ring_test.rs} | 0 .../undo/tests/{mod.rs => undo_test.rs} | 0 .../src/emacs_core/lisp/advice/mod.rs | 2 +- .../advice/tests/{mod.rs => advice_test.rs} | 0 .../src/emacs_core/lisp/autoload/mod.rs | 2 +- .../tests/{mod.rs => autoload_test.rs} | 0 .../src/emacs_core/lisp/cl_lib/mod.rs | 2 +- .../cl_lib/tests/{mod.rs => cl_lib_test.rs} | 0 .../src/emacs_core/lisp/custom/mod.rs | 2 +- .../custom/tests/{mod.rs => custom_test.rs} | 0 .../neovm-core/src/emacs_core/lisp/doc/mod.rs | 2 +- .../lisp/doc/tests/{mod.rs => doc_test.rs} | 0 .../src/emacs_core/lisp/load/mod.rs | 4 +- ...eager_failure.rs => eager_failure_test.rs} | 0 .../lisp/load/tests/{mod.rs => load_test.rs} | 0 ...ale_bytecode.rs => stale_bytecode_test.rs} | 0 .../src/emacs_core/lisp/lread/mod.rs | 2 +- .../lread/tests/{mod.rs => lread_test.rs} | 0 .../lisp/native/builtins/arithmetic.rs | 16 +- .../lisp/native/builtins/collections.rs | 4 +- .../lisp/native/builtins/cons_list.rs | 6 +- .../native/builtins/file_notify/delivery.rs | 2 +- .../lisp/native/builtins/file_notify/mod.rs | 8 +- .../lisp/native/builtins/file_notify/model.rs | 2 +- .../file_notify/platform/linux/mod.rs | 2 +- .../linux/tests/{linux.rs => linux_test.rs} | 0 .../linux/tests/{worker.rs => worker_test.rs} | 0 .../file_notify/platform/linux/worker.rs | 2 +- .../file_notify/platform/macos/mod.rs | 2 +- .../macos/tests/{macos.rs => macos_test.rs} | 0 .../{unsupported.rs => unsupported_test.rs} | 0 .../file_notify/platform/unsupported.rs | 2 +- .../file_notify/platform/windows/mod.rs | 2 +- .../tests/{windows.rs => windows_test.rs} | 0 .../tests/{delivery.rs => delivery_test.rs} | 0 .../tests/{mod.rs => file_notify_test.rs} | 0 ..._ownership.rs => gc_tls_ownership_test.rs} | 0 .../tests/{linux.rs => linux_test.rs} | 0 .../tests/{model.rs => model_test.rs} | 0 ...tive_runtime.rs => native_runtime_test.rs} | 0 .../lisp/native/builtins/fringe_bitmap.rs | 2 +- .../lisp/native/builtins/from_value.rs | 2 +- .../lisp/native/builtins/higher_order.rs | 10 +- .../emacs_core/lisp/native/builtins/hooks.rs | 2 +- .../native/builtins/hooks/redisplay_gnu.rs | 2 +- .../{default_read.rs => default_read_test.rs} | 0 ...=> window_configuration_redisplay_test.rs} | 0 .../hooks/window_configuration_redisplay.rs | 2 +- .../lisp/native/builtins/keymaps.rs | 2 +- .../lisp/native/builtins/leaves/mod.rs | 2 +- .../{equivalence.rs => equivalence_test.rs} | 0 .../emacs_core/lisp/native/builtins/mod.rs | 33 +- .../emacs_core/lisp/native/builtins/search.rs | 6 +- ..._ownership.rs => gc_tls_ownership_test.rs} | 0 .../lisp/native/builtins/strings.rs | 2 +- ...low.rs => arithmetic_ash_overflow_test.rs} | 0 ....rs => arithmetic_bignum_borrowed_test.rs} | 0 ...ue.rs => arithmetic_integer_value_test.rs} | 0 ...els.rs => arithmetic_limb_kernels_test.rs} | 0 ...e.rs => arithmetic_minmax_compare_test.rs} | 0 ...rs => arithmetic_rounding_capture_test.rs} | 0 ...> arithmetic_rounding_float_exact_test.rs} | 0 ...> arithmetic_rounding_nil_divisor_test.rs} | 0 ..._place.rs => aset_string_in_place_test.rs} | 0 ...c_callbacks.rs => assoc_callbacks_test.rs} | 0 .../tests/{mod.rs => builtins_test.rs} | 0 ...ntity.rs => closure_slot_identity_test.rs} | 0 ...ure.rs => collection_scan_capture_test.rs} | 0 ...pture.rs => copy_sequence_capture_test.rs} | 0 ...subrs.rs => fixed_arity_hot_subrs_test.rs} | 0 ...fringe_bitmap.rs => fringe_bitmap_test.rs} | 0 .../{from_value.rs => from_value_test.rs} | 0 ...lections.rs => gc_tls_collections_test.rs} | 0 ...rs => gc_tls_window_configuration_test.rs} | 0 .../{gdn_equality.rs => gdn_equality_test.rs} | 0 ...s => higher_order_callback_policy_test.rs} | 0 ...apture.rs => higher_order_capture_test.rs} | 0 .../tests/{keymaps.rs => keymaps_test.rs} | 0 ..._names.rs => lisp_only_misc_names_test.rs} | 0 ... lisp_only_predicates_and_aliases_test.rs} | 0 ...nds.rs => lisp_only_undo_commands_test.rs} | 0 ...s => lisp_only_window_frame_names_test.rs} | 0 ...als.rs => make_byte_code_literals_test.rs} | 0 ...tance.rs => make_closure_instance_test.rs} | 0 ..._capture.rs => map_resume_capture_test.rs} | 0 .../{map_resume.rs => map_resume_test.rs} | 0 ...ctivation.rs => mapcar_activation_test.rs} | 0 ...array_growth.rs => obarray_growth_test.rs} | 0 ...obarray_order.rs => obarray_order_test.rs} | 0 ...e_walk_gc.rs => predicate_walk_gc_test.rs} | 0 ...> process_launchers_are_lisp_only_test.rs} | 0 ...nts.rs => replace_region_contents_test.rs} | 0 ...rs => rust_subrs_shadowed_by_lisp_test.rs} | 0 ...ch_frontend.rs => search_frontend_test.rs} | 0 .../tests/{search.rs => search_test.rs} | 0 .../{sort_capture.rs => sort_capture_test.rs} | 0 .../tests/{strings.rs => strings_test.rs} | 0 ...freshness.rs => treesit_freshness_test.rs} | 0 .../lisp/native/builtins/treesit.rs | 2 +- .../lisp/native/builtins_extra/mod.rs | 2 +- .../tests/{mod.rs => builtins_extra_test.rs} | 0 .../emacs_core/lisp/native/floatfns/mod.rs | 2 +- .../tests/{mod.rs => floatfns_test.rs} | 0 .../src/emacs_core/lisp/native/fns/mod.rs | 2 +- ...se_table.rs => compare_case_table_test.rs} | 0 ...ache.rs => compare_position_cache_test.rs} | 0 .../native/fns/tests/{mod.rs => fns_test.rs} | 2 + .../src/emacs_core/lisp/native/misc/mod.rs | 2 +- .../misc/tests/{mod.rs => misc_test.rs} | 0 .../src/emacs_core/lisp/native/subr/info.rs | 2 +- .../src/emacs_core/lisp/native/subr/leaf.rs | 2 +- .../src/emacs_core/lisp/native/subr/mod.rs | 1 + .../subr/tests/{info.rs => info_test.rs} | 0 ...leaf_contract.rs => leaf_contract_test.rs} | 0 .../subr/tests/{mod.rs => subr_test.rs} | 1 + .../src/emacs_core/lisp/print/mod.rs | 2 +- .../print/tests/{mod.rs => print_test.rs} | 0 ...ime_surface.rs => runtime_surface_test.rs} | 0 .../src/emacs_core/lisp/reader/mod.rs | 8 +- ...eardown.rs => minibuffer_teardown_test.rs} | 0 ...der.rs => minibuffer_unwind_order_test.rs} | 0 .../tests/{raw_bytes.rs => raw_bytes_test.rs} | 0 .../reader/tests/{mod.rs => reader_test.rs} | 0 crates/neovm-core/src/emacs_core/mod.rs | 46 +- .../src/emacs_core/runtime/alloc/mod.rs | 2 +- .../alloc/tests/{mod.rs => alloc_test.rs} | 0 .../emacs_core/runtime/bytecode/arith_kind.rs | 2 +- .../src/emacs_core/runtime/bytecode/chunk.rs | 2 +- .../src/emacs_core/runtime/bytecode/decode.rs | 2 +- .../src/emacs_core/runtime/bytecode/opcode.rs | 2 +- .../runtime/bytecode/resumed_chain.rs | 4 +- ...ath.rs => arith_integer_fast_path_test.rs} | 0 .../{arith_kind.rs => arith_kind_test.rs} | 0 ...eturn.rs => builtin_result_return_test.rs} | 0 .../tests/{chunk.rs => chunk_test.rs} | 0 ..._capture.rs => collection_capture_test.rs} | 0 .../tests/{decode.rs => decode_test.rs} | 0 .../tests/{opcode.rs => opcode_test.rs} | 0 .../tests/{osr_chain.rs => osr_chain_test.rs} | 0 ...ells.rs => primitive_opcode_cells_test.rs} | 0 ...resumed_chain.rs => resumed_chain_test.rs} | 0 .../{stack_pool.rs => stack_pool_test.rs} | 0 .../tests/{vm_leaf.rs => vm_leaf_test.rs} | 0 .../bytecode/tests/{vm.rs => vm_test.rs} | 2 +- .../src/emacs_core/runtime/bytecode/vm.rs | 10 +- .../emacs_core/runtime/bytecode/vm_leaf.rs | 2 +- .../src/emacs_core/runtime/data/mod.rs | 1 + .../data/tests/{mod.rs => data_test.rs} | 0 .../src/emacs_core/runtime/debug/mod.rs | 2 +- .../debug/tests/{mod.rs => debug_test.rs} | 0 .../emacs_core/runtime/debug_on_call/mod.rs | 2 +- .../tests/{mod.rs => debug_on_call_test.rs} | 0 .../src/emacs_core/runtime/error/mod.rs | 10 +- .../error/tests/{mod.rs => error_test.rs} | 0 .../tests/{flow_kind.rs => flow_kind_test.rs} | 0 .../{flow_word_gc.rs => flow_word_gc_test.rs} | 0 .../tests/{flow_word.rs => flow_word_test.rs} | 0 ..._ownership.rs => gc_tls_ownership_test.rs} | 0 .../src/emacs_core/runtime/errors/mod.rs | 2 +- .../errors/tests/{mod.rs => errors_test.rs} | 0 .../src/emacs_core/runtime/eval/attention.rs | 2 +- .../src/emacs_core/runtime/eval/callback.rs | 2 +- .../emacs_core/runtime/eval/command_loop.rs | 4 +- .../src/emacs_core/runtime/eval/mod.rs | 42 +- .../emacs_core/runtime/eval/native_stack.rs | 2 +- .../runtime/eval/redisplay_hooks.rs | 12 +- .../eval/redisplay_hooks/echo_message.rs | 2 +- .../{echo_message.rs => echo_message_test.rs} | 0 ...de_line_flow.rs => mode_line_flow_test.rs} | 0 ...y1_bytecode.rs => apply1_bytecode_test.rs} | 0 ...y2_bytecode.rs => apply2_bytecode_test.rs} | 0 .../tests/{attention.rs => attention_test.rs} | 0 .../{builtin_vars.rs => builtin_vars_test.rs} | 0 .../{cconv_memo.rs => cconv_memo_test.rs} | 0 ...nsitions.rs => chrome_transitions_test.rs} | 0 ...rcular_lists.rs => circular_lists_test.rs} | 0 .../eval/tests/{mod.rs => eval_test.rs} | 4 + ...cycle.rs => gc_forced_first_cycle_test.rs} | 0 ...major.rs => gc_generational_major_test.rs} | 0 ...cing.rs => gc_generational_pacing_test.rs} | 0 ...enerational.rs => gc_generational_test.rs} | 0 ...closure.rs => gc_heap_mut_closure_test.rs} | 0 ...ownership.rs => gc_root_ownership_test.rs} | 0 .../{gc_sweep_cap.rs => gc_sweep_cap_test.rs} | 0 ...ofs.rs => gc_tls_migration_proofs_test.rs} | 0 ..._ownership.rs => gc_tls_ownership_test.rs} | 0 ...le_redisplay.rs => idle_redisplay_test.rs} | 0 ...crash_repro.rs => jit_crash_repro_test.rs} | 0 ...onum_nbody.rs => jit_flonum_nbody_test.rs} | 0 ...loat.rs => jit_known_fixnum_float_test.rs} | 0 ...jit_leaf_slot.rs => jit_leaf_slot_test.rs} | 0 ....rs => jit_mir_known_fixnum_float_test.rs} | 0 .../{leaf_guard.rs => leaf_guard_test.rs} | 0 ...cache.rs => native_callback_cache_test.rs} | 0 .../{native_stack.rs => native_stack_test.rs} | 0 ..._regression.rs => quit_regression_test.rs} | 0 .../{quit_request.rs => quit_request_test.rs} | 0 ...ip.rs => redisplay_hook_ownership_test.rs} | 0 ...ni_only.rs => redisplay_mini_only_test.rs} | 0 ...> redisplay_mini_preparer_context_test.rs} | 0 ...redisplay_mini_source_eligibility_test.rs} | 0 ...ow.rs => redisplay_mode_line_flow_test.rs} | 0 ...rs => redisplay_transaction_owner_test.rs} | 0 .../tests/{var_fast.rs => var_fast_test.rs} | 0 ...path.rs => varset_plain_fast_path_test.rs} | 0 .../tests/{analyzer.rs => analyzer_test.rs} | 0 .../tests/{census.rs => census_test.rs} | 0 .../{differential.rs => differential_test.rs} | 0 .../tier_i/tests/{knobs.rs => knobs_test.rs} | 0 ...list_bindings.rs => list_bindings_test.rs} | 0 .../runtime/eval/tier_i/tests/mod.rs | 6 + .../tier_i/tests/{soak.rs => soak_test.rs} | 0 .../src/emacs_core/runtime/forward/mod.rs | 2 +- .../tests/{mod.rs => forward_module_test.rs} | 0 .../src/emacs_core/runtime/hashtab/mod.rs | 4 +- ...bignum_sxhash.rs => bignum_sxhash_test.rs} | 0 .../hashtab/tests/{mod.rs => hashtab_test.rs} | 0 ..._test_guard.rs => user_test_guard_test.rs} | 0 .../runtime/hashtab/user_test_guard.rs | 2 +- .../emacs_core/runtime/heap_registry/mod.rs | 2 +- .../tests/{ownership.rs => ownership_test.rs} | 0 .../src/emacs_core/runtime/intern/mod.rs | 6 +- ..._ownership.rs => gc_tls_ownership_test.rs} | 0 .../intern/tests/{mod.rs => intern_test.rs} | 0 .../{seed_prefix.rs => seed_prefix_test.rs} | 0 .../src/emacs_core/runtime/jit/cache.rs | 6 +- ..._ownership.rs => gc_tls_ownership_test.rs} | 0 .../{hof_regalloc.rs => hof_regalloc_test.rs} | 0 .../{osr_inline.rs => osr_inline_test.rs} | 0 .../src/emacs_core/runtime/jit/compile.rs | 130 +++--- .../emacs_core/runtime/jit/compile/calls.rs | 2 +- .../runtime/jit/compile/chain_framestate.rs | 4 +- .../runtime/jit/compile/cold_exits.rs | 2 +- .../runtime/jit/compile/dispatch.rs | 2 +- .../runtime/jit/compile/hof_runtime.rs | 4 +- .../runtime/jit/compile/inline_entry_cache.rs | 2 +- .../tests/{admission.rs => admission_test.rs} | 0 .../runtime/jit/compile/inline_hof.rs | 2 +- .../jit/compile/inline_hof/captures.rs | 2 +- .../jit/compile/inline_hof/heap_policy.rs | 2 +- .../runtime/jit/compile/inline_regalloc.rs | 2 +- .../runtime/jit/compile/intrinsics.rs | 2 +- .../runtime/jit/compile/jit_layout.rs | 4 +- .../tests/{golden.rs => golden_test.rs} | 0 ...ntime_prefix.rs => runtime_prefix_test.rs} | 0 .../runtime/jit/compile/opt_backend.rs | 2 +- .../runtime/jit/compile/opt_census.rs | 2 +- .../emacs_core/runtime/jit/compile/shared.rs | 2 +- ..._journal.rs => collection_journal_test.rs} | 0 ...re.rs => array_projection_capture_test.rs} | 0 .../{chain_entry.rs => chain_entry_test.rs} | 0 ...framestate.rs => chain_framestate_test.rs} | 0 ...opt_admission.rs => opt_admission_test.rs} | 0 ...y_profile.rs => opt_array_profile_test.rs} | 0 .../{opt_arrays.rs => opt_arrays_test.rs} | 0 ...ol_numeric.rs => opt_bool_numeric_test.rs} | 0 .../tests/{opt_bool.rs => opt_bool_test.rs} | 0 .../{opt_census.rs => opt_census_test.rs} | 0 ...fold_select.rs => opt_fold_select_test.rs} | 0 .../{opt_ir_lower.rs => opt_ir_lower_test.rs} | 0 ..._positive.rs => opt_licm_positive_test.rs} | 0 ...s => opt_opcode_transport_effects_test.rs} | 0 .../{opt_passes.rs => opt_passes_test.rs} | 0 ...t_range_licm.rs => opt_range_licm_test.rs} | 0 .../{opt_regalloc.rs => opt_regalloc_test.rs} | 0 .../tests/{opt_reps.rs => opt_reps_test.rs} | 4 +- ...n_counts.rs => opt_rootwin_counts_test.rs} | 0 ..._probe.rs => opt_sink_alloc_probe_test.rs} | 0 ...demand.rs => opt_sink_cold_demand_test.rs} | 0 ..._identity.rs => opt_sink_identity_test.rs} | 0 ...s => opt_sink_native_verification_test.rs} | 0 ..._cold.rs => opt_sink_numeric_cold_test.rs} | 0 ...rs => opt_sink_numeric_infallible_test.rs} | 0 ...eady.rs => opt_sink_numeric_ready_test.rs} | 0 ...d.rs => opt_sink_numeric_resolved_test.rs} | 0 ...> opt_sink_numeric_sqrt_contagion_test.rs} | 0 ...opt_sink_numeric_static_contagion_test.rs} | 0 ...opt_sink_sqrt.rs => opt_sink_sqrt_test.rs} | 0 ...rt_binding.rs => opt_sqrt_binding_test.rs} | 0 ..._snapshot.rs => opt_sqrt_snapshot_test.rs} | 0 ...galloc_small.rs => regalloc_small_test.rs} | 0 .../src/emacs_core/runtime/jit/inline.rs | 14 +- .../src/emacs_core/runtime/jit/opt/build.rs | 4 +- .../src/emacs_core/runtime/jit/opt/mod.rs | 8 +- .../runtime/jit/opt/passes/array_reads.rs | 2 +- .../runtime/jit/opt/passes/bools.rs | 2 +- .../emacs_core/runtime/jit/opt/passes/cfg.rs | 2 +- .../emacs_core/runtime/jit/opt/passes/fold.rs | 2 +- .../emacs_core/runtime/jit/opt/passes/mod.rs | 2 +- .../emacs_core/runtime/jit/opt/passes/reps.rs | 2 +- .../runtime/jit/opt/passes/reps_lift.rs | 2 +- .../{array_reads.rs => array_reads_test.rs} | 0 ...s_reference.rs => bools_reference_test.rs} | 0 .../passes/tests/{bools.rs => bools_test.rs} | 0 .../opt/passes/tests/{cfg.rs => cfg_test.rs} | 0 .../passes/tests/{fold.rs => fold_test.rs} | 0 .../tests/{reps_lift.rs => reps_lift_test.rs} | 0 .../passes/tests/{reps.rs => reps_test.rs} | 0 .../tests/{verify.rs => verify_test.rs} | 0 .../runtime/jit/opt/sink_recipes/verify.rs | 2 +- .../tests/{build_ssa.rs => build_ssa_test.rs} | 0 .../jit/opt/tests/{eval.rs => eval_test.rs} | 0 .../tests/{ir_verify.rs => ir_verify_test.rs} | 0 ...e_effects.rs => primitive_effects_test.rs} | 0 ...e_licm_eval.rs => range_licm_eval_test.rs} | 0 .../jit/opt/tests/{types.rs => types_test.rs} | 0 .../src/emacs_core/runtime/jit/reopt.rs | 2 +- .../{end_to_end.rs => end_to_end_test.rs} | 0 ...teger.rs => arith_generic_integer_test.rs} | 0 .../{array_shims.rs => array_shims_test.rs} | 0 ...call_feedback.rs => call_feedback_test.rs} | 0 .../{cold_exits.rs => cold_exits_test.rs} | 0 ...e_pipeline.rs => compile_pipeline_test.rs} | 0 .../jit/tests/{compile.rs => compile_test.rs} | 0 ...l_framed.rs => direct_call_framed_test.rs} | 0 ...l_memory.rs => direct_call_memory_test.rs} | 0 ...ges.rs => direct_call_shape_edges_test.rs} | 0 ...ty.rs => direct_call_shape_parity_test.rs} | 2 +- ...l_shapes.rs => direct_call_shapes_test.rs} | 0 .../{direct_call.rs => direct_call_test.rs} | 8 +- ..._self_heat.rs => direct_self_heat_test.rs} | 0 ...f_kernel.rs => direct_self_kernel_test.rs} | 0 .../{direct_self.rs => direct_self_test.rs} | 4 +- ..._prefilter.rs => eq_swp_prefilter_test.rs} | 0 ...parisons.rs => fixnum_comparisons_test.rs} | 0 ...fixnum_ranges.rs => fixnum_ranges_test.rs} | 0 .../{flonum_slots.rs => flonum_slots_test.rs} | 0 ...=> gen0_observed_blv_cold_capture_test.rs} | 0 ...gen0_observed_collection_revision_test.rs} | 0 ....rs => gen0_observed_multi_unbind_test.rs} | 0 ... gen0_tracked_collection_revision_test.rs} | 0 ...in_deopt.rs => inline_chain_deopt_test.rs} | 0 ...line_closure.rs => inline_closure_test.rs} | 0 ...ry_cache.rs => inline_entry_cache_test.rs} | 0 ...> inline_heap_collection_revision_test.rs} | 0 ...ine_heap_gen0_collection_revision_test.rs} | 0 ...al.rs => inline_heap_generational_test.rs} | 12 +- ...ne_heap_ops.rs => inline_heap_ops_test.rs} | 0 ...aptures.rs => inline_hof_captures_test.rs} | 0 ..._headers.rs => inline_hof_headers_test.rs} | 0 ...licy.rs => inline_hof_heap_policy_test.rs} | 0 ...of_length.rs => inline_hof_length_test.rs} | 0 ..._runtime.rs => inline_hof_runtime_test.rs} | 0 ...ed_front.rs => inline_named_front_test.rs} | 0 ...untime.rs => inline_named_runtime_test.rs} | 0 ...ne_regalloc.rs => inline_regalloc_test.rs} | 0 .../jit/tests/{inline.rs => inline_test.rs} | 0 ...2_closure.rs => inline_v2_closure_test.rs} | 0 ...inline_v2_hof.rs => inline_v2_hof_test.rs} | 0 .../tests/{inline_v2.rs => inline_v2_test.rs} | 0 .../{inline_vars.rs => inline_vars_test.rs} | 0 .../{intrinsics.rs => intrinsics_test.rs} | 0 .../{leaf_calls.rs => leaf_calls_test.rs} | 0 .../tests/{mir_calls.rs => mir_calls_test.rs} | 0 ...r_cons_deopt.rs => mir_cons_deopt_test.rs} | 0 ...ne_guards.rs => mir_inline_guards_test.rs} | 0 ...af_effects.rs => mir_leaf_effects_test.rs} | 0 ...named_calls.rs => mir_named_calls_test.rs} | 0 ...r_reach_dead.rs => mir_reach_dead_test.rs} | 0 ..._detach.rs => native_frame_detach_test.rs} | 0 ...observability.rs => observability_test.rs} | 0 .../tests/{opt_lower.rs => opt_lower_test.rs} | 0 .../{osr_bindings.rs => osr_bindings_test.rs} | 0 ...try_guards.rs => osr_entry_guards_test.rs} | 0 .../tests/{osr_poll.rs => osr_poll_test.rs} | 0 .../jit/tests/{osr_raw.rs => osr_raw_test.rs} | 0 ...branches.rs => predicate_branches_test.rs} | 0 ...shared_module.rs => shared_module_test.rs} | 0 .../{source_slots.rs => source_slots_test.rs} | 0 .../{spec_frames.rs => spec_frames_test.rs} | 0 .../tests/{spec_gate.rs => spec_gate_test.rs} | 0 ..._rest_calls.rs => spec_rest_calls_test.rs} | 0 .../{stack_guard.rs => stack_guard_test.rs} | 0 ...ty.rs => string_observed_capacity_test.rs} | 0 ...ch_dispatch.rs => switch_dispatch_test.rs} | 0 ...switch_inline.rs => switch_inline_test.rs} | 0 .../{tail_calls.rs => tail_calls_test.rs} | 0 ...varref_inline.rs => varref_inline_test.rs} | 0 .../src/emacs_core/runtime/jit/vframe.rs | 2 +- .../src/emacs_core/runtime/owned_roots/mod.rs | 44 +- .../owned_roots/tests/owned_roots_test.rs | 40 ++ .../emacs_core/runtime/pdump/charset_image.rs | 2 +- .../{mule_order.rs => mule_order_test.rs} | 0 .../src/emacs_core/runtime/pdump/mod.rs | 2 +- .../{bool_vectors.rs => bool_vectors_test.rs} | 0 ...jects.rs => bytecode_slot_objects_test.rs} | 0 ..._hardening.rs => decode_hardening_test.rs} | 0 .../pdump/tests/{mod.rs => pdump_test.rs} | 3 + .../src/emacs_core/runtime/plist/mod.rs | 2 +- ..._capture.rs => collection_capture_test.rs} | 0 .../runtime/runtime_identity/mod.rs | 2 +- .../{mod.rs => runtime_identity_test.rs} | 0 .../src/emacs_core/runtime/symbol/mod.rs | 8 +- ...ad.rs => buffer_local_global_read_test.rs} | 0 .../tests/{fn_stamps.rs => fn_stamps_test.rs} | 0 ...ression.rs => function_regression_test.rs} | 0 .../{jit_layout.rs => jit_layout_test.rs} | 0 ...regression.rs => plist_regression_test.rs} | 0 ...ression.rs => redirect_regression_test.rs} | 0 .../symbol/tests/{mod.rs => symbol_test.rs} | 0 .../src/emacs_core/runtime/threads/mod.rs | 2 +- .../threads/tests/{mod.rs => threads_test.rs} | 0 .../src/emacs_core/runtime/value/mod.rs | 10 +- ...de_capture.rs => bytecode_capture_test.rs} | 0 ...lookup_gnu.rs => equal_lookup_gnu_test.rs} | 0 ...n.rs => gc_generational_hydration_test.rs} | 0 .../{hash_probe.rs => hash_probe_test.rs} | 0 ...uard.rs => heap_mut_closure_guard_test.rs} | 0 ...le_lookup.rs => jump_table_lookup_test.rs} | 0 ...ta_capture.rs => metadata_capture_test.rs} | 0 .../value/tests/{mod.rs => value_test.rs} | 3 + .../emacs_core/runtime/value_reader/mod.rs | 2 +- .../tests/{mod.rs => value_reader_test.rs} | 0 .../src/emacs_core/system/callproc/mod.rs | 6 +- .../src/emacs_core/system/callproc/spawn.rs | 2 +- .../tests/{raw_bytes.rs => raw_bytes_test.rs} | 0 .../{read_coding.rs => read_coding_test.rs} | 0 .../tests/{spawn.rs => spawn_test.rs} | 0 ...r_infile.rs => working_dir_infile_test.rs} | 0 .../dbusbind/tests/{call.rs => call_test.rs} | 3 +- .../{connection.rs => connection_test.rs} | 4 +- .../emacs_core/system/dbusbind/tests/mod.rs | 5 + .../tests/{signal.rs => signal_test.rs} | 3 +- .../tests/{surface.rs => surface_test.rs} | 0 .../tests/{types.rs => types_test.rs} | 10 +- .../emacs_core/system/dynamic_module/mod.rs | 2 +- ..._ownership.rs => gc_tls_ownership_test.rs} | 0 .../src/emacs_core/system/fileio/mod.rs | 4 +- .../fileio/tests/{mod.rs => fileio_test.rs} | 2 + .../fileio/tests/{fix8.rs => fix8_test.rs} | 0 .../src/emacs_core/system/filelock/mod.rs | 2 +- .../tests/{mod.rs => filelock_test.rs} | 0 .../src/emacs_core/system/network/mod.rs | 2 +- .../network/tests/{mod.rs => network_test.rs} | 0 .../src/emacs_core/system/os_signal/mod.rs | 2 +- .../tests/{mod.rs => os_signal_test.rs} | 0 .../src/emacs_core/system/path_exec/mod.rs | 2 +- .../tests/{mod.rs => path_exec_test.rs} | 0 .../tests/{surface.rs => surface_test.rs} | 0 .../emacs_core/system/post_image_init/mod.rs | 2 +- .../tests/{mod.rs => post_image_init_test.rs} | 0 .../src/emacs_core/system/process/mod.rs | 4 +- .../process/tests/{mod.rs => process_test.rs} | 0 .../tests/{raw_bytes.rs => raw_bytes_test.rs} | 0 .../emacs_core/system/shell_file_name/mod.rs | 2 +- .../tests/{mod.rs => shell_file_name_test.rs} | 0 .../src/emacs_core/system/sqlite/mod.rs | 4 +- .../tests/{disabled.rs => disabled_test.rs} | 0 .../tests/{enabled.rs => enabled_test.rs} | 0 .../src/emacs_core/system/timefns/mod.rs | 2 +- .../timefns/tests/{mod.rs => timefns_test.rs} | 0 .../src/emacs_core/system/timer/mod.rs | 2 +- .../timer/tests/{mod.rs => timer_test.rs} | 0 .../tls/tests/{runtime.rs => runtime_test.rs} | 0 .../{layout.rs => layout_test.rs} | 0 ..._guard.rs => runtime_string_guard_test.rs} | 0 ...ol_id_guard.rs => symbol_id_guard_test.rs} | 0 ...smute_guard.rs => transmute_guard_test.rs} | 0 ...main_rule.rs => compile_main_rule_test.rs} | 0 ...nerated_lisp.rs => generated_lisp_test.rs} | 0 .../tests/compat_regressions/mod.rs | 2 +- .../{mod.rs => compat_regressions_test.rs} | 0 ...fvar_special.rs => defvar_special_test.rs} | 0 .../gnu_surface/{subr.rs => subr_test.rs} | 0 .../src/emacs_core/text/boolvec/mod.rs | 2 +- .../boolvec/tests/{mod.rs => boolvec_test.rs} | 0 .../src/emacs_core/text/casefiddle/mod.rs | 2 +- .../tests/{mod.rs => casefiddle_test.rs} | 0 .../src/emacs_core/text/casetab/mod.rs | 4 +- .../casetab/tests/{mod.rs => casetab_test.rs} | 0 ..._ownership.rs => gc_tls_ownership_test.rs} | 0 .../src/emacs_core/text/category/mod.rs | 4 +- .../tests/{mod.rs => category_test.rs} | 0 ..._ownership.rs => gc_tls_ownership_test.rs} | 0 .../neovm-core/src/emacs_core/text/ccl/mod.rs | 4 +- .../text/ccl/tests/{mod.rs => ccl_test.rs} | 0 ..._ownership.rs => gc_tls_ownership_test.rs} | 0 .../src/emacs_core/text/charset/mod.rs | 4 +- .../charset/tests/{mod.rs => charset_test.rs} | 2 + ..._ownership.rs => gc_tls_ownership_test.rs} | 0 ...mule_identity.rs => mule_identity_test.rs} | 0 ...prepared_mule.rs => prepared_mule_test.rs} | 0 .../src/emacs_core/text/chartable/mod.rs | 4 +- .../tests/{mod.rs => chartable_test.rs} | 0 ...e.rs => collection_lookup_capture_test.rs} | 0 .../src/emacs_core/text/coding/mod.rs | 2 +- .../coding/tests/{mod.rs => coding_test.rs} | 0 .../src/emacs_core/text/composite/mod.rs | 2 +- .../tests/{mod.rs => composite_test.rs} | 0 .../src/emacs_core/text/emacs_char/mod.rs | 2 +- .../tests/{mod.rs => emacs_char_test.rs} | 1 + ...te_gnu.rs => str_as_multibyte_gnu_test.rs} | 0 .../src/emacs_core/text/format/mod.rs | 2 +- .../format/tests/{mod.rs => format_test.rs} | 0 .../src/emacs_core/text/json/mod.rs | 2 +- .../text/json/tests/{mod.rs => json_test.rs} | 0 .../src/emacs_core/text/regex/dfa.rs | 2 +- .../src/emacs_core/text/regex/emacs.rs | 14 +- .../src/emacs_core/text/regex/mod.rs | 10 +- ...casefold_scan.rs => casefold_scan_test.rs} | 0 .../text/regex/tests/{dfa.rs => dfa_test.rs} | 0 .../regex/tests/{emacs.rs => emacs_test.rs} | 0 ...ck_parity.rs => fail_stack_parity_test.rs} | 0 ...r.rs => gc_collection_epoch_minor_test.rs} | 0 ...n_epoch.rs => gc_collection_epoch_test.rs} | 0 ...eral_epoch.rs => gc_literal_epoch_test.rs} | 0 ..._ownership.rs => gc_tls_ownership_test.rs} | 0 ...opcode_decode.rs => opcode_decode_test.rs} | 0 .../regex/tests/{mod.rs => regex_test.rs} | 0 ...short_literal.rs => short_literal_test.rs} | 0 .../{start_anchor.rs => start_anchor_test.rs} | 0 ...ffix_literal.rs => suffix_literal_test.rs} | 0 .../src/emacs_core/text/search/mod.rs | 2 +- .../search/tests/{mod.rs => search_test.rs} | 0 .../src/emacs_core/text/string_escape/mod.rs | 2 +- .../tests/{mod.rs => string_escape_test.rs} | 0 .../emacs_core/text/string_pos_cache/mod.rs | 8 +- ...r.rs => gc_collection_epoch_minor_test.rs} | 0 ...n_epoch.rs => gc_collection_epoch_test.rs} | 0 ..._ownership.rs => gc_tls_ownership_test.rs} | 0 .../{mod.rs => string_pos_cache_test.rs} | 0 .../src/emacs_core/text/syntax/mod.rs | 16 +- .../src/emacs_core/text/syntax/parse_cache.rs | 6 +- .../src/emacs_core/text/syntax/parse_loop.rs | 2 +- .../emacs_core/text/syntax/pps_propertize.rs | 2 +- ...ical.rs => back_comment_canonical_test.rs} | 0 ...rs => back_comment_safe_positions_test.rs} | 0 ..._property.rs => category_property_test.rs} | 0 ..._ownership.rs => gc_tls_ownership_test.rs} | 0 ...word_motion.rs => gdn_word_motion_test.rs} | 0 ...ssion.rs => gnu_parity_regression_test.rs} | 0 ...on.rs => parse_cache_invalidation_test.rs} | 0 .../{parse_cache.rs => parse_cache_test.rs} | 0 ...op_resume.rs => parse_loop_resume_test.rs} | 0 ....rs => parse_state_divergence_gnu_test.rs} | 0 ...tize_gnu.rs => pps_propertize_gnu_test.rs} | 0 ...ze_knob.rs => pps_propertize_knob_test.rs} | 0 ...ata_gnu.rs => scan_error_data_gnu_test.rs} | 0 ...classes.rs => skip_syntax_classes_test.rs} | 0 ...te_run.rs => syntax_prop_byte_run_test.rs} | 0 .../syntax/tests/{mod.rs => syntax_test.rs} | 1 + .../src/emacs_core/text/textprop/mod.rs | 2 +- .../tests/{mod.rs => textprop_test.rs} | 0 .../src/emacs_core/text/treesit/mod.rs | 2 +- .../treesit/tests/{mod.rs => treesit_test.rs} | 0 .../neovm-core/src/emacs_core/text/xml/mod.rs | 2 +- .../text/xml/tests/{mod.rs => xml_test.rs} | 0 crates/neovm-core/src/encoding.rs | 1 + .../tests/{mod.rs => encoding_test.rs} | 1 + ...prepared_mule.rs => prepared_mule_test.rs} | 0 crates/neovm-core/src/face.rs | 1 + .../src/face/tests/{mod.rs => face_test.rs} | 0 crates/neovm-core/src/image_identity.rs | 1 + .../tests/{mod.rs => image_identity_test.rs} | 0 crates/neovm-core/src/keyboard.rs | 1 + .../src/keyboard/display_service.rs | 48 +- .../keyboard/tests/display_service_test.rs | 44 ++ .../tests/{mod.rs => keyboard_test.rs} | 0 crates/neovm-core/src/lib.rs | 2 +- .../neovm-core/src/tagged/collection_reads.rs | 11 +- .../collection_reads_test.rs} | 1 + .../{fast_paths.rs => fast_paths_test.rs} | 0 .../{lazy_window.rs => lazy_window_test.rs} | 0 ...lisions.rs => observed_collisions_test.rs} | 0 ...served_epoch.rs => observed_epoch_test.rs} | 0 .../{observed_gap.rs => observed_gap_test.rs} | 0 crates/neovm-core/src/tagged/gc.rs | 56 +-- .../neovm-core/src/tagged/gc/arena_pages.rs | 2 +- crates/neovm-core/src/tagged/gc/chunk_map.rs | 2 +- .../src/tagged/gc/collection_observed.rs | 4 +- .../src/tagged/gc/cons_block_trailer.rs | 2 +- .../neovm-core/src/tagged/gc/cons_blocks.rs | 2 +- crates/neovm-core/src/tagged/gc/gc_thread.rs | 2 +- .../src/tagged/gc/memory_inventory.rs | 2 +- .../src/tagged/gc/memory_telemetry.rs | 2 +- ...c_region_tests.rs => alloc_region_test.rs} | 0 ...ena_minor_tests.rs => arena_minor_test.rs} | 0 ...otion_tests.rs => arena_promotion_test.rs} | 0 ...rs => barrier_window_generational_test.rs} | 0 ...window_tests.rs => barrier_window_test.rs} | 0 ...um_arena_tests.rs => bignum_arena_test.rs} | 0 ...birth_logs_tests.rs => birth_logs_test.rs} | 0 ..._arena_tests.rs => bytecode_arena_test.rs} | 0 .../tests/{census_tests.rs => census_test.rs} | 0 ...de_tests.rs => chunk_entry_decode_test.rs} | 0 .../{chunk_map_tests.rs => chunk_map_test.rs} | 0 ...s => collection_observed_registry_test.rs} | 0 ...d_tests.rs => collection_observed_test.rs} | 0 ...sts.rs => concurrent_major_worker_test.rs} | 0 ...cons_alloc_tests.rs => cons_alloc_test.rs} | 0 ...cons_minor_tests.rs => cons_minor_test.rs} | 0 ..._trailer_tests.rs => cons_trailer_test.rs} | 0 ...oat_arena_tests.rs => float_arena_test.rs} | 0 ...generation_tests.rs => generation_test.rs} | 0 ...or_tests.rs => generational_major_test.rs} | 0 ...g_tests.rs => generational_pacing_test.rs} | 0 ...rational_tests.rs => generational_test.rs} | 0 ...tests.rs => generational_verifier_test.rs} | 0 ...sure_tests.rs => heap_mut_closure_test.rs} | 0 ...na_tests.rs => lambda_macro_arena_test.rs} | 0 ...ut_stats_tests.rs => layout_stats_test.rs} | 0 ...tests.rs => major_symbol_preimage_test.rs} | 0 ...er_arena_tests.rs => marker_arena_test.rs} | 0 ...tory_tests.rs => memory_inventory_test.rs} | 0 ...etry_tests.rs => memory_telemetry_test.rs} | 0 .../{ownership_tests.rs => ownership_test.rs} | 0 .../tests/{pacer_tests.rs => pacer_test.rs} | 0 ...rd_arena_tests.rs => record_arena_test.rs} | 0 ...slot_store_tests.rs => slot_store_test.rs} | 0 ...arrier_tests.rs => symbol_barrier_test.rs} | 0 ...tests.rs => symbol_with_pos_arena_test.rs} | 0 ...ship.rs => thread_local_ownership_test.rs} | 0 .../{vec_scan_tests.rs => vec_scan_test.rs} | 0 crates/neovm-core/src/tagged/mod.rs | 1 + crates/neovm-core/src/tagged/mutate.rs | 2 +- crates/neovm-core/src/tagged/symbol_marks.rs | 1 + .../tests/{mod.rs => symbol_marks_test.rs} | 0 .../tagged/{tests.rs => tests/tagged_test.rs} | 1 + .../{write_fusion.rs => write_fusion_test.rs} | 0 crates/neovm-core/src/tagged/value.rs | 2 +- ..._ownership.rs => gc_tls_ownership_test.rs} | 0 .../{test_utils.rs => test_utils_test.rs} | 0 crates/neovm-core/src/window/frame_alpha.rs | 2 +- .../tests/{mod.rs => frame_alpha_test.rs} | 0 crates/neovm-core/src/window/mod.rs | 1 + ...hook_epoch.rs => split_hook_epoch_test.rs} | 0 .../window/tests/{mod.rs => window_test.rs} | 2 + crates/xtask/src/tests/window_icon_test.rs | 58 +++ crates/xtask/src/window_icon.rs | 63 +-- 1255 files changed, 3479 insertions(+), 3183 deletions(-) rename crates/neomacs-diagnostics/src/flamegraph/tests/{mod.rs => flamegraph_test.rs} (100%) rename crates/neomacs-diagnostics/src/metrics/tests/{mod.rs => metrics_test.rs} (100%) rename crates/neomacs-diagnostics/src/pprof/tests/{mod.rs => pprof_test.rs} (100%) rename crates/neomacs-diagnostics/src/report/tests/{mod.rs => report_test.rs} (100%) rename crates/neomacs-diagnostics/src/server/tests/{mod.rs => server_test.rs} (100%) rename crates/neomacs-display-protocol/src/child_frame_animation/tests/{mod.rs => child_frame_animation_test.rs} (100%) rename crates/neomacs-display-protocol/src/display_identity/tests/{mod.rs => display_identity_test.rs} (100%) rename crates/neomacs-display-protocol/src/effect_config/tests/{mod.rs => effect_config_test.rs} (100%) rename crates/neomacs-display-protocol/src/face/tests/{mod.rs => face_test.rs} (100%) rename crates/neomacs-display-protocol/src/font/tests/{mod.rs => font_test.rs} (100%) rename crates/neomacs-display-protocol/src/frame_chrome/tests/{mod.rs => frame_chrome_test.rs} (100%) rename crates/neomacs-display-protocol/src/frame_glyphs/tests/{mod.rs => frame_glyphs_test.rs} (100%) rename crates/neomacs-display-protocol/src/frame_time/tests/{mod.rs => frame_time_test.rs} (100%) rename crates/neomacs-display-protocol/src/geometry/tests/{mod.rs => geometry_test.rs} (100%) rename crates/neomacs-display-protocol/src/glyph_matrix/tests/{mod.rs => glyph_matrix_test.rs} (99%) rename crates/neomacs-display-protocol/src/glyph_matrix/text_geometry/tests/{mod.rs => text_geometry_test.rs} (100%) rename crates/neomacs-display-protocol/src/interaction_projection/tests/{mod.rs => interaction_projection_test.rs} (100%) rename crates/neomacs-display-protocol/src/motion_spec/tests/{mod.rs => motion_spec_test.rs} (100%) rename crates/neomacs-display-protocol/src/popup_placement/tests/{mod.rs => popup_placement_test.rs} (100%) rename crates/neomacs-display-protocol/src/present_mapping/tests/{mod.rs => present_mapping_test.rs} (100%) rename crates/neomacs-display-protocol/src/presentation_origin/tests/{mod.rs => presentation_origin_test.rs} (100%) rename crates/neomacs-display-protocol/src/presented_frame/tests/{mod.rs => presented_frame_test.rs} (100%) rename crates/neomacs-display-protocol/src/presented_pointer/tests/{mod.rs => presented_pointer_test.rs} (100%) create mode 100644 crates/neomacs-display-protocol/src/presented_pointer/tests/scroll_test.rs rename crates/neomacs-display-protocol/src/scene/tests/{mod.rs => scene_test.rs} (100%) rename crates/neomacs-display-protocol/src/scroll_animation/tests/{mod.rs => scroll_animation_test.rs} (100%) rename crates/neomacs-display-protocol/src/sealed_frame_presentation/tests/{mod.rs => sealed_frame_presentation_test.rs} (100%) rename crates/neomacs-display-protocol/src/snapshot_text/tests/{mod.rs => snapshot_text_test.rs} (100%) rename crates/neomacs-display-protocol/src/terminal_color/tests/{mod.rs => terminal_color_test.rs} (100%) create mode 100644 crates/neomacs-display-protocol/src/tests/input_latency_test.rs create mode 100644 crates/neomacs-display-protocol/src/tests/input_progress_test.rs rename crates/neomacs-display-protocol/src/toolbar_icon/tests/{mod.rs => toolbar_icon_test.rs} (100%) rename crates/neomacs-display-protocol/src/tooltip/lifetime/tests/{mod.rs => lifetime_test.rs} (100%) rename crates/neomacs-display-protocol/src/transition_policy/tests/{mod.rs => transition_policy_test.rs} (100%) rename crates/neomacs-display-protocol/src/tty_palette/tests/{mod.rs => tty_palette_test.rs} (100%) rename crates/neomacs-display-protocol/src/types/tests/{mod.rs => types_test.rs} (100%) rename crates/neomacs-display-protocol/src/window_animation/tests/{mod.rs => window_animation_test.rs} (100%) rename crates/neomacs-display-protocol/src/window_chrome/tests/{mod.rs => window_chrome_test.rs} (100%) rename crates/neomacs-display-protocol/src/xterm_palette/tests/{mod.rs => xterm_palette_test.rs} (100%) rename crates/neomacs-display-protocol/src/xwidget_extent/tests/{mod.rs => xwidget_extent_test.rs} (100%) rename crates/neomacs-display-runtime/src/backend/tty/rif/tests/{mod.rs => rif_test.rs} (100%) rename crates/neomacs-display-runtime/src/backend/wgpu/animation/tests/{mod.rs => animation_test.rs} (100%) rename crates/neomacs-display-runtime/src/backend/wgpu/drm_device/tests/{mod.rs => drm_device_test.rs} (100%) rename crates/neomacs-display-runtime/src/backend/wgpu/events/tests/{mod.rs => events_test.rs} (100%) rename crates/neomacs-display-runtime/src/display_scale/tests/{mod.rs => display_scale_test.rs} (100%) rename crates/neomacs-display-runtime/src/macos_bundle_runtime/tests/{mod.rs => macos_bundle_runtime_test.rs} (100%) rename crates/neomacs-display-runtime/src/menus/controller/tests/{mod.rs => controller_test.rs} (100%) rename crates/neomacs-display-runtime/src/menus/help/tests/{mod.rs => help_test.rs} (100%) rename crates/neomacs-display-runtime/src/menus/session/tests/{mod.rs => session_test.rs} (100%) rename crates/neomacs-display-runtime/src/presentation/retirement/tests/{mod.rs => retirement_test.rs} (100%) create mode 100644 crates/neomacs-display-runtime/src/presentation/tests/pacing_test.rs create mode 100644 crates/neomacs-display-runtime/src/presentation_feedback/tests/wayland_test.rs create mode 100644 crates/neomacs-display-runtime/src/redisplay/tests/maintenance_test.rs rename crates/neomacs-display-runtime/src/render_thread/child_frames/tests/{mod.rs => child_frames_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/cursor/tests/{mod.rs => cursor_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/device_loss/tests/{mod.rs => device_loss_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/pane_layout/tests/{mod.rs => pane_layout_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/reflow/tests/{mod.rs => reflow_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/scroll/tests/{mod.rs => scroll_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/selection/tests/{mod.rs => selection_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/theme/tests/{mod.rs => theme_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/frame_compositor/input_scroll/{tests.rs => tests/input_scroll_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/frame_compositor/layout_continuity/tests/{mod.rs => layout_continuity_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/frame_compositor/layout_driver/tests/{mod.rs => layout_driver_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/frame_compositor/motion/tests/{mod.rs => motion_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/frame_ingest/tests/{mod.rs => frame_ingest_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/frame_state/tests/{mod.rs => frame_state_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/frame_windows/tests/{mod.rs => frame_windows_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/input/tests/{mod.rs => input_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/modifier_sides/{tests.rs => tests/modifier_sides_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/render_pass/composition_targets/tests/{mod.rs => composition_targets_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/render_pass/retained_scroll/{tests.rs => tests/retained_scroll_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/render_pass/retained_static/tests/{mod.rs => retained_static_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/render_pass/scene/{native_boundary_tests.rs => tests/native_boundary_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/render_pass/scene/{pane_size_boundary_tests.rs => tests/pane_size_boundary_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/render_pass/scene/{pinned_lifecycle_tests.rs => tests/pinned_lifecycle_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/render_pass/scene/{retained_owner_tests.rs => tests/retained_owner_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/render_pass/scene/{tests.rs => tests/scene_test.rs} (99%) rename crates/neomacs-display-runtime/src/render_thread/render_pass/tests/{mod.rs => render_pass_test.rs} (100%) create mode 100644 crates/neomacs-display-runtime/src/render_thread/render_pass/tests/retained_scroll_geometry_test.rs rename crates/neomacs-display-runtime/src/render_thread/state/tests/{mod.rs => state_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/surface_readback/tests/{mod.rs => surface_readback_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/terminal_commands/tests/{mod.rs => terminal_commands_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/terminal_expansion/tests/{mod.rs => terminal_expansion_test.rs} (100%) create mode 100644 crates/neomacs-display-runtime/src/render_thread/tests/pointer_events_webview_test.rs rename crates/neomacs-display-runtime/src/render_thread/{tests.rs => tests/render_thread_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/thread_handle/tests/{mod.rs => thread_handle_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/toolbar/tests/{mod.rs => toolbar_test.rs} (100%) rename crates/neomacs-display-runtime/src/render_thread/transitions/tests/{mod.rs => transitions_test.rs} (100%) rename crates/neomacs-display-runtime/src/terminal/colors/tests/{mod.rs => colors_test.rs} (100%) rename crates/neomacs-display-runtime/src/terminal/content/tests/{mod.rs => content_test.rs} (100%) rename crates/neomacs-display-runtime/src/terminal/view/tests/{mod.rs => view_test.rs} (100%) create mode 100644 crates/neomacs-display-runtime/src/tests/window_icon_test.rs create mode 100644 crates/neomacs-display-runtime/src/tests/window_identity_test.rs rename crates/neomacs-display-runtime/src/thread_comm/frame_opacity/tests/{mod.rs => frame_opacity_test.rs} (100%) rename crates/neomacs-display-runtime/src/thread_comm/tests/{mod.rs => thread_comm_test.rs} (100%) rename crates/neomacs-font-materializer/src/fontdb/tests/{mod.rs => fontdb_test.rs} (100%) rename crates/neomacs-layout-engine/src/bidi/reorder/tests/{mod.rs => reorder_test.rs} (100%) rename crates/neomacs-layout-engine/src/bidi/resolver/tests/{mod.rs => resolver_test.rs} (100%) rename crates/neomacs-layout-engine/src/bidi/tables/tests/{mod.rs => tables_test.rs} (100%) rename crates/neomacs-layout-engine/src/bidi/types/tests/{mod.rs => types_test.rs} (100%) rename crates/neomacs-layout-engine/src/buffer_source/body_render/tests/{mini_row_storage.rs => mini_row_storage_test.rs} (100%) rename crates/neomacs-layout-engine/src/buffer_source/end_of_buffer_rows/tests/{mod.rs => end_of_buffer_rows_test.rs} (100%) rename crates/neomacs-layout-engine/src/buffer_source/fringe_arrows/tests/{mod.rs => fringe_arrows_test.rs} (100%) rename crates/neomacs-layout-engine/src/buffer_source/producer/tests/{mod.rs => producer_test.rs} (100%) rename crates/neomacs-layout-engine/src/buffer_source/producer/vocabulary/tests/{mod.rs => vocabulary_test.rs} (100%) rename crates/neomacs-layout-engine/src/buffer_source/row_route/tests/{mod.rs => row_route_test.rs} (100%) create mode 100644 crates/neomacs-layout-engine/src/buffer_source/tests/owned_capture_test.rs rename crates/neomacs-layout-engine/src/buffer_source/tests/{property_keys_budget_support.rs => property_keys_budget_support_test.rs} (100%) rename crates/neomacs-layout-engine/src/buffer_source/tests/{source_budget_default_policy.rs => source_budget_default_policy_test.rs} (100%) rename crates/neomacs-layout-engine/src/buffer_source/tests/{source_budget_policy_aliases.rs => source_budget_policy_aliases_test.rs} (100%) rename crates/neomacs-layout-engine/src/buffer_source/tests/{window_source_tests.rs => window_source_test.rs} (100%) rename crates/neomacs-layout-engine/src/buffer_source/window_geometry/tests/{mod.rs => window_geometry_test.rs} (100%) rename crates/neomacs-layout-engine/src/buffer_source/window_source/tests/{mod.rs => window_source_test.rs} (100%) rename crates/neomacs-layout-engine/src/composition/tests/{mod.rs => composition_test.rs} (100%) rename crates/neomacs-layout-engine/src/display_face_layout/tests/{mod.rs => display_face_layout_test.rs} (100%) rename crates/neomacs-layout-engine/src/display_frame_output/tests/{mod.rs => display_frame_output_test.rs} (100%) rename crates/neomacs-layout-engine/src/display_item/tests/{mod.rs => display_item_test.rs} (100%) rename crates/neomacs-layout-engine/src/display_pixel_calc/tests/{mod.rs => display_pixel_calc_test.rs} (100%) rename crates/neomacs-layout-engine/src/display_property/tests/{mod.rs => display_property_test.rs} (100%) rename crates/neomacs-layout-engine/src/display_row/builder/tests/{mod.rs => builder_test.rs} (100%) rename crates/neomacs-layout-engine/src/display_row/finalizer/tests/{mod.rs => finalizer_test.rs} (100%) rename crates/neomacs-layout-engine/src/display_row/geometry/tests/{mod.rs => geometry_test.rs} (100%) rename crates/neomacs-layout-engine/src/display_row/source_append/tests/{mod.rs => source_append_test.rs} (100%) rename crates/neomacs-layout-engine/src/display_row/source_render/tests/{mod.rs => source_render_test.rs} (100%) rename crates/neomacs-layout-engine/src/display_row/source_state/tests/{mod.rs => source_state_test.rs} (100%) rename crates/neomacs-layout-engine/src/display_row/{test.rs => tests/display_row_test.rs} (100%) rename crates/neomacs-layout-engine/src/display_row/trailing_whitespace/tests/{mod.rs => trailing_whitespace_test.rs} (100%) rename crates/neomacs-layout-engine/src/display_source/tests/{mod.rs => display_source_test.rs} (100%) rename crates/neomacs-layout-engine/src/display_source_overflow/tests/{mod.rs => display_source_overflow_test.rs} (100%) rename crates/neomacs-layout-engine/src/display_source_resolver/tests/{compiled_collection_mutation.rs => compiled_collection_mutation_test.rs} (100%) rename crates/neomacs-layout-engine/src/display_status_line/tests/{mod.rs => display_status_line_test.rs} (100%) rename crates/neomacs-layout-engine/src/display_when/tests/{mod.rs => display_when_test.rs} (100%) rename crates/neomacs-layout-engine/src/engine/tests/{edit_sync_source_budget_consumers.rs => edit_sync_source_budget_consumers_test.rs} (100%) rename crates/neomacs-layout-engine/src/engine/tests/{edit_sync_source_budget_replay_retry.rs => edit_sync_source_budget_replay_retry_test.rs} (100%) rename crates/neomacs-layout-engine/src/engine/tests/{mod.rs => engine_test.rs} (99%) rename crates/neomacs-layout-engine/src/engine/tests/{mini_scroll_sites.rs => mini_scroll_sites_test.rs} (100%) rename crates/neomacs-layout-engine/src/engine/tests/{mini_source_start.rs => mini_source_start_test.rs} (100%) rename crates/neomacs-layout-engine/src/engine/tests/{mini_source_stop.rs => mini_source_stop_test.rs} (100%) rename crates/neomacs-layout-engine/src/font/catalog/tests/{mod.rs => catalog_test.rs} (100%) rename crates/neomacs-layout-engine/src/font/font_match/tests/{mod.rs => font_match_test.rs} (100%) create mode 100644 crates/neomacs-layout-engine/src/font/fontconfig/tests/candidate_cache_test.rs rename crates/neomacs-layout-engine/src/font/fontconfig/tests/{mod.rs => fontconfig_test.rs} (100%) rename crates/neomacs-layout-engine/src/font/metrics/tests/{mod.rs => metrics_test.rs} (100%) rename crates/neomacs-layout-engine/src/font/policy/tests/{mod.rs => policy_test.rs} (100%) rename crates/neomacs-layout-engine/src/font/resolver/tests/{mod.rs => resolver_test.rs} (100%) create mode 100644 crates/neomacs-layout-engine/src/font/resolver/tests/worker_policy_cache_budget_test.rs rename crates/neomacs-layout-engine/src/font/sizing/tests/{mod.rs => sizing_test.rs} (100%) rename crates/neomacs-layout-engine/src/font_backend/native_asset_cache/tests/{mod.rs => native_asset_cache_test.rs} (100%) rename crates/neomacs-layout-engine/src/font_backend/windows/tests/{mod.rs => windows_test.rs} (100%) rename crates/neomacs-layout-engine/src/frame_face_arena/tests/{mod.rs => frame_face_arena_test.rs} (100%) rename crates/neomacs-layout-engine/src/frame_presentation/tests/{mod.rs => frame_presentation_test.rs} (100%) rename crates/neomacs-layout-engine/src/glyph_row_writer/{tests.rs => tests/glyph_row_writer_test.rs} (100%) rename crates/neomacs-layout-engine/src/gui_chrome/tests/{mod.rs => gui_chrome_test.rs} (100%) rename crates/neomacs-layout-engine/src/incremental_layout/tests/{edit_sync_default_policy.rs => edit_sync_default_policy_test.rs} (100%) rename crates/neomacs-layout-engine/src/incremental_layout/tests/{edit_sync_lazy_proof_policy_absence.rs => edit_sync_lazy_proof_policy_absence_test.rs} (100%) rename crates/neomacs-layout-engine/src/incremental_layout/tests/{edit_sync_lazy_proof_policy_aliases.rs => edit_sync_lazy_proof_policy_aliases_test.rs} (100%) rename crates/neomacs-layout-engine/src/incremental_layout/tests/{edit_sync_policy_aliases.rs => edit_sync_policy_aliases_test.rs} (100%) rename crates/neomacs-layout-engine/src/incremental_layout/tests/{mode_line_gate_default_policy.rs => mode_line_gate_default_policy_test.rs} (100%) rename crates/neomacs-layout-engine/src/incremental_layout/tests/{mode_line_gate_policy_aliases.rs => mode_line_gate_policy_aliases_test.rs} (100%) rename crates/neomacs-layout-engine/src/neovm_bridge/{ => tests}/line_count_test.rs (100%) rename crates/neomacs-layout-engine/src/neovm_bridge/tests/{mod.rs => neovm_bridge_test.rs} (100%) rename crates/neomacs-layout-engine/src/output/builder/tests/{mod.rs => builder_test.rs} (100%) rename crates/neomacs-layout-engine/src/output/window_state/tests/{mini_preparation.rs => mini_preparation_test.rs} (100%) rename crates/neomacs-layout-engine/src/output/window_state/tests/{mod.rs => window_state_test.rs} (100%) rename crates/neomacs-layout-engine/src/presentation/pointer/tests/{mod.rs => pointer_test.rs} (100%) rename crates/neomacs-layout-engine/src/presentation/presented_pointer_map/tests/{mod.rs => presented_pointer_map_test.rs} (100%) create mode 100644 crates/neomacs-layout-engine/src/row_layout/tests/font_measurement_test.rs create mode 100644 crates/neomacs-layout-engine/src/row_layout/tests/input_test.rs create mode 100644 crates/neomacs-layout-engine/src/row_layout/tests/mapped_input_test.rs create mode 100644 crates/neomacs-layout-engine/src/row_layout/tests/program_test.rs create mode 100644 crates/neomacs-layout-engine/src/row_layout/tests/spacing_input_test.rs create mode 100644 crates/neomacs-layout-engine/src/row_layout/tests/worker_test.rs rename crates/neomacs-layout-engine/src/scroll_policy/tests/{mod.rs => scroll_policy_test.rs} (100%) rename crates/neomacs-layout-engine/src/tty_menu_bar/tests/{mod.rs => tty_menu_bar_test.rs} (100%) rename crates/neomacs-layout-engine/src/types/tests/{mod.rs => types_test.rs} (100%) rename crates/neomacs-layout-engine/src/unicode/tests/{mod.rs => unicode_test.rs} (100%) rename crates/neomacs-layout-engine/src/window_output/row_geometry/{ => tests}/lookup_test.rs (100%) create mode 100644 crates/neomacs-layout-engine/src/window_output/tests/row_geometry_test.rs create mode 100644 crates/neomacs-layout-engine/src/window_output/tests/snapshot_rows_test.rs rename crates/neomacs-layout-engine/src/window_output/tests/{mod.rs => window_output_test.rs} (100%) rename crates/neomacs-perf/src/artifact/tests/{mod.rs => artifact_test.rs} (100%) rename crates/neomacs-perf/src/capture/tests/{mod.rs => capture_test.rs} (100%) rename crates/neomacs-perf/src/catalog/tests/{mod.rs => catalog_test.rs} (100%) rename crates/neomacs-perf/src/cli/tests/{mod.rs => cli_test.rs} (100%) rename crates/neomacs-perf/src/comparison/tests/{mod.rs => comparison_test.rs} (100%) rename crates/neomacs-perf/src/counters/tests/{mod.rs => counters_test.rs} (100%) rename crates/neomacs-perf/src/harness/scenarios/bounded_search/tests/{mod.rs => bounded_search_test.rs} (100%) rename crates/neomacs-perf/src/harness/scenarios/builtin_call/tests/{mod.rs => builtin_call_test.rs} (100%) rename crates/neomacs-perf/src/harness/scenarios/search_shape/tests/{mod.rs => search_shape_test.rs} (100%) rename crates/neomacs-perf/src/harness/scenarios/vm_loop/first_entry/tests/{mod.rs => first_entry_test.rs} (100%) rename crates/neomacs-perf/src/harness/scenarios/vm_loop/tests/{mod.rs => vm_loop_test.rs} (100%) rename crates/neomacs-perf/src/harness/tests/{mod.rs => harness_test.rs} (99%) rename crates/neomacs-perf/src/host/tests/{mod.rs => host_test.rs} (100%) rename crates/neomacs-perf/src/native_video/tests/{mod.rs => native_video_test.rs} (100%) rename crates/neomacs-perf/src/portable_dump/tests/{mod.rs => portable_dump_test.rs} (100%) rename crates/neomacs-perf/src/profile/tests/{mod.rs => profile_test.rs} (100%) rename crates/neomacs-perf/src/suite/tests/{mod.rs => suite_test.rs} (100%) create mode 100644 crates/neomacs-perf/src/tests/input_latency_test.rs rename crates/neomacs-renderer-wgpu/src/external_buffer/tests/{mod.rs => external_buffer_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/glyph_atlas/allocator/tests/{mod.rs => allocator_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/glyph_atlas/tests/{mod.rs => glyph_atlas_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/gpu_frame_timing/tests/{mod.rs => gpu_frame_timing_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/image_bands/{tests.rs => tests/image_bands_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/image_cache/tests/{decode_diagnostic.rs => decode_diagnostic_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/image_cache/tests/{mod.rs => image_cache_test.rs} (99%) rename crates/neomacs-renderer-wgpu/src/image_scale/{tests.rs => tests/image_scale_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/image_sequence/tests/{mod.rs => image_sequence_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/media_budget/tests/{mod.rs => media_budget_test.rs} (100%) create mode 100644 crates/neomacs-renderer-wgpu/src/native_presentation/tests/abi_test.rs create mode 100644 crates/neomacs-renderer-wgpu/src/native_presentation/tests/clock_test.rs create mode 100644 crates/neomacs-renderer-wgpu/src/native_presentation/tests/query_test.rs rename crates/neomacs-renderer-wgpu/src/renderer/composition_ring/tests/{mod.rs => composition_ring_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/renderer/content/tests/{mod.rs => content_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/renderer/cursor_effects/tests/{mod.rs => cursor_effects_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/renderer/cursor_presentation/tests/{mod.rs => cursor_presentation_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/renderer/deform/tests/{mod.rs => deform_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/renderer/effect_common/tests/{mod.rs => effect_common_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/renderer/effects_state/tests/{mod.rs => effects_state_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/renderer/glyphs/tests/{mod.rs => glyphs_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/renderer/gpu_budget/tests/{mod.rs => gpu_budget_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/renderer/layer_media/tests/{mod.rs => layer_media_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/renderer/layout_pass/tests/{mod.rs => layout_pass_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/renderer/pattern_effects/tests/{mod.rs => pattern_effects_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/renderer/pointer_override/tests/{mod.rs => pointer_override_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/renderer/row_reuse/tests/{mod.rs => row_reuse_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/renderer/snapshot_pool/tests/{mod.rs => snapshot_pool_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/renderer/transitions/tests/{mod.rs => transitions_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/renderer/ui_overlays/tests/{mod.rs => ui_overlays_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/renderer/window_effects/tests/{mod.rs => window_effects_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/shader_surface_cache/tests/{mod.rs => shader_surface_cache_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/tooltip_layout/tests/{mod.rs => tooltip_layout_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/vertex/tests/{mod.rs => vertex_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/video_cache/tests/{mod.rs => video_cache_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/vulkan_dmabuf/tests/{mod.rs => vulkan_dmabuf_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/xbm/tests/{mod.rs => xbm_test.rs} (100%) rename crates/neomacs-renderer-wgpu/src/xpm/tests/{mod.rs => xpm_test.rs} (100%) rename crates/neomacs-video/src/platform/linux/decoder/tests/{mod.rs => decoder_test.rs} (96%) rename crates/neomacs-video/src/platform/linux/dmabuf/tests/{mod.rs => dmabuf_test.rs} (100%) rename crates/neomacs-video/src/platform/linux/frame/tests/{mod.rs => frame_test.rs} (100%) rename crates/neomacs-webview/src/load_state/tests/{mod.rs => load_state_test.rs} (100%) rename crates/neomacs-webview/src/platform/linux/display/tests/{mod.rs => display_test.rs} (100%) rename crates/neomacs-webview/src/platform/linux/sys/tests/{mod.rs => sys_test.rs} (100%) rename crates/neomacs-webview/src/platform/macos/focus/tests/{mod.rs => focus_test.rs} (100%) rename crates/neomacs/src/bin/neomacsclient/tests/{alternate_editor_tests.rs => alternate_editor_test.rs} (100%) rename crates/neomacs/src/bin/neomacsclient/tests/{timeout_tests.rs => timeout_test.rs} (100%) rename crates/neomacs/src/bin/neomacsclient/tests/{transport_tests.rs => transport_test.rs} (100%) rename crates/neomacs/src/build_info/tests/{mod.rs => build_info_test.rs} (100%) rename crates/neomacs/src/daemon/tests/{mod.rs => daemon_test.rs} (100%) rename crates/neomacs/src/input_bridge/tests/{mod.rs => input_bridge_test.rs} (100%) rename crates/neomacs/src/tests/{frame_snapshot_policy.rs => frame_snapshot_policy_test.rs} (100%) create mode 100644 crates/neomacs/src/tests/tty_output_test.rs rename crates/neovm-core/src/buffer/buffer/tests/{mod.rs => buffer_test.rs} (99%) rename crates/neovm-core/src/buffer/buffer_text/tests/{mod.rs => buffer_text_test.rs} (99%) rename crates/neovm-core/src/buffer/edit_transaction/tests/{transpose_gnu.rs => transpose_gnu_test.rs} (100%) rename crates/neovm-core/src/buffer/gap_buffer/tests/{mod.rs => gap_buffer_test.rs} (100%) rename crates/neovm-core/src/buffer/overlay/tests/{mod.rs => overlay_test.rs} (100%) rename crates/neovm-core/src/buffer/overlay_index/tests/{local_move.rs => local_move_test.rs} (100%) rename crates/neovm-core/src/buffer/overlay_index/tests/{mod.rs => overlay_index_test.rs} (99%) rename crates/neovm-core/src/buffer/overlay_order/tests/{mod.rs => overlay_order_test.rs} (100%) create mode 100644 crates/neovm-core/src/buffer/tests/overlay_bplus_traversal_storage_test.rs rename crates/neovm-core/src/buffer/text/backend/{conformance.rs => tests/conformance_test.rs} (100%) rename crates/neovm-core/src/buffer/text_index/tests/{mod.rs => text_index_test.rs} (100%) rename crates/neovm-core/src/buffer/text_props/tests/{source_slice_graft.rs => source_slice_graft_test.rs} (100%) rename crates/neovm-core/src/buffer/text_props/tests/{mod.rs => text_props_test.rs} (99%) rename crates/neovm-core/src/buffer/text_props/tests/{watched_prop_demand_knob.rs => watched_prop_demand_knob_test.rs} (100%) rename crates/neovm-core/src/buffer/text_props/tests/{watched_prop_demand.rs => watched_prop_demand_test.rs} (100%) rename crates/neovm-core/src/buffer/undo/tests/{mod.rs => undo_test.rs} (100%) rename crates/neovm-core/src/display_evaluation/tests/{mod.rs => display_evaluation_test.rs} (100%) rename crates/neovm-core/src/emacs_core/commands/abbrev/tests/{mod.rs => abbrev_test.rs} (100%) rename crates/neovm-core/src/emacs_core/commands/interactive/tests/{mod.rs => interactive_test.rs} (100%) rename crates/neovm-core/src/emacs_core/commands/kbd/tests/{mod.rs => kbd_test.rs} (100%) rename crates/neovm-core/src/emacs_core/commands/keyboard/tests/{mod.rs => keyboard_test.rs} (100%) rename crates/neovm-core/src/emacs_core/commands/keyboard/tests/{pure.rs => pure_test.rs} (100%) rename crates/neovm-core/src/emacs_core/commands/keymap/tests/{mod.rs => keymap_test.rs} (100%) rename crates/neovm-core/src/emacs_core/commands/kmacro/tests/{mod.rs => kmacro_test.rs} (100%) rename crates/neovm-core/src/emacs_core/commands/minibuffer/tests/{compare_case_table.rs => compare_case_table_test.rs} (100%) rename crates/neovm-core/src/emacs_core/commands/minibuffer/tests/{mod.rs => minibuffer_test.rs} (99%) rename crates/neovm-core/src/emacs_core/commands/register/tests/{mod.rs => register_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/display/tests/{mod.rs => display_test.rs} (99%) rename crates/neovm-core/src/emacs_core/display/display/tests/{popup_idle_redisplay.rs => popup_idle_redisplay_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/display_host/tests/{display_host.rs => display_host_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/display_spec/tests/{mod.rs => display_spec_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/display_when/tests/{mod.rs => display_when_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/dispnew/tests/{mod.rs => dispnew_test.rs} (99%) rename crates/neovm-core/src/emacs_core/display/dispnew/tests/{explicit_redraw.rs => explicit_redraw_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/dispnew/tests/{idle_redraw.rs => idle_redraw_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/font/tests/{mod.rs => font_test.rs} (99%) rename crates/neovm-core/src/emacs_core/display/fontset/tests/{mod.rs => fontset_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/frame/tests/{selection.rs => selection_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/hscroll/tests/{mod.rs => hscroll_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/image/tests/{mod.rs => image_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/image_path/tests/{mod.rs => image_path_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/neo/modifiers/tests/{mod.rs => modifiers_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/neo/terminal/tests/{mod.rs => terminal_test.rs} (100%) create mode 100644 crates/neovm-core/src/emacs_core/display/neo/tests/scroll_test.rs rename crates/neovm-core/src/emacs_core/display/shader_surface/tests/{runtime.rs => runtime_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/terminal/tests/{gc_context_migration.rs => gc_context_migration_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/terminal/tests/{gc_heap_ownership.rs => gc_heap_ownership_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/terminal/tests/{idle_redisplay.rs => idle_redisplay_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/terminal/tests/{registry_reinstall.rs => registry_reinstall_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/terminal/tests/{mod.rs => terminal_test.rs} (99%) rename crates/neovm-core/src/emacs_core/display/video/tests/{runtime.rs => runtime_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/window_cmds/tests/{core_hook_defaults.rs => core_hook_defaults_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/window_cmds/tests/{core_hook_restore.rs => core_hook_restore_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/window_cmds/tests/{selection_chrome.rs => selection_chrome_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/window_cmds/tests/{mod.rs => window_cmds_test.rs} (99%) rename crates/neovm-core/src/emacs_core/display/window_cmds/tests/{window_system_preload.rs => window_system_preload_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/window_edge_drag/tests/{mod.rs => window_edge_drag_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/xdisp/motion/tests/{mod.rs => motion_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/xdisp/tests/{mode_line_flow.rs => mode_line_flow_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/xdisp/tests/{mode_line_gc_roots.rs => mode_line_gc_roots_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/xdisp/tests/{mode_line_incremental_lifetimes.rs => mode_line_incremental_lifetimes_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/xdisp/tests/{mode_line_incremental_roots.rs => mode_line_incremental_roots_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/xdisp/tests/{mode_line_live_spine.rs => mode_line_live_spine_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/xdisp/tests/{mode_line_multibyte_identity.rs => mode_line_multibyte_identity_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/xdisp/tests/{mode_line_outer_flow.rs => mode_line_outer_flow_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/xdisp/tests/{mode_line_outer_handlers.rs => mode_line_outer_handlers_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/xdisp/tests/{numeric_padding_default_policy.rs => numeric_padding_default_policy_test.rs} (100%) create mode 100644 crates/neovm-core/src/emacs_core/display/xdisp/tests/xdisp_row_edge_test.rs rename crates/neovm-core/src/emacs_core/display/xdisp/tests/{mod.rs => xdisp_test.rs} (99%) rename crates/neovm-core/src/emacs_core/display/xfaces/tests/{builtins.rs => builtins_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/xfaces/tests/{gc_tls_ownership.rs => gc_tls_ownership_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/xfaces/tests/{mod.rs => xfaces_test.rs} (100%) rename crates/neovm-core/src/emacs_core/display/xwidget/tests/{runtime.rs => runtime_test.rs} (100%) rename crates/neovm-core/src/emacs_core/editing/bookmark/tests/{mod.rs => bookmark_test.rs} (100%) rename crates/neovm-core/src/emacs_core/editing/buffer/tests/{mod.rs => buffer_test.rs} (99%) rename crates/neovm-core/src/emacs_core/editing/buffer/tests/{gdn_primitives.rs => gdn_primitives_test.rs} (100%) rename crates/neovm-core/src/emacs_core/editing/buffer/tests/{set_buffer_multibyte_gnu.rs => set_buffer_multibyte_gnu_test.rs} (100%) rename crates/neovm-core/src/emacs_core/editing/dired/tests/{compare_case_table.rs => compare_case_table_test.rs} (100%) rename crates/neovm-core/src/emacs_core/editing/dired/tests/{mod.rs => dired_test.rs} (99%) rename crates/neovm-core/src/emacs_core/editing/editfns/tests/{mod.rs => editfns_test.rs} (100%) rename crates/neovm-core/src/emacs_core/editing/indent/tests/{mod.rs => indent_test.rs} (100%) rename crates/neovm-core/src/emacs_core/editing/marker/tests/{mod.rs => marker_test.rs} (100%) rename crates/neovm-core/src/emacs_core/editing/mode/tests/{custom_type_gc.rs => custom_type_gc_test.rs} (100%) rename crates/neovm-core/src/emacs_core/editing/mode/tests/{mod.rs => mode_test.rs} (100%) rename crates/neovm-core/src/emacs_core/editing/navigation/tests/{line_index.rs => line_index_test.rs} (100%) rename crates/neovm-core/src/emacs_core/editing/navigation/tests/{mod.rs => navigation_test.rs} (99%) rename crates/neovm-core/src/emacs_core/editing/navigation/tests/{selective_display_gnu.rs => selective_display_gnu_test.rs} (100%) rename crates/neovm-core/src/emacs_core/editing/rect/tests/{mod.rs => rect_test.rs} (100%) rename crates/neovm-core/src/emacs_core/editing/undo/tests/{kill_ring.rs => kill_ring_test.rs} (100%) rename crates/neovm-core/src/emacs_core/editing/undo/tests/{mod.rs => undo_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/advice/tests/{mod.rs => advice_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/autoload/tests/{mod.rs => autoload_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/cl_lib/tests/{mod.rs => cl_lib_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/custom/tests/{mod.rs => custom_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/doc/tests/{mod.rs => doc_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/load/tests/{eager_failure.rs => eager_failure_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/load/tests/{mod.rs => load_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/load/tests/{stale_bytecode.rs => stale_bytecode_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/lread/tests/{mod.rs => lread_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/file_notify/platform/linux/tests/{linux.rs => linux_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/file_notify/platform/linux/tests/{worker.rs => worker_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/file_notify/platform/macos/tests/{macos.rs => macos_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/file_notify/platform/tests/{unsupported.rs => unsupported_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/file_notify/platform/windows/tests/{windows.rs => windows_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/file_notify/tests/{delivery.rs => delivery_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/file_notify/tests/{mod.rs => file_notify_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/file_notify/tests/{gc_tls_ownership.rs => gc_tls_ownership_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/file_notify/tests/{linux.rs => linux_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/file_notify/tests/{model.rs => model_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/file_notify/tests/{native_runtime.rs => native_runtime_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/hooks/redisplay_gnu/tests/{default_read.rs => default_read_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/hooks/tests/{window_configuration_redisplay.rs => window_configuration_redisplay_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/leaves/tests/{equivalence.rs => equivalence_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/search/tests/{gc_tls_ownership.rs => gc_tls_ownership_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{arithmetic_ash_overflow.rs => arithmetic_ash_overflow_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{arithmetic_bignum_borrowed.rs => arithmetic_bignum_borrowed_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{arithmetic_integer_value.rs => arithmetic_integer_value_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{arithmetic_limb_kernels.rs => arithmetic_limb_kernels_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{arithmetic_minmax_compare.rs => arithmetic_minmax_compare_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{arithmetic_rounding_capture.rs => arithmetic_rounding_capture_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{arithmetic_rounding_float_exact.rs => arithmetic_rounding_float_exact_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{arithmetic_rounding_nil_divisor.rs => arithmetic_rounding_nil_divisor_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{aset_string_in_place.rs => aset_string_in_place_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{assoc_callbacks.rs => assoc_callbacks_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{mod.rs => builtins_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{closure_slot_identity.rs => closure_slot_identity_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{collection_scan_capture.rs => collection_scan_capture_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{copy_sequence_capture.rs => copy_sequence_capture_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{fixed_arity_hot_subrs.rs => fixed_arity_hot_subrs_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{fringe_bitmap.rs => fringe_bitmap_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{from_value.rs => from_value_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{gc_tls_collections.rs => gc_tls_collections_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{gc_tls_window_configuration.rs => gc_tls_window_configuration_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{gdn_equality.rs => gdn_equality_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{higher_order_callback_policy.rs => higher_order_callback_policy_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{higher_order_capture.rs => higher_order_capture_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{keymaps.rs => keymaps_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{lisp_only_misc_names.rs => lisp_only_misc_names_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{lisp_only_predicates_and_aliases.rs => lisp_only_predicates_and_aliases_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{lisp_only_undo_commands.rs => lisp_only_undo_commands_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{lisp_only_window_frame_names.rs => lisp_only_window_frame_names_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{make_byte_code_literals.rs => make_byte_code_literals_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{make_closure_instance.rs => make_closure_instance_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{map_resume_capture.rs => map_resume_capture_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{map_resume.rs => map_resume_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{mapcar_activation.rs => mapcar_activation_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{obarray_growth.rs => obarray_growth_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{obarray_order.rs => obarray_order_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{predicate_walk_gc.rs => predicate_walk_gc_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{process_launchers_are_lisp_only.rs => process_launchers_are_lisp_only_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{replace_region_contents.rs => replace_region_contents_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{rust_subrs_shadowed_by_lisp.rs => rust_subrs_shadowed_by_lisp_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{search_frontend.rs => search_frontend_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{search.rs => search_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{sort_capture.rs => sort_capture_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{strings.rs => strings_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins/tests/{treesit_freshness.rs => treesit_freshness_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/builtins_extra/tests/{mod.rs => builtins_extra_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/floatfns/tests/{mod.rs => floatfns_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/fns/tests/{compare_case_table.rs => compare_case_table_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/fns/tests/{compare_position_cache.rs => compare_position_cache_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/fns/tests/{mod.rs => fns_test.rs} (99%) rename crates/neovm-core/src/emacs_core/lisp/native/misc/tests/{mod.rs => misc_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/subr/tests/{info.rs => info_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/subr/tests/{leaf_contract.rs => leaf_contract_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/native/subr/tests/{mod.rs => subr_test.rs} (99%) rename crates/neovm-core/src/emacs_core/lisp/print/tests/{mod.rs => print_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/provide_coupled_vars/tests/{runtime_surface.rs => runtime_surface_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/reader/tests/{minibuffer_teardown.rs => minibuffer_teardown_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/reader/tests/{minibuffer_unwind_order.rs => minibuffer_unwind_order_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/reader/tests/{raw_bytes.rs => raw_bytes_test.rs} (100%) rename crates/neovm-core/src/emacs_core/lisp/reader/tests/{mod.rs => reader_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/alloc/tests/{mod.rs => alloc_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/bytecode/tests/{arith_integer_fast_path.rs => arith_integer_fast_path_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/bytecode/tests/{arith_kind.rs => arith_kind_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/bytecode/tests/{builtin_result_return.rs => builtin_result_return_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/bytecode/tests/{chunk.rs => chunk_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/bytecode/tests/{collection_capture.rs => collection_capture_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/bytecode/tests/{decode.rs => decode_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/bytecode/tests/{opcode.rs => opcode_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/bytecode/tests/{osr_chain.rs => osr_chain_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/bytecode/tests/{primitive_opcode_cells.rs => primitive_opcode_cells_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/bytecode/tests/{resumed_chain.rs => resumed_chain_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/bytecode/tests/{stack_pool.rs => stack_pool_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/bytecode/tests/{vm_leaf.rs => vm_leaf_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/bytecode/tests/{vm.rs => vm_test.rs} (99%) rename crates/neovm-core/src/emacs_core/runtime/data/tests/{mod.rs => data_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/debug/tests/{mod.rs => debug_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/debug_on_call/tests/{mod.rs => debug_on_call_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/error/tests/{mod.rs => error_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/error/tests/{flow_kind.rs => flow_kind_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/error/tests/{flow_word_gc.rs => flow_word_gc_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/error/tests/{flow_word.rs => flow_word_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/error/tests/{gc_tls_ownership.rs => gc_tls_ownership_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/errors/tests/{mod.rs => errors_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/redisplay_hooks/tests/{echo_message.rs => echo_message_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/redisplay_hooks/tests/{mode_line_flow.rs => mode_line_flow_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{apply1_bytecode.rs => apply1_bytecode_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{apply2_bytecode.rs => apply2_bytecode_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{attention.rs => attention_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{builtin_vars.rs => builtin_vars_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{cconv_memo.rs => cconv_memo_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{chrome_transitions.rs => chrome_transitions_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{circular_lists.rs => circular_lists_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{mod.rs => eval_test.rs} (99%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{gc_forced_first_cycle.rs => gc_forced_first_cycle_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{gc_generational_major.rs => gc_generational_major_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{gc_generational_pacing.rs => gc_generational_pacing_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{gc_generational.rs => gc_generational_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{gc_heap_mut_closure.rs => gc_heap_mut_closure_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{gc_root_ownership.rs => gc_root_ownership_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{gc_sweep_cap.rs => gc_sweep_cap_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{gc_tls_migration_proofs.rs => gc_tls_migration_proofs_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{gc_tls_ownership.rs => gc_tls_ownership_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{idle_redisplay.rs => idle_redisplay_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{jit_crash_repro.rs => jit_crash_repro_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{jit_flonum_nbody.rs => jit_flonum_nbody_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{jit_known_fixnum_float.rs => jit_known_fixnum_float_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{jit_leaf_slot.rs => jit_leaf_slot_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{jit_mir_known_fixnum_float.rs => jit_mir_known_fixnum_float_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{leaf_guard.rs => leaf_guard_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{native_callback_cache.rs => native_callback_cache_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{native_stack.rs => native_stack_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{quit_regression.rs => quit_regression_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{quit_request.rs => quit_request_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{redisplay_hook_ownership.rs => redisplay_hook_ownership_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{redisplay_mini_only.rs => redisplay_mini_only_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{redisplay_mini_preparer_context.rs => redisplay_mini_preparer_context_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{redisplay_mini_source_eligibility.rs => redisplay_mini_source_eligibility_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{redisplay_mode_line_flow.rs => redisplay_mode_line_flow_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{redisplay_transaction_owner.rs => redisplay_transaction_owner_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{var_fast.rs => var_fast_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tests/{varset_plain_fast_path.rs => varset_plain_fast_path_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tier_i/tests/{analyzer.rs => analyzer_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tier_i/tests/{census.rs => census_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tier_i/tests/{differential.rs => differential_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tier_i/tests/{knobs.rs => knobs_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tier_i/tests/{list_bindings.rs => list_bindings_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/eval/tier_i/tests/{soak.rs => soak_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/forward/tests/{mod.rs => forward_module_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/hashtab/tests/{bignum_sxhash.rs => bignum_sxhash_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/hashtab/tests/{mod.rs => hashtab_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/hashtab/tests/{user_test_guard.rs => user_test_guard_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/heap_registry/tests/{ownership.rs => ownership_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/intern/tests/{gc_tls_ownership.rs => gc_tls_ownership_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/intern/tests/{mod.rs => intern_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/intern/tests/{seed_prefix.rs => seed_prefix_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/cache/tests/{gc_tls_ownership.rs => gc_tls_ownership_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/cache/tests/{hof_regalloc.rs => hof_regalloc_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/cache/tests/{osr_inline.rs => osr_inline_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/inline_entry_cache/tests/{admission.rs => admission_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/jit_layout/tests/{golden.rs => golden_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/jit_layout/tests/{runtime_prefix.rs => runtime_prefix_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/shared/tests/{collection_journal.rs => collection_journal_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{array_projection_capture.rs => array_projection_capture_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{chain_entry.rs => chain_entry_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{chain_framestate.rs => chain_framestate_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_admission.rs => opt_admission_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_array_profile.rs => opt_array_profile_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_arrays.rs => opt_arrays_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_bool_numeric.rs => opt_bool_numeric_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_bool.rs => opt_bool_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_census.rs => opt_census_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_fold_select.rs => opt_fold_select_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_ir_lower.rs => opt_ir_lower_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_licm_positive.rs => opt_licm_positive_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_opcode_transport_effects.rs => opt_opcode_transport_effects_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_passes.rs => opt_passes_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_range_licm.rs => opt_range_licm_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_regalloc.rs => opt_regalloc_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_reps.rs => opt_reps_test.rs} (99%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_rootwin_counts.rs => opt_rootwin_counts_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_sink_alloc_probe.rs => opt_sink_alloc_probe_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_sink_cold_demand.rs => opt_sink_cold_demand_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_sink_identity.rs => opt_sink_identity_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_sink_native_verification.rs => opt_sink_native_verification_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_sink_numeric_cold.rs => opt_sink_numeric_cold_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_sink_numeric_infallible.rs => opt_sink_numeric_infallible_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_sink_numeric_ready.rs => opt_sink_numeric_ready_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_sink_numeric_resolved.rs => opt_sink_numeric_resolved_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_sink_numeric_sqrt_contagion.rs => opt_sink_numeric_sqrt_contagion_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_sink_numeric_static_contagion.rs => opt_sink_numeric_static_contagion_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_sink_sqrt.rs => opt_sink_sqrt_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_sqrt_binding.rs => opt_sqrt_binding_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{opt_sqrt_snapshot.rs => opt_sqrt_snapshot_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/compile/tests/{regalloc_small.rs => regalloc_small_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/opt/passes/tests/{array_reads.rs => array_reads_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/opt/passes/tests/{bools_reference.rs => bools_reference_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/opt/passes/tests/{bools.rs => bools_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/opt/passes/tests/{cfg.rs => cfg_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/opt/passes/tests/{fold.rs => fold_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/opt/passes/tests/{reps_lift.rs => reps_lift_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/opt/passes/tests/{reps.rs => reps_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/opt/sink_recipes/tests/{verify.rs => verify_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/opt/tests/{build_ssa.rs => build_ssa_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/opt/tests/{eval.rs => eval_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/opt/tests/{ir_verify.rs => ir_verify_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/opt/tests/{primitive_effects.rs => primitive_effects_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/opt/tests/{range_licm_eval.rs => range_licm_eval_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/opt/tests/{types.rs => types_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/reopt/tests/{end_to_end.rs => end_to_end_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{arith_generic_integer.rs => arith_generic_integer_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{array_shims.rs => array_shims_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{call_feedback.rs => call_feedback_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{cold_exits.rs => cold_exits_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{compile_pipeline.rs => compile_pipeline_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{compile.rs => compile_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{direct_call_framed.rs => direct_call_framed_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{direct_call_memory.rs => direct_call_memory_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{direct_call_shape_edges.rs => direct_call_shape_edges_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{direct_call_shape_parity.rs => direct_call_shape_parity_test.rs} (99%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{direct_call_shapes.rs => direct_call_shapes_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{direct_call.rs => direct_call_test.rs} (99%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{direct_self_heat.rs => direct_self_heat_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{direct_self_kernel.rs => direct_self_kernel_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{direct_self.rs => direct_self_test.rs} (99%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{eq_swp_prefilter.rs => eq_swp_prefilter_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{fixnum_comparisons.rs => fixnum_comparisons_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{fixnum_ranges.rs => fixnum_ranges_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{flonum_slots.rs => flonum_slots_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{gen0_observed_blv_cold_capture.rs => gen0_observed_blv_cold_capture_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{gen0_observed_collection_revision.rs => gen0_observed_collection_revision_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{gen0_observed_multi_unbind.rs => gen0_observed_multi_unbind_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{gen0_tracked_collection_revision.rs => gen0_tracked_collection_revision_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{inline_chain_deopt.rs => inline_chain_deopt_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{inline_closure.rs => inline_closure_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{inline_entry_cache.rs => inline_entry_cache_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{inline_heap_collection_revision.rs => inline_heap_collection_revision_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{inline_heap_gen0_collection_revision.rs => inline_heap_gen0_collection_revision_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{inline_heap_generational.rs => inline_heap_generational_test.rs} (98%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{inline_heap_ops.rs => inline_heap_ops_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{inline_hof_captures.rs => inline_hof_captures_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{inline_hof_headers.rs => inline_hof_headers_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{inline_hof_heap_policy.rs => inline_hof_heap_policy_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{inline_hof_length.rs => inline_hof_length_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{inline_hof_runtime.rs => inline_hof_runtime_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{inline_named_front.rs => inline_named_front_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{inline_named_runtime.rs => inline_named_runtime_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{inline_regalloc.rs => inline_regalloc_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{inline.rs => inline_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{inline_v2_closure.rs => inline_v2_closure_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{inline_v2_hof.rs => inline_v2_hof_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{inline_v2.rs => inline_v2_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{inline_vars.rs => inline_vars_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{intrinsics.rs => intrinsics_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{leaf_calls.rs => leaf_calls_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{mir_calls.rs => mir_calls_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{mir_cons_deopt.rs => mir_cons_deopt_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{mir_inline_guards.rs => mir_inline_guards_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{mir_leaf_effects.rs => mir_leaf_effects_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{mir_named_calls.rs => mir_named_calls_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{mir_reach_dead.rs => mir_reach_dead_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{native_frame_detach.rs => native_frame_detach_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{observability.rs => observability_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{opt_lower.rs => opt_lower_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{osr_bindings.rs => osr_bindings_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{osr_entry_guards.rs => osr_entry_guards_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{osr_poll.rs => osr_poll_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{osr_raw.rs => osr_raw_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{predicate_branches.rs => predicate_branches_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{shared_module.rs => shared_module_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{source_slots.rs => source_slots_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{spec_frames.rs => spec_frames_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{spec_gate.rs => spec_gate_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{spec_rest_calls.rs => spec_rest_calls_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{stack_guard.rs => stack_guard_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{string_observed_capacity.rs => string_observed_capacity_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{switch_dispatch.rs => switch_dispatch_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{switch_inline.rs => switch_inline_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{tail_calls.rs => tail_calls_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/jit/tests/{varref_inline.rs => varref_inline_test.rs} (100%) create mode 100644 crates/neovm-core/src/emacs_core/runtime/owned_roots/tests/owned_roots_test.rs rename crates/neovm-core/src/emacs_core/runtime/pdump/charset_image/tests/{mule_order.rs => mule_order_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/pdump/tests/{bool_vectors.rs => bool_vectors_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/pdump/tests/{bytecode_slot_objects.rs => bytecode_slot_objects_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/pdump/tests/{decode_hardening.rs => decode_hardening_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/pdump/tests/{mod.rs => pdump_test.rs} (99%) rename crates/neovm-core/src/emacs_core/runtime/plist/tests/{collection_capture.rs => collection_capture_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/runtime_identity/tests/{mod.rs => runtime_identity_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/symbol/tests/{buffer_local_global_read.rs => buffer_local_global_read_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/symbol/tests/{fn_stamps.rs => fn_stamps_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/symbol/tests/{function_regression.rs => function_regression_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/symbol/tests/{jit_layout.rs => jit_layout_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/symbol/tests/{plist_regression.rs => plist_regression_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/symbol/tests/{redirect_regression.rs => redirect_regression_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/symbol/tests/{mod.rs => symbol_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/threads/tests/{mod.rs => threads_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/value/tests/{bytecode_capture.rs => bytecode_capture_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/value/tests/{equal_lookup_gnu.rs => equal_lookup_gnu_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/value/tests/{gc_generational_hydration.rs => gc_generational_hydration_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/value/tests/{hash_probe.rs => hash_probe_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/value/tests/{heap_mut_closure_guard.rs => heap_mut_closure_guard_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/value/tests/{jump_table_lookup.rs => jump_table_lookup_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/value/tests/{metadata_capture.rs => metadata_capture_test.rs} (100%) rename crates/neovm-core/src/emacs_core/runtime/value/tests/{mod.rs => value_test.rs} (99%) rename crates/neovm-core/src/emacs_core/runtime/value_reader/tests/{mod.rs => value_reader_test.rs} (100%) rename crates/neovm-core/src/emacs_core/system/callproc/tests/{raw_bytes.rs => raw_bytes_test.rs} (100%) rename crates/neovm-core/src/emacs_core/system/callproc/tests/{read_coding.rs => read_coding_test.rs} (100%) rename crates/neovm-core/src/emacs_core/system/callproc/tests/{spawn.rs => spawn_test.rs} (100%) rename crates/neovm-core/src/emacs_core/system/callproc/tests/{working_dir_infile.rs => working_dir_infile_test.rs} (100%) rename crates/neovm-core/src/emacs_core/system/dbusbind/tests/{call.rs => call_test.rs} (91%) rename crates/neovm-core/src/emacs_core/system/dbusbind/tests/{connection.rs => connection_test.rs} (97%) rename crates/neovm-core/src/emacs_core/system/dbusbind/tests/{signal.rs => signal_test.rs} (98%) rename crates/neovm-core/src/emacs_core/system/dbusbind/tests/{surface.rs => surface_test.rs} (100%) rename crates/neovm-core/src/emacs_core/system/dbusbind/tests/{types.rs => types_test.rs} (81%) rename crates/neovm-core/src/emacs_core/system/dynamic_module/tests/{gc_tls_ownership.rs => gc_tls_ownership_test.rs} (100%) rename crates/neovm-core/src/emacs_core/system/fileio/tests/{mod.rs => fileio_test.rs} (99%) rename crates/neovm-core/src/emacs_core/system/fileio/tests/{fix8.rs => fix8_test.rs} (100%) rename crates/neovm-core/src/emacs_core/system/filelock/tests/{mod.rs => filelock_test.rs} (100%) rename crates/neovm-core/src/emacs_core/system/network/tests/{mod.rs => network_test.rs} (100%) rename crates/neovm-core/src/emacs_core/system/os_signal/tests/{mod.rs => os_signal_test.rs} (100%) rename crates/neovm-core/src/emacs_core/system/path_exec/tests/{mod.rs => path_exec_test.rs} (100%) rename crates/neovm-core/src/emacs_core/system/platform/c_features/tests/{surface.rs => surface_test.rs} (100%) rename crates/neovm-core/src/emacs_core/system/post_image_init/tests/{mod.rs => post_image_init_test.rs} (100%) rename crates/neovm-core/src/emacs_core/system/process/tests/{mod.rs => process_test.rs} (100%) rename crates/neovm-core/src/emacs_core/system/process/tests/{raw_bytes.rs => raw_bytes_test.rs} (100%) rename crates/neovm-core/src/emacs_core/system/shell_file_name/tests/{mod.rs => shell_file_name_test.rs} (100%) rename crates/neovm-core/src/emacs_core/system/sqlite/tests/{disabled.rs => disabled_test.rs} (100%) rename crates/neovm-core/src/emacs_core/system/sqlite/tests/{enabled.rs => enabled_test.rs} (100%) rename crates/neovm-core/src/emacs_core/system/timefns/tests/{mod.rs => timefns_test.rs} (100%) rename crates/neovm-core/src/emacs_core/system/timer/tests/{mod.rs => timer_test.rs} (100%) rename crates/neovm-core/src/emacs_core/system/tls/tests/{runtime.rs => runtime_test.rs} (100%) rename crates/neovm-core/src/emacs_core/tests/architecture/{layout.rs => layout_test.rs} (100%) rename crates/neovm-core/src/emacs_core/tests/architecture/{runtime_string_guard.rs => runtime_string_guard_test.rs} (100%) rename crates/neovm-core/src/emacs_core/tests/architecture/{symbol_id_guard.rs => symbol_id_guard_test.rs} (100%) rename crates/neovm-core/src/emacs_core/tests/architecture/{transmute_guard.rs => transmute_guard_test.rs} (100%) rename crates/neovm-core/src/emacs_core/tests/build_support/{compile_main_rule.rs => compile_main_rule_test.rs} (100%) rename crates/neovm-core/src/emacs_core/tests/build_support/{generated_lisp.rs => generated_lisp_test.rs} (100%) rename crates/neovm-core/src/emacs_core/tests/compat_regressions/tests/{mod.rs => compat_regressions_test.rs} (100%) rename crates/neovm-core/src/emacs_core/tests/gnu_surface/{defvar_special.rs => defvar_special_test.rs} (100%) rename crates/neovm-core/src/emacs_core/tests/gnu_surface/{subr.rs => subr_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/boolvec/tests/{mod.rs => boolvec_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/casefiddle/tests/{mod.rs => casefiddle_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/casetab/tests/{mod.rs => casetab_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/casetab/tests/{gc_tls_ownership.rs => gc_tls_ownership_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/category/tests/{mod.rs => category_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/category/tests/{gc_tls_ownership.rs => gc_tls_ownership_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/ccl/tests/{mod.rs => ccl_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/ccl/tests/{gc_tls_ownership.rs => gc_tls_ownership_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/charset/tests/{mod.rs => charset_test.rs} (99%) rename crates/neovm-core/src/emacs_core/text/charset/tests/{gc_tls_ownership.rs => gc_tls_ownership_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/charset/tests/{mule_identity.rs => mule_identity_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/charset/tests/{prepared_mule.rs => prepared_mule_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/chartable/tests/{mod.rs => chartable_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/chartable/tests/{collection_lookup_capture.rs => collection_lookup_capture_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/coding/tests/{mod.rs => coding_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/composite/tests/{mod.rs => composite_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/emacs_char/tests/{mod.rs => emacs_char_test.rs} (99%) rename crates/neovm-core/src/emacs_core/text/emacs_char/tests/{str_as_multibyte_gnu.rs => str_as_multibyte_gnu_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/format/tests/{mod.rs => format_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/json/tests/{mod.rs => json_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/regex/tests/{casefold_scan.rs => casefold_scan_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/regex/tests/{dfa.rs => dfa_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/regex/tests/{emacs.rs => emacs_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/regex/tests/{fail_stack_parity.rs => fail_stack_parity_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/regex/tests/{gc_collection_epoch_minor.rs => gc_collection_epoch_minor_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/regex/tests/{gc_collection_epoch.rs => gc_collection_epoch_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/regex/tests/{gc_literal_epoch.rs => gc_literal_epoch_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/regex/tests/{gc_tls_ownership.rs => gc_tls_ownership_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/regex/tests/{opcode_decode.rs => opcode_decode_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/regex/tests/{mod.rs => regex_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/regex/tests/{short_literal.rs => short_literal_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/regex/tests/{start_anchor.rs => start_anchor_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/regex/tests/{suffix_literal.rs => suffix_literal_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/search/tests/{mod.rs => search_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/string_escape/tests/{mod.rs => string_escape_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/string_pos_cache/tests/{gc_collection_epoch_minor.rs => gc_collection_epoch_minor_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/string_pos_cache/tests/{gc_collection_epoch.rs => gc_collection_epoch_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/string_pos_cache/tests/{gc_tls_ownership.rs => gc_tls_ownership_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/string_pos_cache/tests/{mod.rs => string_pos_cache_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/syntax/tests/{back_comment_canonical.rs => back_comment_canonical_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/syntax/tests/{back_comment_safe_positions.rs => back_comment_safe_positions_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/syntax/tests/{category_property.rs => category_property_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/syntax/tests/{gc_tls_ownership.rs => gc_tls_ownership_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/syntax/tests/{gdn_word_motion.rs => gdn_word_motion_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/syntax/tests/{gnu_parity_regression.rs => gnu_parity_regression_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/syntax/tests/{parse_cache_invalidation.rs => parse_cache_invalidation_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/syntax/tests/{parse_cache.rs => parse_cache_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/syntax/tests/{parse_loop_resume.rs => parse_loop_resume_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/syntax/tests/{parse_state_divergence_gnu.rs => parse_state_divergence_gnu_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/syntax/tests/{pps_propertize_gnu.rs => pps_propertize_gnu_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/syntax/tests/{pps_propertize_knob.rs => pps_propertize_knob_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/syntax/tests/{scan_error_data_gnu.rs => scan_error_data_gnu_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/syntax/tests/{skip_syntax_classes.rs => skip_syntax_classes_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/syntax/tests/{syntax_prop_byte_run.rs => syntax_prop_byte_run_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/syntax/tests/{mod.rs => syntax_test.rs} (99%) rename crates/neovm-core/src/emacs_core/text/textprop/tests/{mod.rs => textprop_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/treesit/tests/{mod.rs => treesit_test.rs} (100%) rename crates/neovm-core/src/emacs_core/text/xml/tests/{mod.rs => xml_test.rs} (100%) rename crates/neovm-core/src/encoding/tests/{mod.rs => encoding_test.rs} (99%) rename crates/neovm-core/src/encoding/tests/{prepared_mule.rs => prepared_mule_test.rs} (100%) rename crates/neovm-core/src/face/tests/{mod.rs => face_test.rs} (100%) rename crates/neovm-core/src/image_identity/tests/{mod.rs => image_identity_test.rs} (100%) create mode 100644 crates/neovm-core/src/keyboard/tests/display_service_test.rs rename crates/neovm-core/src/keyboard/tests/{mod.rs => keyboard_test.rs} (100%) rename crates/neovm-core/src/tagged/collection_reads/{tests.rs => tests/collection_reads_test.rs} (99%) rename crates/neovm-core/src/tagged/collection_reads/tests/{fast_paths.rs => fast_paths_test.rs} (100%) rename crates/neovm-core/src/tagged/collection_reads/tests/{lazy_window.rs => lazy_window_test.rs} (100%) rename crates/neovm-core/src/tagged/collection_reads/tests/{observed_collisions.rs => observed_collisions_test.rs} (100%) rename crates/neovm-core/src/tagged/collection_reads/tests/{observed_epoch.rs => observed_epoch_test.rs} (100%) rename crates/neovm-core/src/tagged/collection_reads/tests/{observed_gap.rs => observed_gap_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{alloc_region_tests.rs => alloc_region_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{arena_minor_tests.rs => arena_minor_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{arena_promotion_tests.rs => arena_promotion_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{barrier_window_generational_tests.rs => barrier_window_generational_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{barrier_window_tests.rs => barrier_window_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{bignum_arena_tests.rs => bignum_arena_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{birth_logs_tests.rs => birth_logs_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{bytecode_arena_tests.rs => bytecode_arena_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{census_tests.rs => census_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{chunk_entry_decode_tests.rs => chunk_entry_decode_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{chunk_map_tests.rs => chunk_map_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{collection_observed_registry_tests.rs => collection_observed_registry_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{collection_observed_tests.rs => collection_observed_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{concurrent_major_worker_tests.rs => concurrent_major_worker_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{cons_alloc_tests.rs => cons_alloc_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{cons_minor_tests.rs => cons_minor_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{cons_trailer_tests.rs => cons_trailer_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{float_arena_tests.rs => float_arena_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{generation_tests.rs => generation_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{generational_major_tests.rs => generational_major_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{generational_pacing_tests.rs => generational_pacing_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{generational_tests.rs => generational_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{generational_verifier_tests.rs => generational_verifier_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{heap_mut_closure_tests.rs => heap_mut_closure_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{lambda_macro_arena_tests.rs => lambda_macro_arena_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{layout_stats_tests.rs => layout_stats_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{major_symbol_preimage_tests.rs => major_symbol_preimage_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{marker_arena_tests.rs => marker_arena_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{memory_inventory_tests.rs => memory_inventory_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{memory_telemetry_tests.rs => memory_telemetry_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{ownership_tests.rs => ownership_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{pacer_tests.rs => pacer_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{record_arena_tests.rs => record_arena_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{slot_store_tests.rs => slot_store_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{symbol_barrier_tests.rs => symbol_barrier_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{symbol_with_pos_arena_tests.rs => symbol_with_pos_arena_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{thread_local_ownership.rs => thread_local_ownership_test.rs} (100%) rename crates/neovm-core/src/tagged/gc/tests/{vec_scan_tests.rs => vec_scan_test.rs} (100%) rename crates/neovm-core/src/tagged/symbol_marks/tests/{mod.rs => symbol_marks_test.rs} (100%) rename crates/neovm-core/src/tagged/{tests.rs => tests/tagged_test.rs} (99%) rename crates/neovm-core/src/tagged/tests/{write_fusion.rs => write_fusion_test.rs} (100%) rename crates/neovm-core/src/tagged/value/tests/{gc_tls_ownership.rs => gc_tls_ownership_test.rs} (100%) rename crates/neovm-core/src/tests/{test_utils.rs => test_utils_test.rs} (100%) rename crates/neovm-core/src/window/frame_alpha/tests/{mod.rs => frame_alpha_test.rs} (100%) rename crates/neovm-core/src/window/tests/{split_hook_epoch.rs => split_hook_epoch_test.rs} (100%) rename crates/neovm-core/src/window/tests/{mod.rs => window_test.rs} (99%) create mode 100644 crates/xtask/src/tests/window_icon_test.rs diff --git a/crates/neomacs-diagnostics/src/flamegraph.rs b/crates/neomacs-diagnostics/src/flamegraph.rs index 30c7d2b44c..16173885fb 100644 --- a/crates/neomacs-diagnostics/src/flamegraph.rs +++ b/crates/neomacs-diagnostics/src/flamegraph.rs @@ -30,4 +30,5 @@ fn empty_svg(title: &str) -> String { } #[cfg(test)] +#[path = "flamegraph/tests/flamegraph_test.rs"] mod tests; diff --git a/crates/neomacs-diagnostics/src/flamegraph/tests/mod.rs b/crates/neomacs-diagnostics/src/flamegraph/tests/flamegraph_test.rs similarity index 100% rename from crates/neomacs-diagnostics/src/flamegraph/tests/mod.rs rename to crates/neomacs-diagnostics/src/flamegraph/tests/flamegraph_test.rs diff --git a/crates/neomacs-diagnostics/src/metrics.rs b/crates/neomacs-diagnostics/src/metrics.rs index 9c4df2f54f..14b663166c 100644 --- a/crates/neomacs-diagnostics/src/metrics.rs +++ b/crates/neomacs-diagnostics/src/metrics.rs @@ -114,4 +114,5 @@ pub struct GcMetrics { } #[cfg(test)] +#[path = "metrics/tests/metrics_test.rs"] mod tests; diff --git a/crates/neomacs-diagnostics/src/metrics/tests/mod.rs b/crates/neomacs-diagnostics/src/metrics/tests/metrics_test.rs similarity index 100% rename from crates/neomacs-diagnostics/src/metrics/tests/mod.rs rename to crates/neomacs-diagnostics/src/metrics/tests/metrics_test.rs diff --git a/crates/neomacs-diagnostics/src/pprof.rs b/crates/neomacs-diagnostics/src/pprof.rs index f93bee36c0..d06b4641a7 100644 --- a/crates/neomacs-diagnostics/src/pprof.rs +++ b/crates/neomacs-diagnostics/src/pprof.rs @@ -188,4 +188,5 @@ pub fn folded_to_pprof(folded: &str) -> Vec { } #[cfg(test)] +#[path = "pprof/tests/pprof_test.rs"] mod tests; diff --git a/crates/neomacs-diagnostics/src/pprof/tests/mod.rs b/crates/neomacs-diagnostics/src/pprof/tests/pprof_test.rs similarity index 100% rename from crates/neomacs-diagnostics/src/pprof/tests/mod.rs rename to crates/neomacs-diagnostics/src/pprof/tests/pprof_test.rs diff --git a/crates/neomacs-diagnostics/src/report.rs b/crates/neomacs-diagnostics/src/report.rs index c0bfebce0c..32f5a9e5d7 100644 --- a/crates/neomacs-diagnostics/src/report.rs +++ b/crates/neomacs-diagnostics/src/report.rs @@ -290,4 +290,5 @@ fn sort_edges(map: HashMap<&str, u64>) -> Vec { } #[cfg(test)] +#[path = "report/tests/report_test.rs"] mod tests; diff --git a/crates/neomacs-diagnostics/src/report/tests/mod.rs b/crates/neomacs-diagnostics/src/report/tests/report_test.rs similarity index 100% rename from crates/neomacs-diagnostics/src/report/tests/mod.rs rename to crates/neomacs-diagnostics/src/report/tests/report_test.rs diff --git a/crates/neomacs-diagnostics/src/server.rs b/crates/neomacs-diagnostics/src/server.rs index aa670df139..242220ebc6 100644 --- a/crates/neomacs-diagnostics/src/server.rs +++ b/crates/neomacs-diagnostics/src/server.rs @@ -470,4 +470,5 @@ pub fn spawn( } #[cfg(test)] +#[path = "server/tests/server_test.rs"] mod tests; diff --git a/crates/neomacs-diagnostics/src/server/tests/mod.rs b/crates/neomacs-diagnostics/src/server/tests/server_test.rs similarity index 100% rename from crates/neomacs-diagnostics/src/server/tests/mod.rs rename to crates/neomacs-diagnostics/src/server/tests/server_test.rs diff --git a/crates/neomacs-display-protocol/src/child_frame_animation.rs b/crates/neomacs-display-protocol/src/child_frame_animation.rs index d09c087ba1..e030bc14a6 100644 --- a/crates/neomacs-display-protocol/src/child_frame_animation.rs +++ b/crates/neomacs-display-protocol/src/child_frame_animation.rs @@ -235,6 +235,7 @@ pub fn default_child_frame_resize() -> ChildFrameAnimation { } #[cfg(test)] +#[path = "child_frame_animation/tests/child_frame_animation_test.rs"] mod tests; crate::effect_schema!(ChildFrameAnimation { diff --git a/crates/neomacs-display-protocol/src/child_frame_animation/tests/mod.rs b/crates/neomacs-display-protocol/src/child_frame_animation/tests/child_frame_animation_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/child_frame_animation/tests/mod.rs rename to crates/neomacs-display-protocol/src/child_frame_animation/tests/child_frame_animation_test.rs diff --git a/crates/neomacs-display-protocol/src/display_identity.rs b/crates/neomacs-display-protocol/src/display_identity.rs index b418eb8fff..5dbe4cc7f7 100644 --- a/crates/neomacs-display-protocol/src/display_identity.rs +++ b/crates/neomacs-display-protocol/src/display_identity.rs @@ -93,4 +93,5 @@ impl GraphicalDisplayIdentity { } #[cfg(test)] +#[path = "display_identity/tests/display_identity_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/display_identity/tests/mod.rs b/crates/neomacs-display-protocol/src/display_identity/tests/display_identity_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/display_identity/tests/mod.rs rename to crates/neomacs-display-protocol/src/display_identity/tests/display_identity_test.rs diff --git a/crates/neomacs-display-protocol/src/effect_config.rs b/crates/neomacs-display-protocol/src/effect_config.rs index 4ecdb2d9ce..b12ad9636c 100644 --- a/crates/neomacs-display-protocol/src/effect_config.rs +++ b/crates/neomacs-display-protocol/src/effect_config.rs @@ -1769,6 +1769,7 @@ effect_config!( ); #[cfg(test)] +#[path = "effect_config/tests/effect_config_test.rs"] mod tests; /// Container for all visual effect configurations. diff --git a/crates/neomacs-display-protocol/src/effect_config/tests/mod.rs b/crates/neomacs-display-protocol/src/effect_config/tests/effect_config_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/effect_config/tests/mod.rs rename to crates/neomacs-display-protocol/src/effect_config/tests/effect_config_test.rs diff --git a/crates/neomacs-display-protocol/src/face.rs b/crates/neomacs-display-protocol/src/face.rs index 16dab27233..bb7b070353 100644 --- a/crates/neomacs-display-protocol/src/face.rs +++ b/crates/neomacs-display-protocol/src/face.rs @@ -979,4 +979,5 @@ impl FaceCache { } #[cfg(test)] +#[path = "face/tests/face_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/face/tests/mod.rs b/crates/neomacs-display-protocol/src/face/tests/face_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/face/tests/mod.rs rename to crates/neomacs-display-protocol/src/face/tests/face_test.rs diff --git a/crates/neomacs-display-protocol/src/font.rs b/crates/neomacs-display-protocol/src/font.rs index afa78cf88a..3fd6b366e4 100644 --- a/crates/neomacs-display-protocol/src/font.rs +++ b/crates/neomacs-display-protocol/src/font.rs @@ -913,4 +913,5 @@ pub struct FrameFontBindings<'a> { } #[cfg(test)] +#[path = "font/tests/font_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/font/tests/mod.rs b/crates/neomacs-display-protocol/src/font/tests/font_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/font/tests/mod.rs rename to crates/neomacs-display-protocol/src/font/tests/font_test.rs diff --git a/crates/neomacs-display-protocol/src/frame_chrome.rs b/crates/neomacs-display-protocol/src/frame_chrome.rs index cfa08705f3..4fb54a380c 100644 --- a/crates/neomacs-display-protocol/src/frame_chrome.rs +++ b/crates/neomacs-display-protocol/src/frame_chrome.rs @@ -773,4 +773,5 @@ pub enum ChromeLayoutError { } #[cfg(test)] +#[path = "frame_chrome/tests/frame_chrome_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/frame_chrome/tests/mod.rs b/crates/neomacs-display-protocol/src/frame_chrome/tests/frame_chrome_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/frame_chrome/tests/mod.rs rename to crates/neomacs-display-protocol/src/frame_chrome/tests/frame_chrome_test.rs diff --git a/crates/neomacs-display-protocol/src/frame_glyphs.rs b/crates/neomacs-display-protocol/src/frame_glyphs.rs index 7270b60bca..ca34a3f530 100644 --- a/crates/neomacs-display-protocol/src/frame_glyphs.rs +++ b/crates/neomacs-display-protocol/src/frame_glyphs.rs @@ -2551,4 +2551,5 @@ impl FrameGlyphBuffer { } #[cfg(test)] +#[path = "frame_glyphs/tests/frame_glyphs_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/frame_glyphs/tests/mod.rs b/crates/neomacs-display-protocol/src/frame_glyphs/tests/frame_glyphs_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/frame_glyphs/tests/mod.rs rename to crates/neomacs-display-protocol/src/frame_glyphs/tests/frame_glyphs_test.rs diff --git a/crates/neomacs-display-protocol/src/frame_time.rs b/crates/neomacs-display-protocol/src/frame_time.rs index bdf99ee392..482004149c 100644 --- a/crates/neomacs-display-protocol/src/frame_time.rs +++ b/crates/neomacs-display-protocol/src/frame_time.rs @@ -174,4 +174,5 @@ impl FrameSample { } #[cfg(test)] +#[path = "frame_time/tests/frame_time_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/frame_time/tests/mod.rs b/crates/neomacs-display-protocol/src/frame_time/tests/frame_time_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/frame_time/tests/mod.rs rename to crates/neomacs-display-protocol/src/frame_time/tests/frame_time_test.rs diff --git a/crates/neomacs-display-protocol/src/geometry.rs b/crates/neomacs-display-protocol/src/geometry.rs index 10d302a7af..435a9c1ba9 100644 --- a/crates/neomacs-display-protocol/src/geometry.rs +++ b/crates/neomacs-display-protocol/src/geometry.rs @@ -609,4 +609,5 @@ impl DeviceScale { } #[cfg(test)] +#[path = "geometry/tests/geometry_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/geometry/tests/mod.rs b/crates/neomacs-display-protocol/src/geometry/tests/geometry_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/geometry/tests/mod.rs rename to crates/neomacs-display-protocol/src/geometry/tests/geometry_test.rs diff --git a/crates/neomacs-display-protocol/src/glyph_matrix.rs b/crates/neomacs-display-protocol/src/glyph_matrix.rs index 3dba579477..30a5b59ef2 100644 --- a/crates/neomacs-display-protocol/src/glyph_matrix.rs +++ b/crates/neomacs-display-protocol/src/glyph_matrix.rs @@ -3731,6 +3731,7 @@ pub trait RedisplayInterface { } #[cfg(test)] +#[path = "glyph_matrix/tests/glyph_matrix_test.rs"] mod tests; #[cfg(test)] diff --git a/crates/neomacs-display-protocol/src/glyph_matrix/tests/mod.rs b/crates/neomacs-display-protocol/src/glyph_matrix/tests/glyph_matrix_test.rs similarity index 99% rename from crates/neomacs-display-protocol/src/glyph_matrix/tests/mod.rs rename to crates/neomacs-display-protocol/src/glyph_matrix/tests/glyph_matrix_test.rs index fe2c0a0e88..90e08d2e01 100644 --- a/crates/neomacs-display-protocol/src/glyph_matrix/tests/mod.rs +++ b/crates/neomacs-display-protocol/src/glyph_matrix/tests/glyph_matrix_test.rs @@ -37,6 +37,7 @@ fn gnu_frame_alpha_survives_display_snapshot_materialization() { } use crate::DisplayFrameId; +#[path = "row_appearance_test.rs"] mod row_appearance_test; use crate::face::Face; use crate::frame_chrome::PresentationId; diff --git a/crates/neomacs-display-protocol/src/glyph_matrix/text_geometry.rs b/crates/neomacs-display-protocol/src/glyph_matrix/text_geometry.rs index 20d24e91e8..f4ccb33d7f 100644 --- a/crates/neomacs-display-protocol/src/glyph_matrix/text_geometry.rs +++ b/crates/neomacs-display-protocol/src/glyph_matrix/text_geometry.rs @@ -90,4 +90,5 @@ impl<'row> TextRowGeometry<'row> { } #[cfg(test)] +#[path = "text_geometry/tests/text_geometry_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/glyph_matrix/text_geometry/tests/mod.rs b/crates/neomacs-display-protocol/src/glyph_matrix/text_geometry/tests/text_geometry_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/glyph_matrix/text_geometry/tests/mod.rs rename to crates/neomacs-display-protocol/src/glyph_matrix/text_geometry/tests/text_geometry_test.rs diff --git a/crates/neomacs-display-protocol/src/input_latency.rs b/crates/neomacs-display-protocol/src/input_latency.rs index 82b7d881c3..4553d7ce75 100644 --- a/crates/neomacs-display-protocol/src/input_latency.rs +++ b/crates/neomacs-display-protocol/src/input_latency.rs @@ -399,199 +399,5 @@ pub fn observed( } #[cfg(test)] -mod tests { - use super::*; - fn viewport(start: usize) -> Vec { - vec![ScrollViewport { - window: 1, - buffer: 1, - start, - hscroll: 0, - vscroll: 0, - }] - } - fn time(nanoseconds: u64) -> PlatformTimestamp { - PlatformTimestamp { - clock_id: 1, - nanoseconds, - } - } - #[test] - fn output_confirmation_preserves_its_measurement_kind_and_uncertainty() { - let mut measurements = Measurements::default(); - let token = measurements.receive(7, "precise", time(100)); - let kind = PresentationObservation::FirstPixelOutput { uncertainty_ns: 70 }; - measurements.start(&[token], |_| viewport(1)); - measurements.projected_requested(&[token], 7, 41); - measurements.projected_observed(7, 41, time(150), kind); - measurements.seal(7, PresentationId::new(2), &viewport(2)); - let samples = measurements.observed(PresentationId::new(2), time(300), kind); - assert_eq!(samples[0]["observation"], "native-first-pixel-output"); - assert_eq!( - samples[0]["projected_observation"], - "native-first-pixel-output" - ); - assert_eq!(samples[0]["timestamp_uncertainty_ns"], 70); - assert_eq!(samples[0]["projected_timestamp_uncertainty_ns"], 70); - assert_eq!(samples[0]["input_to_present_ns"], 200); - } - - #[test] - fn projected_latency_requires_exact_native_submission_and_keeps_authoritative_completion() { - let mut measurements = Measurements::default(); - let token = measurements.receive(7, "precise", time(100)); - measurements.projected_requested(&[token], 7, 41); - measurements.projected_confirmed(8, 41, time(110)); - measurements.projected_confirmed(7, 40, time(120)); - measurements.projected_confirmed( - 7, - 41, - PlatformTimestamp { - clock_id: 2, - nanoseconds: 130, - }, - ); - assert!(measurements.pending[0].projected.is_none()); - measurements.projected_confirmed(7, 41, time(150)); - measurements.projected_confirmed(7, 41, time(160)); - assert!( - measurements - .confirmed(PresentationId::new(1), time(170)) - .is_empty() - ); - measurements.start(&[token], |_| viewport(1)); - measurements.seal(7, PresentationId::new(2), &viewport(2)); - let samples = measurements.confirmed(PresentationId::new(2), time(300)); - assert_eq!(samples.len(), 1); - assert_eq!(samples[0]["input_to_projected_present_ns"], 50); - assert_eq!(samples[0]["projected_submission"], 41); - assert_eq!(samples[0]["input_to_present_ns"], 200); - assert!(measurements.pending.is_empty()); - } - - #[test] - fn queued_input_and_other_frames_cannot_complete_a_latency_sample() { - let mut measurements = Measurements::default(); - let token = measurements.receive(7, "wheel", time(100)); - measurements.seal(7, PresentationId::new(1), &viewport(2)); - assert!( - measurements - .confirmed(PresentationId::new(1), time(200)) - .is_empty() - ); - measurements.start(&[token], |_| viewport(1)); - measurements.seal(8, PresentationId::new(2), &viewport(2)); - assert!( - measurements - .confirmed(PresentationId::new(2), time(300)) - .is_empty() - ); - measurements.seal(7, PresentationId::new(3), &viewport(2)); - let samples = measurements.confirmed(PresentationId::new(3), time(400)); - assert_eq!(samples[0]["input_to_present_ns"], 300); - assert!( - measurements - .confirmed(PresentationId::new(3), time(500)) - .is_empty() - ); - } - #[test] - fn superseded_layout_keeps_original_input_time_and_bounds_memory() { - let mut measurements = Measurements::default(); - for _ in 0..MAX_PENDING + 1 { - measurements.receive(7, "precise", time(100)); - } - assert_eq!(measurements.pending.len(), MAX_PENDING); - assert_eq!(measurements.dropped, 1); - let token = measurements.pending.back().unwrap().token; - measurements.start(&[token], |_| viewport(1)); - for id in 1..=20 { - measurements.seal(7, PresentationId::new(id), &viewport(2)); - } - assert_eq!( - measurements.pending.back().unwrap().layouts.len(), - MAX_PRESENTATIONS - ); - assert!( - measurements - .confirmed(PresentationId::new(1), time(200)) - .is_empty() - ); - let samples = measurements.confirmed(PresentationId::new(20), time(500)); - assert_eq!(samples[0]["input_to_present_ns"], 400); - assert_eq!(samples[0]["evicted_inputs"], 1); - } - #[test] - fn command_preflight_cannot_ack_before_the_viewport_changes() { - let mut measurements = Measurements::default(); - let token = measurements.receive(7, "precise", time(100)); - measurements.start(&[token], |_| viewport(1)); - measurements.seal(7, PresentationId::new(1), &viewport(1)); - assert!( - measurements - .confirmed(PresentationId::new(1), time(200)) - .is_empty() - ); - measurements.seal(7, PresentationId::new(2), &viewport(2)); - assert_eq!( - measurements - .confirmed(PresentationId::new(2), time(300)) - .len(), - 1 - ); - let token = measurements.receive(7, "page", time(400)); - measurements.start(&[token], |_| viewport(2)); - measurements.cancel(&[token]); - measurements.seal(7, PresentationId::new(3), &viewport(3)); - assert!( - measurements - .confirmed(PresentationId::new(3), time(500)) - .is_empty() - ); - } - - #[test] - fn completed_no_op_cannot_be_credited_to_a_later_command() { - let mut measurements = Measurements::default(); - let token = measurements.receive(7, "page", time(100)); - measurements.start(&[token], |_| viewport(1)); - measurements.finish(&[token], |_| viewport(1)); - measurements.seal(7, PresentationId::new(2), &viewport(2)); - assert!( - measurements - .confirmed(PresentationId::new(2), time(300)) - .is_empty() - ); - } - - #[test] - fn completed_scrolls_can_be_coalesced_back_to_the_original_viewport() { - let mut measurements = Measurements::default(); - let token = measurements.receive(7, "precise", time(100)); - measurements.start(&[token], |_| viewport(1)); - measurements.finish(&[token], |_| viewport(2)); - measurements.seal(7, PresentationId::new(2), &viewport(1)); - assert_eq!( - measurements - .confirmed(PresentationId::new(2), time(300)) - .len(), - 1 - ); - } - - #[test] - fn unrelated_clock_cannot_fabricate_latency() { - let mut measurements = Measurements::default(); - let token = measurements.receive(7, "page", time(100)); - measurements.start(&[token], |_| viewport(1)); - measurements.seal(7, PresentationId::new(1), &viewport(2)); - let samples = measurements.confirmed( - PresentationId::new(1), - PlatformTimestamp { - clock_id: 2, - nanoseconds: 200, - }, - ); - assert!(samples[0]["input_to_present_ns"].is_null()); - } -} +#[path = "tests/input_latency_test.rs"] +mod tests; diff --git a/crates/neomacs-display-protocol/src/input_progress.rs b/crates/neomacs-display-protocol/src/input_progress.rs index 24792ce4ce..05086a9618 100644 --- a/crates/neomacs-display-protocol/src/input_progress.rs +++ b/crates/neomacs-display-protocol/src/input_progress.rs @@ -246,108 +246,5 @@ impl Drop for CommandInputs { } #[cfg(test)] -mod tests { - use super::*; - - #[test] - fn preview_observation_belongs_only_to_innermost_command() { - let stream = InputStream::default(); - let outer_input = stream.issue().unwrap(); - let receipt = outer_input.receipt(); - let mut progress = InputProgress::default(); - progress.consumed(outer_input); - assert!(progress.current_command_receipts().is_empty()); - let outer = progress.begin_command(); - assert!(progress.current_command_receipts()[0].same_input(&receipt)); - let inner = progress.begin_command(); - assert!(progress.current_command_receipts().is_empty()); - drop(inner); - assert_eq!(progress.current_command_receipts().len(), 1); - drop(outer); - assert!(progress.current_command_receipts().is_empty()); - assert!(receipt.acknowledged_by(&progress.checkpoint())); - } - - #[test] - fn old_frame_cannot_acknowledge_a_later_command_completion() { - let stream = InputStream::default(); - let receipt = stream.issue().unwrap(); - let mut progress = InputProgress::default(); - progress.consumed(receipt.clone()); - let command = progress.begin_command(); - let old_frame = progress.checkpoint(); - assert!(!receipt.acknowledged_by(&old_frame)); - drop(command); - assert!(!receipt.acknowledged_by(&old_frame)); - assert!(receipt.acknowledged_by(&progress.checkpoint())); - } - - #[test] - fn nested_completion_waits_for_the_outer_command() { - let stream = InputStream::default(); - let outer = stream.issue().unwrap(); - let inner = stream.issue().unwrap(); - let mut progress = InputProgress::default(); - progress.consumed(outer.clone()); - let outer_command = progress.begin_command(); - let inner_command = progress.begin_command(); - progress.consumed(inner.clone()); - drop(inner_command); - assert!(!inner.acknowledged_by(&progress.checkpoint())); - drop(outer_command); - assert!(inner.acknowledged_by(&progress.checkpoint())); - } - - #[test] - fn completion_on_unwind_and_stream_identity_are_independent() { - let stream = InputStream::default(); - let receipt = stream.issue().unwrap(); - let foreign = InputStream::default().issue().unwrap(); - let mut progress = InputProgress::default(); - progress.consumed(receipt.clone()); - let _ = std::panic::catch_unwind(std::panic::AssertUnwindSafe(|| { - let _command = progress.begin_command(); - panic!("command aborted"); - })); - assert!(receipt.acknowledged_by(&progress.checkpoint())); - assert!(!foreign.acknowledged_by(&progress.checkpoint())); - } - - #[test] - fn discarding_delivery_cancels_even_while_the_compositor_keeps_a_receipt() { - let stream = InputStream::default(); - let delivery = stream.issue().unwrap(); - let observer = delivery.receipt(); - let queued_copy = delivery.clone(); - drop(delivery); - assert!(!observer.cancelled()); - drop(queued_copy); - assert!(observer.cancelled()); - assert!(observer.acknowledged_by(&[stream.checkpoint()])); - } - - #[test] - fn completed_delivery_does_not_later_turn_into_cancellation() { - let stream = InputStream::default(); - let delivery = stream.issue().unwrap(); - let observer = delivery.receipt(); - let mut progress = InputProgress::default(); - let command = progress.begin_command(); - progress.consumed(delivery); - assert!(!observer.acknowledged_by(&progress.checkpoint())); - drop(command); - assert!(observer.acknowledged_by(&progress.checkpoint())); - assert!(!observer.cancelled()); - } - - #[test] - fn pending_receipts_are_bounded_and_capacity_returns_after_completion() { - let stream = InputStream::default(); - let receipts: Vec<_> = (0..MAX_PENDING).map(|_| stream.issue().unwrap()).collect(); - assert!(stream.issue().is_none()); - for receipt in receipts { - receipt.complete(); - } - assert!(stream.issue().is_some()); - } -} +#[path = "tests/input_progress_test.rs"] +mod tests; diff --git a/crates/neomacs-display-protocol/src/interaction_projection.rs b/crates/neomacs-display-protocol/src/interaction_projection.rs index 2b1466be20..a2b10301a6 100644 --- a/crates/neomacs-display-protocol/src/interaction_projection.rs +++ b/crates/neomacs-display-protocol/src/interaction_projection.rs @@ -222,4 +222,5 @@ impl InteractionProjection { } #[cfg(test)] +#[path = "interaction_projection/tests/interaction_projection_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/interaction_projection/tests/mod.rs b/crates/neomacs-display-protocol/src/interaction_projection/tests/interaction_projection_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/interaction_projection/tests/mod.rs rename to crates/neomacs-display-protocol/src/interaction_projection/tests/interaction_projection_test.rs diff --git a/crates/neomacs-display-protocol/src/motion_spec.rs b/crates/neomacs-display-protocol/src/motion_spec.rs index 4906f76553..be9fd2a614 100644 --- a/crates/neomacs-display-protocol/src/motion_spec.rs +++ b/crates/neomacs-display-protocol/src/motion_spec.rs @@ -413,4 +413,5 @@ impl MotionSpec { } #[cfg(test)] +#[path = "motion_spec/tests/motion_spec_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/motion_spec/tests/mod.rs b/crates/neomacs-display-protocol/src/motion_spec/tests/motion_spec_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/motion_spec/tests/mod.rs rename to crates/neomacs-display-protocol/src/motion_spec/tests/motion_spec_test.rs diff --git a/crates/neomacs-display-protocol/src/popup_placement.rs b/crates/neomacs-display-protocol/src/popup_placement.rs index f89d8d6de0..d34ca712d3 100644 --- a/crates/neomacs-display-protocol/src/popup_placement.rs +++ b/crates/neomacs-display-protocol/src/popup_placement.rs @@ -185,4 +185,5 @@ fn shift_into_viewport(origin: Point, popup: Size, viewport: Rect, padding: f32) } #[cfg(test)] +#[path = "popup_placement/tests/popup_placement_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/popup_placement/tests/mod.rs b/crates/neomacs-display-protocol/src/popup_placement/tests/popup_placement_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/popup_placement/tests/mod.rs rename to crates/neomacs-display-protocol/src/popup_placement/tests/popup_placement_test.rs diff --git a/crates/neomacs-display-protocol/src/present_mapping.rs b/crates/neomacs-display-protocol/src/present_mapping.rs index 91858299b9..e90b5ffa40 100644 --- a/crates/neomacs-display-protocol/src/present_mapping.rs +++ b/crates/neomacs-display-protocol/src/present_mapping.rs @@ -354,4 +354,5 @@ impl PresentMapping { } #[cfg(test)] +#[path = "present_mapping/tests/present_mapping_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/present_mapping/tests/mod.rs b/crates/neomacs-display-protocol/src/present_mapping/tests/present_mapping_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/present_mapping/tests/mod.rs rename to crates/neomacs-display-protocol/src/present_mapping/tests/present_mapping_test.rs diff --git a/crates/neomacs-display-protocol/src/presentation_origin.rs b/crates/neomacs-display-protocol/src/presentation_origin.rs index 08adee05b8..1702398542 100644 --- a/crates/neomacs-display-protocol/src/presentation_origin.rs +++ b/crates/neomacs-display-protocol/src/presentation_origin.rs @@ -151,4 +151,5 @@ impl PresentationOrigin { } #[cfg(test)] +#[path = "presentation_origin/tests/presentation_origin_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/presentation_origin/tests/mod.rs b/crates/neomacs-display-protocol/src/presentation_origin/tests/presentation_origin_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/presentation_origin/tests/mod.rs rename to crates/neomacs-display-protocol/src/presentation_origin/tests/presentation_origin_test.rs diff --git a/crates/neomacs-display-protocol/src/presented_frame.rs b/crates/neomacs-display-protocol/src/presented_frame.rs index 3c0a5b71d2..9ffc0a0300 100644 --- a/crates/neomacs-display-protocol/src/presented_frame.rs +++ b/crates/neomacs-display-protocol/src/presented_frame.rs @@ -257,4 +257,5 @@ impl PresentedFrameScene { } #[cfg(test)] +#[path = "presented_frame/tests/presented_frame_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/presented_frame/tests/mod.rs b/crates/neomacs-display-protocol/src/presented_frame/tests/presented_frame_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/presented_frame/tests/mod.rs rename to crates/neomacs-display-protocol/src/presented_frame/tests/presented_frame_test.rs diff --git a/crates/neomacs-display-protocol/src/presented_pointer.rs b/crates/neomacs-display-protocol/src/presented_pointer.rs index e78561ce81..0ec342c8e3 100644 --- a/crates/neomacs-display-protocol/src/presented_pointer.rs +++ b/crates/neomacs-display-protocol/src/presented_pointer.rs @@ -2617,6 +2617,7 @@ fn rect_has_valid_geometry(rect: FrameRect) -> bool { mod scroll; #[cfg(test)] +#[path = "presented_pointer/tests/presented_pointer_test.rs"] mod tests; #[cfg(test)] diff --git a/crates/neomacs-display-protocol/src/presented_pointer/scroll.rs b/crates/neomacs-display-protocol/src/presented_pointer/scroll.rs index 5fdcfc9539..a0c521bad8 100644 --- a/crates/neomacs-display-protocol/src/presented_pointer/scroll.rs +++ b/crates/neomacs-display-protocol/src/presented_pointer/scroll.rs @@ -135,78 +135,5 @@ impl PresentedPointerSourceMap { } #[cfg(test)] -mod tests { - use super::*; - fn source(window: i64, y: f32) -> PresentedPointerSourceMap { - let window = DisplayWindowId::new(window); - let bounds = FrameRect::new(10.0, y, 20.0, 10.0).unwrap(); - let mode = PointerDrawMode::Face(FaceId::new(1)); - PresentedPointerSourceMap::new( - vec![PresentedPointerRegion::new_owned( - PresentedRegionId::new(Some(window), PresentedRegionKind::TextBody), - bounds, - None, - Some(PointerAppearanceId::try_from(0usize).unwrap()), - )], - vec![PresentedPointerSourceAppearance::new( - vec![PresentedSourcePaintSpan::new( - PresentedPrimitiveKind::Glyph, - crate::GlyphRowRole::Text, - DisplaySlotId { - window_id: window, - row: 1, - col: 0, - }, - bounds, - )], - mode, - mode, - )], - ) - } - - #[test] - fn scroll_pointer_replacement_preserves_other_panes_without_accumulating_history() { - let window = DisplayWindowId::new(1); - let mut original = source(1, 10.0); - let other = source(2, 30.0); - original.append(other.clone()).unwrap(); - let coverage = source(1, 20.0); - let viewport = Rect::new(10.0, 10.0, 30.0, 20.0); - let mut projected = original; - for offset in [15.5, 10.0, 0.0, 15.5].into_iter().cycle().take(100) { - projected = projected - .replace_scrolled_body(window, &coverage, viewport, offset) - .unwrap(); - assert_eq!(projected.regions.len(), 2); - assert_eq!(projected.appearances.len(), 2); - let unchanged = &projected.regions[0]; - assert_eq!(unchanged.owner, other.regions[0].owner); - assert_eq!(unchanged.bounds, other.regions[0].bounds); - assert_eq!(projected.appearances[0], other.appearances[0]); - let moved = &projected.regions[1]; - assert_eq!(moved.bounds.y(), (20.0 - offset).max(10.0)); - assert_eq!(moved.bounds.bottom(), (30.0 - offset).min(30.0)); - assert_eq!(projected.appearances[1].paint_spans[0].clip, moved.bounds); - } - } - - #[test] - fn scroll_pointer_transport_rejects_foreign_or_evaluator_owned_regions() { - let bounds = FrameRect::new(0.0, 0.0, 100.0, 100.0).unwrap(); - let mut map = source(1, 10.0); - assert!( - map.validate_scroll_source(DisplayWindowId::new(1), bounds) - .is_ok() - ); - assert!( - map.validate_scroll_source(DisplayWindowId::new(2), bounds) - .is_err() - ); - map.regions[0].interaction = Some(InteractionId::new(1)); - assert!( - map.validate_scroll_source(DisplayWindowId::new(1), bounds) - .is_err() - ); - } -} +#[path = "tests/scroll_test.rs"] +mod tests; diff --git a/crates/neomacs-display-protocol/src/presented_pointer/tests/mod.rs b/crates/neomacs-display-protocol/src/presented_pointer/tests/presented_pointer_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/presented_pointer/tests/mod.rs rename to crates/neomacs-display-protocol/src/presented_pointer/tests/presented_pointer_test.rs diff --git a/crates/neomacs-display-protocol/src/presented_pointer/tests/scroll_test.rs b/crates/neomacs-display-protocol/src/presented_pointer/tests/scroll_test.rs new file mode 100644 index 0000000000..f4360577a1 --- /dev/null +++ b/crates/neomacs-display-protocol/src/presented_pointer/tests/scroll_test.rs @@ -0,0 +1,73 @@ +use super::*; +fn source(window: i64, y: f32) -> PresentedPointerSourceMap { + let window = DisplayWindowId::new(window); + let bounds = FrameRect::new(10.0, y, 20.0, 10.0).unwrap(); + let mode = PointerDrawMode::Face(FaceId::new(1)); + PresentedPointerSourceMap::new( + vec![PresentedPointerRegion::new_owned( + PresentedRegionId::new(Some(window), PresentedRegionKind::TextBody), + bounds, + None, + Some(PointerAppearanceId::try_from(0usize).unwrap()), + )], + vec![PresentedPointerSourceAppearance::new( + vec![PresentedSourcePaintSpan::new( + PresentedPrimitiveKind::Glyph, + crate::GlyphRowRole::Text, + DisplaySlotId { + window_id: window, + row: 1, + col: 0, + }, + bounds, + )], + mode, + mode, + )], + ) +} + +#[test] +fn scroll_pointer_replacement_preserves_other_panes_without_accumulating_history() { + let window = DisplayWindowId::new(1); + let mut original = source(1, 10.0); + let other = source(2, 30.0); + original.append(other.clone()).unwrap(); + let coverage = source(1, 20.0); + let viewport = Rect::new(10.0, 10.0, 30.0, 20.0); + let mut projected = original; + for offset in [15.5, 10.0, 0.0, 15.5].into_iter().cycle().take(100) { + projected = projected + .replace_scrolled_body(window, &coverage, viewport, offset) + .unwrap(); + assert_eq!(projected.regions.len(), 2); + assert_eq!(projected.appearances.len(), 2); + let unchanged = &projected.regions[0]; + assert_eq!(unchanged.owner, other.regions[0].owner); + assert_eq!(unchanged.bounds, other.regions[0].bounds); + assert_eq!(projected.appearances[0], other.appearances[0]); + let moved = &projected.regions[1]; + assert_eq!(moved.bounds.y(), (20.0 - offset).max(10.0)); + assert_eq!(moved.bounds.bottom(), (30.0 - offset).min(30.0)); + assert_eq!(projected.appearances[1].paint_spans[0].clip, moved.bounds); + } +} + +#[test] +fn scroll_pointer_transport_rejects_foreign_or_evaluator_owned_regions() { + let bounds = FrameRect::new(0.0, 0.0, 100.0, 100.0).unwrap(); + let mut map = source(1, 10.0); + assert!( + map.validate_scroll_source(DisplayWindowId::new(1), bounds) + .is_ok() + ); + assert!( + map.validate_scroll_source(DisplayWindowId::new(2), bounds) + .is_err() + ); + map.regions[0].interaction = Some(InteractionId::new(1)); + assert!( + map.validate_scroll_source(DisplayWindowId::new(1), bounds) + .is_err() + ); +} diff --git a/crates/neomacs-display-protocol/src/scene.rs b/crates/neomacs-display-protocol/src/scene.rs index 3f27be4117..9575fb21e8 100644 --- a/crates/neomacs-display-protocol/src/scene.rs +++ b/crates/neomacs-display-protocol/src/scene.rs @@ -473,4 +473,5 @@ impl Scene { } #[cfg(test)] +#[path = "scene/tests/scene_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/scene/tests/mod.rs b/crates/neomacs-display-protocol/src/scene/tests/scene_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/scene/tests/mod.rs rename to crates/neomacs-display-protocol/src/scene/tests/scene_test.rs diff --git a/crates/neomacs-display-protocol/src/scroll_animation.rs b/crates/neomacs-display-protocol/src/scroll_animation.rs index 026f93923b..058d46f458 100644 --- a/crates/neomacs-display-protocol/src/scroll_animation.rs +++ b/crates/neomacs-display-protocol/src/scroll_animation.rs @@ -356,4 +356,5 @@ impl TransitionEasing { // ─── Tests ────────────────────────────────────────────────────────────── #[cfg(test)] +#[path = "scroll_animation/tests/scroll_animation_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/scroll_animation/tests/mod.rs b/crates/neomacs-display-protocol/src/scroll_animation/tests/scroll_animation_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/scroll_animation/tests/mod.rs rename to crates/neomacs-display-protocol/src/scroll_animation/tests/scroll_animation_test.rs diff --git a/crates/neomacs-display-protocol/src/sealed_frame_presentation.rs b/crates/neomacs-display-protocol/src/sealed_frame_presentation.rs index d46dfde936..5140fbe050 100644 --- a/crates/neomacs-display-protocol/src/sealed_frame_presentation.rs +++ b/crates/neomacs-display-protocol/src/sealed_frame_presentation.rs @@ -107,4 +107,5 @@ impl Deref for SealedFramePresentation { } #[cfg(test)] +#[path = "sealed_frame_presentation/tests/sealed_frame_presentation_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/sealed_frame_presentation/tests/mod.rs b/crates/neomacs-display-protocol/src/sealed_frame_presentation/tests/sealed_frame_presentation_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/sealed_frame_presentation/tests/mod.rs rename to crates/neomacs-display-protocol/src/sealed_frame_presentation/tests/sealed_frame_presentation_test.rs diff --git a/crates/neomacs-display-protocol/src/snapshot_text.rs b/crates/neomacs-display-protocol/src/snapshot_text.rs index 3f4abf787c..560e967add 100644 --- a/crates/neomacs-display-protocol/src/snapshot_text.rs +++ b/crates/neomacs-display-protocol/src/snapshot_text.rs @@ -290,4 +290,5 @@ fn hex(color: Color) -> String { } #[cfg(test)] +#[path = "snapshot_text/tests/snapshot_text_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/snapshot_text/tests/mod.rs b/crates/neomacs-display-protocol/src/snapshot_text/tests/snapshot_text_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/snapshot_text/tests/mod.rs rename to crates/neomacs-display-protocol/src/snapshot_text/tests/snapshot_text_test.rs diff --git a/crates/neomacs-display-protocol/src/terminal_color.rs b/crates/neomacs-display-protocol/src/terminal_color.rs index b6e9583f63..5aff9db0dd 100644 --- a/crates/neomacs-display-protocol/src/terminal_color.rs +++ b/crates/neomacs-display-protocol/src/terminal_color.rs @@ -93,4 +93,5 @@ impl TerminalColor { } #[cfg(test)] +#[path = "terminal_color/tests/terminal_color_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/terminal_color/tests/mod.rs b/crates/neomacs-display-protocol/src/terminal_color/tests/terminal_color_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/terminal_color/tests/mod.rs rename to crates/neomacs-display-protocol/src/terminal_color/tests/terminal_color_test.rs diff --git a/crates/neomacs-display-protocol/src/tests/input_latency_test.rs b/crates/neomacs-display-protocol/src/tests/input_latency_test.rs new file mode 100644 index 0000000000..c836e4237e --- /dev/null +++ b/crates/neomacs-display-protocol/src/tests/input_latency_test.rs @@ -0,0 +1,194 @@ +use super::*; +fn viewport(start: usize) -> Vec { + vec![ScrollViewport { + window: 1, + buffer: 1, + start, + hscroll: 0, + vscroll: 0, + }] +} +fn time(nanoseconds: u64) -> PlatformTimestamp { + PlatformTimestamp { + clock_id: 1, + nanoseconds, + } +} +#[test] +fn output_confirmation_preserves_its_measurement_kind_and_uncertainty() { + let mut measurements = Measurements::default(); + let token = measurements.receive(7, "precise", time(100)); + let kind = PresentationObservation::FirstPixelOutput { uncertainty_ns: 70 }; + measurements.start(&[token], |_| viewport(1)); + measurements.projected_requested(&[token], 7, 41); + measurements.projected_observed(7, 41, time(150), kind); + measurements.seal(7, PresentationId::new(2), &viewport(2)); + let samples = measurements.observed(PresentationId::new(2), time(300), kind); + assert_eq!(samples[0]["observation"], "native-first-pixel-output"); + assert_eq!( + samples[0]["projected_observation"], + "native-first-pixel-output" + ); + assert_eq!(samples[0]["timestamp_uncertainty_ns"], 70); + assert_eq!(samples[0]["projected_timestamp_uncertainty_ns"], 70); + assert_eq!(samples[0]["input_to_present_ns"], 200); +} + +#[test] +fn projected_latency_requires_exact_native_submission_and_keeps_authoritative_completion() { + let mut measurements = Measurements::default(); + let token = measurements.receive(7, "precise", time(100)); + measurements.projected_requested(&[token], 7, 41); + measurements.projected_confirmed(8, 41, time(110)); + measurements.projected_confirmed(7, 40, time(120)); + measurements.projected_confirmed( + 7, + 41, + PlatformTimestamp { + clock_id: 2, + nanoseconds: 130, + }, + ); + assert!(measurements.pending[0].projected.is_none()); + measurements.projected_confirmed(7, 41, time(150)); + measurements.projected_confirmed(7, 41, time(160)); + assert!( + measurements + .confirmed(PresentationId::new(1), time(170)) + .is_empty() + ); + measurements.start(&[token], |_| viewport(1)); + measurements.seal(7, PresentationId::new(2), &viewport(2)); + let samples = measurements.confirmed(PresentationId::new(2), time(300)); + assert_eq!(samples.len(), 1); + assert_eq!(samples[0]["input_to_projected_present_ns"], 50); + assert_eq!(samples[0]["projected_submission"], 41); + assert_eq!(samples[0]["input_to_present_ns"], 200); + assert!(measurements.pending.is_empty()); +} + +#[test] +fn queued_input_and_other_frames_cannot_complete_a_latency_sample() { + let mut measurements = Measurements::default(); + let token = measurements.receive(7, "wheel", time(100)); + measurements.seal(7, PresentationId::new(1), &viewport(2)); + assert!( + measurements + .confirmed(PresentationId::new(1), time(200)) + .is_empty() + ); + measurements.start(&[token], |_| viewport(1)); + measurements.seal(8, PresentationId::new(2), &viewport(2)); + assert!( + measurements + .confirmed(PresentationId::new(2), time(300)) + .is_empty() + ); + measurements.seal(7, PresentationId::new(3), &viewport(2)); + let samples = measurements.confirmed(PresentationId::new(3), time(400)); + assert_eq!(samples[0]["input_to_present_ns"], 300); + assert!( + measurements + .confirmed(PresentationId::new(3), time(500)) + .is_empty() + ); +} +#[test] +fn superseded_layout_keeps_original_input_time_and_bounds_memory() { + let mut measurements = Measurements::default(); + for _ in 0..MAX_PENDING + 1 { + measurements.receive(7, "precise", time(100)); + } + assert_eq!(measurements.pending.len(), MAX_PENDING); + assert_eq!(measurements.dropped, 1); + let token = measurements.pending.back().unwrap().token; + measurements.start(&[token], |_| viewport(1)); + for id in 1..=20 { + measurements.seal(7, PresentationId::new(id), &viewport(2)); + } + assert_eq!( + measurements.pending.back().unwrap().layouts.len(), + MAX_PRESENTATIONS + ); + assert!( + measurements + .confirmed(PresentationId::new(1), time(200)) + .is_empty() + ); + let samples = measurements.confirmed(PresentationId::new(20), time(500)); + assert_eq!(samples[0]["input_to_present_ns"], 400); + assert_eq!(samples[0]["evicted_inputs"], 1); +} +#[test] +fn command_preflight_cannot_ack_before_the_viewport_changes() { + let mut measurements = Measurements::default(); + let token = measurements.receive(7, "precise", time(100)); + measurements.start(&[token], |_| viewport(1)); + measurements.seal(7, PresentationId::new(1), &viewport(1)); + assert!( + measurements + .confirmed(PresentationId::new(1), time(200)) + .is_empty() + ); + measurements.seal(7, PresentationId::new(2), &viewport(2)); + assert_eq!( + measurements + .confirmed(PresentationId::new(2), time(300)) + .len(), + 1 + ); + let token = measurements.receive(7, "page", time(400)); + measurements.start(&[token], |_| viewport(2)); + measurements.cancel(&[token]); + measurements.seal(7, PresentationId::new(3), &viewport(3)); + assert!( + measurements + .confirmed(PresentationId::new(3), time(500)) + .is_empty() + ); +} + +#[test] +fn completed_no_op_cannot_be_credited_to_a_later_command() { + let mut measurements = Measurements::default(); + let token = measurements.receive(7, "page", time(100)); + measurements.start(&[token], |_| viewport(1)); + measurements.finish(&[token], |_| viewport(1)); + measurements.seal(7, PresentationId::new(2), &viewport(2)); + assert!( + measurements + .confirmed(PresentationId::new(2), time(300)) + .is_empty() + ); +} + +#[test] +fn completed_scrolls_can_be_coalesced_back_to_the_original_viewport() { + let mut measurements = Measurements::default(); + let token = measurements.receive(7, "precise", time(100)); + measurements.start(&[token], |_| viewport(1)); + measurements.finish(&[token], |_| viewport(2)); + measurements.seal(7, PresentationId::new(2), &viewport(1)); + assert_eq!( + measurements + .confirmed(PresentationId::new(2), time(300)) + .len(), + 1 + ); +} + +#[test] +fn unrelated_clock_cannot_fabricate_latency() { + let mut measurements = Measurements::default(); + let token = measurements.receive(7, "page", time(100)); + measurements.start(&[token], |_| viewport(1)); + measurements.seal(7, PresentationId::new(1), &viewport(2)); + let samples = measurements.confirmed( + PresentationId::new(1), + PlatformTimestamp { + clock_id: 2, + nanoseconds: 200, + }, + ); + assert!(samples[0]["input_to_present_ns"].is_null()); +} diff --git a/crates/neomacs-display-protocol/src/tests/input_progress_test.rs b/crates/neomacs-display-protocol/src/tests/input_progress_test.rs new file mode 100644 index 0000000000..0ad219ebe1 --- /dev/null +++ b/crates/neomacs-display-protocol/src/tests/input_progress_test.rs @@ -0,0 +1,103 @@ +use super::*; + +#[test] +fn preview_observation_belongs_only_to_innermost_command() { + let stream = InputStream::default(); + let outer_input = stream.issue().unwrap(); + let receipt = outer_input.receipt(); + let mut progress = InputProgress::default(); + progress.consumed(outer_input); + assert!(progress.current_command_receipts().is_empty()); + let outer = progress.begin_command(); + assert!(progress.current_command_receipts()[0].same_input(&receipt)); + let inner = progress.begin_command(); + assert!(progress.current_command_receipts().is_empty()); + drop(inner); + assert_eq!(progress.current_command_receipts().len(), 1); + drop(outer); + assert!(progress.current_command_receipts().is_empty()); + assert!(receipt.acknowledged_by(&progress.checkpoint())); +} + +#[test] +fn old_frame_cannot_acknowledge_a_later_command_completion() { + let stream = InputStream::default(); + let receipt = stream.issue().unwrap(); + let mut progress = InputProgress::default(); + progress.consumed(receipt.clone()); + let command = progress.begin_command(); + let old_frame = progress.checkpoint(); + assert!(!receipt.acknowledged_by(&old_frame)); + drop(command); + assert!(!receipt.acknowledged_by(&old_frame)); + assert!(receipt.acknowledged_by(&progress.checkpoint())); +} + +#[test] +fn nested_completion_waits_for_the_outer_command() { + let stream = InputStream::default(); + let outer = stream.issue().unwrap(); + let inner = stream.issue().unwrap(); + let mut progress = InputProgress::default(); + progress.consumed(outer.clone()); + let outer_command = progress.begin_command(); + let inner_command = progress.begin_command(); + progress.consumed(inner.clone()); + drop(inner_command); + assert!(!inner.acknowledged_by(&progress.checkpoint())); + drop(outer_command); + assert!(inner.acknowledged_by(&progress.checkpoint())); +} + +#[test] +fn completion_on_unwind_and_stream_identity_are_independent() { + let stream = InputStream::default(); + let receipt = stream.issue().unwrap(); + let foreign = InputStream::default().issue().unwrap(); + let mut progress = InputProgress::default(); + progress.consumed(receipt.clone()); + let _ = std::panic::catch_unwind(std::panic::AssertUnwindSafe(|| { + let _command = progress.begin_command(); + panic!("command aborted"); + })); + assert!(receipt.acknowledged_by(&progress.checkpoint())); + assert!(!foreign.acknowledged_by(&progress.checkpoint())); +} + +#[test] +fn discarding_delivery_cancels_even_while_the_compositor_keeps_a_receipt() { + let stream = InputStream::default(); + let delivery = stream.issue().unwrap(); + let observer = delivery.receipt(); + let queued_copy = delivery.clone(); + drop(delivery); + assert!(!observer.cancelled()); + drop(queued_copy); + assert!(observer.cancelled()); + assert!(observer.acknowledged_by(&[stream.checkpoint()])); +} + +#[test] +fn completed_delivery_does_not_later_turn_into_cancellation() { + let stream = InputStream::default(); + let delivery = stream.issue().unwrap(); + let observer = delivery.receipt(); + let mut progress = InputProgress::default(); + let command = progress.begin_command(); + progress.consumed(delivery); + assert!(!observer.acknowledged_by(&progress.checkpoint())); + drop(command); + assert!(observer.acknowledged_by(&progress.checkpoint())); + assert!(!observer.cancelled()); +} + +#[test] +fn pending_receipts_are_bounded_and_capacity_returns_after_completion() { + let stream = InputStream::default(); + let receipts: Vec<_> = (0..MAX_PENDING).map(|_| stream.issue().unwrap()).collect(); + assert!(stream.issue().is_none()); + for receipt in receipts { + receipt.complete(); + } + assert!(stream.issue().is_some()); +} diff --git a/crates/neomacs-display-protocol/src/toolbar_icon.rs b/crates/neomacs-display-protocol/src/toolbar_icon.rs index c97bf7dc0f..f0ff04f66e 100644 --- a/crates/neomacs-display-protocol/src/toolbar_icon.rs +++ b/crates/neomacs-display-protocol/src/toolbar_icon.rs @@ -65,4 +65,5 @@ impl ToolBarIconKey { } #[cfg(test)] +#[path = "toolbar_icon/tests/toolbar_icon_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/toolbar_icon/tests/mod.rs b/crates/neomacs-display-protocol/src/toolbar_icon/tests/toolbar_icon_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/toolbar_icon/tests/mod.rs rename to crates/neomacs-display-protocol/src/toolbar_icon/tests/toolbar_icon_test.rs diff --git a/crates/neomacs-display-protocol/src/tooltip/lifetime.rs b/crates/neomacs-display-protocol/src/tooltip/lifetime.rs index f34d5b4291..321b4704de 100644 --- a/crates/neomacs-display-protocol/src/tooltip/lifetime.rs +++ b/crates/neomacs-display-protocol/src/tooltip/lifetime.rs @@ -115,4 +115,5 @@ impl TooltipClient { } #[cfg(test)] +#[path = "lifetime/tests/lifetime_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/tooltip/lifetime/tests/mod.rs b/crates/neomacs-display-protocol/src/tooltip/lifetime/tests/lifetime_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/tooltip/lifetime/tests/mod.rs rename to crates/neomacs-display-protocol/src/tooltip/lifetime/tests/lifetime_test.rs diff --git a/crates/neomacs-display-protocol/src/transition_policy.rs b/crates/neomacs-display-protocol/src/transition_policy.rs index 5a8bd94006..eb9c601bba 100644 --- a/crates/neomacs-display-protocol/src/transition_policy.rs +++ b/crates/neomacs-display-protocol/src/transition_policy.rs @@ -439,4 +439,5 @@ impl From<&VisualConfig> for TransitionPolicy { } #[cfg(test)] +#[path = "transition_policy/tests/transition_policy_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/transition_policy/tests/mod.rs b/crates/neomacs-display-protocol/src/transition_policy/tests/transition_policy_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/transition_policy/tests/mod.rs rename to crates/neomacs-display-protocol/src/transition_policy/tests/transition_policy_test.rs diff --git a/crates/neomacs-display-protocol/src/tty_palette.rs b/crates/neomacs-display-protocol/src/tty_palette.rs index 003871ada4..60b770c002 100644 --- a/crates/neomacs-display-protocol/src/tty_palette.rs +++ b/crates/neomacs-display-protocol/src/tty_palette.rs @@ -165,4 +165,5 @@ fn off_gray_diagonal(r: u8, g: u8, b: u8) -> f64 { } #[cfg(test)] +#[path = "tty_palette/tests/tty_palette_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/tty_palette/tests/mod.rs b/crates/neomacs-display-protocol/src/tty_palette/tests/tty_palette_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/tty_palette/tests/mod.rs rename to crates/neomacs-display-protocol/src/tty_palette/tests/tty_palette_test.rs diff --git a/crates/neomacs-display-protocol/src/types.rs b/crates/neomacs-display-protocol/src/types.rs index 76f4e6ff66..4bd418bf1b 100644 --- a/crates/neomacs-display-protocol/src/types.rs +++ b/crates/neomacs-display-protocol/src/types.rs @@ -837,4 +837,5 @@ impl Default for Transform { } #[cfg(test)] +#[path = "types/tests/types_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/types/tests/mod.rs b/crates/neomacs-display-protocol/src/types/tests/types_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/types/tests/mod.rs rename to crates/neomacs-display-protocol/src/types/tests/types_test.rs diff --git a/crates/neomacs-display-protocol/src/window_animation.rs b/crates/neomacs-display-protocol/src/window_animation.rs index 4816e17bef..0c4b7caaf9 100644 --- a/crates/neomacs-display-protocol/src/window_animation.rs +++ b/crates/neomacs-display-protocol/src/window_animation.rs @@ -283,6 +283,7 @@ pub fn default_window_movement() -> WindowAnimation { } #[cfg(test)] +#[path = "window_animation/tests/window_animation_test.rs"] mod tests; crate::effect_schema!(WindowAnimation { diff --git a/crates/neomacs-display-protocol/src/window_animation/tests/mod.rs b/crates/neomacs-display-protocol/src/window_animation/tests/window_animation_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/window_animation/tests/mod.rs rename to crates/neomacs-display-protocol/src/window_animation/tests/window_animation_test.rs diff --git a/crates/neomacs-display-protocol/src/window_chrome.rs b/crates/neomacs-display-protocol/src/window_chrome.rs index 76210ba156..125fa09394 100644 --- a/crates/neomacs-display-protocol/src/window_chrome.rs +++ b/crates/neomacs-display-protocol/src/window_chrome.rs @@ -41,4 +41,5 @@ impl WindowChromePolicy { } #[cfg(test)] +#[path = "window_chrome/tests/window_chrome_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/window_chrome/tests/mod.rs b/crates/neomacs-display-protocol/src/window_chrome/tests/window_chrome_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/window_chrome/tests/mod.rs rename to crates/neomacs-display-protocol/src/window_chrome/tests/window_chrome_test.rs diff --git a/crates/neomacs-display-protocol/src/xterm_palette.rs b/crates/neomacs-display-protocol/src/xterm_palette.rs index 8e8f8a6b22..9fc834877c 100644 --- a/crates/neomacs-display-protocol/src/xterm_palette.rs +++ b/crates/neomacs-display-protocol/src/xterm_palette.rs @@ -45,4 +45,5 @@ pub const fn xterm_256_rgb(index: u8) -> (u8, u8, u8) { } #[cfg(test)] +#[path = "xterm_palette/tests/xterm_palette_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/xterm_palette/tests/mod.rs b/crates/neomacs-display-protocol/src/xterm_palette/tests/xterm_palette_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/xterm_palette/tests/mod.rs rename to crates/neomacs-display-protocol/src/xterm_palette/tests/xterm_palette_test.rs diff --git a/crates/neomacs-display-protocol/src/xwidget_extent.rs b/crates/neomacs-display-protocol/src/xwidget_extent.rs index d16f119f95..43923ef7f8 100644 --- a/crates/neomacs-display-protocol/src/xwidget_extent.rs +++ b/crates/neomacs-display-protocol/src/xwidget_extent.rs @@ -333,4 +333,5 @@ impl XwidgetTextureCoordinates { } #[cfg(test)] +#[path = "xwidget_extent/tests/xwidget_extent_test.rs"] mod tests; diff --git a/crates/neomacs-display-protocol/src/xwidget_extent/tests/mod.rs b/crates/neomacs-display-protocol/src/xwidget_extent/tests/xwidget_extent_test.rs similarity index 100% rename from crates/neomacs-display-protocol/src/xwidget_extent/tests/mod.rs rename to crates/neomacs-display-protocol/src/xwidget_extent/tests/xwidget_extent_test.rs diff --git a/crates/neomacs-display-runtime/src/backend/tty/rif.rs b/crates/neomacs-display-runtime/src/backend/tty/rif.rs index a7e6710bae..cb1e09bdf5 100644 --- a/crates/neomacs-display-runtime/src/backend/tty/rif.rs +++ b/crates/neomacs-display-runtime/src/backend/tty/rif.rs @@ -3409,6 +3409,7 @@ fn surface_tty_placeholder(width_cols: usize) -> String { } #[cfg(test)] +#[path = "rif/tests/rif_test.rs"] mod tests; impl TtyRif { diff --git a/crates/neomacs-display-runtime/src/backend/tty/rif/tests/mod.rs b/crates/neomacs-display-runtime/src/backend/tty/rif/tests/rif_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/backend/tty/rif/tests/mod.rs rename to crates/neomacs-display-runtime/src/backend/tty/rif/tests/rif_test.rs diff --git a/crates/neomacs-display-runtime/src/backend/wgpu/animation.rs b/crates/neomacs-display-runtime/src/backend/wgpu/animation.rs index 2938103fec..14a5468cba 100644 --- a/crates/neomacs-display-runtime/src/backend/wgpu/animation.rs +++ b/crates/neomacs-display-runtime/src/backend/wgpu/animation.rs @@ -222,4 +222,5 @@ impl Default for AnimationEngine { } #[cfg(test)] +#[path = "animation/tests/animation_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/backend/wgpu/animation/tests/mod.rs b/crates/neomacs-display-runtime/src/backend/wgpu/animation/tests/animation_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/backend/wgpu/animation/tests/mod.rs rename to crates/neomacs-display-runtime/src/backend/wgpu/animation/tests/animation_test.rs diff --git a/crates/neomacs-display-runtime/src/backend/wgpu/drm_device.rs b/crates/neomacs-display-runtime/src/backend/wgpu/drm_device.rs index 363995f6c6..7219fbb7a2 100644 --- a/crates/neomacs-display-runtime/src/backend/wgpu/drm_device.rs +++ b/crates/neomacs-display-runtime/src/backend/wgpu/drm_device.rs @@ -50,4 +50,5 @@ fn render_node_from_device_number_in( } #[cfg(test)] +#[path = "drm_device/tests/drm_device_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/backend/wgpu/drm_device/tests/mod.rs b/crates/neomacs-display-runtime/src/backend/wgpu/drm_device/tests/drm_device_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/backend/wgpu/drm_device/tests/mod.rs rename to crates/neomacs-display-runtime/src/backend/wgpu/drm_device/tests/drm_device_test.rs diff --git a/crates/neomacs-display-runtime/src/backend/wgpu/events.rs b/crates/neomacs-display-runtime/src/backend/wgpu/events.rs index b8a4bab6e2..13c545a589 100644 --- a/crates/neomacs-display-runtime/src/backend/wgpu/events.rs +++ b/crates/neomacs-display-runtime/src/backend/wgpu/events.rs @@ -108,4 +108,5 @@ impl Default for NeomacsInputEvent { } #[cfg(test)] +#[path = "events/tests/events_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/backend/wgpu/events/tests/mod.rs b/crates/neomacs-display-runtime/src/backend/wgpu/events/tests/events_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/backend/wgpu/events/tests/mod.rs rename to crates/neomacs-display-runtime/src/backend/wgpu/events/tests/events_test.rs diff --git a/crates/neomacs-display-runtime/src/display_scale.rs b/crates/neomacs-display-runtime/src/display_scale.rs index 12dbcd3e3c..879f6fca5b 100644 --- a/crates/neomacs-display-runtime/src/display_scale.rs +++ b/crates/neomacs-display-runtime/src/display_scale.rs @@ -232,4 +232,5 @@ fn query_x11_display() -> X11DisplayObservation { // Every test here drives the X11/Wayland probe, whose types exist only // on Linux; the module would not compile elsewhere. #[cfg(all(test, target_os = "linux"))] +#[path = "display_scale/tests/display_scale_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/display_scale/tests/mod.rs b/crates/neomacs-display-runtime/src/display_scale/tests/display_scale_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/display_scale/tests/mod.rs rename to crates/neomacs-display-runtime/src/display_scale/tests/display_scale_test.rs diff --git a/crates/neomacs-display-runtime/src/macos_bundle_runtime.rs b/crates/neomacs-display-runtime/src/macos_bundle_runtime.rs index a6562033d0..d7c2b79a2f 100644 --- a/crates/neomacs-display-runtime/src/macos_bundle_runtime.rs +++ b/crates/neomacs-display-runtime/src/macos_bundle_runtime.rs @@ -86,4 +86,5 @@ pub fn configure_before_threads() { pub fn configure_before_threads() {} #[cfg(test)] +#[path = "macos_bundle_runtime/tests/macos_bundle_runtime_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/macos_bundle_runtime/tests/mod.rs b/crates/neomacs-display-runtime/src/macos_bundle_runtime/tests/macos_bundle_runtime_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/macos_bundle_runtime/tests/mod.rs rename to crates/neomacs-display-runtime/src/macos_bundle_runtime/tests/macos_bundle_runtime_test.rs diff --git a/crates/neomacs-display-runtime/src/menus/controller.rs b/crates/neomacs-display-runtime/src/menus/controller.rs index d341614ee4..d5cf898044 100644 --- a/crates/neomacs-display-runtime/src/menus/controller.rs +++ b/crates/neomacs-display-runtime/src/menus/controller.rs @@ -602,4 +602,5 @@ impl Drop for MenuPresentation { } #[cfg(test)] +#[path = "controller/tests/controller_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/menus/controller/tests/mod.rs b/crates/neomacs-display-runtime/src/menus/controller/tests/controller_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/menus/controller/tests/mod.rs rename to crates/neomacs-display-runtime/src/menus/controller/tests/controller_test.rs diff --git a/crates/neomacs-display-runtime/src/menus/help.rs b/crates/neomacs-display-runtime/src/menus/help.rs index 3ef23a61a6..e0bc2c82f6 100644 --- a/crates/neomacs-display-runtime/src/menus/help.rs +++ b/crates/neomacs-display-runtime/src/menus/help.rs @@ -87,4 +87,5 @@ impl HoverHelp { } #[cfg(test)] +#[path = "help/tests/help_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/menus/help/tests/mod.rs b/crates/neomacs-display-runtime/src/menus/help/tests/help_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/menus/help/tests/mod.rs rename to crates/neomacs-display-runtime/src/menus/help/tests/help_test.rs diff --git a/crates/neomacs-display-runtime/src/menus/session.rs b/crates/neomacs-display-runtime/src/menus/session.rs index 1ec5897f5f..a5cd1fca0b 100644 --- a/crates/neomacs-display-runtime/src/menus/session.rs +++ b/crates/neomacs-display-runtime/src/menus/session.rs @@ -350,4 +350,5 @@ impl MenuSession { } #[cfg(test)] +#[path = "session/tests/session_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/menus/session/tests/mod.rs b/crates/neomacs-display-runtime/src/menus/session/tests/session_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/menus/session/tests/mod.rs rename to crates/neomacs-display-runtime/src/menus/session/tests/session_test.rs diff --git a/crates/neomacs-display-runtime/src/presentation/pacing.rs b/crates/neomacs-display-runtime/src/presentation/pacing.rs index c879d8f4cb..9c44e57fc4 100644 --- a/crates/neomacs-display-runtime/src/presentation/pacing.rs +++ b/crates/neomacs-display-runtime/src/presentation/pacing.rs @@ -12,13 +12,5 @@ pub(crate) fn present_mode(supported: &[wgpu::PresentMode]) -> wgpu::PresentMode } #[cfg(test)] -mod tests { - use super::*; - #[test] - fn latest_frame_mode_is_selected_only_when_supported() { - use wgpu::PresentMode::*; - assert_eq!(present_mode(&[Fifo, Immediate, Mailbox]), Mailbox); - assert_eq!(present_mode(&[Fifo, Immediate]), Fifo); - assert_eq!(present_mode(&[Fifo]), Fifo); - } -} +#[path = "tests/pacing_test.rs"] +mod tests; diff --git a/crates/neomacs-display-runtime/src/presentation/retirement.rs b/crates/neomacs-display-runtime/src/presentation/retirement.rs index 7a80366d0d..f12551e930 100644 --- a/crates/neomacs-display-runtime/src/presentation/retirement.rs +++ b/crates/neomacs-display-runtime/src/presentation/retirement.rs @@ -29,4 +29,5 @@ impl Drop for Retirements { } #[cfg(test)] +#[path = "retirement/tests/retirement_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/presentation/retirement/tests/mod.rs b/crates/neomacs-display-runtime/src/presentation/retirement/tests/retirement_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/presentation/retirement/tests/mod.rs rename to crates/neomacs-display-runtime/src/presentation/retirement/tests/retirement_test.rs diff --git a/crates/neomacs-display-runtime/src/presentation/tests/pacing_test.rs b/crates/neomacs-display-runtime/src/presentation/tests/pacing_test.rs new file mode 100644 index 0000000000..28b8be472c --- /dev/null +++ b/crates/neomacs-display-runtime/src/presentation/tests/pacing_test.rs @@ -0,0 +1,8 @@ +use super::*; +#[test] +fn latest_frame_mode_is_selected_only_when_supported() { + use wgpu::PresentMode::*; + assert_eq!(present_mode(&[Fifo, Immediate, Mailbox]), Mailbox); + assert_eq!(present_mode(&[Fifo, Immediate]), Fifo); + assert_eq!(present_mode(&[Fifo]), Fifo); +} diff --git a/crates/neomacs-display-runtime/src/presentation_feedback/tests/wayland_test.rs b/crates/neomacs-display-runtime/src/presentation_feedback/tests/wayland_test.rs new file mode 100644 index 0000000000..68668f9751 --- /dev/null +++ b/crates/neomacs-display-runtime/src/presentation_feedback/tests/wayland_test.rs @@ -0,0 +1,65 @@ +use super::*; +use neomacs_display_protocol::PresentationId; + +fn submission(serial: u64, layout: u64) -> Submission { + Submission { + serial, + frame: 7, + layout: PresentationId::new(layout), + width: 800, + height: 600, + scale: 1.0, + } +} + +#[test] +fn pending_receipts_wake_without_new_input_and_stop_after_ack_or_timeout() { + let now = observe_platform_now(); + let mut pending = PendingReceipts::default(); + assert_eq!(pending.deadline(now), None); + pending.requested(1, now); + pending.requested(2, now); + assert_eq!( + pending.deadline(now), + Some(now.plus(Duration::from_millis(4))) + ); + pending.received(2); + assert!(pending.deadline(now).is_some()); + pending.received(1); + assert_eq!(pending.deadline(now), None); + pending.requested(3, now); + assert_eq!(pending.deadline(now.plus(Duration::from_secs(1))), None); +} + +#[test] +fn receipt_identifies_confirmed_layout_not_latest_requested_layout() { + let directory = tempfile::tempdir().unwrap(); + let path = directory.path().join("receipt"); + let mut receipts = Receipts { + path: path.clone(), + latest_presented: 0, + clock_id: Some(1), + pending: PendingReceipts::default(), + }; + let confirmed = |submission| { + NativeFeedback::Presented(ConfirmedPresentation { + submission, + timestamp: CompositorTimestamp { + clock_id: 1, + seconds: 42, + nanoseconds: 123, + }, + }) + }; + receipts.observe(NativeFeedback::Discarded(submission(2, 200))); + assert!(!path.exists()); + receipts.observe(confirmed(submission(1, 100))); + let first = fs::read_to_string(&path).unwrap(); + assert!(first.contains(":submission 1 :frame 7 :presentation 100 ")); + receipts.observe(confirmed(submission(3, 300))); + let latest = fs::read_to_string(&path).unwrap(); + assert!(latest.contains(":submission 3 :frame 7 :presentation 300 ")); + receipts.observe(confirmed(submission(1, 100))); + receipts.observe(NativeFeedback::Discarded(submission(4, 400))); + assert_eq!(fs::read_to_string(&path).unwrap(), latest); +} diff --git a/crates/neomacs-display-runtime/src/presentation_feedback/wayland.rs b/crates/neomacs-display-runtime/src/presentation_feedback/wayland.rs index 26996d5085..4590579b5b 100644 --- a/crates/neomacs-display-runtime/src/presentation_feedback/wayland.rs +++ b/crates/neomacs-display-runtime/src/presentation_feedback/wayland.rs @@ -392,70 +392,5 @@ impl Drop for PresentationObserver { } #[cfg(test)] -mod tests { - use super::*; - use neomacs_display_protocol::PresentationId; - - fn submission(serial: u64, layout: u64) -> Submission { - Submission { - serial, - frame: 7, - layout: PresentationId::new(layout), - width: 800, - height: 600, - scale: 1.0, - } - } - - #[test] - fn pending_receipts_wake_without_new_input_and_stop_after_ack_or_timeout() { - let now = observe_platform_now(); - let mut pending = PendingReceipts::default(); - assert_eq!(pending.deadline(now), None); - pending.requested(1, now); - pending.requested(2, now); - assert_eq!( - pending.deadline(now), - Some(now.plus(Duration::from_millis(4))) - ); - pending.received(2); - assert!(pending.deadline(now).is_some()); - pending.received(1); - assert_eq!(pending.deadline(now), None); - pending.requested(3, now); - assert_eq!(pending.deadline(now.plus(Duration::from_secs(1))), None); - } - - #[test] - fn receipt_identifies_confirmed_layout_not_latest_requested_layout() { - let directory = tempfile::tempdir().unwrap(); - let path = directory.path().join("receipt"); - let mut receipts = Receipts { - path: path.clone(), - latest_presented: 0, - clock_id: Some(1), - pending: PendingReceipts::default(), - }; - let confirmed = |submission| { - NativeFeedback::Presented(ConfirmedPresentation { - submission, - timestamp: CompositorTimestamp { - clock_id: 1, - seconds: 42, - nanoseconds: 123, - }, - }) - }; - receipts.observe(NativeFeedback::Discarded(submission(2, 200))); - assert!(!path.exists()); - receipts.observe(confirmed(submission(1, 100))); - let first = fs::read_to_string(&path).unwrap(); - assert!(first.contains(":submission 1 :frame 7 :presentation 100 ")); - receipts.observe(confirmed(submission(3, 300))); - let latest = fs::read_to_string(&path).unwrap(); - assert!(latest.contains(":submission 3 :frame 7 :presentation 300 ")); - receipts.observe(confirmed(submission(1, 100))); - receipts.observe(NativeFeedback::Discarded(submission(4, 400))); - assert_eq!(fs::read_to_string(&path).unwrap(), latest); - } -} +#[path = "tests/wayland_test.rs"] +mod tests; diff --git a/crates/neomacs-display-runtime/src/redisplay/maintenance.rs b/crates/neomacs-display-runtime/src/redisplay/maintenance.rs index 7cd2f11259..50ba9a7d6c 100644 --- a/crates/neomacs-display-runtime/src/redisplay/maintenance.rs +++ b/crates/neomacs-display-runtime/src/redisplay/maintenance.rs @@ -23,58 +23,5 @@ pub(super) fn run_budgeted( } #[cfg(test)] -mod tests { - use super::*; - use std::cell::Cell; - - #[test] - fn ready_acquisition_uses_a_bounded_batch() { - let calls = Cell::new(0); - let result = run_budgeted( - || { - calls.set(calls.get() + 1); - (Some(ScrollCoverageProgress::Continue), false) - }, - || Duration::ZERO, - ); - assert_eq!(calls.get(), 4); - assert_eq!(result, (Some(ScrollCoverageProgress::Continue), false)); - } - - #[test] - fn acquisition_yields_on_elapsed_budget_publication_or_worker_wait() { - let calls = Cell::new(0); - run_budgeted( - || { - calls.set(calls.get() + 1); - (Some(ScrollCoverageProgress::Continue), false) - }, - || { - if calls.get() < 2 { - Duration::ZERO - } else { - Duration::from_millis(1) - } - }, - ); - assert_eq!(calls.get(), 2); - for result in [ - (Some(ScrollCoverageProgress::Continue), true), - (Some(ScrollCoverageProgress::WorkerPending), false), - (None, false), - ] { - calls.set(0); - assert_eq!( - run_budgeted( - || { - calls.set(calls.get() + 1); - result - }, - || Duration::ZERO - ), - result - ); - assert_eq!(calls.get(), 1); - } - } -} +#[path = "tests/maintenance_test.rs"] +mod tests; diff --git a/crates/neomacs-display-runtime/src/redisplay/tests/maintenance_test.rs b/crates/neomacs-display-runtime/src/redisplay/tests/maintenance_test.rs new file mode 100644 index 0000000000..01509d050c --- /dev/null +++ b/crates/neomacs-display-runtime/src/redisplay/tests/maintenance_test.rs @@ -0,0 +1,53 @@ +use super::*; +use std::cell::Cell; + +#[test] +fn ready_acquisition_uses_a_bounded_batch() { + let calls = Cell::new(0); + let result = run_budgeted( + || { + calls.set(calls.get() + 1); + (Some(ScrollCoverageProgress::Continue), false) + }, + || Duration::ZERO, + ); + assert_eq!(calls.get(), 4); + assert_eq!(result, (Some(ScrollCoverageProgress::Continue), false)); +} + +#[test] +fn acquisition_yields_on_elapsed_budget_publication_or_worker_wait() { + let calls = Cell::new(0); + run_budgeted( + || { + calls.set(calls.get() + 1); + (Some(ScrollCoverageProgress::Continue), false) + }, + || { + if calls.get() < 2 { + Duration::ZERO + } else { + Duration::from_millis(1) + } + }, + ); + assert_eq!(calls.get(), 2); + for result in [ + (Some(ScrollCoverageProgress::Continue), true), + (Some(ScrollCoverageProgress::WorkerPending), false), + (None, false), + ] { + calls.set(0); + assert_eq!( + run_budgeted( + || { + calls.set(calls.get() + 1); + result + }, + || Duration::ZERO + ), + result + ); + assert_eq!(calls.get(), 1); + } +} diff --git a/crates/neomacs-display-runtime/src/render_thread/child_frames.rs b/crates/neomacs-display-runtime/src/render_thread/child_frames.rs index b9598f89e7..f24bacedfb 100644 --- a/crates/neomacs-display-runtime/src/render_thread/child_frames.rs +++ b/crates/neomacs-display-runtime/src/render_thread/child_frames.rs @@ -825,4 +825,5 @@ impl ChildFrameManager { } #[cfg(test)] +#[path = "child_frames/tests/child_frames_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/render_thread/child_frames/tests/mod.rs b/crates/neomacs-display-runtime/src/render_thread/child_frames/tests/child_frames_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/child_frames/tests/mod.rs rename to crates/neomacs-display-runtime/src/render_thread/child_frames/tests/child_frames_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/cursor.rs b/crates/neomacs-display-runtime/src/render_thread/cursor.rs index a1c165c339..c074e50c8b 100644 --- a/crates/neomacs-display-runtime/src/render_thread/cursor.rs +++ b/crates/neomacs-display-runtime/src/render_thread/cursor.rs @@ -683,4 +683,5 @@ impl CursorState { } #[cfg(test)] +#[path = "cursor/tests/cursor_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/render_thread/cursor/tests/mod.rs b/crates/neomacs-display-runtime/src/render_thread/cursor/tests/cursor_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/cursor/tests/mod.rs rename to crates/neomacs-display-runtime/src/render_thread/cursor/tests/cursor_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/device_loss.rs b/crates/neomacs-display-runtime/src/render_thread/device_loss.rs index 81822c4ad1..b391263fca 100644 --- a/crates/neomacs-display-runtime/src/render_thread/device_loss.rs +++ b/crates/neomacs-display-runtime/src/render_thread/device_loss.rs @@ -79,4 +79,5 @@ impl DeviceLossDetector { } #[cfg(test)] +#[path = "device_loss/tests/device_loss_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/render_thread/device_loss/tests/mod.rs b/crates/neomacs-display-runtime/src/render_thread/device_loss/tests/device_loss_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/device_loss/tests/mod.rs rename to crates/neomacs-display-runtime/src/render_thread/device_loss/tests/device_loss_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/pane_layout.rs b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/pane_layout.rs index 096c8579a3..0700921a74 100644 --- a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/pane_layout.rs +++ b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/pane_layout.rs @@ -1461,4 +1461,5 @@ impl LayoutSample { } #[cfg(test)] +#[path = "pane_layout/tests/pane_layout_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/pane_layout/tests/mod.rs b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/pane_layout/tests/pane_layout_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/pane_layout/tests/mod.rs rename to crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/pane_layout/tests/pane_layout_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/reflow.rs b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/reflow.rs index 6a32ef9f98..35f8139686 100644 --- a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/reflow.rs +++ b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/reflow.rs @@ -289,4 +289,5 @@ pub(in crate::render_thread) fn imprints_by_window( } #[cfg(test)] +#[path = "reflow/tests/reflow_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/reflow/tests/mod.rs b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/reflow/tests/reflow_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/reflow/tests/mod.rs rename to crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/reflow/tests/reflow_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/scroll.rs b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/scroll.rs index b3f6fec553..234ae7cdb0 100644 --- a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/scroll.rs +++ b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/scroll.rs @@ -289,4 +289,5 @@ pub(in crate::render_thread) fn anchors_by_window( } #[cfg(test)] +#[path = "scroll/tests/scroll_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/scroll/tests/mod.rs b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/scroll/tests/scroll_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/scroll/tests/mod.rs rename to crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/scroll/tests/scroll_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/selection.rs b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/selection.rs index d62612fd8f..4d17c60fdd 100644 --- a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/selection.rs +++ b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/selection.rs @@ -44,4 +44,5 @@ pub(in crate::render_thread) fn observe_selection( } #[cfg(test)] +#[path = "selection/tests/selection_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/selection/tests/mod.rs b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/selection/tests/selection_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/selection/tests/mod.rs rename to crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/selection/tests/selection_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/theme.rs b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/theme.rs index ad01d0bd9a..46c7ca4b0d 100644 --- a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/theme.rs +++ b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/theme.rs @@ -54,4 +54,5 @@ pub(in crate::render_thread) fn theme_change( } #[cfg(test)] +#[path = "theme/tests/theme_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/theme/tests/mod.rs b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/theme/tests/theme_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/theme/tests/mod.rs rename to crates/neomacs-display-runtime/src/render_thread/frame_compositor/continuity/theme/tests/theme_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/input_scroll.rs b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/input_scroll.rs index d833f300a9..de5f7e91c6 100644 --- a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/input_scroll.rs +++ b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/input_scroll.rs @@ -312,4 +312,5 @@ impl InputScroll { } #[cfg(test)] +#[path = "input_scroll/tests/input_scroll_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/input_scroll/tests.rs b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/input_scroll/tests/input_scroll_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/frame_compositor/input_scroll/tests.rs rename to crates/neomacs-display-runtime/src/render_thread/frame_compositor/input_scroll/tests/input_scroll_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/layout_continuity.rs b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/layout_continuity.rs index ad5e5b2ee4..46d306120c 100644 --- a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/layout_continuity.rs +++ b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/layout_continuity.rs @@ -97,4 +97,5 @@ impl GuiFrameRenderState { } #[cfg(test)] +#[path = "layout_continuity/tests/layout_continuity_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/layout_continuity/tests/mod.rs b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/layout_continuity/tests/layout_continuity_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/frame_compositor/layout_continuity/tests/mod.rs rename to crates/neomacs-display-runtime/src/render_thread/frame_compositor/layout_continuity/tests/layout_continuity_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/layout_driver.rs b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/layout_driver.rs index bc871072ae..2047255b5b 100644 --- a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/layout_driver.rs +++ b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/layout_driver.rs @@ -319,4 +319,5 @@ impl LayoutDriver { } #[cfg(test)] +#[path = "layout_driver/tests/layout_driver_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/layout_driver/tests/mod.rs b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/layout_driver/tests/layout_driver_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/frame_compositor/layout_driver/tests/mod.rs rename to crates/neomacs-display-runtime/src/render_thread/frame_compositor/layout_driver/tests/layout_driver_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/motion.rs b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/motion.rs index 714838dc2e..5f2ec4be4f 100644 --- a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/motion.rs +++ b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/motion.rs @@ -310,4 +310,5 @@ fn spring_progress(omega: f32, zeta: f32, v0: f32, t: f32) -> f32 { } #[cfg(test)] +#[path = "motion/tests/motion_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/render_thread/frame_compositor/motion/tests/mod.rs b/crates/neomacs-display-runtime/src/render_thread/frame_compositor/motion/tests/motion_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/frame_compositor/motion/tests/mod.rs rename to crates/neomacs-display-runtime/src/render_thread/frame_compositor/motion/tests/motion_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/frame_ingest.rs b/crates/neomacs-display-runtime/src/render_thread/frame_ingest.rs index cb4a15bb62..2d110d0e7b 100644 --- a/crates/neomacs-display-runtime/src/render_thread/frame_ingest.rs +++ b/crates/neomacs-display-runtime/src/render_thread/frame_ingest.rs @@ -1276,4 +1276,5 @@ fn dump_frame_glyphs_resolved(frame: &crate::core::frame_glyphs::FrameGlyphBuffe } #[cfg(all(test, feature = "webview"))] +#[path = "frame_ingest/tests/frame_ingest_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/render_thread/frame_ingest/tests/mod.rs b/crates/neomacs-display-runtime/src/render_thread/frame_ingest/tests/frame_ingest_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/frame_ingest/tests/mod.rs rename to crates/neomacs-display-runtime/src/render_thread/frame_ingest/tests/frame_ingest_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/frame_state.rs b/crates/neomacs-display-runtime/src/render_thread/frame_state.rs index 3014434f8e..38af18144e 100644 --- a/crates/neomacs-display-runtime/src/render_thread/frame_state.rs +++ b/crates/neomacs-display-runtime/src/render_thread/frame_state.rs @@ -642,4 +642,5 @@ impl RenderApp { } #[cfg(test)] +#[path = "frame_state/tests/frame_state_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/render_thread/frame_state/tests/mod.rs b/crates/neomacs-display-runtime/src/render_thread/frame_state/tests/frame_state_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/frame_state/tests/mod.rs rename to crates/neomacs-display-runtime/src/render_thread/frame_state/tests/frame_state_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/frame_windows.rs b/crates/neomacs-display-runtime/src/render_thread/frame_windows.rs index dde9807be0..41e0233c2f 100644 --- a/crates/neomacs-display-runtime/src/render_thread/frame_windows.rs +++ b/crates/neomacs-display-runtime/src/render_thread/frame_windows.rs @@ -2762,4 +2762,5 @@ impl GuiFrameWindowManager { } #[cfg(test)] +#[path = "frame_windows/tests/frame_windows_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/render_thread/frame_windows/tests/mod.rs b/crates/neomacs-display-runtime/src/render_thread/frame_windows/tests/frame_windows_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/frame_windows/tests/mod.rs rename to crates/neomacs-display-runtime/src/render_thread/frame_windows/tests/frame_windows_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/input.rs b/crates/neomacs-display-runtime/src/render_thread/input.rs index e7fc58e571..16e38f6720 100644 --- a/crates/neomacs-display-runtime/src/render_thread/input.rs +++ b/crates/neomacs-display-runtime/src/render_thread/input.rs @@ -552,4 +552,5 @@ impl RenderApp { } #[cfg(test)] +#[path = "input/tests/input_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/render_thread/input/tests/mod.rs b/crates/neomacs-display-runtime/src/render_thread/input/tests/input_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/input/tests/mod.rs rename to crates/neomacs-display-runtime/src/render_thread/input/tests/input_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/mod.rs b/crates/neomacs-display-runtime/src/render_thread/mod.rs index 7535c82daf..d6123ce509 100644 --- a/crates/neomacs-display-runtime/src/render_thread/mod.rs +++ b/crates/neomacs-display-runtime/src/render_thread/mod.rs @@ -36,6 +36,7 @@ mod terminal_commands; #[cfg(feature = "neo-term")] mod terminal_expansion; #[cfg(test)] +#[path = "tests/render_thread_test.rs"] mod tests; #[cfg(test)] #[path = "tests/texture_discipline_test.rs"] diff --git a/crates/neomacs-display-runtime/src/render_thread/modifier_sides.rs b/crates/neomacs-display-runtime/src/render_thread/modifier_sides.rs index 9224488c07..80259449df 100644 --- a/crates/neomacs-display-runtime/src/render_thread/modifier_sides.rs +++ b/crates/neomacs-display-runtime/src/render_thread/modifier_sides.rs @@ -110,4 +110,5 @@ impl ModifierSides { } #[cfg(test)] +#[path = "modifier_sides/tests/modifier_sides_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/render_thread/modifier_sides/tests.rs b/crates/neomacs-display-runtime/src/render_thread/modifier_sides/tests/modifier_sides_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/modifier_sides/tests.rs rename to crates/neomacs-display-runtime/src/render_thread/modifier_sides/tests/modifier_sides_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/pointer_events.rs b/crates/neomacs-display-runtime/src/render_thread/pointer_events.rs index ac12fbb6eb..a023ff69ff 100644 --- a/crates/neomacs-display-runtime/src/render_thread/pointer_events.rs +++ b/crates/neomacs-display-runtime/src/render_thread/pointer_events.rs @@ -75,126 +75,8 @@ pub(super) enum PointerOwner { } #[cfg(all(test, feature = "webview"))] -mod webview_tests { - use super::*; - - /// Where a pointer at surface `(x, y)` lands while nothing is moving. - /// - /// A settled projection is the identity, so a fixture built with this - /// reads exactly as it did when this hit test took two `f32`s — and, - /// unlike two `f32`s, it had to come from a projection to exist. - fn settled_frame_point(x: f32, y: f32) -> PresentationFramePoint { - neomacs_display_protocol::InteractionProjection::settled( - neomacs_display_protocol::PresentationId::new(1), - ) - .map( - neomacs_display_protocol::GeometryPoint::< - neomacs_display_protocol::RootSurfaceSpace, - neomacs_display_protocol::LogicalPixels, - >::from_px(x, y) - .expect("a fixture's coordinates are finite"), - ) - .expect("the identity of a finite point stays representable") - } - - fn presentation( - x: f32, - y: f32, - content: neomacs_display_protocol::XwidgetContentExtent, - advance: f32, - ) -> neomacs_display_protocol::XwidgetPresentationGeometry - { - neomacs_display_protocol::XwidgetPresentationGeometry::new( - neomacs_display_protocol::GeometryPoint::< - neomacs_display_protocol::FrameSpace, - neomacs_display_protocol::LogicalPixels, - >::from_px(x, y) - .expect("valid origin"), - content, - neomacs_display_protocol::XwidgetLayoutAdvance::new(neomacs_display_protocol::Px( - advance, - )) - .expect("valid advance"), - None, - ) - } - - #[test] - fn hit_testing_keeps_xwidget_and_webview_identities_distinct() { - let mut glyphs = neomacs_display_protocol::FrameGlyphBuffer::new(); - let content = - neomacs_display_protocol::XwidgetContentExtent::new(320.0, 200.0).expect("extent"); - glyphs.add_xwidget( - neomacs_display_protocol::XwidgetId::new(7), - neomacs_display_protocol::WebViewId::new(91), - presentation(10.0, 20.0, content, 320.0), - ); - - assert_eq!( - webview_glyph_hit_test(&glyphs.glyphs, settled_frame_point(42.5, 75.0)), - Some(WebViewPointerHit { - view: neomacs_display_protocol::WebViewId::new(91), - position: WebContentPoint::new(32.5, 55.0), - }) - ); - } - - #[test] - fn hit_testing_rejects_the_clipped_part_of_an_xwidget() { - let mut glyphs = neomacs_display_protocol::FrameGlyphBuffer::new(); - glyphs.set_draw_context( - neomacs_display_protocol::DisplayWindowId::new(1), - neomacs_display_protocol::GlyphRowRole::Text, - Some(neomacs_display_protocol::Rect::new(20.0, 30.0, 50.0, 40.0)), - ); - let content = - neomacs_display_protocol::XwidgetContentExtent::new(100.0, 80.0).expect("extent"); - glyphs.add_xwidget( - neomacs_display_protocol::XwidgetId::new(7), - neomacs_display_protocol::WebViewId::new(91), - presentation(10.0, 20.0, content, 100.0), - ); - - assert_eq!( - webview_glyph_hit_test(&glyphs.glyphs, settled_frame_point(15.0, 25.0)), - None - ); - assert!(webview_glyph_hit_test(&glyphs.glyphs, settled_frame_point(25.0, 35.0)).is_some()); - } - - /// A slot cropped at the right edge does not shrink the pointer target: - /// the widget is still its own size behind the text-area clip, so a - /// point inside the clip but past the cropped slot still hits it. - #[test] - fn hit_testing_uses_the_widgets_own_extent_not_the_cropped_slot() { - let mut glyphs = neomacs_display_protocol::FrameGlyphBuffer::new(); - glyphs.set_draw_context( - neomacs_display_protocol::DisplayWindowId::new(1), - neomacs_display_protocol::GlyphRowRole::Text, - Some(neomacs_display_protocol::Rect::new(0.0, 0.0, 400.0, 100.0)), - ); - let content = - neomacs_display_protocol::XwidgetContentExtent::new(600.0, 40.0).expect("extent"); - glyphs.add_xwidget( - neomacs_display_protocol::XwidgetId::new(7), - neomacs_display_protocol::WebViewId::new(91), - presentation(8.0, 10.0, content, 304.0), - ); - - assert_eq!( - webview_glyph_hit_test(&glyphs.glyphs, settled_frame_point(350.0, 20.0)), - Some(WebViewPointerHit { - view: neomacs_display_protocol::WebViewId::new(91), - position: WebContentPoint::new(342.0, 10.0), - }) - ); - assert_eq!( - webview_glyph_hit_test(&glyphs.glyphs, settled_frame_point(450.0, 20.0)), - None, - "past the clip nothing of the widget is visible" - ); - } -} +#[path = "tests/pointer_events_webview_test.rs"] +mod webview_tests; #[cfg(test)] #[path = "pointer_events/tests/shader_surface_test.rs"] diff --git a/crates/neomacs-display-runtime/src/render_thread/render_pass/composition_targets.rs b/crates/neomacs-display-runtime/src/render_thread/render_pass/composition_targets.rs index 86a680ec75..891e72588a 100644 --- a/crates/neomacs-display-runtime/src/render_thread/render_pass/composition_targets.rs +++ b/crates/neomacs-display-runtime/src/render_thread/render_pass/composition_targets.rs @@ -282,7 +282,7 @@ pub(super) fn mandatory_child_target( } #[cfg(test)] -#[path = "composition_targets/tests/mod.rs"] +#[path = "composition_targets/tests/composition_targets_test.rs"] mod tests; /// Preflight child composition before acquiring a surface or advancing any diff --git a/crates/neomacs-display-runtime/src/render_thread/render_pass/composition_targets/tests/mod.rs b/crates/neomacs-display-runtime/src/render_thread/render_pass/composition_targets/tests/composition_targets_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/render_pass/composition_targets/tests/mod.rs rename to crates/neomacs-display-runtime/src/render_thread/render_pass/composition_targets/tests/composition_targets_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/render_pass/mod.rs b/crates/neomacs-display-runtime/src/render_thread/render_pass/mod.rs index e4a5e5900e..720ca3a4b7 100644 --- a/crates/neomacs-display-runtime/src/render_thread/render_pass/mod.rs +++ b/crates/neomacs-display-runtime/src/render_thread/render_pass/mod.rs @@ -529,5 +529,5 @@ fn render_frame_window_contents_reserved( } #[cfg(test)] -#[path = "tests/mod.rs"] +#[path = "tests/render_pass_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/render_thread/render_pass/retained_scroll.rs b/crates/neomacs-display-runtime/src/render_thread/render_pass/retained_scroll.rs index 656ae7af9e..fc16bf1654 100644 --- a/crates/neomacs-display-runtime/src/render_thread/render_pass/retained_scroll.rs +++ b/crates/neomacs-display-runtime/src/render_thread/render_pass/retained_scroll.rs @@ -405,18 +405,9 @@ pub(super) fn prepare( } #[cfg(test)] +#[path = "retained_scroll/tests/retained_scroll_test.rs"] pub(super) mod tests; #[cfg(test)] -mod geometry_tests { - use super::*; - #[test] - fn raster_extent_preserves_device_phase_and_rejects_oversized_coverage() { - let scale = DeviceScale::new(1.5).unwrap(); - let (size, origin) = - raster_geometry(Rect::new(2.25, 3.75, 20.0, 40.0), scale, 1024).unwrap(); - assert_eq!(origin, (2.0, 10.0 / 3.0)); - assert_eq!((size.width(), size.height()), (31, 61)); - assert!(raster_geometry(Rect::new(0.0, 0.0, 10.0, 10000.0), scale, 1024).is_none()); - } -} +#[path = "tests/retained_scroll_geometry_test.rs"] +mod geometry_tests; diff --git a/crates/neomacs-display-runtime/src/render_thread/render_pass/retained_scroll/tests.rs b/crates/neomacs-display-runtime/src/render_thread/render_pass/retained_scroll/tests/retained_scroll_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/render_pass/retained_scroll/tests.rs rename to crates/neomacs-display-runtime/src/render_thread/render_pass/retained_scroll/tests/retained_scroll_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/render_pass/retained_static.rs b/crates/neomacs-display-runtime/src/render_thread/render_pass/retained_static.rs index bb670d0ab4..b91b921ccb 100644 --- a/crates/neomacs-display-runtime/src/render_thread/render_pass/retained_static.rs +++ b/crates/neomacs-display-runtime/src/render_thread/render_pass/retained_static.rs @@ -325,4 +325,5 @@ pub(super) fn ensure_retained_static_texture( } #[cfg(test)] +#[path = "retained_static/tests/retained_static_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/render_thread/render_pass/retained_static/tests/mod.rs b/crates/neomacs-display-runtime/src/render_thread/render_pass/retained_static/tests/retained_static_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/render_pass/retained_static/tests/mod.rs rename to crates/neomacs-display-runtime/src/render_thread/render_pass/retained_static/tests/retained_static_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/render_pass/scene.rs b/crates/neomacs-display-runtime/src/render_thread/render_pass/scene.rs index f8f360044c..11ee2de542 100644 --- a/crates/neomacs-display-runtime/src/render_thread/render_pass/scene.rs +++ b/crates/neomacs-display-runtime/src/render_thread/render_pass/scene.rs @@ -20,7 +20,7 @@ use crate::render_thread::frame_stats; use crate::render_thread::frame_windows::GuiFrameRenderState; #[cfg(test)] -#[path = "scene/tests.rs"] +#[path = "scene/tests/scene_test.rs"] mod tests; use crate::render_thread::state::ChildFrameStyle; use neomacs_renderer_wgpu::{WgpuGlyphAtlas, WgpuRenderer}; diff --git a/crates/neomacs-display-runtime/src/render_thread/render_pass/scene/native_boundary_tests.rs b/crates/neomacs-display-runtime/src/render_thread/render_pass/scene/tests/native_boundary_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/render_pass/scene/native_boundary_tests.rs rename to crates/neomacs-display-runtime/src/render_thread/render_pass/scene/tests/native_boundary_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/render_pass/scene/pane_size_boundary_tests.rs b/crates/neomacs-display-runtime/src/render_thread/render_pass/scene/tests/pane_size_boundary_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/render_pass/scene/pane_size_boundary_tests.rs rename to crates/neomacs-display-runtime/src/render_thread/render_pass/scene/tests/pane_size_boundary_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/render_pass/scene/pinned_lifecycle_tests.rs b/crates/neomacs-display-runtime/src/render_thread/render_pass/scene/tests/pinned_lifecycle_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/render_pass/scene/pinned_lifecycle_tests.rs rename to crates/neomacs-display-runtime/src/render_thread/render_pass/scene/tests/pinned_lifecycle_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/render_pass/scene/retained_owner_tests.rs b/crates/neomacs-display-runtime/src/render_thread/render_pass/scene/tests/retained_owner_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/render_pass/scene/retained_owner_tests.rs rename to crates/neomacs-display-runtime/src/render_thread/render_pass/scene/tests/retained_owner_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/render_pass/scene/tests.rs b/crates/neomacs-display-runtime/src/render_thread/render_pass/scene/tests/scene_test.rs similarity index 99% rename from crates/neomacs-display-runtime/src/render_thread/render_pass/scene/tests.rs rename to crates/neomacs-display-runtime/src/render_thread/render_pass/scene/tests/scene_test.rs index 4f90e4b65d..cf182bd329 100644 --- a/crates/neomacs-display-runtime/src/render_thread/render_pass/scene/tests.rs +++ b/crates/neomacs-display-runtime/src/render_thread/render_pass/scene/tests/scene_test.rs @@ -1,12 +1,12 @@ //! Real GPU regression through the runtime child-resize composition branch. -#[path = "native_boundary_tests.rs"] +#[path = "native_boundary_test.rs"] mod native_boundary; -#[path = "pane_size_boundary_tests.rs"] +#[path = "pane_size_boundary_test.rs"] mod pane_size_boundary; -#[path = "pinned_lifecycle_tests.rs"] +#[path = "pinned_lifecycle_test.rs"] mod pinned_lifecycle; -#[path = "retained_owner_tests.rs"] +#[path = "retained_owner_test.rs"] mod retained_owner; fn target(renderer: &WgpuRenderer) -> wgpu::Texture { diff --git a/crates/neomacs-display-runtime/src/render_thread/render_pass/tests/mod.rs b/crates/neomacs-display-runtime/src/render_thread/render_pass/tests/render_pass_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/render_pass/tests/mod.rs rename to crates/neomacs-display-runtime/src/render_thread/render_pass/tests/render_pass_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/render_pass/tests/retained_scroll_geometry_test.rs b/crates/neomacs-display-runtime/src/render_thread/render_pass/tests/retained_scroll_geometry_test.rs new file mode 100644 index 0000000000..6eaef34736 --- /dev/null +++ b/crates/neomacs-display-runtime/src/render_thread/render_pass/tests/retained_scroll_geometry_test.rs @@ -0,0 +1,9 @@ +use super::*; +#[test] +fn raster_extent_preserves_device_phase_and_rejects_oversized_coverage() { + let scale = DeviceScale::new(1.5).unwrap(); + let (size, origin) = raster_geometry(Rect::new(2.25, 3.75, 20.0, 40.0), scale, 1024).unwrap(); + assert_eq!(origin, (2.0, 10.0 / 3.0)); + assert_eq!((size.width(), size.height()), (31, 61)); + assert!(raster_geometry(Rect::new(0.0, 0.0, 10.0, 10000.0), scale, 1024).is_none()); +} diff --git a/crates/neomacs-display-runtime/src/render_thread/state.rs b/crates/neomacs-display-runtime/src/render_thread/state.rs index 8c2a5f7fe1..c9d6949d99 100644 --- a/crates/neomacs-display-runtime/src/render_thread/state.rs +++ b/crates/neomacs-display-runtime/src/render_thread/state.rs @@ -1204,4 +1204,5 @@ impl RenderApp { } #[cfg(test)] +#[path = "state/tests/state_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/render_thread/state/tests/mod.rs b/crates/neomacs-display-runtime/src/render_thread/state/tests/state_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/state/tests/mod.rs rename to crates/neomacs-display-runtime/src/render_thread/state/tests/state_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/surface_readback.rs b/crates/neomacs-display-runtime/src/render_thread/surface_readback.rs index a30306dfba..38319644b7 100644 --- a/crates/neomacs-display-runtime/src/render_thread/surface_readback.rs +++ b/crates/neomacs-display-runtime/src/render_thread/surface_readback.rs @@ -4,6 +4,7 @@ use neomacs_renderer_wgpu::WgpuRenderer; use std::path::Path; #[cfg(test)] +#[path = "surface_readback/tests/surface_readback_test.rs"] mod tests; pub(crate) fn surface_usage_for_debug_readback( diff --git a/crates/neomacs-display-runtime/src/render_thread/surface_readback/tests/mod.rs b/crates/neomacs-display-runtime/src/render_thread/surface_readback/tests/surface_readback_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/surface_readback/tests/mod.rs rename to crates/neomacs-display-runtime/src/render_thread/surface_readback/tests/surface_readback_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/terminal_commands.rs b/crates/neomacs-display-runtime/src/render_thread/terminal_commands.rs index cfdba0ed21..c310f984e8 100644 --- a/crates/neomacs-display-runtime/src/render_thread/terminal_commands.rs +++ b/crates/neomacs-display-runtime/src/render_thread/terminal_commands.rs @@ -102,4 +102,5 @@ impl RenderApp { } #[cfg(all(test, feature = "neo-term"))] +#[path = "terminal_commands/tests/terminal_commands_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/render_thread/terminal_commands/tests/mod.rs b/crates/neomacs-display-runtime/src/render_thread/terminal_commands/tests/terminal_commands_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/terminal_commands/tests/mod.rs rename to crates/neomacs-display-runtime/src/render_thread/terminal_commands/tests/terminal_commands_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/terminal_expansion.rs b/crates/neomacs-display-runtime/src/render_thread/terminal_expansion.rs index c26158fc21..108944b6d1 100644 --- a/crates/neomacs-display-runtime/src/render_thread/terminal_expansion.rs +++ b/crates/neomacs-display-runtime/src/render_thread/terminal_expansion.rs @@ -118,4 +118,5 @@ pub(super) enum TerminalExpansionUpdate { } #[cfg(test)] +#[path = "terminal_expansion/tests/terminal_expansion_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/render_thread/terminal_expansion/tests/mod.rs b/crates/neomacs-display-runtime/src/render_thread/terminal_expansion/tests/terminal_expansion_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/terminal_expansion/tests/mod.rs rename to crates/neomacs-display-runtime/src/render_thread/terminal_expansion/tests/terminal_expansion_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/tests/pointer_events_webview_test.rs b/crates/neomacs-display-runtime/src/render_thread/tests/pointer_events_webview_test.rs new file mode 100644 index 0000000000..27017687ca --- /dev/null +++ b/crates/neomacs-display-runtime/src/render_thread/tests/pointer_events_webview_test.rs @@ -0,0 +1,113 @@ +use super::*; + +/// Where a pointer at surface `(x, y)` lands while nothing is moving. +/// +/// A settled projection is the identity, so a fixture built with this +/// reads exactly as it did when this hit test took two `f32`s — and, +/// unlike two `f32`s, it had to come from a projection to exist. +fn settled_frame_point(x: f32, y: f32) -> PresentationFramePoint { + neomacs_display_protocol::InteractionProjection::settled( + neomacs_display_protocol::PresentationId::new(1), + ) + .map( + neomacs_display_protocol::GeometryPoint::< + neomacs_display_protocol::RootSurfaceSpace, + neomacs_display_protocol::LogicalPixels, + >::from_px(x, y) + .expect("a fixture's coordinates are finite"), + ) + .expect("the identity of a finite point stays representable") +} + +fn presentation( + x: f32, + y: f32, + content: neomacs_display_protocol::XwidgetContentExtent, + advance: f32, +) -> neomacs_display_protocol::XwidgetPresentationGeometry { + neomacs_display_protocol::XwidgetPresentationGeometry::new( + neomacs_display_protocol::GeometryPoint::< + neomacs_display_protocol::FrameSpace, + neomacs_display_protocol::LogicalPixels, + >::from_px(x, y) + .expect("valid origin"), + content, + neomacs_display_protocol::XwidgetLayoutAdvance::new(neomacs_display_protocol::Px(advance)) + .expect("valid advance"), + None, + ) +} + +#[test] +fn hit_testing_keeps_xwidget_and_webview_identities_distinct() { + let mut glyphs = neomacs_display_protocol::FrameGlyphBuffer::new(); + let content = + neomacs_display_protocol::XwidgetContentExtent::new(320.0, 200.0).expect("extent"); + glyphs.add_xwidget( + neomacs_display_protocol::XwidgetId::new(7), + neomacs_display_protocol::WebViewId::new(91), + presentation(10.0, 20.0, content, 320.0), + ); + + assert_eq!( + webview_glyph_hit_test(&glyphs.glyphs, settled_frame_point(42.5, 75.0)), + Some(WebViewPointerHit { + view: neomacs_display_protocol::WebViewId::new(91), + position: WebContentPoint::new(32.5, 55.0), + }) + ); +} + +#[test] +fn hit_testing_rejects_the_clipped_part_of_an_xwidget() { + let mut glyphs = neomacs_display_protocol::FrameGlyphBuffer::new(); + glyphs.set_draw_context( + neomacs_display_protocol::DisplayWindowId::new(1), + neomacs_display_protocol::GlyphRowRole::Text, + Some(neomacs_display_protocol::Rect::new(20.0, 30.0, 50.0, 40.0)), + ); + let content = neomacs_display_protocol::XwidgetContentExtent::new(100.0, 80.0).expect("extent"); + glyphs.add_xwidget( + neomacs_display_protocol::XwidgetId::new(7), + neomacs_display_protocol::WebViewId::new(91), + presentation(10.0, 20.0, content, 100.0), + ); + + assert_eq!( + webview_glyph_hit_test(&glyphs.glyphs, settled_frame_point(15.0, 25.0)), + None + ); + assert!(webview_glyph_hit_test(&glyphs.glyphs, settled_frame_point(25.0, 35.0)).is_some()); +} + +/// A slot cropped at the right edge does not shrink the pointer target: +/// the widget is still its own size behind the text-area clip, so a +/// point inside the clip but past the cropped slot still hits it. +#[test] +fn hit_testing_uses_the_widgets_own_extent_not_the_cropped_slot() { + let mut glyphs = neomacs_display_protocol::FrameGlyphBuffer::new(); + glyphs.set_draw_context( + neomacs_display_protocol::DisplayWindowId::new(1), + neomacs_display_protocol::GlyphRowRole::Text, + Some(neomacs_display_protocol::Rect::new(0.0, 0.0, 400.0, 100.0)), + ); + let content = neomacs_display_protocol::XwidgetContentExtent::new(600.0, 40.0).expect("extent"); + glyphs.add_xwidget( + neomacs_display_protocol::XwidgetId::new(7), + neomacs_display_protocol::WebViewId::new(91), + presentation(8.0, 10.0, content, 304.0), + ); + + assert_eq!( + webview_glyph_hit_test(&glyphs.glyphs, settled_frame_point(350.0, 20.0)), + Some(WebViewPointerHit { + view: neomacs_display_protocol::WebViewId::new(91), + position: WebContentPoint::new(342.0, 10.0), + }) + ); + assert_eq!( + webview_glyph_hit_test(&glyphs.glyphs, settled_frame_point(450.0, 20.0)), + None, + "past the clip nothing of the widget is visible" + ); +} diff --git a/crates/neomacs-display-runtime/src/render_thread/tests.rs b/crates/neomacs-display-runtime/src/render_thread/tests/render_thread_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/tests.rs rename to crates/neomacs-display-runtime/src/render_thread/tests/render_thread_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/thread_handle.rs b/crates/neomacs-display-runtime/src/render_thread/thread_handle.rs index 80b0ddfe90..b135c0aec5 100644 --- a/crates/neomacs-display-runtime/src/render_thread/thread_handle.rs +++ b/crates/neomacs-display-runtime/src/render_thread/thread_handle.rs @@ -162,4 +162,5 @@ impl RenderThread { } #[cfg(test)] +#[path = "thread_handle/tests/thread_handle_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/render_thread/thread_handle/tests/mod.rs b/crates/neomacs-display-runtime/src/render_thread/thread_handle/tests/thread_handle_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/thread_handle/tests/mod.rs rename to crates/neomacs-display-runtime/src/render_thread/thread_handle/tests/thread_handle_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/toolbar.rs b/crates/neomacs-display-runtime/src/render_thread/toolbar.rs index 623e70c09c..895c1900d1 100644 --- a/crates/neomacs-display-runtime/src/render_thread/toolbar.rs +++ b/crates/neomacs-display-runtime/src/render_thread/toolbar.rs @@ -108,4 +108,5 @@ impl RenderApp { } #[cfg(test)] +#[path = "toolbar/tests/toolbar_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/render_thread/toolbar/tests/mod.rs b/crates/neomacs-display-runtime/src/render_thread/toolbar/tests/toolbar_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/toolbar/tests/mod.rs rename to crates/neomacs-display-runtime/src/render_thread/toolbar/tests/toolbar_test.rs diff --git a/crates/neomacs-display-runtime/src/render_thread/transitions.rs b/crates/neomacs-display-runtime/src/render_thread/transitions.rs index 2f6509b798..c2123e1a0e 100644 --- a/crates/neomacs-display-runtime/src/render_thread/transitions.rs +++ b/crates/neomacs-display-runtime/src/render_thread/transitions.rs @@ -566,4 +566,5 @@ pub(super) fn render_frame_transitions( // ========================================================================== #[cfg(test)] +#[path = "transitions/tests/transitions_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/render_thread/transitions/tests/mod.rs b/crates/neomacs-display-runtime/src/render_thread/transitions/tests/transitions_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/render_thread/transitions/tests/mod.rs rename to crates/neomacs-display-runtime/src/render_thread/transitions/tests/transitions_test.rs diff --git a/crates/neomacs-display-runtime/src/terminal/colors.rs b/crates/neomacs-display-runtime/src/terminal/colors.rs index 73d06fb571..be79634481 100644 --- a/crates/neomacs-display-runtime/src/terminal/colors.rs +++ b/crates/neomacs-display-runtime/src/terminal/colors.rs @@ -58,4 +58,5 @@ fn named_to_color(named: NamedColor, default_fg: &Color, default_bg: &Color) -> } #[cfg(test)] +#[path = "colors/tests/colors_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/terminal/colors/tests/mod.rs b/crates/neomacs-display-runtime/src/terminal/colors/tests/colors_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/terminal/colors/tests/mod.rs rename to crates/neomacs-display-runtime/src/terminal/colors/tests/colors_test.rs diff --git a/crates/neomacs-display-runtime/src/terminal/content.rs b/crates/neomacs-display-runtime/src/terminal/content.rs index f48293220f..b4d19f50ea 100644 --- a/crates/neomacs-display-runtime/src/terminal/content.rs +++ b/crates/neomacs-display-runtime/src/terminal/content.rs @@ -189,4 +189,5 @@ pub fn extract_text( } #[cfg(test)] +#[path = "content/tests/content_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/terminal/content/tests/mod.rs b/crates/neomacs-display-runtime/src/terminal/content/tests/content_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/terminal/content/tests/mod.rs rename to crates/neomacs-display-runtime/src/terminal/content/tests/content_test.rs diff --git a/crates/neomacs-display-runtime/src/terminal/view.rs b/crates/neomacs-display-runtime/src/terminal/view.rs index 72caa5640e..920fe97c40 100644 --- a/crates/neomacs-display-runtime/src/terminal/view.rs +++ b/crates/neomacs-display-runtime/src/terminal/view.rs @@ -501,4 +501,5 @@ impl Default for TerminalManager { } #[cfg(test)] +#[path = "view/tests/view_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/terminal/view/tests/mod.rs b/crates/neomacs-display-runtime/src/terminal/view/tests/view_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/terminal/view/tests/mod.rs rename to crates/neomacs-display-runtime/src/terminal/view/tests/view_test.rs diff --git a/crates/neomacs-display-runtime/src/tests/window_icon_test.rs b/crates/neomacs-display-runtime/src/tests/window_icon_test.rs new file mode 100644 index 0000000000..776a6fd66f --- /dev/null +++ b/crates/neomacs-display-runtime/src/tests/window_icon_test.rs @@ -0,0 +1,43 @@ +use super::*; + +fn dark_pixel_count( + icon: &RasterizedWindowIcon, + x_range: std::ops::Range, + y_range: std::ops::Range, +) -> usize { + y_range + .flat_map(|y| x_range.clone().map(move |x| (x, y))) + .filter(|&(x, y)| { + let offset = ((y * icon.width + x) * 4) as usize; + let [red, green, blue, alpha] = icon.premultiplied_rgba[offset..offset + 4] else { + unreachable!("each icon pixel has four channels") + }; + alpha > 200 && red < 50 && green < 50 && blue < 50 + }) + .count() +} + +#[test] +fn canonical_icon_raster_keeps_both_lambda_marks_without_fonts() { + let icon = load_window_icon().expect("decode canonical SVG without a font database"); + + assert!( + dark_pixel_count(&icon, 125..200, 65..140) > 350, + "the purple lobe must retain its vector lambda mark" + ); + assert!( + dark_pixel_count(&icon, 45..130, 130..200) > 350, + "the orange lobe must retain its vector lambda mark" + ); +} + +#[test] +fn wayland_argb8888_preserves_premultiplied_color_in_native_byte_order() { + let icon = RasterizedWindowIcon { + width: 1, + height: 1, + premultiplied_rgba: vec![0x11, 0x22, 0x33, 0x44], + }; + + assert_eq!(icon.to_wayland_argb8888(), 0x4411_2233_u32.to_ne_bytes()); +} diff --git a/crates/neomacs-display-runtime/src/tests/window_identity_test.rs b/crates/neomacs-display-runtime/src/tests/window_identity_test.rs new file mode 100644 index 0000000000..2332142f87 --- /dev/null +++ b/crates/neomacs-display-runtime/src/tests/window_identity_test.rs @@ -0,0 +1,23 @@ +use super::*; + +#[test] +fn packaged_desktop_entry_matches_typed_runtime_identity() { + let desktop_entry = include_str!("../../assets/neomacs.desktop"); + + assert_eq!(NEOMACS_APPLICATION.app_id().as_str(), "neomacs"); + assert_eq!( + NEOMACS_APPLICATION.desktop_file_id().as_str(), + "neomacs.desktop" + ); + assert_eq!(NEOMACS_APPLICATION.icon_name().as_str(), "neomacs"); + assert!(desktop_entry.contains("\nIcon=neomacs\n")); + assert!(desktop_entry.contains("\nStartupWMClass=neomacs\n")); +} + +#[test] +fn linux_window_attributes_use_packaged_desktop_id() { + for wayland in [true, false] { + let attrs = linux_window_identity(WindowAttributes::default(), wayland); + assert!(format!("{attrs:?}").contains(NEOMACS_APPLICATION.app_id().as_str())); + } +} diff --git a/crates/neomacs-display-runtime/src/thread_comm.rs b/crates/neomacs-display-runtime/src/thread_comm.rs index 4ae61bb468..736c2bb092 100644 --- a/crates/neomacs-display-runtime/src/thread_comm.rs +++ b/crates/neomacs-display-runtime/src/thread_comm.rs @@ -1271,6 +1271,7 @@ impl RenderComms { } #[cfg(test)] +#[path = "thread_comm/tests/thread_comm_test.rs"] mod tests; #[cfg(test)] diff --git a/crates/neomacs-display-runtime/src/thread_comm/frame_opacity.rs b/crates/neomacs-display-runtime/src/thread_comm/frame_opacity.rs index e5397c3fff..1ca0e57cfe 100644 --- a/crates/neomacs-display-runtime/src/thread_comm/frame_opacity.rs +++ b/crates/neomacs-display-runtime/src/thread_comm/frame_opacity.rs @@ -113,5 +113,5 @@ impl FrameOpacityState { } #[cfg(test)] -#[path = "frame_opacity/tests/mod.rs"] +#[path = "frame_opacity/tests/frame_opacity_test.rs"] mod tests; diff --git a/crates/neomacs-display-runtime/src/thread_comm/frame_opacity/tests/mod.rs b/crates/neomacs-display-runtime/src/thread_comm/frame_opacity/tests/frame_opacity_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/thread_comm/frame_opacity/tests/mod.rs rename to crates/neomacs-display-runtime/src/thread_comm/frame_opacity/tests/frame_opacity_test.rs diff --git a/crates/neomacs-display-runtime/src/thread_comm/tests/mod.rs b/crates/neomacs-display-runtime/src/thread_comm/tests/thread_comm_test.rs similarity index 100% rename from crates/neomacs-display-runtime/src/thread_comm/tests/mod.rs rename to crates/neomacs-display-runtime/src/thread_comm/tests/thread_comm_test.rs diff --git a/crates/neomacs-display-runtime/src/window_icon.rs b/crates/neomacs-display-runtime/src/window_icon.rs index 34f0592e30..1ca05d575d 100644 --- a/crates/neomacs-display-runtime/src/window_icon.rs +++ b/crates/neomacs-display-runtime/src/window_icon.rs @@ -132,48 +132,5 @@ impl WindowIconService { } #[cfg(all(test, target_os = "linux"))] -mod tests { - use super::*; - - fn dark_pixel_count( - icon: &RasterizedWindowIcon, - x_range: std::ops::Range, - y_range: std::ops::Range, - ) -> usize { - y_range - .flat_map(|y| x_range.clone().map(move |x| (x, y))) - .filter(|&(x, y)| { - let offset = ((y * icon.width + x) * 4) as usize; - let [red, green, blue, alpha] = icon.premultiplied_rgba[offset..offset + 4] else { - unreachable!("each icon pixel has four channels") - }; - alpha > 200 && red < 50 && green < 50 && blue < 50 - }) - .count() - } - - #[test] - fn canonical_icon_raster_keeps_both_lambda_marks_without_fonts() { - let icon = load_window_icon().expect("decode canonical SVG without a font database"); - - assert!( - dark_pixel_count(&icon, 125..200, 65..140) > 350, - "the purple lobe must retain its vector lambda mark" - ); - assert!( - dark_pixel_count(&icon, 45..130, 130..200) > 350, - "the orange lobe must retain its vector lambda mark" - ); - } - - #[test] - fn wayland_argb8888_preserves_premultiplied_color_in_native_byte_order() { - let icon = RasterizedWindowIcon { - width: 1, - height: 1, - premultiplied_rgba: vec![0x11, 0x22, 0x33, 0x44], - }; - - assert_eq!(icon.to_wayland_argb8888(), 0x4411_2233_u32.to_ne_bytes()); - } -} +#[path = "tests/window_icon_test.rs"] +mod tests; diff --git a/crates/neomacs-display-runtime/src/window_identity.rs b/crates/neomacs-display-runtime/src/window_identity.rs index 68e429402f..67ad9ea200 100644 --- a/crates/neomacs-display-runtime/src/window_identity.rs +++ b/crates/neomacs-display-runtime/src/window_identity.rs @@ -118,28 +118,5 @@ pub(crate) fn apply_platform_window_identity( } #[cfg(all(test, target_os = "linux"))] -mod tests { - use super::*; - - #[test] - fn packaged_desktop_entry_matches_typed_runtime_identity() { - let desktop_entry = include_str!("../assets/neomacs.desktop"); - - assert_eq!(NEOMACS_APPLICATION.app_id().as_str(), "neomacs"); - assert_eq!( - NEOMACS_APPLICATION.desktop_file_id().as_str(), - "neomacs.desktop" - ); - assert_eq!(NEOMACS_APPLICATION.icon_name().as_str(), "neomacs"); - assert!(desktop_entry.contains("\nIcon=neomacs\n")); - assert!(desktop_entry.contains("\nStartupWMClass=neomacs\n")); - } - - #[test] - fn linux_window_attributes_use_packaged_desktop_id() { - for wayland in [true, false] { - let attrs = linux_window_identity(WindowAttributes::default(), wayland); - assert!(format!("{attrs:?}").contains(NEOMACS_APPLICATION.app_id().as_str())); - } - } -} +#[path = "tests/window_identity_test.rs"] +mod tests; diff --git a/crates/neomacs-font-materializer/src/fontdb.rs b/crates/neomacs-font-materializer/src/fontdb.rs index 315fcb6424..94611daaaf 100644 --- a/crates/neomacs-font-materializer/src/fontdb.rs +++ b/crates/neomacs-font-materializer/src/fontdb.rs @@ -865,4 +865,5 @@ impl FontFileCache { } #[cfg(test)] +#[path = "fontdb/tests/fontdb_test.rs"] mod tests; diff --git a/crates/neomacs-font-materializer/src/fontdb/tests/mod.rs b/crates/neomacs-font-materializer/src/fontdb/tests/fontdb_test.rs similarity index 100% rename from crates/neomacs-font-materializer/src/fontdb/tests/mod.rs rename to crates/neomacs-font-materializer/src/fontdb/tests/fontdb_test.rs diff --git a/crates/neomacs-layout-engine/src/bidi/reorder.rs b/crates/neomacs-layout-engine/src/bidi/reorder.rs index d2451f755b..ec24728c1b 100644 --- a/crates/neomacs-layout-engine/src/bidi/reorder.rs +++ b/crates/neomacs-layout-engine/src/bidi/reorder.rs @@ -89,4 +89,5 @@ pub fn reorder_line(chars: &[char], levels: &[u8]) -> Vec { } #[cfg(test)] +#[path = "reorder/tests/reorder_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/bidi/reorder/tests/mod.rs b/crates/neomacs-layout-engine/src/bidi/reorder/tests/reorder_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/bidi/reorder/tests/mod.rs rename to crates/neomacs-layout-engine/src/bidi/reorder/tests/reorder_test.rs diff --git a/crates/neomacs-layout-engine/src/bidi/resolver.rs b/crates/neomacs-layout-engine/src/bidi/resolver.rs index 9f35d46f56..696b5ea1e0 100644 --- a/crates/neomacs-layout-engine/src/bidi/resolver.rs +++ b/crates/neomacs-layout-engine/src/bidi/resolver.rs @@ -827,4 +827,5 @@ fn least_even_greater_than(level: u8) -> u8 { } #[cfg(test)] +#[path = "resolver/tests/resolver_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/bidi/resolver/tests/mod.rs b/crates/neomacs-layout-engine/src/bidi/resolver/tests/resolver_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/bidi/resolver/tests/mod.rs rename to crates/neomacs-layout-engine/src/bidi/resolver/tests/resolver_test.rs diff --git a/crates/neomacs-layout-engine/src/bidi/tables.rs b/crates/neomacs-layout-engine/src/bidi/tables.rs index 905825501d..52e1c1a71c 100644 --- a/crates/neomacs-layout-engine/src/bidi/tables.rs +++ b/crates/neomacs-layout-engine/src/bidi/tables.rs @@ -846,4 +846,5 @@ pub fn canonical_bracket(ch: char) -> char { } #[cfg(test)] +#[path = "tables/tests/tables_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/bidi/tables/tests/mod.rs b/crates/neomacs-layout-engine/src/bidi/tables/tests/tables_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/bidi/tables/tests/mod.rs rename to crates/neomacs-layout-engine/src/bidi/tables/tests/tables_test.rs diff --git a/crates/neomacs-layout-engine/src/bidi/types.rs b/crates/neomacs-layout-engine/src/bidi/types.rs index d8dbf9f979..717743b8e5 100644 --- a/crates/neomacs-layout-engine/src/bidi/types.rs +++ b/crates/neomacs-layout-engine/src/bidi/types.rs @@ -211,4 +211,5 @@ pub const MAX_DEPTH: u8 = 125; pub const MAX_BPA_STACK: usize = 63; #[cfg(test)] +#[path = "types/tests/types_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/bidi/types/tests/mod.rs b/crates/neomacs-layout-engine/src/bidi/types/tests/types_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/bidi/types/tests/mod.rs rename to crates/neomacs-layout-engine/src/bidi/types/tests/types_test.rs diff --git a/crates/neomacs-layout-engine/src/buffer_source/body_render.rs b/crates/neomacs-layout-engine/src/buffer_source/body_render.rs index 4a34a268a2..255bc5399c 100644 --- a/crates/neomacs-layout-engine/src/buffer_source/body_render.rs +++ b/crates/neomacs-layout-engine/src/buffer_source/body_render.rs @@ -567,5 +567,5 @@ impl BufferSourceWalkSetup { } #[cfg(test)] -#[path = "body_render/tests/mini_row_storage.rs"] +#[path = "body_render/tests/mini_row_storage_test.rs"] mod mini_row_storage_tests; diff --git a/crates/neomacs-layout-engine/src/buffer_source/body_render/tests/mini_row_storage.rs b/crates/neomacs-layout-engine/src/buffer_source/body_render/tests/mini_row_storage_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/buffer_source/body_render/tests/mini_row_storage.rs rename to crates/neomacs-layout-engine/src/buffer_source/body_render/tests/mini_row_storage_test.rs diff --git a/crates/neomacs-layout-engine/src/buffer_source/end_of_buffer_rows.rs b/crates/neomacs-layout-engine/src/buffer_source/end_of_buffer_rows.rs index 5344d14601..0c690d50cb 100644 --- a/crates/neomacs-layout-engine/src/buffer_source/end_of_buffer_rows.rs +++ b/crates/neomacs-layout-engine/src/buffer_source/end_of_buffer_rows.rs @@ -363,4 +363,5 @@ enum EmptyLineFringeSide { } #[cfg(test)] +#[path = "end_of_buffer_rows/tests/end_of_buffer_rows_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/buffer_source/end_of_buffer_rows/tests/mod.rs b/crates/neomacs-layout-engine/src/buffer_source/end_of_buffer_rows/tests/end_of_buffer_rows_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/buffer_source/end_of_buffer_rows/tests/mod.rs rename to crates/neomacs-layout-engine/src/buffer_source/end_of_buffer_rows/tests/end_of_buffer_rows_test.rs diff --git a/crates/neomacs-layout-engine/src/buffer_source/fringe_arrows.rs b/crates/neomacs-layout-engine/src/buffer_source/fringe_arrows.rs index 7e82eb0d94..d3426a1851 100644 --- a/crates/neomacs-layout-engine/src/buffer_source/fringe_arrows.rs +++ b/crates/neomacs-layout-engine/src/buffer_source/fringe_arrows.rs @@ -335,4 +335,5 @@ impl DisplayWindowRowMutation for ResolvedFringeArrowRowMutation { } #[cfg(test)] +#[path = "fringe_arrows/tests/fringe_arrows_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/buffer_source/fringe_arrows/tests/mod.rs b/crates/neomacs-layout-engine/src/buffer_source/fringe_arrows/tests/fringe_arrows_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/buffer_source/fringe_arrows/tests/mod.rs rename to crates/neomacs-layout-engine/src/buffer_source/fringe_arrows/tests/fringe_arrows_test.rs diff --git a/crates/neomacs-layout-engine/src/buffer_source/owned_capture.rs b/crates/neomacs-layout-engine/src/buffer_source/owned_capture.rs index 5e033c5991..600b0535fb 100644 --- a/crates/neomacs-layout-engine/src/buffer_source/owned_capture.rs +++ b/crates/neomacs-layout-engine/src/buffer_source/owned_capture.rs @@ -436,111 +436,8 @@ fn literal_raise_or_nil(value: Value) -> bool { } #[cfg(test)] -mod tests { - use super::*; - use crate::display_row::face_state::{DisplayRowMeasurementMode, DisplayRowMeasurementPolicy}; - use crate::display_row::metrics::DisplayRowFallbackMetrics; - use crate::neovm_bridge::{FaceResolver, LayoutBufferSnapshot}; - use neomacs_display_protocol::types::FaceId; - use neovm_core::emacs_core::Context; - use neovm_core::face::FaceTable; - - fn capture(text: &str, chars: usize) -> Result { - capture_with_properties(text, chars, None) - } - - fn capture_with_properties( - text: &str, - chars: usize, - property_start: Option, - ) -> Result { - let mut eval = Context::new(); - let buffer = eval.buffer_manager_mut().current_buffer_mut().unwrap(); - buffer.insert(text); - if let Some(start) = property_start { - buffer.text_props_put_property_in_emacs_byte_range( - EmacsByteRange::new(EmacsBytePos::new(start), EmacsBytePos::new(text.len())), - Value::symbol("display"), - Value::string("replacement"), - ); - } - let id = buffer.id(); - let snapshot = LayoutBufferSnapshot::from_buffer(buffer); - let resolver = FaceResolver::new(&FaceTable::new(), 0xffffff, 0, 14.0, None); - let metrics = DisplayRowFallbackMetrics::from_default_face_extents(8.0, 16.0, 12.0); - let context = BufferSourceFaceResolutionContext::new( - &snapshot, - &resolver, - DisplayRowMeasurementPolicy::for_mode(DisplayRowMeasurementMode::ConcreteFont), - resolver.default_face(), - FaceId::new(1), - metrics, - metrics, - Default::default(), - ); - capture_physical_line( - id, - 1, - CharPos0::ZERO, - chars, - 16, - context, - &mut FrameFaceAttempt::for_test_with_next_id(2), - || false, - ) - } - - #[test] - fn later_line_replacement_does_not_reject_complete_plain_line() { - let line = capture_with_properties("好a\nreplaced\n", 32, Some(5)).unwrap(); - assert_eq!(line.end, CharPos0::new(3)); - assert!(matches!( - capture_with_properties("好a\nreplaced\n", 32, Some(3)), - Err(RowProgramError::Unsupported) - )); - } - - #[test] - fn acquisition_stops_before_copying_a_huge_physical_line() { - assert!(matches!( - capture(&"a".repeat(1_000_000), 32), - Err(RowProgramError::Incomplete) - )); - } - - #[test] - fn complete_line_capture_keeps_canonical_source_positions() { - let line = capture("a好b\nnext\n", 16).unwrap(); - assert_eq!(line.end, CharPos0::new(4)); - assert!(matches!( - line.items.last().unwrap().kind, - DisplayItemKind::RowBreak(_) - )); - let first = &line.items[0]; - assert_eq!( - first.span.start, - crate::display_item::DisplaySourcePosition::buffer( - match first.span.start { - crate::display_item::DisplaySourcePosition::Buffer { buffer_id, .. } => - buffer_id, - _ => panic!("buffer provenance"), - }, - CharPos0::ZERO, - neovm_core::buffer::EmacsBytePos::ZERO - ) - ); - } - #[test] - fn nobreak_text_requires_buffer_special_character_policy() { - for ch in ['\u{00a0}', '\u{00ad}', '\u{2011}'] { - let text = format!("before{ch}after\n"); - assert!( - matches!(capture(&text, 32), Err(RowProgramError::Unsupported)), - "{ch:?}" - ); - } - } -} +#[path = "tests/owned_capture_test.rs"] +mod tests; fn literal_line_height(value: Value) -> bool { value.is_nil() diff --git a/crates/neomacs-layout-engine/src/buffer_source/producer/mod.rs b/crates/neomacs-layout-engine/src/buffer_source/producer/mod.rs index c2ead05e85..9170e7e879 100644 --- a/crates/neomacs-layout-engine/src/buffer_source/producer/mod.rs +++ b/crates/neomacs-layout-engine/src/buffer_source/producer/mod.rs @@ -360,6 +360,7 @@ impl<'request, B: LayoutBufferView> BufferElementProducer<'request, B> { } #[cfg(test)] +#[path = "tests/producer_test.rs"] mod tests; #[cfg(test)] diff --git a/crates/neomacs-layout-engine/src/buffer_source/producer/tests/mod.rs b/crates/neomacs-layout-engine/src/buffer_source/producer/tests/producer_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/buffer_source/producer/tests/mod.rs rename to crates/neomacs-layout-engine/src/buffer_source/producer/tests/producer_test.rs diff --git a/crates/neomacs-layout-engine/src/buffer_source/producer/vocabulary.rs b/crates/neomacs-layout-engine/src/buffer_source/producer/vocabulary.rs index 175e7d67c1..d284562fa4 100644 --- a/crates/neomacs-layout-engine/src/buffer_source/producer/vocabulary.rs +++ b/crates/neomacs-layout-engine/src/buffer_source/producer/vocabulary.rs @@ -440,4 +440,5 @@ impl ProducedElement { } #[cfg(test)] +#[path = "vocabulary/tests/vocabulary_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/buffer_source/producer/vocabulary/tests/mod.rs b/crates/neomacs-layout-engine/src/buffer_source/producer/vocabulary/tests/vocabulary_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/buffer_source/producer/vocabulary/tests/mod.rs rename to crates/neomacs-layout-engine/src/buffer_source/producer/vocabulary/tests/vocabulary_test.rs diff --git a/crates/neomacs-layout-engine/src/buffer_source/row_route/mod.rs b/crates/neomacs-layout-engine/src/buffer_source/row_route/mod.rs index c3d8d215cf..d2fdd5c40b 100644 --- a/crates/neomacs-layout-engine/src/buffer_source/row_route/mod.rs +++ b/crates/neomacs-layout-engine/src/buffer_source/row_route/mod.rs @@ -618,4 +618,5 @@ impl PlainRowPlan { } #[cfg(test)] +#[path = "tests/row_route_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/buffer_source/row_route/tests/mod.rs b/crates/neomacs-layout-engine/src/buffer_source/row_route/tests/row_route_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/buffer_source/row_route/tests/mod.rs rename to crates/neomacs-layout-engine/src/buffer_source/row_route/tests/row_route_test.rs diff --git a/crates/neomacs-layout-engine/src/buffer_source/tests/owned_capture_test.rs b/crates/neomacs-layout-engine/src/buffer_source/tests/owned_capture_test.rs new file mode 100644 index 0000000000..a835136b26 --- /dev/null +++ b/crates/neomacs-layout-engine/src/buffer_source/tests/owned_capture_test.rs @@ -0,0 +1,102 @@ +use super::*; +use crate::display_row::face_state::{DisplayRowMeasurementMode, DisplayRowMeasurementPolicy}; +use crate::display_row::metrics::DisplayRowFallbackMetrics; +use crate::neovm_bridge::{FaceResolver, LayoutBufferSnapshot}; +use neomacs_display_protocol::types::FaceId; +use neovm_core::emacs_core::Context; +use neovm_core::face::FaceTable; + +fn capture(text: &str, chars: usize) -> Result { + capture_with_properties(text, chars, None) +} + +fn capture_with_properties( + text: &str, + chars: usize, + property_start: Option, +) -> Result { + let mut eval = Context::new(); + let buffer = eval.buffer_manager_mut().current_buffer_mut().unwrap(); + buffer.insert(text); + if let Some(start) = property_start { + buffer.text_props_put_property_in_emacs_byte_range( + EmacsByteRange::new(EmacsBytePos::new(start), EmacsBytePos::new(text.len())), + Value::symbol("display"), + Value::string("replacement"), + ); + } + let id = buffer.id(); + let snapshot = LayoutBufferSnapshot::from_buffer(buffer); + let resolver = FaceResolver::new(&FaceTable::new(), 0xffffff, 0, 14.0, None); + let metrics = DisplayRowFallbackMetrics::from_default_face_extents(8.0, 16.0, 12.0); + let context = BufferSourceFaceResolutionContext::new( + &snapshot, + &resolver, + DisplayRowMeasurementPolicy::for_mode(DisplayRowMeasurementMode::ConcreteFont), + resolver.default_face(), + FaceId::new(1), + metrics, + metrics, + Default::default(), + ); + capture_physical_line( + id, + 1, + CharPos0::ZERO, + chars, + 16, + context, + &mut FrameFaceAttempt::for_test_with_next_id(2), + || false, + ) +} + +#[test] +fn later_line_replacement_does_not_reject_complete_plain_line() { + let line = capture_with_properties("好a\nreplaced\n", 32, Some(5)).unwrap(); + assert_eq!(line.end, CharPos0::new(3)); + assert!(matches!( + capture_with_properties("好a\nreplaced\n", 32, Some(3)), + Err(RowProgramError::Unsupported) + )); +} + +#[test] +fn acquisition_stops_before_copying_a_huge_physical_line() { + assert!(matches!( + capture(&"a".repeat(1_000_000), 32), + Err(RowProgramError::Incomplete) + )); +} + +#[test] +fn complete_line_capture_keeps_canonical_source_positions() { + let line = capture("a好b\nnext\n", 16).unwrap(); + assert_eq!(line.end, CharPos0::new(4)); + assert!(matches!( + line.items.last().unwrap().kind, + DisplayItemKind::RowBreak(_) + )); + let first = &line.items[0]; + assert_eq!( + first.span.start, + crate::display_item::DisplaySourcePosition::buffer( + match first.span.start { + crate::display_item::DisplaySourcePosition::Buffer { buffer_id, .. } => buffer_id, + _ => panic!("buffer provenance"), + }, + CharPos0::ZERO, + neovm_core::buffer::EmacsBytePos::ZERO + ) + ); +} +#[test] +fn nobreak_text_requires_buffer_special_character_policy() { + for ch in ['\u{00a0}', '\u{00ad}', '\u{2011}'] { + let text = format!("before{ch}after\n"); + assert!( + matches!(capture(&text, 32), Err(RowProgramError::Unsupported)), + "{ch:?}" + ); + } +} diff --git a/crates/neomacs-layout-engine/src/buffer_source/tests/property_keys_budget_support.rs b/crates/neomacs-layout-engine/src/buffer_source/tests/property_keys_budget_support_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/buffer_source/tests/property_keys_budget_support.rs rename to crates/neomacs-layout-engine/src/buffer_source/tests/property_keys_budget_support_test.rs diff --git a/crates/neomacs-layout-engine/src/buffer_source/tests/source_budget_default_policy.rs b/crates/neomacs-layout-engine/src/buffer_source/tests/source_budget_default_policy_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/buffer_source/tests/source_budget_default_policy.rs rename to crates/neomacs-layout-engine/src/buffer_source/tests/source_budget_default_policy_test.rs diff --git a/crates/neomacs-layout-engine/src/buffer_source/tests/source_budget_policy_aliases.rs b/crates/neomacs-layout-engine/src/buffer_source/tests/source_budget_policy_aliases_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/buffer_source/tests/source_budget_policy_aliases.rs rename to crates/neomacs-layout-engine/src/buffer_source/tests/source_budget_policy_aliases_test.rs diff --git a/crates/neomacs-layout-engine/src/buffer_source/tests/window_source_tests.rs b/crates/neomacs-layout-engine/src/buffer_source/tests/window_source_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/buffer_source/tests/window_source_tests.rs rename to crates/neomacs-layout-engine/src/buffer_source/tests/window_source_test.rs diff --git a/crates/neomacs-layout-engine/src/buffer_source/window_geometry.rs b/crates/neomacs-layout-engine/src/buffer_source/window_geometry.rs index e3d1a1d046..33b16974a7 100644 --- a/crates/neomacs-layout-engine/src/buffer_source/window_geometry.rs +++ b/crates/neomacs-layout-engine/src/buffer_source/window_geometry.rs @@ -477,4 +477,5 @@ impl BufferWindowLocalDisplayPolicy { } #[cfg(test)] +#[path = "window_geometry/tests/window_geometry_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/buffer_source/window_geometry/tests/mod.rs b/crates/neomacs-layout-engine/src/buffer_source/window_geometry/tests/window_geometry_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/buffer_source/window_geometry/tests/mod.rs rename to crates/neomacs-layout-engine/src/buffer_source/window_geometry/tests/window_geometry_test.rs diff --git a/crates/neomacs-layout-engine/src/buffer_source/window_source.rs b/crates/neomacs-layout-engine/src/buffer_source/window_source.rs index 3ba412d7e1..dc8a424cb5 100644 --- a/crates/neomacs-layout-engine/src/buffer_source/window_source.rs +++ b/crates/neomacs-layout-engine/src/buffer_source/window_source.rs @@ -13,11 +13,11 @@ use crate::types::{PartialBodyWalkStart, WindowKind, WindowParams}; use neovm_core::buffer::{CharPos0, EmacsBytePos, TextPositionAnchor}; #[cfg(test)] -#[path = "tests/window_source_tests.rs"] +#[path = "tests/window_source_test.rs"] mod bounded_read_tests; #[cfg(test)] -#[path = "tests/property_keys_budget_support.rs"] +#[path = "tests/property_keys_budget_support_test.rs"] pub(crate) mod property_keys_budget_support; /// Numeric source-copy policy. This carries no Lisp state and is owned by @@ -663,12 +663,13 @@ impl BufferWindowSourceRequest { } #[cfg(test)] +#[path = "window_source/tests/window_source_test.rs"] mod tests; #[cfg(test)] -#[path = "tests/source_budget_policy_aliases.rs"] +#[path = "tests/source_budget_policy_aliases_test.rs"] mod source_budget_policy_aliases_tests; #[cfg(test)] -#[path = "tests/source_budget_default_policy.rs"] +#[path = "tests/source_budget_default_policy_test.rs"] mod source_budget_default_policy_tests; diff --git a/crates/neomacs-layout-engine/src/buffer_source/window_source/tests/mod.rs b/crates/neomacs-layout-engine/src/buffer_source/window_source/tests/window_source_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/buffer_source/window_source/tests/mod.rs rename to crates/neomacs-layout-engine/src/buffer_source/window_source/tests/window_source_test.rs diff --git a/crates/neomacs-layout-engine/src/composition.rs b/crates/neomacs-layout-engine/src/composition.rs index ce96e5daac..912c6927e8 100644 --- a/crates/neomacs-layout-engine/src/composition.rs +++ b/crates/neomacs-layout-engine/src/composition.rs @@ -216,4 +216,5 @@ pub(crate) fn needs_complex_shaping(ch: char) -> bool { } #[cfg(test)] +#[path = "composition/tests/composition_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/composition/tests/mod.rs b/crates/neomacs-layout-engine/src/composition/tests/composition_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/composition/tests/mod.rs rename to crates/neomacs-layout-engine/src/composition/tests/composition_test.rs diff --git a/crates/neomacs-layout-engine/src/display_face_layout.rs b/crates/neomacs-layout-engine/src/display_face_layout.rs index 150012b045..63f38af1f6 100644 --- a/crates/neomacs-layout-engine/src/display_face_layout.rs +++ b/crates/neomacs-layout-engine/src/display_face_layout.rs @@ -89,4 +89,5 @@ fn positive_f32(value: f32) -> Option { } #[cfg(test)] +#[path = "display_face_layout/tests/display_face_layout_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/display_face_layout/tests/mod.rs b/crates/neomacs-layout-engine/src/display_face_layout/tests/display_face_layout_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/display_face_layout/tests/mod.rs rename to crates/neomacs-layout-engine/src/display_face_layout/tests/display_face_layout_test.rs diff --git a/crates/neomacs-layout-engine/src/display_frame_output.rs b/crates/neomacs-layout-engine/src/display_frame_output.rs index 5ed60d1034..71657a653b 100644 --- a/crates/neomacs-layout-engine/src/display_frame_output.rs +++ b/crates/neomacs-layout-engine/src/display_frame_output.rs @@ -1091,4 +1091,5 @@ impl WindowScrollBarMetrics { } #[cfg(test)] +#[path = "display_frame_output/tests/display_frame_output_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/display_frame_output/tests/mod.rs b/crates/neomacs-layout-engine/src/display_frame_output/tests/display_frame_output_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/display_frame_output/tests/mod.rs rename to crates/neomacs-layout-engine/src/display_frame_output/tests/display_frame_output_test.rs diff --git a/crates/neomacs-layout-engine/src/display_item.rs b/crates/neomacs-layout-engine/src/display_item.rs index f81c4b7c72..5cbff7b88e 100644 --- a/crates/neomacs-layout-engine/src/display_item.rs +++ b/crates/neomacs-layout-engine/src/display_item.rs @@ -1684,4 +1684,5 @@ impl DisplayRowBreak { } #[cfg(test)] +#[path = "display_item/tests/display_item_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/display_item/tests/mod.rs b/crates/neomacs-layout-engine/src/display_item/tests/display_item_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/display_item/tests/mod.rs rename to crates/neomacs-layout-engine/src/display_item/tests/display_item_test.rs diff --git a/crates/neomacs-layout-engine/src/display_pixel_calc.rs b/crates/neomacs-layout-engine/src/display_pixel_calc.rs index 1b66ac08c4..fe66171261 100644 --- a/crates/neomacs-layout-engine/src/display_pixel_calc.rs +++ b/crates/neomacs-layout-engine/src/display_pixel_calc.rs @@ -868,4 +868,5 @@ fn as_f64(v: &Value) -> Option { // --------------------------------------------------------------------------- #[cfg(test)] +#[path = "display_pixel_calc/tests/display_pixel_calc_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/display_pixel_calc/tests/mod.rs b/crates/neomacs-layout-engine/src/display_pixel_calc/tests/display_pixel_calc_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/display_pixel_calc/tests/mod.rs rename to crates/neomacs-layout-engine/src/display_pixel_calc/tests/display_pixel_calc_test.rs diff --git a/crates/neomacs-layout-engine/src/display_property.rs b/crates/neomacs-layout-engine/src/display_property.rs index d693f6f4af..5116d46842 100644 --- a/crates/neomacs-layout-engine/src/display_property.rs +++ b/crates/neomacs-layout-engine/src/display_property.rs @@ -672,4 +672,5 @@ fn lisp_number(value: Value) -> Option { } #[cfg(test)] +#[path = "display_property/tests/display_property_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/display_property/tests/mod.rs b/crates/neomacs-layout-engine/src/display_property/tests/display_property_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/display_property/tests/mod.rs rename to crates/neomacs-layout-engine/src/display_property/tests/display_property_test.rs diff --git a/crates/neomacs-layout-engine/src/display_row/builder.rs b/crates/neomacs-layout-engine/src/display_row/builder.rs index 60cae4d637..b7255993cc 100644 --- a/crates/neomacs-layout-engine/src/display_row/builder.rs +++ b/crates/neomacs-layout-engine/src/display_row/builder.rs @@ -3284,4 +3284,5 @@ fn source_span_start_char(span: &SourceSpan) -> usize { } #[cfg(test)] +#[path = "builder/tests/builder_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/display_row/builder/tests/mod.rs b/crates/neomacs-layout-engine/src/display_row/builder/tests/builder_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/display_row/builder/tests/mod.rs rename to crates/neomacs-layout-engine/src/display_row/builder/tests/builder_test.rs diff --git a/crates/neomacs-layout-engine/src/display_row/finalizer.rs b/crates/neomacs-layout-engine/src/display_row/finalizer.rs index de0832ddf1..48260f7c6f 100644 --- a/crates/neomacs-layout-engine/src/display_row/finalizer.rs +++ b/crates/neomacs-layout-engine/src/display_row/finalizer.rs @@ -500,6 +500,7 @@ impl<'cursor> GlyphRowFinalizer<'cursor> { } #[cfg(test)] +#[path = "finalizer/tests/finalizer_test.rs"] mod tests; #[cfg(test)] diff --git a/crates/neomacs-layout-engine/src/display_row/finalizer/tests/mod.rs b/crates/neomacs-layout-engine/src/display_row/finalizer/tests/finalizer_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/display_row/finalizer/tests/mod.rs rename to crates/neomacs-layout-engine/src/display_row/finalizer/tests/finalizer_test.rs diff --git a/crates/neomacs-layout-engine/src/display_row/geometry.rs b/crates/neomacs-layout-engine/src/display_row/geometry.rs index 4c7aef0169..d642e2aadf 100644 --- a/crates/neomacs-layout-engine/src/display_row/geometry.rs +++ b/crates/neomacs-layout-engine/src/display_row/geometry.rs @@ -1140,4 +1140,5 @@ impl DisplayRowGeometryCursor { } #[cfg(test)] +#[path = "geometry/tests/geometry_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/display_row/geometry/tests/mod.rs b/crates/neomacs-layout-engine/src/display_row/geometry/tests/geometry_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/display_row/geometry/tests/mod.rs rename to crates/neomacs-layout-engine/src/display_row/geometry/tests/geometry_test.rs diff --git a/crates/neomacs-layout-engine/src/display_row/mod.rs b/crates/neomacs-layout-engine/src/display_row/mod.rs index da56449344..193577e5a2 100644 --- a/crates/neomacs-layout-engine/src/display_row/mod.rs +++ b/crates/neomacs-layout-engine/src/display_row/mod.rs @@ -1352,7 +1352,7 @@ impl<'metrics> DisplayRowRenderer<'metrics> { } #[cfg(test)] -#[path = "test.rs"] +#[path = "tests/display_row_test.rs"] mod tests; // Submodules of the display_row family (moved from flat crate root). diff --git a/crates/neomacs-layout-engine/src/display_row/source_append.rs b/crates/neomacs-layout-engine/src/display_row/source_append.rs index 25f3373ffe..498ded7f50 100644 --- a/crates/neomacs-layout-engine/src/display_row/source_append.rs +++ b/crates/neomacs-layout-engine/src/display_row/source_append.rs @@ -782,4 +782,5 @@ pub(crate) fn display_item_append_kind( } #[cfg(test)] +#[path = "source_append/tests/source_append_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/display_row/source_append/tests/mod.rs b/crates/neomacs-layout-engine/src/display_row/source_append/tests/source_append_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/display_row/source_append/tests/mod.rs rename to crates/neomacs-layout-engine/src/display_row/source_append/tests/source_append_test.rs diff --git a/crates/neomacs-layout-engine/src/display_row/source_render.rs b/crates/neomacs-layout-engine/src/display_row/source_render.rs index 3919fa92b6..d2c080f43f 100644 --- a/crates/neomacs-layout-engine/src/display_row/source_render.rs +++ b/crates/neomacs-layout-engine/src/display_row/source_render.rs @@ -1950,4 +1950,5 @@ fn current_text_measure_state<'emit>( } #[cfg(test)] +#[path = "source_render/tests/source_render_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/display_row/source_render/tests/mod.rs b/crates/neomacs-layout-engine/src/display_row/source_render/tests/source_render_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/display_row/source_render/tests/mod.rs rename to crates/neomacs-layout-engine/src/display_row/source_render/tests/source_render_test.rs diff --git a/crates/neomacs-layout-engine/src/display_row/source_state.rs b/crates/neomacs-layout-engine/src/display_row/source_state.rs index 76534301b1..1673fda8af 100644 --- a/crates/neomacs-layout-engine/src/display_row/source_state.rs +++ b/crates/neomacs-layout-engine/src/display_row/source_state.rs @@ -124,5 +124,5 @@ impl DisplayRowSourceState { } #[cfg(test)] -#[path = "source_state/tests/mod.rs"] +#[path = "source_state/tests/source_state_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/display_row/source_state/tests/mod.rs b/crates/neomacs-layout-engine/src/display_row/source_state/tests/source_state_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/display_row/source_state/tests/mod.rs rename to crates/neomacs-layout-engine/src/display_row/source_state/tests/source_state_test.rs diff --git a/crates/neomacs-layout-engine/src/display_row/test.rs b/crates/neomacs-layout-engine/src/display_row/tests/display_row_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/display_row/test.rs rename to crates/neomacs-layout-engine/src/display_row/tests/display_row_test.rs diff --git a/crates/neomacs-layout-engine/src/display_row/trailing_whitespace.rs b/crates/neomacs-layout-engine/src/display_row/trailing_whitespace.rs index 339795e756..507974b065 100644 --- a/crates/neomacs-layout-engine/src/display_row/trailing_whitespace.rs +++ b/crates/neomacs-layout-engine/src/display_row/trailing_whitespace.rs @@ -84,4 +84,5 @@ impl DisplayCurrentRowMutation for HighlightTrailingWhitespaceMutation { } #[cfg(test)] +#[path = "trailing_whitespace/tests/trailing_whitespace_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/display_row/trailing_whitespace/tests/mod.rs b/crates/neomacs-layout-engine/src/display_row/trailing_whitespace/tests/trailing_whitespace_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/display_row/trailing_whitespace/tests/mod.rs rename to crates/neomacs-layout-engine/src/display_row/trailing_whitespace/tests/trailing_whitespace_test.rs diff --git a/crates/neomacs-layout-engine/src/display_source.rs b/crates/neomacs-layout-engine/src/display_source.rs index 4020a22191..c0510a3c4d 100644 --- a/crates/neomacs-layout-engine/src/display_source.rs +++ b/crates/neomacs-layout-engine/src/display_source.rs @@ -3980,4 +3980,5 @@ fn is_control_char(ch: char) -> bool { } #[cfg(test)] +#[path = "display_source/tests/display_source_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/display_source/tests/mod.rs b/crates/neomacs-layout-engine/src/display_source/tests/display_source_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/display_source/tests/mod.rs rename to crates/neomacs-layout-engine/src/display_source/tests/display_source_test.rs diff --git a/crates/neomacs-layout-engine/src/display_source_overflow.rs b/crates/neomacs-layout-engine/src/display_source_overflow.rs index 4a44ee6d51..9336bcd127 100644 --- a/crates/neomacs-layout-engine/src/display_source_overflow.rs +++ b/crates/neomacs-layout-engine/src/display_source_overflow.rs @@ -335,4 +335,5 @@ impl DisplayImageOverflowAction { } #[cfg(test)] +#[path = "display_source_overflow/tests/display_source_overflow_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/display_source_overflow/tests/mod.rs b/crates/neomacs-layout-engine/src/display_source_overflow/tests/display_source_overflow_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/display_source_overflow/tests/mod.rs rename to crates/neomacs-layout-engine/src/display_source_overflow/tests/display_source_overflow_test.rs diff --git a/crates/neomacs-layout-engine/src/display_source_resolver/tests/compiled_collection_mutation.rs b/crates/neomacs-layout-engine/src/display_source_resolver/tests/compiled_collection_mutation_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/display_source_resolver/tests/compiled_collection_mutation.rs rename to crates/neomacs-layout-engine/src/display_source_resolver/tests/compiled_collection_mutation_test.rs diff --git a/crates/neomacs-layout-engine/src/display_source_resolver/tests/display_source_resolver_test.rs b/crates/neomacs-layout-engine/src/display_source_resolver/tests/display_source_resolver_test.rs index 03e24b16e1..ea6ff80da4 100644 --- a/crates/neomacs-layout-engine/src/display_source_resolver/tests/display_source_resolver_test.rs +++ b/crates/neomacs-layout-engine/src/display_source_resolver/tests/display_source_resolver_test.rs @@ -5,7 +5,7 @@ use neovm_core::emacs_core::Context; use neovm_core::face::{Color as NeoColor, Face as NeoFace, FaceTable}; #[cfg(test)] -#[path = "compiled_collection_mutation.rs"] +#[path = "compiled_collection_mutation_test.rs"] mod compiled_collection_mutation; fn test_buffer_snapshot() -> LayoutBufferSnapshot { diff --git a/crates/neomacs-layout-engine/src/display_status_line.rs b/crates/neomacs-layout-engine/src/display_status_line.rs index 2740ad59a7..d77b03e110 100644 --- a/crates/neomacs-layout-engine/src/display_status_line.rs +++ b/crates/neomacs-layout-engine/src/display_status_line.rs @@ -2453,4 +2453,5 @@ pub(crate) fn window_chrome_row_height_for_face_at_scale( } #[cfg(test)] +#[path = "display_status_line/tests/display_status_line_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/display_status_line/tests/mod.rs b/crates/neomacs-layout-engine/src/display_status_line/tests/display_status_line_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/display_status_line/tests/mod.rs rename to crates/neomacs-layout-engine/src/display_status_line/tests/display_status_line_test.rs diff --git a/crates/neomacs-layout-engine/src/display_when.rs b/crates/neomacs-layout-engine/src/display_when.rs index 79debcaf70..8fff558307 100644 --- a/crates/neomacs-layout-engine/src/display_when.rs +++ b/crates/neomacs-layout-engine/src/display_when.rs @@ -391,4 +391,5 @@ fn collect_prefix_string_when_forms( } #[cfg(test)] +#[path = "display_when/tests/display_when_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/display_when/tests/mod.rs b/crates/neomacs-layout-engine/src/display_when/tests/display_when_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/display_when/tests/mod.rs rename to crates/neomacs-layout-engine/src/display_when/tests/display_when_test.rs diff --git a/crates/neomacs-layout-engine/src/engine.rs b/crates/neomacs-layout-engine/src/engine.rs index 10931fe066..c5841ffa1f 100644 --- a/crates/neomacs-layout-engine/src/engine.rs +++ b/crates/neomacs-layout-engine/src/engine.rs @@ -5390,6 +5390,7 @@ impl LayoutEngine { } #[cfg(test)] +#[path = "engine/tests/engine_test.rs"] mod tests; #[cfg(test)] diff --git a/crates/neomacs-layout-engine/src/engine/mini_source_start.rs b/crates/neomacs-layout-engine/src/engine/mini_source_start.rs index e5b9f8d1be..2ef9eb3c95 100644 --- a/crates/neomacs-layout-engine/src/engine/mini_source_start.rs +++ b/crates/neomacs-layout-engine/src/engine/mini_source_start.rs @@ -37,5 +37,5 @@ pub(super) fn aligned_after_string_start( } #[cfg(test)] -#[path = "tests/mini_source_start.rs"] +#[path = "tests/mini_source_start_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/engine/mini_source_stop.rs b/crates/neomacs-layout-engine/src/engine/mini_source_stop.rs index db8a66ba87..679be7e3d6 100644 --- a/crates/neomacs-layout-engine/src/engine/mini_source_stop.rs +++ b/crates/neomacs-layout-engine/src/engine/mini_source_stop.rs @@ -52,5 +52,5 @@ pub(super) fn condition_end_boundary( } #[cfg(test)] -#[path = "tests/mini_source_stop.rs"] +#[path = "tests/mini_source_stop_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/engine/tests/edit_sync_engine_test.rs b/crates/neomacs-layout-engine/src/engine/tests/edit_sync_engine_test.rs index ca63654d4b..894ae44c6d 100644 --- a/crates/neomacs-layout-engine/src/engine/tests/edit_sync_engine_test.rs +++ b/crates/neomacs-layout-engine/src/engine/tests/edit_sync_engine_test.rs @@ -768,9 +768,9 @@ fn source_budget_retry_restores_remapped_background_frame_artifacts() { } #[cfg(test)] -#[path = "edit_sync_source_budget_consumers.rs"] +#[path = "edit_sync_source_budget_consumers_test.rs"] mod source_budget_consumers; #[cfg(test)] -#[path = "edit_sync_source_budget_replay_retry.rs"] +#[path = "edit_sync_source_budget_replay_retry_test.rs"] mod source_budget_replay_retry; diff --git a/crates/neomacs-layout-engine/src/engine/tests/edit_sync_source_budget_consumers.rs b/crates/neomacs-layout-engine/src/engine/tests/edit_sync_source_budget_consumers_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/engine/tests/edit_sync_source_budget_consumers.rs rename to crates/neomacs-layout-engine/src/engine/tests/edit_sync_source_budget_consumers_test.rs diff --git a/crates/neomacs-layout-engine/src/engine/tests/edit_sync_source_budget_replay_retry.rs b/crates/neomacs-layout-engine/src/engine/tests/edit_sync_source_budget_replay_retry_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/engine/tests/edit_sync_source_budget_replay_retry.rs rename to crates/neomacs-layout-engine/src/engine/tests/edit_sync_source_budget_replay_retry_test.rs diff --git a/crates/neomacs-layout-engine/src/engine/tests/mod.rs b/crates/neomacs-layout-engine/src/engine/tests/engine_test.rs similarity index 99% rename from crates/neomacs-layout-engine/src/engine/tests/mod.rs rename to crates/neomacs-layout-engine/src/engine/tests/engine_test.rs index fecf227f5f..209b4fd94f 100644 --- a/crates/neomacs-layout-engine/src/engine/tests/mod.rs +++ b/crates/neomacs-layout-engine/src/engine/tests/engine_test.rs @@ -34,30 +34,48 @@ mod line_spacing; #[path = "../../tests/engine_display_motion_test.rs"] mod display_motion; +#[path = "chrome_memo_engine_test.rs"] mod chrome_memo_engine_test; #[cfg(test)] +#[path = "displayed_start_key_test.rs"] mod displayed_start_key_test; +#[path = "edit_line_numbers_test.rs"] mod edit_line_numbers_test; +#[path = "edit_replay_point_visibility_test.rs"] mod edit_replay_point_visibility_test; +#[path = "edit_replay_row_extent_test.rs"] mod edit_replay_row_extent_test; +#[path = "edit_sync_engine_test.rs"] mod edit_sync_engine_test; #[cfg(test)] +#[path = "edit_sync_prove_first_engine_test.rs"] mod edit_sync_prove_first_engine_test; #[path = "../../tests/engine_layout_validity_test.rs"] mod layout_validity; +#[path = "lazy_text_hit_test.rs"] mod lazy_text_hit_test; +#[path = "mini_window_still_test.rs"] mod mini_window_still_test; +#[path = "mode_line_gate_engine_test.rs"] mod mode_line_gate_engine_test; #[cfg(test)] +#[path = "posn_current_matrix_clear_engine_test.rs"] mod posn_current_matrix_clear_engine_test; #[cfg(test)] +#[path = "posn_frame_pool_engine_test.rs"] mod posn_frame_pool_engine_test; #[cfg(test)] +#[path = "posn_frame_pool_guard_test.rs"] mod posn_frame_pool_guard_test; +#[path = "replay_cursor_on_tab_test.rs"] mod replay_cursor_on_tab_test; +#[path = "scroll_back_engine_test.rs"] mod scroll_back_engine_test; +#[path = "scroll_input_policy_test.rs"] mod scroll_input_policy_test; +#[path = "scroll_surface_test.rs"] mod scroll_surface_test; +#[path = "text_snapshot_cow_test.rs"] mod text_snapshot_cow_test; fn test_image_load(id: u32) -> neomacs_display_protocol::ImageLoadToken { @@ -36706,8 +36724,10 @@ fn hscroll_cursor_publication_preserves_clipping_visible_text_and_eol() { } } +#[path = "prepared_viewport_test.rs"] mod prepared_viewport_test; +#[path = "offscreen_row_test.rs"] mod offscreen_row_test; #[test] @@ -37030,8 +37050,9 @@ fn unchanged_frame_layout_consults_the_image_catalog_once_per_pass() { } #[cfg(test)] +#[path = "point_rows_test.rs"] mod point_rows_test; #[cfg(test)] -#[path = "mini_scroll_sites.rs"] +#[path = "mini_scroll_sites_test.rs"] mod mini_scroll_sites; diff --git a/crates/neomacs-layout-engine/src/engine/tests/mini_scroll_sites.rs b/crates/neomacs-layout-engine/src/engine/tests/mini_scroll_sites_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/engine/tests/mini_scroll_sites.rs rename to crates/neomacs-layout-engine/src/engine/tests/mini_scroll_sites_test.rs diff --git a/crates/neomacs-layout-engine/src/engine/tests/mini_source_start.rs b/crates/neomacs-layout-engine/src/engine/tests/mini_source_start_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/engine/tests/mini_source_start.rs rename to crates/neomacs-layout-engine/src/engine/tests/mini_source_start_test.rs diff --git a/crates/neomacs-layout-engine/src/engine/tests/mini_source_stop.rs b/crates/neomacs-layout-engine/src/engine/tests/mini_source_stop_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/engine/tests/mini_source_stop.rs rename to crates/neomacs-layout-engine/src/engine/tests/mini_source_stop_test.rs diff --git a/crates/neomacs-layout-engine/src/font/catalog.rs b/crates/neomacs-layout-engine/src/font/catalog.rs index 401c55417d..d85e70c001 100644 --- a/crates/neomacs-layout-engine/src/font/catalog.rs +++ b/crates/neomacs-layout-engine/src/font/catalog.rs @@ -166,4 +166,5 @@ impl FontCatalog { } #[cfg(test)] +#[path = "catalog/tests/catalog_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/font/catalog/tests/mod.rs b/crates/neomacs-layout-engine/src/font/catalog/tests/catalog_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/font/catalog/tests/mod.rs rename to crates/neomacs-layout-engine/src/font/catalog/tests/catalog_test.rs diff --git a/crates/neomacs-layout-engine/src/font/font_match.rs b/crates/neomacs-layout-engine/src/font/font_match.rs index ec42b3b38d..c19e7edd67 100644 --- a/crates/neomacs-layout-engine/src/font/font_match.rs +++ b/crates/neomacs-layout-engine/src/font/font_match.rs @@ -265,4 +265,5 @@ fn pick_nearest_css_weight(weights: &[u16], requested_weight: u16) -> u16 { } #[cfg(test)] +#[path = "font_match/tests/font_match_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/font/font_match/tests/mod.rs b/crates/neomacs-layout-engine/src/font/font_match/tests/font_match_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/font/font_match/tests/mod.rs rename to crates/neomacs-layout-engine/src/font/font_match/tests/font_match_test.rs diff --git a/crates/neomacs-layout-engine/src/font/fontconfig.rs b/crates/neomacs-layout-engine/src/font/fontconfig.rs index 97bf149550..830a3190a4 100644 --- a/crates/neomacs-layout-engine/src/font/fontconfig.rs +++ b/crates/neomacs-layout-engine/src/font/fontconfig.rs @@ -1675,4 +1675,5 @@ fn query_default_subpixel_order() -> FontconfigSubpixelOrder { } #[cfg(test)] +#[path = "fontconfig/tests/fontconfig_test.rs"] mod tests; diff --git a/crates/neomacs-layout-engine/src/font/fontconfig/candidate_cache.rs b/crates/neomacs-layout-engine/src/font/fontconfig/candidate_cache.rs index 5a9f428986..29f7c6c5fc 100644 --- a/crates/neomacs-layout-engine/src/font/fontconfig/candidate_cache.rs +++ b/crates/neomacs-layout-engine/src/font/fontconfig/candidate_cache.rs @@ -104,74 +104,5 @@ fn font_bytes(font: &ListedFont) -> usize { } #[cfg(test)] -mod tests { - use super::*; - fn query(family: &str) -> Query { - Query::new(Some(family), &[], None, &[], FcQueryKind::List).unwrap() - } - #[test] - fn complete_query_key_distinguishes_native_inputs() { - let base = query("test"); - for other in [ - Query::new(None, &[], None, &[], FcQueryKind::List).unwrap(), - Query::new(Some("test"), &[(1, 3)], None, &[], FcQueryKind::List).unwrap(), - Query::new(Some("test"), &[], Some(65), &[], FcQueryKind::List).unwrap(), - Query::new(Some("test"), &[], None, &["en".into()], FcQueryKind::List).unwrap(), - Query::new(Some("test"), &[], None, &[], FcQueryKind::Match).unwrap(), - ] { - assert_ne!(base, other); - } - } - #[test] - fn bounded_cache_reuses_negative_answers_and_evicts_least_recent_query() { - let mut cache = CandidateQueries::with_limits(2, 4096); - cache.insert(query("a"), &[]); - cache.insert(query("b"), &[]); - assert_eq!(cache.get(&query("a")), Some(vec![])); - cache.insert(query("c"), &[]); - assert_eq!(cache.get(&query("b")), None); - assert_eq!(cache.get(&query("a")), Some(vec![])); - assert!(cache.bytes <= 4096); - } - #[test] - fn byte_limit_evicts_and_oversized_keys_are_not_retained() { - let mut cache = CandidateQueries::with_limits(128, query("a").bytes()); - cache.insert(query("a"), &[]); - cache.insert(query("b"), &[]); - assert_eq!(cache.entries.len(), 1); - assert_eq!(cache.get(&query("a")), None); - cache.insert(query("too long"), &[]); - assert_eq!(cache.entries.len(), 1); - assert!(Query::new(Some(&"x".repeat(65537)), &[], None, &[], FcQueryKind::List).is_none()); - } - - #[test] - fn font_payload_counts_toward_limit_and_returned_answers_are_independent() { - let font = ListedFont { - matched: super::super::FontMatch { - family: "fixture".into(), - file: Some("font-file".into()), - face_index: 0, - variation_coords: vec![], - postscript_name: None, - weight: None, - slant: neovm_core::face::FontSlant::Normal, - size: crate::font_backend::PlatformFontSize::Scalable, - }, - style: "regular".into(), - weight_css: None, - width: None, - spacing: None, - foundry: None, - }; - let bytes = query("a").bytes() + font_bytes(&font); - let mut cache = CandidateQueries::with_limits(128, bytes); - cache.insert(query("a"), std::slice::from_ref(&font)); - let mut answer = cache.get(&query("a")).unwrap(); - answer[0].matched.family.clear(); - assert_eq!(cache.get(&query("a")), Some(vec![font.clone()])); - cache.insert(query("b"), &[font.clone(), font]); - assert_eq!(cache.get(&query("b")), None); - assert_eq!(cache.bytes, bytes); - } -} +#[path = "tests/candidate_cache_test.rs"] +mod tests; diff --git a/crates/neomacs-layout-engine/src/font/fontconfig/tests/candidate_cache_test.rs b/crates/neomacs-layout-engine/src/font/fontconfig/tests/candidate_cache_test.rs new file mode 100644 index 0000000000..a0702d8938 --- /dev/null +++ b/crates/neomacs-layout-engine/src/font/fontconfig/tests/candidate_cache_test.rs @@ -0,0 +1,69 @@ +use super::*; +fn query(family: &str) -> Query { + Query::new(Some(family), &[], None, &[], FcQueryKind::List).unwrap() +} +#[test] +fn complete_query_key_distinguishes_native_inputs() { + let base = query("test"); + for other in [ + Query::new(None, &[], None, &[], FcQueryKind::List).unwrap(), + Query::new(Some("test"), &[(1, 3)], None, &[], FcQueryKind::List).unwrap(), + Query::new(Some("test"), &[], Some(65), &[], FcQueryKind::List).unwrap(), + Query::new(Some("test"), &[], None, &["en".into()], FcQueryKind::List).unwrap(), + Query::new(Some("test"), &[], None, &[], FcQueryKind::Match).unwrap(), + ] { + assert_ne!(base, other); + } +} +#[test] +fn bounded_cache_reuses_negative_answers_and_evicts_least_recent_query() { + let mut cache = CandidateQueries::with_limits(2, 4096); + cache.insert(query("a"), &[]); + cache.insert(query("b"), &[]); + assert_eq!(cache.get(&query("a")), Some(vec![])); + cache.insert(query("c"), &[]); + assert_eq!(cache.get(&query("b")), None); + assert_eq!(cache.get(&query("a")), Some(vec![])); + assert!(cache.bytes <= 4096); +} +#[test] +fn byte_limit_evicts_and_oversized_keys_are_not_retained() { + let mut cache = CandidateQueries::with_limits(128, query("a").bytes()); + cache.insert(query("a"), &[]); + cache.insert(query("b"), &[]); + assert_eq!(cache.entries.len(), 1); + assert_eq!(cache.get(&query("a")), None); + cache.insert(query("too long"), &[]); + assert_eq!(cache.entries.len(), 1); + assert!(Query::new(Some(&"x".repeat(65537)), &[], None, &[], FcQueryKind::List).is_none()); +} + +#[test] +fn font_payload_counts_toward_limit_and_returned_answers_are_independent() { + let font = ListedFont { + matched: super::super::FontMatch { + family: "fixture".into(), + file: Some("font-file".into()), + face_index: 0, + variation_coords: vec![], + postscript_name: None, + weight: None, + slant: neovm_core::face::FontSlant::Normal, + size: crate::font_backend::PlatformFontSize::Scalable, + }, + style: "regular".into(), + weight_css: None, + width: None, + spacing: None, + foundry: None, + }; + let bytes = query("a").bytes() + font_bytes(&font); + let mut cache = CandidateQueries::with_limits(128, bytes); + cache.insert(query("a"), std::slice::from_ref(&font)); + let mut answer = cache.get(&query("a")).unwrap(); + answer[0].matched.family.clear(); + assert_eq!(cache.get(&query("a")), Some(vec![font.clone()])); + cache.insert(query("b"), &[font.clone(), font]); + assert_eq!(cache.get(&query("b")), None); + assert_eq!(cache.bytes, bytes); +} diff --git a/crates/neomacs-layout-engine/src/font/fontconfig/tests/mod.rs b/crates/neomacs-layout-engine/src/font/fontconfig/tests/fontconfig_test.rs similarity index 100% rename from crates/neomacs-layout-engine/src/font/fontconfig/tests/mod.rs rename to crates/neomacs-layout-engine/src/font/fontconfig/tests/fontconfig_test.rs diff --git a/crates/neomacs-layout-engine/src/font/metrics.rs b/crates/neomacs-layout-engine/src/font/metrics.rs index fee0f238f4..ae267223bb 100644 --- a/crates/neomacs-layout-engine/src/font/metrics.rs +++ b/crates/neomacs-layout-engine/src/font/metrics.rs @@ -3579,4 +3579,5 @@ fn font_slant_to_cosmic_style(slant: FontSlant) -> Option