12#ifndef TEST_GARBLEFILTER_H
13#define TEST_GARBLEFILTER_H
16#include "GarbleFilter.h"
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));
28void text_occurrence(
void){
29 char t[2000] =
"I have a good day\0";
34 TEST_CHECK(t[len-1] ==
'y');
35 TEST_CHECK(t[0] ==
'I');
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);
48 TEST_CHECK(oc.obs[str2ascii(
'h')] == 1);
49 TEST_CHECK(oc.nexceed == 1);
51 TEST_CHECK(oc.obs[str2ascii(
'h')] == 0);
52 TEST_CHECK(oc.nexceed == 0);
54 TEST_CHECK(oc.obs[str2ascii(
'z')] == 0);
55 TEST_CHECK(oc.nexceed == 0);
58void find_garble_text(
void){
59 char text[2000] =
"DSARANDOMTEXTISSOHARD\0";
60 char garble[2000] =
"RTTX\0";
66 get_region_occurrence(garble, &oc, 0, strlen(garble)-1);
69 bool sat = next_garble_region(text, &tail, &head, strlen(text), &oc);
72 h2 = head; t2 = tail; oc2 = oc;
73 bool sat2 = next_garble_region(text, &t2, &h2, strlen(text), &oc2);
76 h3 = h2; t3 = t2; oc3 = oc2;
77 bool sat3 = next_garble_region(text, &t3, &h3, strlen(text), &oc3);
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');
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);
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);
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);
114void find_leftsmall_garble_text(
void){
115 char text[2000] =
"DSARANDOMTEXTISSOHARD\0";
116 char garble[2000] =
"RTTX\0";
118 TEST_CHECK(text[strlen(text)] ==
'\0');
119 bool sat1 = leftist_smallest_garble_region(text, strlen(text), garble, strlen(garble), &tail, &head);
122 TEST_CHECK(sat1==
true);
123 TEST_CHECK(tail == 3);
124 TEST_CHECK(head == 12);
127void find_leftsmall_garble_text2(
void){
128 char text[2000] =
"Nooo\0";
129 char garble[2000] =
"oo\0";
132 bool sat1 = leftist_smallest_garble_region(text, strlen(text), garble, strlen(garble), &tail, &head);
135 TEST_CHECK(sat1==
true);
136 TEST_CHECK(tail == 1);
137 TEST_CHECK(head == 2);
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);
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);
Definition GarbleFilter.h:9
General Utilities for C language.