diff options
author | Dave Davenport <qball@gmpclient.org> | 2014-08-30 20:45:08 +0200 |
---|---|---|
committer | Dave Davenport <qball@gmpclient.org> | 2014-08-30 20:45:08 +0200 |
commit | 229bb6931b278d455a35359db8361c1b9aa6c013 (patch) | |
tree | 3d89133b25c706b69026861fca2acba7cf0eca3f /test/textbox-test.c | |
parent | 91ccb54199a533ce574fc9f0d158d64c38d406ec (diff) |
Play with adding some more test, bug fixes
* delete an invalid memmove in textbox
Diffstat (limited to 'test/textbox-test.c')
-rw-r--r-- | test/textbox-test.c | 136 |
1 files changed, 136 insertions, 0 deletions
diff --git a/test/textbox-test.c b/test/textbox-test.c new file mode 100644 index 00000000..09ba9973 --- /dev/null +++ b/test/textbox-test.c @@ -0,0 +1,136 @@ +#include <unistd.h> +#include <stdlib.h> + +#include <stdio.h> +#include <assert.h> +#include <glib.h> +#include <history.h> +#include <string.h> +#include <X11/X.h> +#include <X11/Xlib.h> + +#include <textbox.h> +#include <rofi.h> + + +static int test = 0; + +#define TASSERT(a) {\ + assert ( a );\ + printf("Test %3i passed (%s)\n", ++test, #a);\ +} + +Display *display = NULL; + +static unsigned int color_get ( Display *display, const char *const name ) +{ + int screen_id = DefaultScreen ( display ); + XColor color; + Colormap map = DefaultColormap ( display, screen_id ); + return XAllocNamedColor ( display, map, name, &color, &color ) ? color.pixel : None; +} + +int main ( int argc, char **argv ) +{ + + // Get DISPLAY + const char *display_str = getenv ( "DISPLAY" ); + if ( !( display = XOpenDisplay ( display_str ) ) ) { + fprintf ( stderr, "cannot open display!\n" ); + return EXIT_FAILURE; + } + + TASSERT( display != NULL ); + Screen *screen = DefaultScreenOfDisplay ( display ); + Window root = RootWindow ( display, XScreenNumberOfScreen ( screen ) ); + Window mw = XCreateSimpleWindow ( display, root, 0, 0, 200, 100, + config.menu_bw, + color_get ( display, config.menu_bc ), + color_get ( display, config.menu_bg ) ); + TASSERT( mw != None ); + + textbox_setup ( config.menu_bg, config.menu_fg, + config.menu_hlbg, config.menu_hlfg ); + textbox *box = textbox_create(mw , TB_EDITABLE|TB_AUTOWIDTH|TB_AUTOHEIGHT, 0,0, -1, -1, NORMAL, "test"); + TASSERT( box != NULL ); + + textbox_cursor_end ( box ); + TASSERT ( box->cursor == 4); + textbox_cursor ( box, -1 ); + TASSERT ( box->cursor == 0 ); + textbox_cursor ( box, 8 ); + TASSERT ( box->cursor == 4 ); + textbox_cursor ( box, 2 ); + TASSERT ( box->cursor == 2 ); + textbox_insert ( box, 3, "bo"); + TASSERT ( strcmp(box->text, "tesbot") == 0 ); + textbox_cursor_end ( box ); + TASSERT ( box->cursor == 6); + + TASSERT( textbox_get_width( box) > 0 ); + TASSERT( textbox_get_height( box) > 0 ); + + TASSERT( textbox_get_width( box) >= textbox_get_font_width( box) ); + TASSERT( textbox_get_height( box) >= textbox_get_font_height( box) ); + + TASSERT( textbox_get_estimated_char_width ( box) > 0 ); + + textbox_cursor_bkspc ( box ); + TASSERT ( strcmp(box->text, "tesbo") == 0 ); + TASSERT ( box->cursor == 5); + + textbox_cursor_dec ( box ); + TASSERT ( box->cursor == 4); + textbox_cursor_del ( box ); + TASSERT ( strcmp(box->text, "tesb") == 0 ); + textbox_cursor_dec ( box ); + TASSERT ( box->cursor == 3); + textbox_cursor_inc ( box ); + TASSERT ( box->cursor == 4); + textbox_cursor_inc ( box ); + TASSERT ( box->cursor == 4); + // Cursor after delete section. + textbox_delete ( box, 0, 1 ); + TASSERT ( strcmp(box->text, "esb") == 0 ); + TASSERT ( box->cursor == 3); + // Cursor before delete. + textbox_text( box, "aap noot mies"); + TASSERT ( strcmp(box->text, "aap noot mies") == 0 ); + textbox_cursor( box, 3 ); + TASSERT ( box->cursor == 3); + textbox_delete ( box, 3, 6 ); + TASSERT ( strcmp(box->text, "aapmies") == 0 ); + TASSERT ( box->cursor == 3); + + // Cursor within delete + textbox_text( box, "aap noot mies"); + TASSERT ( strcmp(box->text, "aap noot mies") == 0 ); + textbox_cursor( box, 5 ); + TASSERT ( box->cursor == 5); + textbox_delete ( box, 3, 6 ); + TASSERT ( strcmp(box->text, "aapmies") == 0 ); + TASSERT ( box->cursor == 3); + // Cursor after delete. + textbox_text( box, "aap noot mies"); + TASSERT ( strcmp(box->text, "aap noot mies") == 0 ); + textbox_cursor( box, 11 ); + TASSERT ( box->cursor == 11); + textbox_delete ( box, 3, 6 ); + TASSERT ( strcmp(box->text, "aapmies") == 0 ); + TASSERT ( box->cursor == 5); + + + textbox_font ( box, HIGHLIGHT ); + textbox_draw( box ); + + textbox_show( box ); + textbox_move ( box, 12, 13); + TASSERT ( box->x == 12 ); + TASSERT ( box->y == 13 ); + textbox_hide( box ); + + textbox_free(box); + textbox_cleanup(); + XDestroyWindow ( display, mw); + XCloseDisplay ( display ); +} |