18
18
19
19
#include < string>
20
20
#include < vector>
21
+ #include < cstring>
22
+
23
+
21
24
#define WANT_TEST_EXTRAS
22
25
#include < tap++/tap++.h>
23
26
24
27
#include " blobstamper/stamp_json.h"
25
-
26
- // tmp
27
- #include < fstream>
28
+ #include " blobstamper/oracle.h"
28
29
29
30
using namespace TAP ;
30
31
@@ -36,30 +37,78 @@ unsigned char bin_sample[]= {49, 22, 152, 226, 89, 119, 247, 115, 43, 42, 243, 7
36
37
int
37
38
main ()
38
39
{
39
- std::fstream f{" /dev/random" };
40
- // std::fstream f{"buf"};
41
- if (!f)
42
- std::cerr << " Unable to open file" ;
43
-
44
- std::vector<char > buffer (128 ,0 );
45
- f.read (&buffer[0 ], buffer.size ());
46
-
47
- // auto blob = std::make_shared<Blob>((char *)bin_sample, strlen((char *)bin_sample));
48
- auto blob = std::make_shared<Blob>(&buffer[0 ], buffer.size ());
49
-
50
-
51
- auto stamp_j = std::make_shared<StampJSON>();
52
-
53
- std::string s = stamp_j->ExtractStr (blob);
54
40
55
- printf ( " %s \n " , s. c_str ());
41
+ // If you uncomment this it will crash for reason I do not understand
56
42
57
- /*
43
+ /* auto blob1 = std::make_shared<Blob>((char *)bin_sample, strlen((char *)bin_sample));
44
+ auto stamp_j1 = std::make_shared<StampJSON>();
45
+ std::string s1 = stamp_j1->ExtractStr(blob1);
46
+ printf("%s\n", s1.c_str());
47
+ */
58
48
59
- TEST_START(6 );
49
+ TEST_START (5 );
60
50
{
51
+ auto blob = std::make_shared<Blob>((char *)bin_sample, strlen ((char *)bin_sample));
52
+ auto stamp_j = std::make_shared<StampJSON>();
61
53
54
+ std::string s = stamp_j->ExtractStr (blob);
55
+ std::string expected = "[6850509402014839822, 3438255817691106319, \"resulted\", -2.684757453484730872673776686700739040682020879678934003695336094670709694419006239953740106372555463816175000634871124431422513570790242370232656601974908085084433064181237341375458199532539671263821862377193715039215799333468172751725903574125176464661297323397544866180407166347114750393787405005704461598334438005517341732432719884411807209593715412099886215291366653445948031730949878692626953125e-151, \"lushes\", -5199661808640109653, \"denomination\", -3.06532686549173138956803086330182850360870361328125, \"sedating\", \"robots\", -3.3696970613711244822470283884492113423278459359891097388748050077510095184860700081976239055565263066452656899596451722800338757224380970001220703125e-42, \"preface\", 9.55422367779008699072920786882312943145717681740324270561686674939552239415695463827122863940711666092367434557202401330797838517640477979352142678948212051182053983211517333984375e-56, 6300155112918555921, \"dams\", 2.411323842459936645124797826433320804619144161893916130561265623523643502350374626190490408739886564139366504029821786107467040377895714047017891228899122281601579488797245463600235576598531485903332393648607370715931713232242018751523644727805408352870771308312443806176048554264200149458533769648133943422986030732712523236966445578809656378067940216124429747414289524093606877704785435824362397944294729373146388523502884316004124548536154374326842524560415029933595880452289294570895862703927051929788804023836835074268010108198185051300394774230223405817676130206688777308144339841912135245325959771275736867526109676372404347501558868228887456576678950716422841427035057837446885287135955877602100372314453125e-287, 9188031415654983422, -5901895462997796268, \"blazer\"]";
56
+ is (s, expected, " json stamp works well" );
57
+ }
58
+ /* Smallest sample giving sane output */
59
+ {
60
+ auto blob = std::make_shared<Blob>((char *)bin_sample, 10 ); /* ORACLE_SIZE = 2 + int = 8 */
61
+ auto stamp_j = std::make_shared<StampJSON>();
62
62
63
+ std::string s = stamp_j->ExtractStr (blob);
64
+ std::string expected = " 3038649880288027288" ;
65
+ is (s, expected, " json stamp on shortest data works well" );
66
+ }
67
+ /* Check throw OutOfMemory when data length is less then ORACLE_SIZE */
68
+ {
69
+ auto blob = std::make_shared<Blob>((char *)bin_sample, ORACLE_SIZE - 1 );
70
+ auto stamp_j = std::make_shared<StampJSON>();
71
+
72
+ int cought = 0 ;
73
+ try {
74
+ std::string s = stamp_j->ExtractStr (blob);
75
+ }
76
+ catch (OutOfData)
77
+ {
78
+ cought = 1 ;
79
+ }
80
+ ok (cought, " Throws OutOfData if have data size less then ORACLE_SIZE" );
81
+ }
82
+ /* Check throw OutOfMemory when data length is equal to ORACLE_SIZE */
83
+ {
84
+ auto blob = std::make_shared<Blob>((char *)bin_sample, ORACLE_SIZE);
85
+ auto stamp_j = std::make_shared<StampJSON>();
86
+
87
+ int cought = 0 ;
88
+ try {
89
+ std::string s = stamp_j->ExtractStr (blob);
90
+ }
91
+ catch (OutOfData)
92
+ {
93
+ cought = 1 ;
94
+ }
95
+ ok (cought, " Throws OutOfData if have data size equal to ORACLE_SIZE" );
96
+ }
97
+ /* Check throw OutOfMemory when data length is bit bigger than ORACLE_SIZE */
98
+ /* But not big enough to give any output */
99
+ {
100
+ auto blob = std::make_shared<Blob>((char *)bin_sample, ORACLE_SIZE + 1 );
101
+ auto stamp_j = std::make_shared<StampJSON>();
102
+
103
+ int cought = 0 ;
104
+ try {
105
+ std::string s = stamp_j->ExtractStr (blob);
106
+ }
107
+ catch (OutOfData)
108
+ {
109
+ cought = 1 ;
110
+ }
111
+ ok (cought, " Throws OutOfData if have data size is a bit bigger then ORACLE_SIZE" );
63
112
}
64
- TEST_END;*/
113
+ TEST_END;
65
114
}
0 commit comments