summaryrefslogtreecommitdiffstats
path: root/test/textbox-test.c
diff options
context:
space:
mode:
authorDave Davenport <qball@gmpclient.org>2014-08-30 20:45:08 +0200
committerDave Davenport <qball@gmpclient.org>2014-08-30 20:45:08 +0200
commit229bb6931b278d455a35359db8361c1b9aa6c013 (patch)
tree3d89133b25c706b69026861fca2acba7cf0eca3f /test/textbox-test.c
parent91ccb54199a533ce574fc9f0d158d64c38d406ec (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.c136
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 );
+}