rfuzz 0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/COPYING +55 -0
- data/LICENSE +55 -0
- data/README +252 -0
- data/Rakefile +48 -0
- data/doc/rdoc/classes/RFuzz.html +146 -0
- data/doc/rdoc/classes/RFuzz/HttpClient.html +481 -0
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000010.html +24 -0
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000011.html +34 -0
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000012.html +49 -0
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000013.html +49 -0
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000014.html +57 -0
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000015.html +37 -0
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000016.html +26 -0
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000017.html +34 -0
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000018.html +18 -0
- data/doc/rdoc/classes/RFuzz/HttpClient.src/M000019.html +26 -0
- data/doc/rdoc/classes/RFuzz/HttpEncoding.html +294 -0
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000001.html +26 -0
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000002.html +18 -0
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000003.html +26 -0
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000004.html +18 -0
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000005.html +32 -0
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000006.html +18 -0
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000007.html +20 -0
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000008.html +20 -0
- data/doc/rdoc/classes/RFuzz/HttpEncoding.src/M000009.html +32 -0
- data/doc/rdoc/classes/RFuzz/HttpResponse.html +180 -0
- data/doc/rdoc/classes/RFuzz/Notifier.html +252 -0
- data/doc/rdoc/classes/RFuzz/Notifier.src/M000044.html +17 -0
- data/doc/rdoc/classes/RFuzz/Notifier.src/M000045.html +17 -0
- data/doc/rdoc/classes/RFuzz/Notifier.src/M000046.html +17 -0
- data/doc/rdoc/classes/RFuzz/Notifier.src/M000047.html +17 -0
- data/doc/rdoc/classes/RFuzz/Notifier.src/M000048.html +17 -0
- data/doc/rdoc/classes/RFuzz/Notifier.src/M000049.html +17 -0
- data/doc/rdoc/classes/RFuzz/RandomGenerator.html +362 -0
- data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000032.html +21 -0
- data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000033.html +23 -0
- data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000036.html +22 -0
- data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000037.html +20 -0
- data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000038.html +22 -0
- data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000039.html +20 -0
- data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000040.html +18 -0
- data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000041.html +18 -0
- data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000042.html +22 -0
- data/doc/rdoc/classes/RFuzz/RandomGenerator.src/M000043.html +18 -0
- data/doc/rdoc/classes/RFuzz/Sampler.html +383 -0
- data/doc/rdoc/classes/RFuzz/Sampler.src/M000056.html +19 -0
- data/doc/rdoc/classes/RFuzz/Sampler.src/M000057.html +23 -0
- data/doc/rdoc/classes/RFuzz/Sampler.src/M000058.html +26 -0
- data/doc/rdoc/classes/RFuzz/Sampler.src/M000059.html +18 -0
- data/doc/rdoc/classes/RFuzz/Sampler.src/M000060.html +18 -0
- data/doc/rdoc/classes/RFuzz/Sampler.src/M000061.html +18 -0
- data/doc/rdoc/classes/RFuzz/Sampler.src/M000062.html +18 -0
- data/doc/rdoc/classes/RFuzz/Sampler.src/M000063.html +19 -0
- data/doc/rdoc/classes/RFuzz/Sampler.src/M000064.html +18 -0
- data/doc/rdoc/classes/RFuzz/Sampler.src/M000065.html +23 -0
- data/doc/rdoc/classes/RFuzz/Sampler.src/M000066.html +18 -0
- data/doc/rdoc/classes/RFuzz/Sampler.src/M000067.html +20 -0
- data/doc/rdoc/classes/RFuzz/Session.html +415 -0
- data/doc/rdoc/classes/RFuzz/Session.src/M000020.html +31 -0
- data/doc/rdoc/classes/RFuzz/Session.src/M000021.html +18 -0
- data/doc/rdoc/classes/RFuzz/Session.src/M000022.html +18 -0
- data/doc/rdoc/classes/RFuzz/Session.src/M000023.html +34 -0
- data/doc/rdoc/classes/RFuzz/Session.src/M000024.html +19 -0
- data/doc/rdoc/classes/RFuzz/Session.src/M000025.html +19 -0
- data/doc/rdoc/classes/RFuzz/Session.src/M000026.html +26 -0
- data/doc/rdoc/classes/RFuzz/Session.src/M000027.html +29 -0
- data/doc/rdoc/classes/RFuzz/Session.src/M000028.html +19 -0
- data/doc/rdoc/classes/RFuzz/Session.src/M000029.html +18 -0
- data/doc/rdoc/classes/RFuzz/Session.src/M000030.html +18 -0
- data/doc/rdoc/classes/RFuzz/Session.src/M000031.html +23 -0
- data/doc/rdoc/classes/RFuzz/StatsTracker.html +242 -0
- data/doc/rdoc/classes/RFuzz/StatsTracker.src/M000050.html +19 -0
- data/doc/rdoc/classes/RFuzz/StatsTracker.src/M000051.html +19 -0
- data/doc/rdoc/classes/RFuzz/StatsTracker.src/M000052.html +18 -0
- data/doc/rdoc/classes/RFuzz/StatsTracker.src/M000053.html +18 -0
- data/doc/rdoc/classes/RFuzz/StatsTracker.src/M000054.html +28 -0
- data/doc/rdoc/classes/RFuzz/StatsTracker.src/M000055.html +18 -0
- data/doc/rdoc/created.rid +1 -0
- data/doc/rdoc/files/COPYING.html +168 -0
- data/doc/rdoc/files/LICENSE.html +168 -0
- data/doc/rdoc/files/README.html +473 -0
- data/doc/rdoc/files/lib/rfuzz/client_rb.html +111 -0
- data/doc/rdoc/files/lib/rfuzz/random_rb.html +116 -0
- data/doc/rdoc/files/lib/rfuzz/rfuzz_rb.html +109 -0
- data/doc/rdoc/files/lib/rfuzz/session_rb.html +111 -0
- data/doc/rdoc/files/lib/rfuzz/stats_rb.html +113 -0
- data/doc/rdoc/fr_class_index.html +35 -0
- data/doc/rdoc/fr_file_index.html +34 -0
- data/doc/rdoc/fr_method_index.html +93 -0
- data/doc/rdoc/index.html +24 -0
- data/doc/rdoc/rdoc-style.css +208 -0
- data/examples/amazon_headers.rb +38 -0
- data/examples/hpricot_pudding.rb +22 -0
- data/examples/kill_routes.rb +26 -0
- data/examples/mongrel_test_suite/lib/gen.rb +24 -0
- data/examples/mongrel_test_suite/test/camping/static_files.rb +9 -0
- data/examples/mongrel_test_suite/test/camping/upload_file.rb +9 -0
- data/examples/mongrel_test_suite/test/camping/upload_progress.rb +9 -0
- data/examples/mongrel_test_suite/test/http/base_protocol.rb +23 -0
- data/examples/mongrel_test_suite/test/nitro/upload_file.rb +9 -0
- data/examples/mongrel_test_suite/test/nitro/upload_progress.rb +9 -0
- data/examples/mongrel_test_suite/test/rails/static_files.rb +9 -0
- data/examples/mongrel_test_suite/test/rails/upload_file.rb +9 -0
- data/examples/mongrel_test_suite/test/rails/upload_progress.rb +9 -0
- data/examples/perftest.rb +30 -0
- data/ext/fuzzrnd/ext_help.h +14 -0
- data/ext/fuzzrnd/extconf.rb +6 -0
- data/ext/fuzzrnd/fuzzrnd.c +149 -0
- data/ext/http11_client/ext_help.h +14 -0
- data/ext/http11_client/extconf.rb +6 -0
- data/ext/http11_client/http11_client.c +288 -0
- data/ext/http11_client/http11_parser.c +629 -0
- data/ext/http11_client/http11_parser.h +46 -0
- data/ext/http11_client/http11_parser.rl +169 -0
- data/lib/rfuzz/client.rb +498 -0
- data/lib/rfuzz/random.rb +110 -0
- data/lib/rfuzz/rfuzz.rb +12 -0
- data/lib/rfuzz/session.rb +154 -0
- data/lib/rfuzz/stats.rb +159 -0
- data/resources/defaults.yaml +2 -0
- data/resources/words.txt +3310 -0
- data/test/coverage/index.html +388 -0
- data/test/coverage/lib-rfuzz-client_rb.html +1127 -0
- data/test/coverage/lib-rfuzz-random_rb.html +739 -0
- data/test/coverage/lib-rfuzz-session_rb.html +783 -0
- data/test/coverage/lib-rfuzz-stats_rb.html +788 -0
- data/test/server.rb +101 -0
- data/test/test_client.rb +164 -0
- data/test/test_fuzzrnd.rb +31 -0
- data/test/test_httpparser.rb +48 -0
- data/test/test_random.rb +75 -0
- data/test/test_session.rb +33 -0
- data/test/test_stats.rb +45 -0
- data/tools/rakehelp.rb +119 -0
- metadata +201 -0
|
@@ -0,0 +1,739 @@
|
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
2
|
+
<html lang='en' xml:lang='en' xmlns='http://www.w3.org/1999/xhtml'>
|
|
3
|
+
<head>
|
|
4
|
+
<title>lib/rfuzz/random.rb - C0 code coverage information</title>
|
|
5
|
+
<style type='text/css'>body { background-color: rgb(240, 240, 245); }</style>
|
|
6
|
+
<style type='text/css'>span.cross-ref-title {
|
|
7
|
+
font-size: 140%;
|
|
8
|
+
}
|
|
9
|
+
span.cross-ref a {
|
|
10
|
+
text-decoration: none;
|
|
11
|
+
}
|
|
12
|
+
span.cross-ref {
|
|
13
|
+
background-color:#f3f7fa;
|
|
14
|
+
border: 1px dashed #333;
|
|
15
|
+
margin: 1em;
|
|
16
|
+
padding: 0.5em;
|
|
17
|
+
overflow: hidden;
|
|
18
|
+
}
|
|
19
|
+
a.crossref-toggle {
|
|
20
|
+
text-decoration: none;
|
|
21
|
+
}
|
|
22
|
+
span.marked0 {
|
|
23
|
+
background-color: rgb(185, 210, 200);
|
|
24
|
+
display: block;
|
|
25
|
+
}
|
|
26
|
+
span.marked1 {
|
|
27
|
+
background-color: rgb(190, 215, 205);
|
|
28
|
+
display: block;
|
|
29
|
+
}
|
|
30
|
+
span.inferred0 {
|
|
31
|
+
background-color: rgb(175, 200, 200);
|
|
32
|
+
display: block;
|
|
33
|
+
}
|
|
34
|
+
span.inferred1 {
|
|
35
|
+
background-color: rgb(180, 205, 205);
|
|
36
|
+
display: block;
|
|
37
|
+
}
|
|
38
|
+
span.uncovered0 {
|
|
39
|
+
background-color: rgb(225, 110, 110);
|
|
40
|
+
display: block;
|
|
41
|
+
}
|
|
42
|
+
span.uncovered1 {
|
|
43
|
+
background-color: rgb(235, 120, 120);
|
|
44
|
+
display: block;
|
|
45
|
+
}
|
|
46
|
+
span.overview {
|
|
47
|
+
border-bottom: 8px solid black;
|
|
48
|
+
}
|
|
49
|
+
div.overview {
|
|
50
|
+
border-bottom: 8px solid black;
|
|
51
|
+
}
|
|
52
|
+
body {
|
|
53
|
+
font-family: verdana, arial, helvetica;
|
|
54
|
+
}
|
|
55
|
+
div.footer {
|
|
56
|
+
font-size: 68%;
|
|
57
|
+
margin-top: 1.5em;
|
|
58
|
+
}
|
|
59
|
+
h1, h2, h3, h4, h5, h6 {
|
|
60
|
+
margin-bottom: 0.5em;
|
|
61
|
+
}
|
|
62
|
+
h5 {
|
|
63
|
+
margin-top: 0.5em;
|
|
64
|
+
}
|
|
65
|
+
.hidden {
|
|
66
|
+
display: none;
|
|
67
|
+
}
|
|
68
|
+
div.separator {
|
|
69
|
+
height: 10px;
|
|
70
|
+
}
|
|
71
|
+
/* Commented out for better readability, esp. on IE */
|
|
72
|
+
/*
|
|
73
|
+
table tr td, table tr th {
|
|
74
|
+
font-size: 68%;
|
|
75
|
+
}
|
|
76
|
+
td.value table tr td {
|
|
77
|
+
font-size: 11px;
|
|
78
|
+
}
|
|
79
|
+
*/
|
|
80
|
+
table.percent_graph {
|
|
81
|
+
height: 12px;
|
|
82
|
+
border: #808080 1px solid;
|
|
83
|
+
empty-cells: show;
|
|
84
|
+
}
|
|
85
|
+
table.percent_graph td.covered {
|
|
86
|
+
height: 10px;
|
|
87
|
+
background: #00f000;
|
|
88
|
+
}
|
|
89
|
+
table.percent_graph td.uncovered {
|
|
90
|
+
height: 10px;
|
|
91
|
+
background: #e00000;
|
|
92
|
+
}
|
|
93
|
+
table.percent_graph td.NA {
|
|
94
|
+
height: 10px;
|
|
95
|
+
background: #eaeaea;
|
|
96
|
+
}
|
|
97
|
+
table.report {
|
|
98
|
+
border-collapse: collapse;
|
|
99
|
+
width: 100%;
|
|
100
|
+
}
|
|
101
|
+
table.report td.heading {
|
|
102
|
+
background: #dcecff;
|
|
103
|
+
border: #d0d0d0 1px solid;
|
|
104
|
+
font-weight: bold;
|
|
105
|
+
text-align: center;
|
|
106
|
+
}
|
|
107
|
+
table.report td.heading:hover {
|
|
108
|
+
background: #c0ffc0;
|
|
109
|
+
}
|
|
110
|
+
table.report td.text {
|
|
111
|
+
border: #d0d0d0 1px solid;
|
|
112
|
+
}
|
|
113
|
+
table.report td.value {
|
|
114
|
+
text-align: right;
|
|
115
|
+
border: #d0d0d0 1px solid;
|
|
116
|
+
}
|
|
117
|
+
table.report tr.light {
|
|
118
|
+
background-color: rgb(240, 240, 245);
|
|
119
|
+
}
|
|
120
|
+
table.report tr.dark {
|
|
121
|
+
background-color: rgb(230, 230, 235);
|
|
122
|
+
}
|
|
123
|
+
</style>
|
|
124
|
+
<script type='text/javascript'>
|
|
125
|
+
// <![CDATA[
|
|
126
|
+
function toggleCode( id ) {
|
|
127
|
+
if ( document.getElementById )
|
|
128
|
+
elem = document.getElementById( id );
|
|
129
|
+
else if ( document.all )
|
|
130
|
+
elem = eval( "document.all." + id );
|
|
131
|
+
else
|
|
132
|
+
return false;
|
|
133
|
+
|
|
134
|
+
elemStyle = elem.style;
|
|
135
|
+
|
|
136
|
+
if ( elemStyle.display != "block" ) {
|
|
137
|
+
elemStyle.display = "block"
|
|
138
|
+
} else {
|
|
139
|
+
elemStyle.display = "none"
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
return true;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
// Make cross-references hidden by default
|
|
146
|
+
document.writeln( "<style type=\"text/css\">span.cross-ref { display: none }</style>" )
|
|
147
|
+
// ]]>
|
|
148
|
+
</script>
|
|
149
|
+
<style type='text/css'>span.run0 {
|
|
150
|
+
background-color: rgb(178, 204, 255);
|
|
151
|
+
display: block;
|
|
152
|
+
}
|
|
153
|
+
span.run1 {
|
|
154
|
+
background-color: rgb(178, 206, 255);
|
|
155
|
+
display: block;
|
|
156
|
+
}
|
|
157
|
+
span.run2 {
|
|
158
|
+
background-color: rgb(178, 209, 255);
|
|
159
|
+
display: block;
|
|
160
|
+
}
|
|
161
|
+
span.run3 {
|
|
162
|
+
background-color: rgb(178, 211, 255);
|
|
163
|
+
display: block;
|
|
164
|
+
}
|
|
165
|
+
span.run4 {
|
|
166
|
+
background-color: rgb(178, 214, 255);
|
|
167
|
+
display: block;
|
|
168
|
+
}
|
|
169
|
+
span.run5 {
|
|
170
|
+
background-color: rgb(178, 218, 255);
|
|
171
|
+
display: block;
|
|
172
|
+
}
|
|
173
|
+
span.run6 {
|
|
174
|
+
background-color: rgb(178, 220, 255);
|
|
175
|
+
display: block;
|
|
176
|
+
}
|
|
177
|
+
span.run7 {
|
|
178
|
+
background-color: rgb(178, 223, 255);
|
|
179
|
+
display: block;
|
|
180
|
+
}
|
|
181
|
+
span.run8 {
|
|
182
|
+
background-color: rgb(178, 225, 255);
|
|
183
|
+
display: block;
|
|
184
|
+
}
|
|
185
|
+
span.run9 {
|
|
186
|
+
background-color: rgb(178, 228, 255);
|
|
187
|
+
display: block;
|
|
188
|
+
}
|
|
189
|
+
span.run10 {
|
|
190
|
+
background-color: rgb(178, 232, 255);
|
|
191
|
+
display: block;
|
|
192
|
+
}
|
|
193
|
+
span.run11 {
|
|
194
|
+
background-color: rgb(178, 234, 255);
|
|
195
|
+
display: block;
|
|
196
|
+
}
|
|
197
|
+
span.run12 {
|
|
198
|
+
background-color: rgb(178, 237, 255);
|
|
199
|
+
display: block;
|
|
200
|
+
}
|
|
201
|
+
span.run13 {
|
|
202
|
+
background-color: rgb(178, 239, 255);
|
|
203
|
+
display: block;
|
|
204
|
+
}
|
|
205
|
+
span.run14 {
|
|
206
|
+
background-color: rgb(178, 242, 255);
|
|
207
|
+
display: block;
|
|
208
|
+
}
|
|
209
|
+
span.run15 {
|
|
210
|
+
background-color: rgb(178, 246, 255);
|
|
211
|
+
display: block;
|
|
212
|
+
}
|
|
213
|
+
span.run16 {
|
|
214
|
+
background-color: rgb(178, 248, 255);
|
|
215
|
+
display: block;
|
|
216
|
+
}
|
|
217
|
+
span.run17 {
|
|
218
|
+
background-color: rgb(178, 251, 255);
|
|
219
|
+
display: block;
|
|
220
|
+
}
|
|
221
|
+
span.run18 {
|
|
222
|
+
background-color: rgb(178, 253, 255);
|
|
223
|
+
display: block;
|
|
224
|
+
}
|
|
225
|
+
span.run19 {
|
|
226
|
+
background-color: rgb(178, 255, 253);
|
|
227
|
+
display: block;
|
|
228
|
+
}
|
|
229
|
+
span.run20 {
|
|
230
|
+
background-color: rgb(178, 255, 249);
|
|
231
|
+
display: block;
|
|
232
|
+
}
|
|
233
|
+
span.run21 {
|
|
234
|
+
background-color: rgb(178, 255, 247);
|
|
235
|
+
display: block;
|
|
236
|
+
}
|
|
237
|
+
span.run22 {
|
|
238
|
+
background-color: rgb(178, 255, 244);
|
|
239
|
+
display: block;
|
|
240
|
+
}
|
|
241
|
+
span.run23 {
|
|
242
|
+
background-color: rgb(178, 255, 242);
|
|
243
|
+
display: block;
|
|
244
|
+
}
|
|
245
|
+
span.run24 {
|
|
246
|
+
background-color: rgb(178, 255, 239);
|
|
247
|
+
display: block;
|
|
248
|
+
}
|
|
249
|
+
span.run25 {
|
|
250
|
+
background-color: rgb(178, 255, 235);
|
|
251
|
+
display: block;
|
|
252
|
+
}
|
|
253
|
+
span.run26 {
|
|
254
|
+
background-color: rgb(178, 255, 233);
|
|
255
|
+
display: block;
|
|
256
|
+
}
|
|
257
|
+
span.run27 {
|
|
258
|
+
background-color: rgb(178, 255, 230);
|
|
259
|
+
display: block;
|
|
260
|
+
}
|
|
261
|
+
span.run28 {
|
|
262
|
+
background-color: rgb(178, 255, 228);
|
|
263
|
+
display: block;
|
|
264
|
+
}
|
|
265
|
+
span.run29 {
|
|
266
|
+
background-color: rgb(178, 255, 225);
|
|
267
|
+
display: block;
|
|
268
|
+
}
|
|
269
|
+
span.run30 {
|
|
270
|
+
background-color: rgb(178, 255, 221);
|
|
271
|
+
display: block;
|
|
272
|
+
}
|
|
273
|
+
span.run31 {
|
|
274
|
+
background-color: rgb(178, 255, 219);
|
|
275
|
+
display: block;
|
|
276
|
+
}
|
|
277
|
+
span.run32 {
|
|
278
|
+
background-color: rgb(178, 255, 216);
|
|
279
|
+
display: block;
|
|
280
|
+
}
|
|
281
|
+
span.run33 {
|
|
282
|
+
background-color: rgb(178, 255, 214);
|
|
283
|
+
display: block;
|
|
284
|
+
}
|
|
285
|
+
span.run34 {
|
|
286
|
+
background-color: rgb(178, 255, 211);
|
|
287
|
+
display: block;
|
|
288
|
+
}
|
|
289
|
+
span.run35 {
|
|
290
|
+
background-color: rgb(178, 255, 207);
|
|
291
|
+
display: block;
|
|
292
|
+
}
|
|
293
|
+
span.run36 {
|
|
294
|
+
background-color: rgb(178, 255, 205);
|
|
295
|
+
display: block;
|
|
296
|
+
}
|
|
297
|
+
span.run37 {
|
|
298
|
+
background-color: rgb(178, 255, 202);
|
|
299
|
+
display: block;
|
|
300
|
+
}
|
|
301
|
+
span.run38 {
|
|
302
|
+
background-color: rgb(178, 255, 200);
|
|
303
|
+
display: block;
|
|
304
|
+
}
|
|
305
|
+
span.run39 {
|
|
306
|
+
background-color: rgb(178, 255, 197);
|
|
307
|
+
display: block;
|
|
308
|
+
}
|
|
309
|
+
span.run40 {
|
|
310
|
+
background-color: rgb(178, 255, 193);
|
|
311
|
+
display: block;
|
|
312
|
+
}
|
|
313
|
+
span.run41 {
|
|
314
|
+
background-color: rgb(178, 255, 191);
|
|
315
|
+
display: block;
|
|
316
|
+
}
|
|
317
|
+
span.run42 {
|
|
318
|
+
background-color: rgb(178, 255, 188);
|
|
319
|
+
display: block;
|
|
320
|
+
}
|
|
321
|
+
span.run43 {
|
|
322
|
+
background-color: rgb(178, 255, 186);
|
|
323
|
+
display: block;
|
|
324
|
+
}
|
|
325
|
+
span.run44 {
|
|
326
|
+
background-color: rgb(178, 255, 183);
|
|
327
|
+
display: block;
|
|
328
|
+
}
|
|
329
|
+
span.run45 {
|
|
330
|
+
background-color: rgb(178, 255, 179);
|
|
331
|
+
display: block;
|
|
332
|
+
}
|
|
333
|
+
span.run46 {
|
|
334
|
+
background-color: rgb(179, 255, 178);
|
|
335
|
+
display: block;
|
|
336
|
+
}
|
|
337
|
+
span.run47 {
|
|
338
|
+
background-color: rgb(182, 255, 178);
|
|
339
|
+
display: block;
|
|
340
|
+
}
|
|
341
|
+
span.run48 {
|
|
342
|
+
background-color: rgb(184, 255, 178);
|
|
343
|
+
display: block;
|
|
344
|
+
}
|
|
345
|
+
span.run49 {
|
|
346
|
+
background-color: rgb(187, 255, 178);
|
|
347
|
+
display: block;
|
|
348
|
+
}
|
|
349
|
+
span.run50 {
|
|
350
|
+
background-color: rgb(191, 255, 178);
|
|
351
|
+
display: block;
|
|
352
|
+
}
|
|
353
|
+
span.run51 {
|
|
354
|
+
background-color: rgb(193, 255, 178);
|
|
355
|
+
display: block;
|
|
356
|
+
}
|
|
357
|
+
span.run52 {
|
|
358
|
+
background-color: rgb(196, 255, 178);
|
|
359
|
+
display: block;
|
|
360
|
+
}
|
|
361
|
+
span.run53 {
|
|
362
|
+
background-color: rgb(198, 255, 178);
|
|
363
|
+
display: block;
|
|
364
|
+
}
|
|
365
|
+
span.run54 {
|
|
366
|
+
background-color: rgb(201, 255, 178);
|
|
367
|
+
display: block;
|
|
368
|
+
}
|
|
369
|
+
span.run55 {
|
|
370
|
+
background-color: rgb(205, 255, 178);
|
|
371
|
+
display: block;
|
|
372
|
+
}
|
|
373
|
+
span.run56 {
|
|
374
|
+
background-color: rgb(207, 255, 178);
|
|
375
|
+
display: block;
|
|
376
|
+
}
|
|
377
|
+
span.run57 {
|
|
378
|
+
background-color: rgb(210, 255, 178);
|
|
379
|
+
display: block;
|
|
380
|
+
}
|
|
381
|
+
span.run58 {
|
|
382
|
+
background-color: rgb(212, 255, 178);
|
|
383
|
+
display: block;
|
|
384
|
+
}
|
|
385
|
+
span.run59 {
|
|
386
|
+
background-color: rgb(215, 255, 178);
|
|
387
|
+
display: block;
|
|
388
|
+
}
|
|
389
|
+
span.run60 {
|
|
390
|
+
background-color: rgb(219, 255, 178);
|
|
391
|
+
display: block;
|
|
392
|
+
}
|
|
393
|
+
span.run61 {
|
|
394
|
+
background-color: rgb(221, 255, 178);
|
|
395
|
+
display: block;
|
|
396
|
+
}
|
|
397
|
+
span.run62 {
|
|
398
|
+
background-color: rgb(224, 255, 178);
|
|
399
|
+
display: block;
|
|
400
|
+
}
|
|
401
|
+
span.run63 {
|
|
402
|
+
background-color: rgb(226, 255, 178);
|
|
403
|
+
display: block;
|
|
404
|
+
}
|
|
405
|
+
span.run64 {
|
|
406
|
+
background-color: rgb(229, 255, 178);
|
|
407
|
+
display: block;
|
|
408
|
+
}
|
|
409
|
+
span.run65 {
|
|
410
|
+
background-color: rgb(233, 255, 178);
|
|
411
|
+
display: block;
|
|
412
|
+
}
|
|
413
|
+
span.run66 {
|
|
414
|
+
background-color: rgb(235, 255, 178);
|
|
415
|
+
display: block;
|
|
416
|
+
}
|
|
417
|
+
span.run67 {
|
|
418
|
+
background-color: rgb(238, 255, 178);
|
|
419
|
+
display: block;
|
|
420
|
+
}
|
|
421
|
+
span.run68 {
|
|
422
|
+
background-color: rgb(240, 255, 178);
|
|
423
|
+
display: block;
|
|
424
|
+
}
|
|
425
|
+
span.run69 {
|
|
426
|
+
background-color: rgb(243, 255, 178);
|
|
427
|
+
display: block;
|
|
428
|
+
}
|
|
429
|
+
span.run70 {
|
|
430
|
+
background-color: rgb(247, 255, 178);
|
|
431
|
+
display: block;
|
|
432
|
+
}
|
|
433
|
+
span.run71 {
|
|
434
|
+
background-color: rgb(249, 255, 178);
|
|
435
|
+
display: block;
|
|
436
|
+
}
|
|
437
|
+
span.run72 {
|
|
438
|
+
background-color: rgb(252, 255, 178);
|
|
439
|
+
display: block;
|
|
440
|
+
}
|
|
441
|
+
span.run73 {
|
|
442
|
+
background-color: rgb(255, 255, 178);
|
|
443
|
+
display: block;
|
|
444
|
+
}
|
|
445
|
+
span.run74 {
|
|
446
|
+
background-color: rgb(255, 252, 178);
|
|
447
|
+
display: block;
|
|
448
|
+
}
|
|
449
|
+
span.run75 {
|
|
450
|
+
background-color: rgb(255, 248, 178);
|
|
451
|
+
display: block;
|
|
452
|
+
}
|
|
453
|
+
span.run76 {
|
|
454
|
+
background-color: rgb(255, 246, 178);
|
|
455
|
+
display: block;
|
|
456
|
+
}
|
|
457
|
+
span.run77 {
|
|
458
|
+
background-color: rgb(255, 243, 178);
|
|
459
|
+
display: block;
|
|
460
|
+
}
|
|
461
|
+
span.run78 {
|
|
462
|
+
background-color: rgb(255, 240, 178);
|
|
463
|
+
display: block;
|
|
464
|
+
}
|
|
465
|
+
span.run79 {
|
|
466
|
+
background-color: rgb(255, 238, 178);
|
|
467
|
+
display: block;
|
|
468
|
+
}
|
|
469
|
+
span.run80 {
|
|
470
|
+
background-color: rgb(255, 234, 178);
|
|
471
|
+
display: block;
|
|
472
|
+
}
|
|
473
|
+
span.run81 {
|
|
474
|
+
background-color: rgb(255, 232, 178);
|
|
475
|
+
display: block;
|
|
476
|
+
}
|
|
477
|
+
span.run82 {
|
|
478
|
+
background-color: rgb(255, 229, 178);
|
|
479
|
+
display: block;
|
|
480
|
+
}
|
|
481
|
+
span.run83 {
|
|
482
|
+
background-color: rgb(255, 226, 178);
|
|
483
|
+
display: block;
|
|
484
|
+
}
|
|
485
|
+
span.run84 {
|
|
486
|
+
background-color: rgb(255, 224, 178);
|
|
487
|
+
display: block;
|
|
488
|
+
}
|
|
489
|
+
span.run85 {
|
|
490
|
+
background-color: rgb(255, 220, 178);
|
|
491
|
+
display: block;
|
|
492
|
+
}
|
|
493
|
+
span.run86 {
|
|
494
|
+
background-color: rgb(255, 218, 178);
|
|
495
|
+
display: block;
|
|
496
|
+
}
|
|
497
|
+
span.run87 {
|
|
498
|
+
background-color: rgb(255, 215, 178);
|
|
499
|
+
display: block;
|
|
500
|
+
}
|
|
501
|
+
span.run88 {
|
|
502
|
+
background-color: rgb(255, 212, 178);
|
|
503
|
+
display: block;
|
|
504
|
+
}
|
|
505
|
+
span.run89 {
|
|
506
|
+
background-color: rgb(255, 210, 178);
|
|
507
|
+
display: block;
|
|
508
|
+
}
|
|
509
|
+
span.run90 {
|
|
510
|
+
background-color: rgb(255, 206, 178);
|
|
511
|
+
display: block;
|
|
512
|
+
}
|
|
513
|
+
span.run91 {
|
|
514
|
+
background-color: rgb(255, 204, 178);
|
|
515
|
+
display: block;
|
|
516
|
+
}
|
|
517
|
+
span.run92 {
|
|
518
|
+
background-color: rgb(255, 201, 178);
|
|
519
|
+
display: block;
|
|
520
|
+
}
|
|
521
|
+
span.run93 {
|
|
522
|
+
background-color: rgb(255, 198, 178);
|
|
523
|
+
display: block;
|
|
524
|
+
}
|
|
525
|
+
span.run94 {
|
|
526
|
+
background-color: rgb(255, 196, 178);
|
|
527
|
+
display: block;
|
|
528
|
+
}
|
|
529
|
+
span.run95 {
|
|
530
|
+
background-color: rgb(255, 192, 178);
|
|
531
|
+
display: block;
|
|
532
|
+
}
|
|
533
|
+
span.run96 {
|
|
534
|
+
background-color: rgb(255, 189, 178);
|
|
535
|
+
display: block;
|
|
536
|
+
}
|
|
537
|
+
span.run97 {
|
|
538
|
+
background-color: rgb(255, 187, 178);
|
|
539
|
+
display: block;
|
|
540
|
+
}
|
|
541
|
+
span.run98 {
|
|
542
|
+
background-color: rgb(255, 184, 178);
|
|
543
|
+
display: block;
|
|
544
|
+
}
|
|
545
|
+
span.run99 {
|
|
546
|
+
background-color: rgb(255, 182, 178);
|
|
547
|
+
display: block;
|
|
548
|
+
}
|
|
549
|
+
span.run100 {
|
|
550
|
+
background-color: rgb(255, 178, 178);
|
|
551
|
+
display: block;
|
|
552
|
+
}
|
|
553
|
+
</style>
|
|
554
|
+
</head>
|
|
555
|
+
<body>
|
|
556
|
+
<h3>C0 code coverage information</h3>
|
|
557
|
+
<p>Generated on Wed Jul 19 17:39:34 EDT 2006 with <a href='http://eigenclass.org/hiki.rb?rcov'>rcov 0.6.0</a>
|
|
558
|
+
</p>
|
|
559
|
+
<hr /><pre><span class='marked0'>Code reported as executed by Ruby looks like this...
|
|
560
|
+
</span><span class='marked1'>and this: this line is also marked as covered.
|
|
561
|
+
</span><span class='inferred0'>Lines considered as run by rcov, but not reported by Ruby, look like this,
|
|
562
|
+
</span><span class='inferred1'>and this: these lines were inferred by rcov (using simple heuristics).
|
|
563
|
+
</span><span class='uncovered0'>Finally, here's a line marked as not executed.
|
|
564
|
+
</span></pre>
|
|
565
|
+
<table class='report'>
|
|
566
|
+
<thead>
|
|
567
|
+
<tr>
|
|
568
|
+
<td class='heading'>Name</td>
|
|
569
|
+
<td class='heading'>Total lines</td>
|
|
570
|
+
<td class='heading'>Lines of code</td>
|
|
571
|
+
<td class='heading'>Total coverage</td>
|
|
572
|
+
<td class='heading'>Code coverage</td>
|
|
573
|
+
</tr>
|
|
574
|
+
</thead>
|
|
575
|
+
<tbody>
|
|
576
|
+
<tr class='light'>
|
|
577
|
+
<td>
|
|
578
|
+
<a href='lib-rfuzz-random_rb.html'>lib/rfuzz/random.rb</a>
|
|
579
|
+
</td>
|
|
580
|
+
<td class='value'>
|
|
581
|
+
<tt>110</tt>
|
|
582
|
+
</td>
|
|
583
|
+
<td class='value'>
|
|
584
|
+
<tt>60</tt>
|
|
585
|
+
</td>
|
|
586
|
+
<td>
|
|
587
|
+
<table cellspacing='0' cellpadding='0' align='right'>
|
|
588
|
+
<tr>
|
|
589
|
+
<td>
|
|
590
|
+
<tt>100.0%</tt> </td>
|
|
591
|
+
<td>
|
|
592
|
+
<table cellspacing='0' class='percent_graph' cellpadding='0' width='100'>
|
|
593
|
+
<tr>
|
|
594
|
+
<td class='covered' width='100' />
|
|
595
|
+
<td class='uncovered' width='0' />
|
|
596
|
+
</tr>
|
|
597
|
+
</table>
|
|
598
|
+
</td>
|
|
599
|
+
</tr>
|
|
600
|
+
</table>
|
|
601
|
+
</td>
|
|
602
|
+
<td>
|
|
603
|
+
<table cellspacing='0' cellpadding='0' align='right'>
|
|
604
|
+
<tr>
|
|
605
|
+
<td>
|
|
606
|
+
<tt>100.0%</tt> </td>
|
|
607
|
+
<td>
|
|
608
|
+
<table cellspacing='0' class='percent_graph' cellpadding='0' width='100'>
|
|
609
|
+
<tr>
|
|
610
|
+
<td class='covered' width='100' />
|
|
611
|
+
<td class='uncovered' width='0' />
|
|
612
|
+
</tr>
|
|
613
|
+
</table>
|
|
614
|
+
</td>
|
|
615
|
+
</tr>
|
|
616
|
+
</table>
|
|
617
|
+
</td>
|
|
618
|
+
</tr>
|
|
619
|
+
</tbody>
|
|
620
|
+
</table><pre><span class="inferred1"><a name="line1" /> 1 # Implements the randomness engine for RFuzz
|
|
621
|
+
</span><span class="marked0"><a name="line2" /> 2 require 'base64'
|
|
622
|
+
</span><span class="marked1"><a name="line3" /> 3 require 'fuzzrnd'
|
|
623
|
+
</span><span class="marked0"><a name="line4" /> 4
|
|
624
|
+
</span><span class="marked1"><a name="line5" /> 5 module RFuzz
|
|
625
|
+
</span><span class="marked0"><a name="line6" /> 6 class RandomGenerator
|
|
626
|
+
</span><span class="inferred1"><a name="line7" /> 7
|
|
627
|
+
</span><span class="inferred0"><a name="line8" /> 8 # Either initialized without a word dictionary or with one.
|
|
628
|
+
</span><span class="inferred1"><a name="line9" /> 9 # If you initialize with a word dictionary then you can generate
|
|
629
|
+
</span><span class="inferred0"><a name="line10" /> 10 # the random words, and is the expected behavior. You can use
|
|
630
|
+
</span><span class="inferred1"><a name="line11" /> 11 # the "type" parameter to change the default type of generated
|
|
631
|
+
</span><span class="inferred0"><a name="line12" /> 12 # content from words to any of the other types available
|
|
632
|
+
</span><span class="inferred1"><a name="line13" /> 13 # [:base64,:uris,:byte_array,:ints,:floats].
|
|
633
|
+
</span><span class="inferred0"><a name="line14" /> 14 #
|
|
634
|
+
</span><span class="inferred1"><a name="line15" /> 15 # The dict should just be an array of words.
|
|
635
|
+
</span><span class="marked0"><a name="line16" /> 16 def initialize(dict=nil, type=:words)
|
|
636
|
+
</span><span class="inferred1"><a name="line17" /> 17 # NOT meant to be secure so chill
|
|
637
|
+
</span><span class="marked0"><a name="line18" /> 18 @rnd = FuzzRnd.new("#{self.inspect}")
|
|
638
|
+
</span><span class="marked1"><a name="line19" /> 19 @dict = dict
|
|
639
|
+
</span><span class="marked0"><a name="line20" /> 20 @type = type
|
|
640
|
+
</span><span class="inferred1"><a name="line21" /> 21 end
|
|
641
|
+
</span><span class="inferred0"><a name="line22" /> 22
|
|
642
|
+
</span><span class="inferred1"><a name="line23" /> 23 # Returns a random hash of type (default :words) where
|
|
643
|
+
</span><span class="inferred0"><a name="line24" /> 24 # the key=>value is randomly generated. This is aliased
|
|
644
|
+
</span><span class="inferred1"><a name="line25" /> 25 # for RandomGenerator.queries and RandomGenerator.headers
|
|
645
|
+
</span><span class="inferred0"><a name="line26" /> 26 # so that it is more readable.
|
|
646
|
+
</span><span class="inferred1"><a name="line27" /> 27 #
|
|
647
|
+
</span><span class="inferred0"><a name="line28" /> 28 # [:words,:base64,:uris,:byte_array,:ints,:floats] are the available
|
|
648
|
+
</span><span class="inferred1"><a name="line29" /> 29 # types of generated hash garbage you can use. These "types" just
|
|
649
|
+
</span><span class="inferred0"><a name="line30" /> 30 # translate to function calls on self.send(type,length).
|
|
650
|
+
</span><span class="marked1"><a name="line31" /> 31 def hash_of(count,length=5,type=@type)
|
|
651
|
+
</span><span class="marked0"><a name="line32" /> 32 list = []
|
|
652
|
+
</span><span class="marked1"><a name="line33" /> 33 count.times do
|
|
653
|
+
</span><span class="marked0"><a name="line34" /> 34 list << Hash[*send(type,length*2)]
|
|
654
|
+
</span><span class="marked1"><a name="line35" /> 35 end
|
|
655
|
+
</span><span class="inferred0"><a name="line36" /> 36
|
|
656
|
+
</span><span class="marked1"><a name="line37" /> 37 return list
|
|
657
|
+
</span><span class="inferred0"><a name="line38" /> 38 end
|
|
658
|
+
</span><span class="marked1"><a name="line39" /> 39 alias :queries :hash_of
|
|
659
|
+
</span><span class="marked0"><a name="line40" /> 40 alias :headers :hash_of
|
|
660
|
+
</span><span class="inferred1"><a name="line41" /> 41
|
|
661
|
+
</span><span class="inferred0"><a name="line42" /> 42 # Generate an array of random length URIs based on words from the dict.
|
|
662
|
+
</span><span class="inferred1"><a name="line43" /> 43 # The default max length=100 and is the number of words to chain together
|
|
663
|
+
</span><span class="inferred0"><a name="line44" /> 44 # into a gigantor URI. The URI starts with /.
|
|
664
|
+
</span><span class="marked1"><a name="line45" /> 45 def uris(count,length=100)
|
|
665
|
+
</span><span class="marked0"><a name="line46" /> 46 ulist = []
|
|
666
|
+
</span><span class="marked1"><a name="line47" /> 47 count.times do
|
|
667
|
+
</span><span class="marked0"><a name="line48" /> 48 ulist << "/" + words(num(length)).join("/").tr("'","")
|
|
668
|
+
</span><span class="marked1"><a name="line49" /> 49 end
|
|
669
|
+
</span><span class="marked0"><a name="line50" /> 50 return ulist
|
|
670
|
+
</span><span class="inferred1"><a name="line51" /> 51 end
|
|
671
|
+
</span><span class="inferred0"><a name="line52" /> 52
|
|
672
|
+
</span><span class="inferred1"><a name="line53" /> 53 # Generates an array with count number of randomly selected
|
|
673
|
+
</span><span class="inferred0"><a name="line54" /> 54 # words from the dictionary.
|
|
674
|
+
</span><span class="marked1"><a name="line55" /> 55 def words(count=1)
|
|
675
|
+
</span><span class="marked0"><a name="line56" /> 56 raise "You need a dictionary." unless @dict
|
|
676
|
+
</span><span class="marked1"><a name="line57" /> 57 w = ints(count, @dict.length)
|
|
677
|
+
</span><span class="marked0"><a name="line58" /> 58 w.collect {|i| @dict[i]}
|
|
678
|
+
</span><span class="inferred1"><a name="line59" /> 59 end
|
|
679
|
+
</span><span class="inferred0"><a name="line60" /> 60
|
|
680
|
+
</span><span class="inferred1"><a name="line61" /> 61
|
|
681
|
+
</span><span class="inferred0"><a name="line62" /> 62 # Generates an array of base64 encoded chunks of garbage.
|
|
682
|
+
</span><span class="inferred1"><a name="line63" /> 63 # The length=100 is the default and is a max, but the lengths
|
|
683
|
+
</span><span class="inferred0"><a name="line64" /> 64 # are random.
|
|
684
|
+
</span><span class="marked1"><a name="line65" /> 65 def base64(count,length=100)
|
|
685
|
+
</span><span class="marked0"><a name="line66" /> 66 list = []
|
|
686
|
+
</span><span class="marked1"><a name="line67" /> 67 count.times {
|
|
687
|
+
</span><span class="marked0"><a name="line68" /> 68 list << Base64.encode64(@rnd.data(num(length)))
|
|
688
|
+
</span><span class="marked1"><a name="line69" /> 69 }
|
|
689
|
+
</span><span class="marked0"><a name="line70" /> 70 return list
|
|
690
|
+
</span><span class="inferred1"><a name="line71" /> 71 end
|
|
691
|
+
</span><span class="inferred0"><a name="line72" /> 72
|
|
692
|
+
</span><span class="inferred1"><a name="line73" /> 73 # Generates an array of garbage byte strings, these are
|
|
693
|
+
</span><span class="inferred0"><a name="line74" /> 74 # binary strings so very nasty. As usual, length=100
|
|
694
|
+
</span><span class="inferred1"><a name="line75" /> 75 # is a max for the random lengths.
|
|
695
|
+
</span><span class="marked0"><a name="line76" /> 76 def byte_array(count,length=100)
|
|
696
|
+
</span><span class="marked1"><a name="line77" /> 77 list = []
|
|
697
|
+
</span><span class="marked0"><a name="line78" /> 78 count.times { list << @rnd.data(num(length)) }
|
|
698
|
+
</span><span class="marked1"><a name="line79" /> 79 return list
|
|
699
|
+
</span><span class="inferred0"><a name="line80" /> 80 end
|
|
700
|
+
</span><span class="inferred1"><a name="line81" /> 81
|
|
701
|
+
</span><span class="inferred0"><a name="line82" /> 82 # Generate a single String with random binary garbage in it.
|
|
702
|
+
</span><span class="marked1"><a name="line83" /> 83 def bytes(count)
|
|
703
|
+
</span><span class="marked0"><a name="line84" /> 84 @rnd.data(count)
|
|
704
|
+
</span><span class="marked1"><a name="line85" /> 85 end
|
|
705
|
+
</span><span class="inferred0"><a name="line86" /> 86
|
|
706
|
+
</span><span class="inferred1"><a name="line87" /> 87 # A random number with a maximum of max.
|
|
707
|
+
</span><span class="marked0"><a name="line88" /> 88 def num(max)
|
|
708
|
+
</span><span class="marked1"><a name="line89" /> 89 ints(1, max)[0]
|
|
709
|
+
</span><span class="marked0"><a name="line90" /> 90 end
|
|
710
|
+
</span><span class="inferred1"><a name="line91" /> 91
|
|
711
|
+
</span><span class="inferred0"><a name="line92" /> 92 # An array of integers with a default max of max.
|
|
712
|
+
</span><span class="inferred1"><a name="line93" /> 93 # The integers are 4 bytes and pulled from network
|
|
713
|
+
</span><span class="inferred0"><a name="line94" /> 94 # encoding so they should be cross platform (meaning
|
|
714
|
+
</span><span class="inferred1"><a name="line95" /> 95 # tests should run the same on all platforms).
|
|
715
|
+
</span><span class="marked0"><a name="line96" /> 96 def ints(count, max = nil)
|
|
716
|
+
</span><span class="marked1"><a name="line97" /> 97 i = @rnd.data(count * 4).unpack("N*")
|
|
717
|
+
</span><span class="marked0"><a name="line98" /> 98 if max
|
|
718
|
+
</span><span class="marked1"><a name="line99" /> 99 i = i.collect {|i| i % max }
|
|
719
|
+
</span><span class="inferred0"><a name="line100" />100 end
|
|
720
|
+
</span><span class="marked1"><a name="line101" />101 return i
|
|
721
|
+
</span><span class="inferred0"><a name="line102" />102 end
|
|
722
|
+
</span><span class="inferred1"><a name="line103" />103
|
|
723
|
+
</span><span class="inferred0"><a name="line104" />104 # An array for random floats.
|
|
724
|
+
</span><span class="marked1"><a name="line105" />105 def floats(count)
|
|
725
|
+
</span><span class="marked0"><a name="line106" />106 @rnd.data(count * 8).unpack("G*")
|
|
726
|
+
</span><span class="marked1"><a name="line107" />107 end
|
|
727
|
+
</span><span class="inferred0"><a name="line108" />108 end
|
|
728
|
+
</span><span class="inferred1"><a name="line109" />109
|
|
729
|
+
</span><span class="inferred0"><a name="line110" />110 end
|
|
730
|
+
</span></pre><hr /> <p>Generated using the <a href='http://eigenclass.org/hiki.rb?rcov'>rcov code coverage analysis tool for Ruby</a> version 0.6.0.</p><p>
|
|
731
|
+
<a href='http://validator.w3.org/check/referer'>
|
|
732
|
+
<img src='http://www.w3.org/Icons/valid-xhtml10' height='31' alt='Valid XHTML 1.0!' width='88' />
|
|
733
|
+
</a>
|
|
734
|
+
<a href='http://jigsaw.w3.org/css-validator/check/referer'>
|
|
735
|
+
<img src='http://jigsaw.w3.org/css-validator/images/vcss' alt='Valid CSS!' style='border:0;width:88px;height:31px' />
|
|
736
|
+
</a>
|
|
737
|
+
</p>
|
|
738
|
+
</body>
|
|
739
|
+
</html>
|