Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/ui/test/control.c

    rc6f00b40 r7481ee19  
    11/*
    2  * Copyright (c) 2020 Jiri Svoboda
     2 * Copyright (c) 2021 Jiri Svoboda
    33 * All rights reserved.
    44 *
     
    2929#include <errno.h>
    3030#include <mem.h>
     31#include <io/kbd_event.h>
    3132#include <io/pos_event.h>
    3233#include <pcut/pcut.h>
     
    4142static void test_ctl_destroy(void *);
    4243static errno_t test_ctl_paint(void *);
     44static ui_evclaim_t test_ctl_kbd_event(void *, kbd_event_t *);
    4345static ui_evclaim_t test_ctl_pos_event(void *, pos_event_t *);
     46static void test_ctl_unfocus(void *);
    4447
    4548static ui_control_ops_t test_ctl_ops = {
    4649        .destroy = test_ctl_destroy,
    4750        .paint = test_ctl_paint,
    48         .pos_event = test_ctl_pos_event
     51        .kbd_event = test_ctl_kbd_event,
     52        .pos_event = test_ctl_pos_event,
     53        .unfocus = test_ctl_unfocus
    4954};
    5055
     
    6267        bool paint;
    6368
     69        /** @c true iff kbd_event was called */
     70        bool kbd;
     71        /** Keyboard event that was sent */
     72        kbd_event_t kevent;
     73
    6474        /** @c true iff pos_event was called */
    6575        bool pos;
    6676        /** Position event that was sent */
    6777        pos_event_t pevent;
     78
     79        /** @c true iff unfocus was called */
     80        bool unfocus;
    6881} test_resp_t;
    6982
     
    129142        PCUT_ASSERT_ERRNO_VAL(resp.rc, rc);
    130143        PCUT_ASSERT_TRUE(resp.paint);
     144
     145        ui_control_delete(control);
     146}
     147
     148/** Test sending keyboard event to control */
     149PCUT_TEST(kbd_event)
     150{
     151        ui_control_t *control = NULL;
     152        test_resp_t resp;
     153        kbd_event_t event;
     154        ui_evclaim_t claim;
     155        errno_t rc;
     156
     157        rc = ui_control_new(&test_ctl_ops, &resp, &control);
     158        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     159        PCUT_ASSERT_NOT_NULL(control);
     160
     161        resp.claim = ui_claimed;
     162        resp.kbd = false;
     163        event.type = KEY_PRESS;
     164        event.key = KC_2;
     165        event.mods = KM_LSHIFT;
     166        event.c = '@';
     167
     168        claim = ui_control_kbd_event(control, &event);
     169        PCUT_ASSERT_EQUALS(resp.claim, claim);
     170        PCUT_ASSERT_TRUE(resp.kbd);
     171        PCUT_ASSERT_EQUALS(resp.kevent.type, event.type);
     172        PCUT_ASSERT_INT_EQUALS(resp.kevent.key, event.key);
     173        PCUT_ASSERT_INT_EQUALS(resp.kevent.mods, event.mods);
     174        PCUT_ASSERT_INT_EQUALS(resp.kevent.c, event.c);
    131175
    132176        ui_control_delete(control);
     
    166210}
    167211
     212/** Test sending unfocus to control */
     213PCUT_TEST(unfocus)
     214{
     215        ui_control_t *control = NULL;
     216        test_resp_t resp;
     217        errno_t rc;
     218
     219        rc = ui_control_new(&test_ctl_ops, &resp, &control);
     220        PCUT_ASSERT_ERRNO_VAL(EOK, rc);
     221        PCUT_ASSERT_NOT_NULL(control);
     222
     223        resp.unfocus = false;
     224
     225        ui_control_unfocus(control);
     226        PCUT_ASSERT_TRUE(resp.unfocus);
     227
     228        ui_control_delete(control);
     229}
     230
    168231static void test_ctl_destroy(void *arg)
    169232{
     
    181244}
    182245
     246static ui_evclaim_t test_ctl_kbd_event(void *arg, kbd_event_t *event)
     247{
     248        test_resp_t *resp = (test_resp_t *) arg;
     249
     250        resp->kbd = true;
     251        resp->kevent = *event;
     252
     253        return resp->claim;
     254}
     255
    183256static ui_evclaim_t test_ctl_pos_event(void *arg, pos_event_t *event)
    184257{
     
    191264}
    192265
     266static void test_ctl_unfocus(void *arg)
     267{
     268        test_resp_t *resp = (test_resp_t *) arg;
     269
     270        resp->unfocus = true;
     271}
     272
    193273PCUT_EXPORT(control);
Note: See TracChangeset for help on using the changeset viewer.