tests/plover/test-vector.c
author J. Ali Harlow <ali@juiblex.co.uk>
Mon Aug 31 07:12:39 2020 +0100 (2020-08-31)
changeset 105 bbddb595e366
permissions -rw-r--r--
Added tag 0.6 for changeset 5cb36c12ac49
     1 /*
     2  * Copyright (C) 2016  J. Ali Harlow <ali@juiblex.co.uk>
     3  *
     4  * This program is free software; you can redistribute it and/or modify
     5  * it under the terms of the GNU General Public License as published by
     6  * the Free Software Foundation; either version 2 of the License, or
     7  * (at your option) any later version.
     8  *
     9  * This program is distributed in the hope that it will be useful,
    10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
    11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    12  * GNU General Public License for more details.
    13  *
    14  * You should have received a copy of the GNU General Public License along
    15  * with this program; if not, write to the Free Software Foundation, Inc.,
    16  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
    17  */
    18 
    19 #include <stdlib.h>
    20 #include <glib.h>
    21 #include <razor.h>
    22 #include <plover/plover.h>
    23 
    24 static void test_empty(void)
    25 {
    26     struct plover_vector *vector;
    27     char *display;
    28     vector=plover_vector_new();
    29     g_assert(vector);
    30     display=plover_vector_format_for_display(vector);
    31     g_assert_cmpstr(display,==,"none");
    32     free(display);
    33     plover_vector_free(vector);
    34 }
    35 
    36 static void test_single(void)
    37 {
    38     struct plover_vector *vector;
    39     char *display;
    40     vector=plover_vector_new();
    41     g_assert(vector);
    42     plover_vector_append(vector,"single");
    43     display=plover_vector_format_for_display(vector);
    44     g_assert_cmpstr(display,==,"single");
    45     free(display);
    46     plover_vector_free(vector);
    47 }
    48 
    49 static void test_pair(void)
    50 {
    51     struct plover_vector *vector;
    52     char *display;
    53     vector=plover_vector_new();
    54     g_assert(vector);
    55     plover_vector_append(vector,"one");
    56     plover_vector_append(vector,"two");
    57     display=plover_vector_format_for_display(vector);
    58     g_assert_cmpstr(display,==,"one and two");
    59     free(display);
    60     plover_vector_free(vector);
    61 }
    62 
    63 static void test_triple(void)
    64 {
    65     struct plover_vector *vector;
    66     char *display;
    67     vector=plover_vector_new();
    68     g_assert(vector);
    69     plover_vector_append(vector,"one");
    70     plover_vector_append(vector,"two");
    71     plover_vector_append(vector,"three");
    72     display=plover_vector_format_for_display(vector);
    73     g_assert_cmpstr(display,==,"one, two and three");
    74     free(display);
    75     plover_vector_free(vector);
    76 }
    77 
    78 static void test_sort(void)
    79 {
    80     struct plover_vector *vector;
    81     char *display;
    82     vector=plover_vector_new();
    83     g_assert(vector);
    84     plover_vector_append(vector,"one");
    85     plover_vector_append(vector,"two");
    86     plover_vector_append(vector,"three");
    87     plover_vector_sort(vector);
    88     display=plover_vector_format_for_display(vector);
    89     g_assert_cmpstr(display,==,"one, three and two");
    90     free(display);
    91     plover_vector_free(vector);
    92 }
    93 
    94 static void test_dup(void)
    95 {
    96     struct plover_vector *vector,*vector2;
    97     char *display;
    98     vector=plover_vector_new();
    99     g_assert(vector);
   100     plover_vector_append(vector,"one");
   101     plover_vector_append(vector,"two");
   102     plover_vector_append(vector,"three");
   103     vector2=plover_vector_dup(vector);
   104     plover_vector_sort(vector2);
   105     display=plover_vector_format_for_display(vector);
   106     g_assert_cmpstr(display,==,"one, two and three");
   107     free(display);
   108     display=plover_vector_format_for_display(vector2);
   109     g_assert_cmpstr(display,==,"one, three and two");
   110     free(display);
   111     plover_vector_free(vector);
   112     plover_vector_free(vector2);
   113 }
   114 
   115 static void test_contains(void)
   116 {
   117     struct plover_vector *vector;
   118     vector=plover_vector_new();
   119     g_assert(vector);
   120     plover_vector_append(vector,"one");
   121     plover_vector_append(vector,"two");
   122     plover_vector_append(vector,"three");
   123     g_assert(plover_vector_contains(vector,"one"));
   124     g_assert(plover_vector_contains(vector,"two"));
   125     g_assert(plover_vector_contains(vector,"three"));
   126     g_assert(!plover_vector_contains(vector,"four"));
   127     plover_vector_free(vector);
   128 }
   129 
   130 static void test_long(void)
   131 {
   132     int i;
   133     struct plover_vector *vector;
   134     char letter[2],*display;
   135     vector=plover_vector_new();
   136     g_assert(vector);
   137     letter[1]=0;
   138     for(i=0;i<26;i++)
   139     {
   140 	letter[0]='a'+i;
   141 	plover_vector_append(vector,letter);
   142     }
   143     display=plover_vector_format_for_display(vector);
   144     g_assert_cmpstr(display,==,"a, b, c, d, e, f, g, h, i, j, k, l, "
   145       "m, n, o, p, q, r, s, t, u, v, w, x, y and z");
   146     free(display);
   147     plover_vector_free(vector);
   148 }
   149 
   150 int main(int argc,char **argv)
   151 {
   152     int retval;
   153     g_test_init(&argc,&argv,NULL);
   154     g_test_bug_base("mailto:ali@juiblex.co.uk");
   155     g_test_add_func("/vector/empty",test_empty);
   156     g_test_add_func("/vector/single",test_single);
   157     g_test_add_func("/vector/pair",test_pair);
   158     g_test_add_func("/vector/triple",test_triple);
   159     g_test_add_func("/vector/sort",test_sort);
   160     g_test_add_func("/vector/dup",test_dup);
   161     g_test_add_func("/vector/contains",test_contains);
   162     g_test_add_func("/vector/long",test_long);
   163     retval=g_test_run();
   164     return retval;
   165 }