load("@rules_cc//cc:cc_binary.bzl", "cc_binary")
load("@rules_cc//cc:cc_library.bzl", "cc_library")
load("@rules_cc//cc:cc_test.bzl", "cc_test")

cc_library(
    name = "roo_windows",
    srcs = glob(
        [
            "src/**/*.cpp",
            "src/**/*.h",
        ],
        exclude = ["test/**"],
    ),
    defines = [
        #                 "MLOG_roo_windows_layout=1"
    ],
    includes = [
        "src",
    ],
    visibility = ["//visibility:public"],
    deps = [
        "@roo_collections",
        "@roo_display",
        "@roo_fonts_basic",
        "@roo_fonts_material",
        "@roo_icons",
        "@roo_io",
        "@roo_locale",
        "@roo_logging",
        "@roo_scheduler",
        "@roo_testing//:arduino",
        "@roo_time",
    ],
)

cc_test(
    name = "roo_windows_test",
    srcs = [
        "test/roo_windows_test.cpp",
        "test/roo_windows_render_test_support.h",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "task_test",
    srcs = ["test/task_test.cpp"],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "application_test",
    srcs = ["test/application_test.cpp", "test/application_work_test.cpp"],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
        "@roo_testing//roo_testing/system:manual_time_mode",
    ],
)

cc_test(
    name = "presentation_registry_test",
    srcs = ["test/presentation_registry_test.cpp"],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "animation_evaluator_test",
    srcs = ["test/animation_evaluator_test.cpp"],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "animation_registry_test",
    srcs = ["test/animation_registry_test.cpp"],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "animation_registry_resource_test",
    srcs = ["test/animation_registry_resource_test.cpp"],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "shared_scheduler_drive_test",
    srcs = ["test/shared_scheduler_drive_test.cpp"],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

# Cross-component, public-entry-point characterization retained before the
# display runtime is extracted from Application.
cc_test(
    name = "display_runtime_characterization_test",
    srcs = ["test/display_runtime_characterization_test.cpp"],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "display_window_test",
    srcs = ["test/display_window_test.cpp"],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
        "@roo_testing//roo_testing/system:manual_time_mode",
    ],
)

