HelenOS sources
This source file includes following definitions.
- PCUT_TEST
- PCUT_TEST
- PCUT_TEST
- PCUT_TEST
- test_dialog_bok
- test_dialog_bcancel
- test_dialog_close
#include <pcut/pcut.h>
#include <stdbool.h>
#include <ui/pbutton.h>
#include <ui/ui.h>
#include <ui/filedialog.h>
#include "../private/filedialog.h"
#include "../private/window.h"
PCUT_INIT;
PCUT_TEST_SUITE(file_dialog);
static void test_dialog_bok(ui_file_dialog_t *, void *, const char *);
static void test_dialog_bcancel(ui_file_dialog_t *, void *);
static void test_dialog_close(ui_file_dialog_t *, void *);
static ui_file_dialog_cb_t test_file_dialog_cb = {
.bok = test_dialog_bok,
.bcancel = test_dialog_bcancel,
.close = test_dialog_close
};
static ui_file_dialog_cb_t dummy_file_dialog_cb = {
};
typedef struct {
bool bok;
const char *fname;
bool bcancel;
bool close;
} test_cb_resp_t;
PCUT_TEST(create_destroy)
{
errno_t rc;
ui_t *ui = NULL;
ui_file_dialog_params_t params;
ui_file_dialog_t *dialog = NULL;
rc = ui_create_disp(NULL, &ui);
PCUT_ASSERT_ERRNO_VAL(EOK, rc);
ui_file_dialog_params_init(¶ms);
params.caption = "Open";
rc = ui_file_dialog_create(ui, ¶ms, &dialog);
PCUT_ASSERT_ERRNO_VAL(EOK, rc);
PCUT_ASSERT_NOT_NULL(dialog);
ui_file_dialog_destroy(dialog);
ui_destroy(ui);
}
PCUT_TEST(destroy_null)
{
ui_file_dialog_destroy(NULL);
}
PCUT_TEST(button_cb)
{
errno_t rc;
ui_t *ui = NULL;
ui_file_dialog_params_t params;
ui_file_dialog_t *dialog = NULL;
test_cb_resp_t resp;
rc = ui_create_disp(NULL, &ui);
PCUT_ASSERT_ERRNO_VAL(EOK, rc);
ui_file_dialog_params_init(¶ms);
params.caption = "Open";
rc = ui_file_dialog_create(ui, ¶ms, &dialog);
PCUT_ASSERT_ERRNO_VAL(EOK, rc);
PCUT_ASSERT_NOT_NULL(dialog);
ui_pbutton_clicked(dialog->bok);
ui_file_dialog_set_cb(dialog, &dummy_file_dialog_cb, NULL);
ui_pbutton_clicked(dialog->bok);
resp.bok = false;
ui_file_dialog_set_cb(dialog, &test_file_dialog_cb, &resp);
ui_pbutton_clicked(dialog->bok);
PCUT_ASSERT_TRUE(resp.bok);
ui_file_dialog_destroy(dialog);
ui_destroy(ui);
}
PCUT_TEST(close_cb)
{
errno_t rc;
ui_t *ui = NULL;
ui_file_dialog_params_t params;
ui_file_dialog_t *dialog = NULL;
test_cb_resp_t resp;
rc = ui_create_disp(NULL, &ui);
PCUT_ASSERT_ERRNO_VAL(EOK, rc);
ui_file_dialog_params_init(¶ms);
params.caption = "Open";
rc = ui_file_dialog_create(ui, ¶ms, &dialog);
PCUT_ASSERT_ERRNO_VAL(EOK, rc);
PCUT_ASSERT_NOT_NULL(dialog);
ui_window_send_close(dialog->window);
ui_file_dialog_set_cb(dialog, &dummy_file_dialog_cb, NULL);
ui_window_send_close(dialog->window);
resp.close = false;
ui_file_dialog_set_cb(dialog, &test_file_dialog_cb, &resp);
ui_window_send_close(dialog->window);
PCUT_ASSERT_TRUE(resp.close);
ui_file_dialog_destroy(dialog);
ui_destroy(ui);
}
static void test_dialog_bok(ui_file_dialog_t *dialog, void *arg,
const char *fname)
{
test_cb_resp_t *resp = (test_cb_resp_t *) arg;
resp->bok = true;
}
static void test_dialog_bcancel(ui_file_dialog_t *dialog, void *arg)
{
test_cb_resp_t *resp = (test_cb_resp_t *) arg;
resp->bcancel = true;
}
static void test_dialog_close(ui_file_dialog_t *dialog, void *arg)
{
test_cb_resp_t *resp = (test_cb_resp_t *) arg;
resp->close = true;
}
PCUT_EXPORT(file_dialog);
HelenOS homepage, sources at GitHub