/* ========================================================================= */
/**
 * @file toolkit_test.c
 *
 * @copyright
 * Copyright 2023 Google LLC
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * https://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

#include <stdbool.h>
#include <stddef.h>
#include <libbase/libbase.h>

#include "toolkit/toolkit.h"

/** Toolkit unit tests. */
const bs_test_set_t toolkit_tests[] = {
    BS_TEST_SET(true, "base", wlmtk_base_test_cases),
    BS_TEST_SET(true, "bordered", wlmtk_bordered_test_cases),
    BS_TEST_SET(true, "box", wlmtk_box_test_cases),
    BS_TEST_SET(true, "buffer", wlmtk_buffer_test_cases),
    BS_TEST_SET(true, "button", wlmtk_button_test_cases),
    BS_TEST_SET(true, "container", wlmtk_container_test_cases),
    BS_TEST_SET(true, "dock", wlmtk_dock_test_cases),
    BS_TEST_SET(true, "element", wlmtk_element_test_cases),
    BS_TEST_SET(true, "fsm", wlmtk_fsm_test_cases),
    BS_TEST_SET(true, "image", wlmtk_image_test_cases),
    BS_TEST_SET(true, "layer", wlmtk_layer_test_cases),
    BS_TEST_SET(true, "menu", wlmtk_menu_test_cases),
    BS_TEST_SET(true, "menu_item", wlmtk_menu_item_test_cases),
    BS_TEST_SET(true, "output_tracker", wlmtk_output_tracker_test_cases),
    BS_TEST_SET(true, "panel", wlmtk_panel_test_cases),
    BS_TEST_SET(true, "primitives", wlmaker_primitives_test_cases),
    BS_TEST_SET(true, "rectangle", wlmtk_rectangle_test_cases),
    BS_TEST_SET(true, "resizebar", wlmtk_resizebar_test_cases),
    BS_TEST_SET(true, "resizebar_area", wlmtk_resizebar_area_test_cases),
    BS_TEST_SET(true, "root", wlmtk_root_test_cases),
    BS_TEST_SET(true, "surface", wlmtk_surface_test_cases),
    BS_TEST_SET(true, "tile", wlmtk_tile_test_cases),
    BS_TEST_SET(true, "titlebar", wlmtk_titlebar_test_cases),
    BS_TEST_SET(true, "titlebar_button", wlmtk_titlebar_button_test_cases),
    BS_TEST_SET(true, "titlebar_title", wlmtk_titlebar_title_test_cases),
    BS_TEST_SET(true, "util", wlmtk_util_test_cases),
    BS_TEST_SET(true, "window", wlmtk_window_test_cases),
    BS_TEST_SET(true, "workspace", wlmtk_workspace_test_cases),
    BS_TEST_SET(0, NULL, NULL)
};

#if !defined(TEST_DATA_DIR)
/** Directory root for looking up test data. See `bs_test_resolve_path`. */
#define TEST_DATA_DIR "./"
#endif  // TEST_DATA_DIR

/** Main program, runs the unit tests. */
int main(int argc, const char **argv)
{
    const bs_test_param_t params = {
        .test_data_dir_ptr   = TEST_DATA_DIR
    };
    return bs_test(toolkit_tests, argc, argv, &params);
}

/* == End of toolkit_test.c ================================================ */