cc_test(
    name = "navigation_task_test",
    srcs = ["test/navigation_task_test.cpp"],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "navigation_host_test",
    srcs = ["test/navigation_host_test.cpp"],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

# Compiles named sizeof() symbols for target-ABI inspection with nm. It is not
# linked into the runtime library or any firmware image.
cc_library(
    name = "display_runtime_size_probe",
    srcs = ["benchmarks/display_runtime_size_probe.cpp"],
    deps = [":roo_windows"],
)

# Compiles every migration consumer into one target-link fixture. Acceptance
# builds call this function from the representative settings-shell firmware.
cc_library(
    name = "animation_registry_mixed_fixture",
    srcs = ["benchmarks/animation_registry_mixed_fixture.cpp"],
    deps = [":roo_windows"],
)

# Compiles named animation-registry and migrated-consumer sizeof() symbols for
# target-ABI inspection with nm. It is not linked into firmware images.
cc_library(
    name = "animation_registry_size_probe",
    srcs = ["benchmarks/animation_registry_size_probe.cpp"],
    hdrs = [
        "benchmarks/Arduino.h",
        "benchmarks/pgmspace.h",
    ],
    deps = [":roo_windows"],
)

# Compiles named sizeof() symbols for Material 3 menu target-ABI inspection.
cc_library(
    name = "material3_menu_size_probe",
    srcs = ["benchmarks/material3_menu_size_probe.cpp"],
    hdrs = [
        "benchmarks/Arduino.h",
        "benchmarks/pgmspace.h",
        "benchmarks/standalone_abi_logging_stub.h",
    ],
    deps = [":roo_windows"],
)

cc_test(
    name = "dialog_test",
    srcs = ["test/dialog_test.cpp"],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_dialog_test",
    srcs = ["test/material3_dialog_test.cpp"],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_dialog_golden_test",
    srcs = ["test/material3_dialog_golden_test.cpp"],
    data = glob([
        "test/goldens/**/*.ppm",
    ], allow_empty = True),
    linkstatic = 1,
    deps = [
        ":roo_windows",
        ":test_golden_utils",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_menu_row_test",
    srcs = ["test/material3_menu_row_test.cpp"],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_menu_golden_test",
    srcs = ["test/material3_menu_golden_test.cpp"],
    data = glob([
        "test/goldens/**/*.ppm",
    ], allow_empty = True),
    linkstatic = 1,
    deps = [
        ":roo_windows",
        ":test_golden_utils",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_menu_geometry_test",
    srcs = ["test/material3_menu_geometry_test.cpp"],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_menu_test",
    srcs = ["test/material3_menu_test.cpp"],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "transient_presentation_lifetime_test",
    srcs = ["test/transient_presentation_lifetime_test.cpp"],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "transient_activity_observer_test",
    srcs = [
        "test/roo_windows_render_test_support.h",
        "test/transient_activity_observer_test.cpp",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "transient_surface_host_test",
    srcs = [
        "test/roo_windows_render_test_support.h",
        "test/transient_surface_host_test.cpp",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "transient_presentation_pin_test",
    srcs = [
        "test/roo_windows_render_test_support.h",
        "test/transient_presentation_pin_test.cpp",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "keyboard_presentation_pin_test",
    srcs = [
        "test/keyboard_presentation_pin_test.cpp",
        "test/roo_windows_render_test_support.h",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
        "@roo_testing//roo_testing/system:manual_time_mode",
    ],
)

cc_test(
    name = "image_test",
    srcs = [
        "test/image_test.cpp",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "icon_test",
    srcs = [
        "test/icon_test.cpp",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "click_animation_test",
    srcs = ["test/click_animation_test.cpp"],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
        "@roo_testing//roo_testing/system:manual_time_mode",
    ],
)

cc_test(
    name = "overlay_test",
    srcs = [
        "test/overlay_test.cpp",
        "test/roo_windows_render_test_support.h",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "theme_color_tokens_test",
    srcs = ["test/theme_color_tokens_test.cpp"],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material_typography_test",
    srcs = ["test/material_typography_test.cpp"],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "paint_context_test",
    srcs = [
        "test/paint_context_test.cpp",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "touch_sensor_test",
    srcs = [
        "test/touch_sensor_test.cpp",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
        "@roo_testing//roo_testing/system:manual_time_mode",
    ],
)

cc_test(
    name = "key_source_test",
    srcs = ["test/key_source_test.cpp"],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "text_label_test",
    srcs = [
        "test/text_label_test.cpp",
    ],
    data = glob([
        "test/goldens/**/*.ppm",
    ], allow_empty = True),
    linkstatic = 1,
    deps = [
        ":roo_windows",
        ":test_golden_utils",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "text_block_test",
    srcs = [
        "test/text_block_test.cpp",
    ],
    data = glob([
        "test/goldens/**/*.ppm",
    ], allow_empty = True),
    linkstatic = 1,
    deps = [
        ":roo_windows",
        ":test_golden_utils",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "decoration_test",
    srcs = [
        "test/decoration_test.cpp",
    ],
    data = glob([
        "test/goldens/**/*.ppm",
    ], allow_empty = True),
    linkstatic = 1,
    deps = [
        ":roo_windows",
        ":test_golden_utils",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "flex_card_test",
    srcs = [
        "test/flex_card_test.cpp",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "flex_layout_test",
    srcs = [
        "test/flex_layout_test.cpp",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "horizontal_page_host_test",
    srcs = [
        "test/horizontal_page_host_test.cpp",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "horizontal_page_host_render_test",
    srcs = [
        "test/horizontal_page_host_render_test.cpp",
        "test/roo_windows_render_test_support.h",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "scroll_motion_controller_test",
    srcs = [
        "test/scroll_motion_controller_test.cpp",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "scrollable_panel_animation_test",
    srcs = [
        "test/roo_windows_render_test_support.h",
        "test/scrollable_panel_animation_test.cpp",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_switch_test",
    srcs = [
        "test/material3_switch_test.cpp",
        "test/roo_windows_render_test_support.h",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "switch_golden_test",
    srcs = ["test/switch_golden_test.cpp"],
    data = glob([
        "test/goldens/**/*.ppm",
    ], allow_empty = True),
    linkstatic = 1,
    deps = [
        ":roo_windows",
        ":test_golden_utils",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_checkbox_test",
    srcs = [
        "test/material3_checkbox_test.cpp",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_button_test",
    srcs = [
        "test/material3_button_test.cpp",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_icon_button_test",
    srcs = [
        "test/material3_icon_button_test.cpp",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_toggle_icon_button_test",
    srcs = [
        "test/material3_toggle_icon_button_test.cpp",
        "test/roo_windows_render_test_support.h",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "progress_bar_test",
    srcs = [
        "test/progress_bar_test.cpp",
        "test/roo_windows_render_test_support.h",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "text_field_animation_test",
    srcs = [
        "test/roo_windows_render_test_support.h",
        "test/text_field_animation_test.cpp",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_icon_button_golden_test",
    srcs = ["test/material3_icon_button_golden_test.cpp"],
    data = glob([
        "test/goldens/**/*.ppm",
    ], allow_empty = True),
    linkstatic = 1,
    deps = [
        ":roo_windows",
        ":test_golden_utils",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_toggle_icon_button_golden_test",
    srcs = ["test/material3_toggle_icon_button_golden_test.cpp"],
    data = glob([
        "test/goldens/**/*.ppm",
    ], allow_empty = True),
    linkstatic = 1,
    deps = [
        ":roo_windows",
        ":test_golden_utils",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_list_test",
    srcs = [
        "test/material3_list_test.cpp",
        "test/roo_windows_render_test_support.h",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_radio_button_test",
    srcs = [
        "test/material3_radio_button_test.cpp",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_slider_test",
    srcs = [
        "test/material3_slider_test.cpp",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_badge_test",
    srcs = [
        "test/material3_badge_test.cpp",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_navigation_bar_test",
    srcs = [
        "test/material3_navigation_bar_test.cpp",
        "test/material3_navigation_bar_test_access.h",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_navigation_rail_test",
    srcs = [
        "test/material3_navigation_rail_test.cpp",
        "test/material3_navigation_rail_test_access.h",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "navigation_panel_test",
    srcs = [
        "test/navigation_panel_test.cpp",
        "test/navigation_panel_test_access.h",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_navigation_rail_golden_test",
    srcs = [
        "test/material3_navigation_rail_golden_test.cpp",
        "test/material3_navigation_rail_test_access.h",
    ],
    data = glob([
        "test/goldens/**/*.ppm",
    ], allow_empty = True),
    linkstatic = 1,
    deps = [
        ":roo_windows",
        ":test_golden_utils",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_layout_scaffold_test",
    srcs = ["test/material3_layout_scaffold_test.cpp"],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_pane_layout_test",
    srcs = ["test/material3_pane_layout_test.cpp"],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_grid_layout_test",
    srcs = ["test/material3_grid_layout_test.cpp"],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_layout_scaffold_golden_test",
    srcs = ["test/material3_pane_layout_golden_test.cpp"],
    data = glob([
        "test/goldens/**/*.ppm",
    ], allow_empty = True),
    linkstatic = 1,
    deps = [
        ":roo_windows",
        ":test_golden_utils",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_navigation_bar_golden_test",
    srcs = [
        "test/material3_navigation_bar_golden_test.cpp",
        "test/material3_navigation_bar_test_access.h",
    ],
    data = glob([
        "test/goldens/**/*.ppm",
    ], allow_empty = True),
    linkstatic = 1,
    deps = [
        ":roo_windows",
        ":test_golden_utils",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_tabs_test",
    srcs = [
        "test/material3_tabs_test.cpp",
        "test/roo_windows_render_test_support.h",
    ],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_app_bar_test",
    srcs = ["test/material3_app_bar_test.cpp"],
    linkstatic = 1,
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_app_bar_golden_test",
    srcs = ["test/material3_app_bar_golden_test.cpp"],
    data = glob([
        "test/goldens/**/*.ppm",
    ], allow_empty = True),
    linkstatic = 1,
    deps = [
        ":roo_windows",
        ":test_golden_utils",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_tabs_golden_test",
    srcs = [
        "test/material3_tabs_golden_test.cpp",
    ],
    data = glob([
        "test/goldens/**/*.ppm",
    ], allow_empty = True),
    linkstatic = 1,
    deps = [
        ":roo_windows",
        ":test_golden_utils",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_checkbox_golden_test",
    srcs = [
        "test/material3_checkbox_golden_test.cpp",
    ],
    data = glob([
        "test/goldens/**/*.ppm",
    ], allow_empty = True),
    linkstatic = 1,
    deps = [
        ":roo_windows",
        ":test_golden_utils",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_badge_golden_test",
    srcs = [
        "test/material3_badge_golden_test.cpp",
    ],
    data = glob([
        "test/goldens/**/*.ppm",
    ], allow_empty = True),
    linkstatic = 1,
    deps = [
        ":roo_windows",
        ":test_golden_utils",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_test(
    name = "material3_radio_button_golden_test",
    srcs = [
        "test/material3_radio_button_golden_test.cpp",
    ],
    data = glob([
        "test/goldens/**/*.ppm",
    ], allow_empty = True),
    linkstatic = 1,
    deps = [
        ":roo_windows",
        ":test_golden_utils",
        "@roo_testing//:arduino_gtest_main",
    ],
)

cc_binary(
    name = "shadow_benchmark",
    srcs = [
        "benchmarks/shadow_benchmark.cpp",
    ],
    defines = [
        "ROO_BENCHMARK_EXIT_AFTER_RUN=1",
    ],
    linkstatic = 1,
    tags = ["manual"],
    deps = [
        ":roo_windows",
        "@roo_testing//:arduino_main",
        "@roo_display//fake:reference_device",
        "@roo_testing//roo_testing/transducers/ui/viewport:flex",
        "@roo_testing//roo_testing/transducers/ui/viewport/fltk"
    ],
)

cc_library(
    name = "test_golden_utils",
    testonly = True,
    srcs = [
        "test/golden_image.cpp",
        "test/golden_image.h",
    ],
    copts = [
        "-DROO_WINDOWS_BAZEL_PACKAGE=\\\"" + package_name() + "\\\"",
    ],
    deps = [
        "@googletest//:gtest",
        "@roo_display",
    ],
)

cc_test(
    name = "material3_snackbar_test",
    srcs = ["test/material3_snackbar_test.cpp"],
    linkstatic = 1,
    deps = [":roo_windows", "@roo_testing//:arduino_gtest_main"],
)

cc_test(
    name = "material3_snackbar_golden_test",
    srcs = ["test/material3_snackbar_golden_test.cpp"],
    data = glob(["test/goldens/**/*.ppm"]),
    linkstatic = 1,
    deps = [":roo_windows", ":test_golden_utils", "@roo_testing//:arduino_gtest_main"],
)

cc_test(
    name = "material3_settings_shell_test",
    srcs = ["test/material3_settings_shell_test.cpp"],
    data = glob(["test/goldens/**/*.ppm"]),
    linkstatic = 1,
    deps = [":roo_windows", ":test_golden_utils",
            "//examples/material3/settings_shell:settings_shell_ui",
            "@roo_testing//:arduino_gtest_main"],
)

cc_test(
    name = "material3_progress_indicator_test",
    srcs = ["test/material3_progress_indicator_test.cpp", "test/roo_windows_render_test_support.h"],
    data = glob(["test/goldens/progress/*.ppm"], allow_empty = True),
    linkstatic = 1,
    deps = [":roo_windows", ":test_golden_utils", "@roo_testing//:arduino_gtest_main"],
)

cc_test(
    name = "material3_progress_resource_test",
    srcs = ["test/material3_progress_resource_test.cpp"],
    linkstatic = 1,
    deps = [":roo_windows", "@roo_testing//:arduino_gtest_main"],
)

cc_library(
    name = "material3_progress_size_probe",
    srcs = ["benchmarks/material3_progress_size_probe.cpp"],
    deps = [":roo_windows"],
)

cc_test(
    name = "text_field_test",
    srcs = ["test/text_field_test.cpp", "test/roo_windows_render_test_support.h"],
    linkstatic = 1,
    deps = [":roo_windows", "@roo_testing//:arduino_gtest_main"],
)

cc_test(
    name = "material3_text_field_test",
    srcs = ["test/material3_text_field_test.cpp", "test/roo_windows_render_test_support.h"],
    linkstatic = 1,
    deps = [":roo_windows", "@roo_testing//:arduino_gtest_main"],
)
cc_test(
    name = "material3_text_field_golden_test",
    srcs = ["test/material3_text_field_golden_test.cpp"],
    data = glob(["test/goldens/material3_text_field/*.ppm"], allow_empty = True),
    linkstatic = 1,
    deps = [":roo_windows", ":test_golden_utils", "@roo_testing//:arduino_gtest_main"],
)

cc_test(
    name = "material3_text_field_resource_test",
    srcs = ["test/material3_text_field_resource_test.cpp", "test/roo_windows_render_test_support.h"],
    linkstatic = 1,
    deps = [":roo_windows", "@roo_testing//:arduino_gtest_main"],
)
cc_library(
    name = "material3_text_field_size_probe",
    srcs = ["benchmarks/material3_text_field_size_probe.cpp"],
    deps = [":roo_windows"],
)

cc_test(
    name = "text_field_keyboard_avoidance_test",
    srcs = ["test/text_field_keyboard_avoidance_test.cpp", "test/roo_windows_render_test_support.h"],
    linkstatic = 1,
    deps = [":roo_windows", "@roo_testing//:arduino_gtest_main"],
)

cc_test(
    name = "keyboard_layout_test",
    srcs = ["test/keyboard_layout_test.cpp"],
    linkstatic = 1,
    deps = [":roo_windows", "@roo_testing//:arduino_gtest_main"],
)
