Browse code

Update author email

Dario Rodriguez authored on 07/01/2022 17:57:32
Showing 1 changed files
... ...
@@ -5,7 +5,7 @@
5 5
  *
6 6
  * Tests (ensure correct functionality of modules)
7 7
  *
8
- * Author: Dario Rodriguez dario@softhome.net
8
+ * Author: Dario Rodriguez antartica@whereismybit.com
9 9
  * This program is licensed under the terms of GNU GPL v2.1+
10 10
  */
11 11
 
Browse code

Move utf8 tests to re_tests_utf8.c

Dario Rodriguez authored on 02/09/2020 22:10:05
Showing 1 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,137 @@
1
+/*
2
+ * re_tests_utf8.c
3
+ *
4
+ * A programmers editor
5
+ *
6
+ * Tests (ensure correct functionality of modules)
7
+ *
8
+ * Author: Dario Rodriguez dario@softhome.net
9
+ * This program is licensed under the terms of GNU GPL v2.1+
10
+ */
11
+
12
+#include <stdio.h>
13
+#include <stdlib.h>
14
+#include <unistd.h>
15
+#include <string.h>
16
+#include <limits.h>
17
+#include <fcntl.h>
18
+#include <errno.h>
19
+
20
+#include "re_data.h"
21
+
22
+#define TEST_OK "OK"
23
+
24
+typedef struct test_ui_t  {
25
+        char *name;
26
+        char *(*fn)(char *,int , int, int, int);
27
+} test_ui_t;
28
+
29
+char *test_utf8len(char *teststring, int expectednchars, int dummy1, int dummy2,int dummy3);
30
+char *test_utf8col(char *teststring, int dummy0, int col, int expectedoffset,int dummy3);
31
+char *test_utf8charlen(char *teststring, int dummy0, int dummy1, int offset,int charsizeatoffset);
32
+
33
+int
34
+main(int argc, char *argv[])
35
+{
36
+        struct {
37
+                char string[1024];
38
+                int nchars;
39
+                int col;
40
+                int offsetcol;
41
+                int charsizeatoffsetcol;
42
+        } teststrings[]={
43
+                {{"This is a latin1 string"},51-28,1,1,1},
44
+                {{"lowercase acute vowels:\xc3\xa1\xc3\xa9\xc3\xad\xc3\xb3\xc3\xba"},23+5,23+1,23+2,2},
45
+        };
46
+        test_ui_t tests[]={
47
+                {"utf8len",test_utf8len},
48
+                {"utf8col",test_utf8col},
49
+                {"utf8charlen",test_utf8charlen},
50
+        };
51
+        int flag_exit=0,flag_all=0;
52
+        int i,s;
53
+        int nerrors,total;
54
+        char *res;
55
+        for(i=1;i<argc;i++) {
56
+                if(strcmp(argv[i],"--help")==0) {
57
+                        fprintf(stderr,"Syntax: %s [--all] [--exit] [--help]\nExplanation:\n\t--all: do even the slow tests\n\t--exit: exit program at first unsuccessful test\n\t--help: this text\n",argv[0]);
58
+                        return(1);
59
+                } else if(strcmp(argv[i],"--all")==0) {
60
+                        flag_all=1;
61
+                } else if(strcmp(argv[i],"--exit")==0) {
62
+                        flag_exit=1;
63
+                }
64
+        }
65
+        nerrors=0;
66
+        total=0;
67
+        /* flag_all is not used right now, next line is to silence the compiler */
68
+        total+=(flag_all&0);
69
+        /* end of hack */
70
+        for(s=0;s<(sizeof(teststrings)/sizeof(teststrings[0]));s++) {
71
+                fprintf(stderr,"\"%s\"\n",teststrings[s].string);
72
+                for(i=0;i<(sizeof(tests)/sizeof(tests[0]));i++,total++) {
73
+                        fprintf(stderr,"%i:%s...",total+1,tests[i].name);
74
+                        res=tests[i].fn(teststrings[s].string,teststrings[s].nchars,teststrings[s].col,teststrings[s].offsetcol,teststrings[s].charsizeatoffsetcol);
75
+                                if(strcmp(res,TEST_OK)==0) {
76
+                                fprintf(stderr," ok.\n");
77
+                        } else {
78
+                                fprintf(stderr," ERROR: %s <= %s(\"%s\",%i,%i,%i,%i)\n",res,tests[i].name,teststrings[s].string,teststrings[s].nchars,teststrings[s].col,teststrings[s].offsetcol,teststrings[s].charsizeatoffsetcol);
79
+                                nerrors++;
80
+                                if(flag_exit) {
81
+                                        /* exit on first error */
82
+                                        s=sizeof(teststrings)/sizeof(teststrings[0]);
83
+                                        break;
84
+                                }
85
+                        }
86
+                }
87
+        }
88
+        fprintf(stderr,"\n");
89
+        if(nerrors==0)
90
+                fprintf(stderr,"All %i tests passed OK\n",total);
91
+        else
92
+                fprintf(stderr,"%i test(s) failed of %i tests run.\n",nerrors,total);
93
+        return((nerrors==0)?0:1);
94
+}
95
+
96
+char *
97
+test_utf8len(char *teststring, int expectednchars, int dummy1, int dummy2, int dummy3)
98
+{
99
+        int res;
100
+        static char errorstr[1024];
101
+        res=redata_generic_utf8len(teststring,strlen(teststring));
102
+        if(res!=expectednchars) {
103
+                snprintf(errorstr,sizeof(errorstr),"expected %i chars, got %i chars",expectednchars,res);
104
+                errorstr[sizeof(errorstr)-1]='\0';
105
+                return(errorstr);
106
+        }
107
+        return(TEST_OK);
108
+}
109
+
110
+char *test_utf8col(char *teststring, int dummy0, int col, int expectedoffset, int dummy3)
111
+{
112
+        char *ptr;
113
+        static char errorstr[1024];
114
+        ptr=redata_generic_utf8col(teststring,strlen(teststring),col);
115
+        if(ptr!=(teststring+expectedoffset)) {
116
+                snprintf(errorstr,sizeof(errorstr),"expected offset %i, got offset %i (\"%s\")",expectedoffset,(int) ((ptr==NULL)?-1:ptr-teststring),ptr);
117
+                errorstr[sizeof(errorstr)-1]='\0';
118
+                return(errorstr);
119
+        }
120
+        return(TEST_OK);
121
+}
122
+
123
+char *
124
+test_utf8charlen(char *teststring, int dummy0, int dummy1, int offset,int charsizeatoffset)
125
+{
126
+        int res;
127
+        static char errorstr[1024];
128
+        res=redata_generic_utf8charlen(teststring+offset,strlen(teststring+offset));
129
+        if(res!=(charsizeatoffset)) {
130
+                snprintf(errorstr,sizeof(errorstr),"expected char size %i, got char size %i (\"%s\")",charsizeatoffset,res,teststring+offset);
131
+                errorstr[sizeof(errorstr)-1]='\0';
132
+                return(errorstr);
133
+        }
134
+        return(TEST_OK);
135
+}
136
+
137
+