C Project Template
Loading...
Searching...
No Matches
test_GarbleFilter.h
Go to the documentation of this file.
1
12#ifndef TEST_GARBLEFILTER_H
13#define TEST_GARBLEFILTER_H
14#include <string.h>
15#include "acutest.h"
16#include "GarbleFilter.h"
17#include "utils.h"
18
19void test_ascii(void){
20 char t = 'a';
21 TEST_CHECK(str2ascii(t) == 97);
22 TEST_CHECK(str2ascii('z') == 122);
23 TEST_CHECK(str2ascii('A') == 65);
24 TEST_CHECK(str2ascii('Z') == 90);
25 TEST_MSG("Got %d", str2ascii(t));
26}
27
28void text_occurrence(void){
29 char t[2000] = "I have a good day\0";
30 occurText oc = init_occurText();
31
32 int len = strlen(t);
33 TEST_CHECK(len==17);
34 TEST_CHECK(t[len-1] == 'y');
35 TEST_CHECK(t[0] == 'I');
36
37 //Get occurrence
38 get_region_occurrence(t, &oc, 0, len-1);
39 TEST_CHECK(oc.occur[str2ascii('h')] == 1);
40 TEST_CHECK(oc.occur[str2ascii('o')] == 2);
41 TEST_CHECK(oc.occur[str2ascii('a')] == 3);
42 TEST_CHECK(oc.occur[str2ascii('y')] == 1);
43 TEST_CHECK(oc.nexceed == 0);
44 TEST_CHECK(oc.noccur == 10);
45
46 //Add obs
47 add_obs('h', &oc);
48 TEST_CHECK(oc.obs[str2ascii('h')] == 1);
49 TEST_CHECK(oc.nexceed == 1);
50 del_obs('h', &oc);
51 TEST_CHECK(oc.obs[str2ascii('h')] == 0);
52 TEST_CHECK(oc.nexceed == 0);
53
54 TEST_CHECK(oc.obs[str2ascii('z')] == 0);
55 TEST_CHECK(oc.nexceed == 0);
56}
57
58void find_garble_text(void){
59 char text[2000] = "DSARANDOMTEXTISSOHARD\0";
60 char garble[2000] = "RTTX\0";
61 int head = -1;
62 int tail = -1;
63 int h2, t2,h3,t3;
64 occurText oc2, oc3;
65 occurText oc = init_occurText();
66 get_region_occurrence(garble, &oc, 0, strlen(garble)-1);
67
68
69 bool sat = next_garble_region(text, &tail, &head, strlen(text), &oc);
70
71 //Next garble text
72 h2 = head; t2 = tail; oc2 = oc;
73 bool sat2 = next_garble_region(text, &t2, &h2, strlen(text), &oc2);
74
75 //No garble text
76 h3 = h2; t3 = t2; oc3 = oc2;
77 bool sat3 = next_garble_region(text, &t3, &h3, strlen(text), &oc3);
78
79 //TEST
80 //PIN
81 TEST_CHECK(head==12);
82 TEST_CHECK(tail==3);
83 TEST_CHECK(h2==19);
84 TEST_CHECK(t2==9);
85 TEST_CHECK(h3== strlen(text));
86 TEST_CHECK(t3 == t2+1);
87 TEST_CHECK(text[head]=='T');
88 TEST_CHECK(text[tail]=='R');
89 TEST_CHECK(text[h2]=='R');
90 TEST_CHECK(text[t2]=='T');
91 //Observation
92 TEST_CHECK(oc.obs[str2ascii('R')]==1);
93 TEST_CHECK(oc.obs[str2ascii('T')]==2);
94 TEST_CHECK(oc.obs[str2ascii('X')]==1);
95 TEST_CHECK(oc2.obs[str2ascii('R')]==1);
96 TEST_CHECK(oc2.obs[str2ascii('T')]==2);
97 TEST_CHECK(oc2.obs[str2ascii('X')]==1);
98 //Valid
99 TEST_CHECK(oc.nexceed == oc.noccur);
100 TEST_CHECK(oc2.nexceed == oc.noccur);
101 TEST_CHECK(oc3.nexceed < oc.noccur);
102 TEST_CHECK(sat == true);
103 TEST_CHECK(sat2==true);
104 TEST_CHECK(sat3 == false);
105 //Occurrence
106 TEST_CHECK(oc.occur[str2ascii('R')] == 1);
107 TEST_CHECK(oc.occur[str2ascii('T')] == 2);
108 TEST_CHECK(oc.occur[str2ascii('X')] == 1);
109 TEST_CHECK(oc.occur[str2ascii('z')] == 0);
110 TEST_CHECK(oc.noccur == 3);
111
112}
113
114void find_leftsmall_garble_text(void){
115 char text[2000] = "DSARANDOMTEXTISSOHARD\0";
116 char garble[2000] = "RTTX\0";
117 int head, tail;
118 TEST_CHECK(text[strlen(text)] == '\0');
119 bool sat1 = leftist_smallest_garble_region(text, strlen(text), garble, strlen(garble), &tail, &head);
120
121
122 TEST_CHECK(sat1==true);
123 TEST_CHECK(tail == 3);
124 TEST_CHECK(head == 12);
125}
126
127void find_leftsmall_garble_text2(void){
128 char text[2000] = "Nooo\0";
129 char garble[2000] = "oo\0";
130 int head, tail;
131
132 bool sat1 = leftist_smallest_garble_region(text, strlen(text), garble, strlen(garble), &tail, &head);
133
134
135 TEST_CHECK(sat1==true);
136 TEST_CHECK(tail == 1);
137 TEST_CHECK(head == 2);
138}
139
140void test_slice_text(void){
141 char text[2000] = "NooStevengogogo\0";
142 slice_text(text, 1,8, strlen(text));
143 TEST_CHECK(strcmp(text, "Ngogogo\0")==0);
144 TEST_CHECK(strlen(text)==7);
145 TEST_MSG("Got %s", text);
146}
147
148void text_garblefilter(void){
149 char text[MAX_STR_LEN] = "tReRSfOSagcKrczzcKitRwdeGKgKARKFcRriUfeAzqaecKzRFzaSwqceiaciUfitStSffdewKSigtrOArdwOSOwFRcAdaFgfOFUigcffritcGOaqrqqriiqcgaftwetfeSwGdFgUGfUaigfGgOArifdgcReOftKGSKSwUzAGKffzGAOAfqagiFidrgdAeFGfrcRSdgKUFNwKfORRwSFOwieGdRiRwAOeiASAKgFgKfeddzOiaKcwwefAgfSaqGrzrKGSzfRfOtGzfrtrwKgdfGeiwriSqUrGKgqRGFGttGRaGfSgtrOrKiqidKcFqwrGKcFKKqcggrzOeaRqRceRiwedtrfeRaqeeeggeOKfqrUdAAwdAOAxKFczOfFatrSKgKgggSUrKUwOAeqefwiigArSAcfiaKrFqtKigOUrKzcdqeSAeGRcdGAdOwOittgiGGKRzFidzfwfieKdgwcGcfSqigSrRAKrtrtzSfFtfaFwqcUOSeqGrRFFGURgzfwSdzzaRUKgeztgAgwacAOdKzKARaOrwrdUiOafcrzFKGUwtagFzcKedUqdictadRtdKFwraeOqFefrfFAKOiwgOStOtRaFSzGdzGaigOtrieKKAkFUcfKeAAOAcwdtaGFiqeGfRUzafHgrFcrSRKiKGKcOtzfKRFGGegcrrKfairROezGKwdgRRFfiwAzfcSUKSKcKRrqagKRetGarKwrcafzqRffKacSAeccewGzegzKKeSKwcKqUeRFgAGKfageGFigGQRqdwRgFeGzfricwizORRFKAierFteFiaqKOKietrqiAecgFRiKqdgKarzrAKARrOgczvGcUfGqreUwtqFtgRGwSUdfUAKAqtwqcSOeURgUcqrAtFwwdwOdOGrqretUtaSqaifUScRzUqiSrKAcfzatqRzdwRGeORiagKzpeaAwKwAtGUOiUeOgOfGOwriGiUSFzadUqfGUAKSaAgwfddeOteKSqqKgqgRtq\0";
150 char garble[MAX_STR_LEN] = "teRSfSagKczzctRweGgKARFRrifeAzqacFzaSiaUitStSfdegOArdOSOwFRcAdFfOFUigcffritcGOaqrqqriqcattSwGgUGfUaigfGgOAricROftKGSSwzAGGAOAfaiirgAeGfrcRSdgKKORwSOwGdRiRwAOeiASAKgFfeddOiKwweASaqGSzffOtGzftrwKgdferiUrGKgqGFGttRatrOriqidKcFwKqczOeqRRiwedtrfRqegeOKfrdwdOKFczfFarSgKggSUwOAeefwiASAcfiKFqtOUrKzdqeSeAdOittgiGGzFdzfwfiKdwfSigrKrtrtfFtfaFwqcUOeqFFGURgfSdzzaRUetgAgcAOdKzKRaOrwriOfcrzFGUagzcKedUqdctadRtKFwraeOqFefrfFAKwgStRaFzGdGagOtriKKAFUceAOAcwdtaGFiqeGfRUzafgFcRKiKGKctzfKRFGegcrKfarezdgRRFiwAzfcSUKcKRragKReGarKwafzqKcSecewGzScKURFAGKfaFgGRqRgGzriciORFKAierFteFaqKOKetrqiecgFRiKdgKrAAOczGcGqrUwqRGwSUdUAKqtwqeRgqrAtFwwdGrqrUaqaifUSRzUqiSrKAcfzatqRzdwRGRigKzeAKwGUOUeOgOGwiGiUSFzadUqfGAKSaAgwddOteKqqKgqgR\0";
151 GarbleTextFilter(text, garble);
152 TEST_CHECK(strcmp(text,"tReRSfOSagcKrczzcKitRwdeGKgKARKFcRriUfeAzqaecKzRFzaSwqceiaciUfitStSffdewKSigtrOArdwOSOwFRcAdaFgfOFUigcffritcGOaqrqqriiqcgaftwetfeSwGdFgUGfUaigfGgOArifdgcReOftKGSKSwUzAGKffzGAOAfqagiFidrgdAeFGfrcRSdgKUFNwKfORRwdeOteKSqqKgqgRtq\0")==0);
153 TEST_MSG("Got %s", text);
154}
155
156#endif
Definition GarbleFilter.h:9
General Utilities for C language.