1.1 --- /dev/null Thu Jan 01 00:00:00 1970 +0000
1.2 +++ b/tests/plover/test-vector.c Mon Jun 13 12:18:42 2016 +0100
1.3 @@ -0,0 +1,165 @@
1.4 +/*
1.5 + * Copyright (C) 2016 J. Ali Harlow <ali@juiblex.co.uk>
1.6 + *
1.7 + * This program is free software; you can redistribute it and/or modify
1.8 + * it under the terms of the GNU General Public License as published by
1.9 + * the Free Software Foundation; either version 2 of the License, or
1.10 + * (at your option) any later version.
1.11 + *
1.12 + * This program is distributed in the hope that it will be useful,
1.13 + * but WITHOUT ANY WARRANTY; without even the implied warranty of
1.14 + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
1.15 + * GNU General Public License for more details.
1.16 + *
1.17 + * You should have received a copy of the GNU General Public License along
1.18 + * with this program; if not, write to the Free Software Foundation, Inc.,
1.19 + * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
1.20 + */
1.21 +
1.22 +#include <stdlib.h>
1.23 +#include <glib.h>
1.24 +#include <razor.h>
1.25 +#include <plover/plover.h>
1.26 +
1.27 +static void test_empty(void)
1.28 +{
1.29 + struct plover_vector *vector;
1.30 + char *display;
1.31 + vector=plover_vector_new();
1.32 + g_assert(vector);
1.33 + display=plover_vector_format_for_display(vector);
1.34 + g_assert_cmpstr(display,==,"none");
1.35 + free(display);
1.36 + plover_vector_free(vector);
1.37 +}
1.38 +
1.39 +static void test_single(void)
1.40 +{
1.41 + struct plover_vector *vector;
1.42 + char *display;
1.43 + vector=plover_vector_new();
1.44 + g_assert(vector);
1.45 + plover_vector_append(vector,"single");
1.46 + display=plover_vector_format_for_display(vector);
1.47 + g_assert_cmpstr(display,==,"single");
1.48 + free(display);
1.49 + plover_vector_free(vector);
1.50 +}
1.51 +
1.52 +static void test_pair(void)
1.53 +{
1.54 + struct plover_vector *vector;
1.55 + char *display;
1.56 + vector=plover_vector_new();
1.57 + g_assert(vector);
1.58 + plover_vector_append(vector,"one");
1.59 + plover_vector_append(vector,"two");
1.60 + display=plover_vector_format_for_display(vector);
1.61 + g_assert_cmpstr(display,==,"one and two");
1.62 + free(display);
1.63 + plover_vector_free(vector);
1.64 +}
1.65 +
1.66 +static void test_triple(void)
1.67 +{
1.68 + struct plover_vector *vector;
1.69 + char *display;
1.70 + vector=plover_vector_new();
1.71 + g_assert(vector);
1.72 + plover_vector_append(vector,"one");
1.73 + plover_vector_append(vector,"two");
1.74 + plover_vector_append(vector,"three");
1.75 + display=plover_vector_format_for_display(vector);
1.76 + g_assert_cmpstr(display,==,"one, two and three");
1.77 + free(display);
1.78 + plover_vector_free(vector);
1.79 +}
1.80 +
1.81 +static void test_sort(void)
1.82 +{
1.83 + struct plover_vector *vector;
1.84 + char *display;
1.85 + vector=plover_vector_new();
1.86 + g_assert(vector);
1.87 + plover_vector_append(vector,"one");
1.88 + plover_vector_append(vector,"two");
1.89 + plover_vector_append(vector,"three");
1.90 + plover_vector_sort(vector);
1.91 + display=plover_vector_format_for_display(vector);
1.92 + g_assert_cmpstr(display,==,"one, three and two");
1.93 + free(display);
1.94 + plover_vector_free(vector);
1.95 +}
1.96 +
1.97 +static void test_dup(void)
1.98 +{
1.99 + struct plover_vector *vector,*vector2;
1.100 + char *display;
1.101 + vector=plover_vector_new();
1.102 + g_assert(vector);
1.103 + plover_vector_append(vector,"one");
1.104 + plover_vector_append(vector,"two");
1.105 + plover_vector_append(vector,"three");
1.106 + vector2=plover_vector_dup(vector);
1.107 + plover_vector_sort(vector2);
1.108 + display=plover_vector_format_for_display(vector);
1.109 + g_assert_cmpstr(display,==,"one, two and three");
1.110 + free(display);
1.111 + display=plover_vector_format_for_display(vector2);
1.112 + g_assert_cmpstr(display,==,"one, three and two");
1.113 + free(display);
1.114 + plover_vector_free(vector);
1.115 + plover_vector_free(vector2);
1.116 +}
1.117 +
1.118 +static void test_contains(void)
1.119 +{
1.120 + struct plover_vector *vector;
1.121 + vector=plover_vector_new();
1.122 + g_assert(vector);
1.123 + plover_vector_append(vector,"one");
1.124 + plover_vector_append(vector,"two");
1.125 + plover_vector_append(vector,"three");
1.126 + g_assert(plover_vector_contains(vector,"one"));
1.127 + g_assert(plover_vector_contains(vector,"two"));
1.128 + g_assert(plover_vector_contains(vector,"three"));
1.129 + g_assert(!plover_vector_contains(vector,"four"));
1.130 + plover_vector_free(vector);
1.131 +}
1.132 +
1.133 +static void test_long(void)
1.134 +{
1.135 + int i;
1.136 + struct plover_vector *vector;
1.137 + char letter[2],*display;
1.138 + vector=plover_vector_new();
1.139 + g_assert(vector);
1.140 + letter[1]=0;
1.141 + for(i=0;i<26;i++)
1.142 + {
1.143 + letter[0]='a'+i;
1.144 + plover_vector_append(vector,letter);
1.145 + }
1.146 + display=plover_vector_format_for_display(vector);
1.147 + g_assert_cmpstr(display,==,"a, b, c, d, e, f, g, h, i, j, k, l, "
1.148 + "m, n, o, p, q, r, s, t, u, v, w, x, y and z");
1.149 + free(display);
1.150 + plover_vector_free(vector);
1.151 +}
1.152 +
1.153 +int main(int argc,char **argv)
1.154 +{
1.155 + int retval;
1.156 + g_test_init(&argc,&argv,NULL);
1.157 + g_test_bug_base("mailto:ali@juiblex.co.uk");
1.158 + g_test_add_func("/vector/empty",test_empty);
1.159 + g_test_add_func("/vector/single",test_single);
1.160 + g_test_add_func("/vector/pair",test_pair);
1.161 + g_test_add_func("/vector/triple",test_triple);
1.162 + g_test_add_func("/vector/sort",test_sort);
1.163 + g_test_add_func("/vector/dup",test_dup);
1.164 + g_test_add_func("/vector/contains",test_contains);
1.165 + g_test_add_func("/vector/long",test_long);
1.166 + retval=g_test_run();
1.167 + return retval;
1.168 +}