ali@38: /* ali@38: * Copyright (C) 2016 J. Ali Harlow ali@38: * ali@38: * This program is free software; you can redistribute it and/or modify ali@38: * it under the terms of the GNU General Public License as published by ali@38: * the Free Software Foundation; either version 2 of the License, or ali@38: * (at your option) any later version. ali@38: * ali@38: * This program is distributed in the hope that it will be useful, ali@38: * but WITHOUT ANY WARRANTY; without even the implied warranty of ali@38: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ali@38: * GNU General Public License for more details. ali@38: * ali@38: * You should have received a copy of the GNU General Public License along ali@38: * with this program; if not, write to the Free Software Foundation, Inc., ali@38: * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. ali@38: */ ali@38: ali@38: #include ali@38: #include ali@38: #include ali@38: #include ali@38: ali@38: static void test_empty(void) ali@38: { ali@38: struct plover_vector *vector; ali@38: char *display; ali@38: vector=plover_vector_new(); ali@38: g_assert(vector); ali@38: display=plover_vector_format_for_display(vector); ali@38: g_assert_cmpstr(display,==,"none"); ali@38: free(display); ali@38: plover_vector_free(vector); ali@38: } ali@38: ali@38: static void test_single(void) ali@38: { ali@38: struct plover_vector *vector; ali@38: char *display; ali@38: vector=plover_vector_new(); ali@38: g_assert(vector); ali@38: plover_vector_append(vector,"single"); ali@38: display=plover_vector_format_for_display(vector); ali@38: g_assert_cmpstr(display,==,"single"); ali@38: free(display); ali@38: plover_vector_free(vector); ali@38: } ali@38: ali@38: static void test_pair(void) ali@38: { ali@38: struct plover_vector *vector; ali@38: char *display; ali@38: vector=plover_vector_new(); ali@38: g_assert(vector); ali@38: plover_vector_append(vector,"one"); ali@38: plover_vector_append(vector,"two"); ali@38: display=plover_vector_format_for_display(vector); ali@38: g_assert_cmpstr(display,==,"one and two"); ali@38: free(display); ali@38: plover_vector_free(vector); ali@38: } ali@38: ali@38: static void test_triple(void) ali@38: { ali@38: struct plover_vector *vector; ali@38: char *display; ali@38: vector=plover_vector_new(); ali@38: g_assert(vector); ali@38: plover_vector_append(vector,"one"); ali@38: plover_vector_append(vector,"two"); ali@38: plover_vector_append(vector,"three"); ali@38: display=plover_vector_format_for_display(vector); ali@38: g_assert_cmpstr(display,==,"one, two and three"); ali@38: free(display); ali@38: plover_vector_free(vector); ali@38: } ali@38: ali@38: static void test_sort(void) ali@38: { ali@38: struct plover_vector *vector; ali@38: char *display; ali@38: vector=plover_vector_new(); ali@38: g_assert(vector); ali@38: plover_vector_append(vector,"one"); ali@38: plover_vector_append(vector,"two"); ali@38: plover_vector_append(vector,"three"); ali@38: plover_vector_sort(vector); ali@38: display=plover_vector_format_for_display(vector); ali@38: g_assert_cmpstr(display,==,"one, three and two"); ali@38: free(display); ali@38: plover_vector_free(vector); ali@38: } ali@38: ali@38: static void test_dup(void) ali@38: { ali@38: struct plover_vector *vector,*vector2; ali@38: char *display; ali@38: vector=plover_vector_new(); ali@38: g_assert(vector); ali@38: plover_vector_append(vector,"one"); ali@38: plover_vector_append(vector,"two"); ali@38: plover_vector_append(vector,"three"); ali@38: vector2=plover_vector_dup(vector); ali@38: plover_vector_sort(vector2); ali@38: display=plover_vector_format_for_display(vector); ali@38: g_assert_cmpstr(display,==,"one, two and three"); ali@38: free(display); ali@38: display=plover_vector_format_for_display(vector2); ali@38: g_assert_cmpstr(display,==,"one, three and two"); ali@38: free(display); ali@38: plover_vector_free(vector); ali@38: plover_vector_free(vector2); ali@38: } ali@38: ali@38: static void test_contains(void) ali@38: { ali@38: struct plover_vector *vector; ali@38: vector=plover_vector_new(); ali@38: g_assert(vector); ali@38: plover_vector_append(vector,"one"); ali@38: plover_vector_append(vector,"two"); ali@38: plover_vector_append(vector,"three"); ali@38: g_assert(plover_vector_contains(vector,"one")); ali@38: g_assert(plover_vector_contains(vector,"two")); ali@38: g_assert(plover_vector_contains(vector,"three")); ali@38: g_assert(!plover_vector_contains(vector,"four")); ali@38: plover_vector_free(vector); ali@38: } ali@38: ali@38: static void test_long(void) ali@38: { ali@38: int i; ali@38: struct plover_vector *vector; ali@38: char letter[2],*display; ali@38: vector=plover_vector_new(); ali@38: g_assert(vector); ali@38: letter[1]=0; ali@38: for(i=0;i<26;i++) ali@38: { ali@38: letter[0]='a'+i; ali@38: plover_vector_append(vector,letter); ali@38: } ali@38: display=plover_vector_format_for_display(vector); ali@38: g_assert_cmpstr(display,==,"a, b, c, d, e, f, g, h, i, j, k, l, " ali@38: "m, n, o, p, q, r, s, t, u, v, w, x, y and z"); ali@38: free(display); ali@38: plover_vector_free(vector); ali@38: } ali@38: ali@38: int main(int argc,char **argv) ali@38: { ali@38: int retval; ali@38: g_test_init(&argc,&argv,NULL); ali@38: g_test_bug_base("mailto:ali@juiblex.co.uk"); ali@38: g_test_add_func("/vector/empty",test_empty); ali@38: g_test_add_func("/vector/single",test_single); ali@38: g_test_add_func("/vector/pair",test_pair); ali@38: g_test_add_func("/vector/triple",test_triple); ali@38: g_test_add_func("/vector/sort",test_sort); ali@38: g_test_add_func("/vector/dup",test_dup); ali@38: g_test_add_func("/vector/contains",test_contains); ali@38: g_test_add_func("/vector/long",test_long); ali@38: retval=g_test_run(); ali@38: return retval; ali@38: }