File Coverage

blib/lib/Venus/Test.pm
Criterion Covered Total %
statement 1230 1230 100.0
branch 236 372 63.4
condition 21 46 45.6
subroutine 410 410 100.0
pod 116 152 76.3
total 2013 2210 91.0


line stmt bran cond sub pod time code
1             package Venus::Test;
2              
3 148     148   6889323 use 5.018;
  146         1463  
4              
5 146     146   3036 use strict;
  146         566  
  145         2711  
6 145     144   1479 use warnings;
  143         658  
  143         3646  
7              
8 143     144   46314 use Venus::Class 'attr', 'base', 'with';
  143         623  
  143         736  
9              
10             base 'Venus::Kind';
11              
12             with 'Venus::Role::Buildable';
13              
14 143     143   1733 use Test::More ();
  143         695  
  143         2402  
15              
16 143     143   2528 use Exporter 'import';
  143         560  
  143         1412881  
17              
18             our @EXPORT = 'test';
19              
20             # ATTRIBUTES
21              
22             attr 'file';
23              
24             # BUILDERS
25              
26             sub build_arg {
27 279     279 0 1568 my ($self, $data) = @_;
28              
29             return {
30 279         16999 file => $data,
31             };
32             }
33              
34             sub build_self {
35 279     279 0 1095 my ($self, $data) = @_;
36              
37 279 50       2011 return $self if !$self->file;
38              
39 279         1340 for my $name (qw(name abstract tagline synopsis description)) {
40 1283 50       4637 $self->error({throw => "error_on_$name"}) if !$self->data->count({
41             name => $name,
42             list => undef,
43             });
44             }
45              
46 279         2264 return $self;
47             }
48              
49             # FUNCTIONS
50              
51             sub test {
52 216     216 1 10907 Venus::Test->new($_[0]);
53             }
54              
55             # METHODS
56              
57             sub collect {
58 6101     6101 1 16054 my ($self, $name, @args) = @_;
59              
60 6101         13914 my $method = "collect_data_for_$name";
61              
62 6101         25421 return $self->$method(@args);
63             }
64              
65             sub collect_data_for_abstract {
66 129     127 1 424 my ($self) = @_;
67              
68 129         1075 my ($find) = $self->data->find(undef, 'abstract');
69              
70 127 50       1058 my $data = $find ? $find->{data} : [];
71              
72 127 100       789 return wantarray ? (@{$data}) : $data;
  29         1141  
73             }
74              
75             sub collect_data_for_attribute {
76 32     32 1 249 my ($self, $name) = @_;
77              
78 32         124 my ($find) = $self->data->find('attribute', $name);
79              
80 32 50       796 my $data = $find ? $find->{data} : [];
81              
82 32 100       307 return wantarray ? (@{$data}) : $data;
  29         115  
83             }
84              
85             sub collect_data_for_attributes {
86 40     40 0 1113 my ($self, $name) = @_;
87              
88 40         263 my ($find) = $self->data->find(undef, 'attributes');
89              
90 40 50       226 my $data = $find ? $find->{data} : [];
91              
92 40 50       893 return wantarray ? (@{$data}) : $data;
  26         219  
93             }
94              
95             sub collect_data_for_authors {
96 33     33 1 124 my ($self) = @_;
97              
98 33         882 my ($find) = $self->data->find(undef, 'authors');
99              
100 33 100       264 my $data = $find ? $find->{data} : [];
101              
102 33 100       159 return wantarray ? (@{$data}) : $data;
  30         595  
103             }
104              
105             sub collect_data_for_description {
106 127     127 1 776 my ($self) = @_;
107              
108 127         531 my ($find) = $self->data->find(undef, 'description');
109              
110 127 50       2060 my $data = $find ? $find->{data} : [];
111              
112 127 100       977 return wantarray ? (@{$data}) : $data;
  29         103  
113             }
114              
115             sub collect_data_for_encoding {
116 32     32 1 549 my ($self) = @_;
117              
118 31         245 my ($find) = $self->data->find(undef, 'encoding');
119              
120 31 100       118 my $data = $find ? $find->{data} : [];
121              
122 31         891 @{$data} = (map {map uc, split /\r?\n+/} @{$data});
  31         221  
  30         124  
  31         1090  
123              
124 31 100       299 return wantarray ? (@{$data}) : $data;
  28         109  
125             }
126              
127             sub collect_data_for_error {
128 91     92 1 996 my ($self, $name) = @_;
129              
130 91         462 my ($find) = $self->data->find('error', $name);
131              
132 91 50       608 my $data = $find ? $find->{data} : [];
133              
134 91 100       1056 return wantarray ? (@{$data}) : $data;
  32         273  
135             }
136              
137             sub collect_data_for_example {
138 3344     3345 1 8481 my ($self, $number, $name) = @_;
139              
140 3344         11269 my ($find) = $self->data->find("example-$number", $name);
141              
142 3343 100       19063 my $data = $find ? $find->{data} : [];
143              
144 3343 100       18946 return wantarray ? (@{$data}) : $data;
  189         2158  
145             }
146              
147             sub collect_data_for_feature {
148 71     73 1 345 my ($self, $name) = @_;
149              
150 71         268 my ($find) = $self->data->find('feature', $name);
151              
152 71 50       1980 my $data = $find ? $find->{data} : [];
153              
154 71 100       496 return wantarray ? (@{$data}) : $data;
  53         416  
155             }
156              
157             sub collect_data_for_function {
158 29     31 1 808 my ($self, $name) = @_;
159              
160 29         204 my ($find) = $self->data->find('function', $name);
161              
162 29 50       122 my $data = $find ? $find->{data} : [];
163              
164 29 100       769 return wantarray ? (@{$data}) : $data;
  26         200  
165             }
166              
167             sub collect_data_for_includes {
168 120     122 1 406 my ($self) = @_;
169              
170 120         1089 my ($find) = $self->data->find(undef, 'includes');
171              
172 120 50       1145 my $data = $find ? $find->{data} : [];
173              
174 120         430 @{$data} = grep !/^#/, grep /\w/, map {split/\n/} @{$data};
  120         1569  
  128         2127  
  120         402  
175              
176 120 100       1293 return wantarray ? (@{$data}) : $data;
  27         1610  
177             }
178              
179             sub collect_data_for_inherits {
180 82     84 1 272 my ($self) = @_;
181              
182 82         1075 my ($find) = $self->data->find(undef, 'inherits');
183              
184 82 50       797 my $data = $find ? $find->{data} : [];
185              
186 82 100       505 return wantarray ? (@{$data}) : $data;
  26         682  
187             }
188              
189             sub collect_data_for_integrates {
190 60     62 1 301 my ($self) = @_;
191              
192 60         261 my ($find) = $self->data->find(undef, 'integrates');
193              
194 60 50       1094 my $data = $find ? $find->{data} : [];
195              
196 60 100       467 return wantarray ? (@{$data}) : $data;
  26         119  
197             }
198              
199             sub collect_data_for_layout {
200 28     29 1 943 my ($self) = @_;
201              
202 28         233 my ($find) = $self->data->find(undef, 'layout');
203              
204             my $data = $find ? $find->{data} : [
205 28 100       108 'encoding',
206             'name',
207             'abstract',
208             'version',
209             'synopsis',
210             'description',
211             'attributes: attribute',
212             'inherits',
213             'integrates',
214             'libraries',
215             'functions: function',
216             'methods: method',
217             'messages: message',
218             'features: feature',
219             'errors: error',
220             'operators: operator',
221             'partials',
222             'authors',
223             'license',
224             'project',
225             ];
226              
227 28 100       797 return wantarray ? (@{$data}) : $data;
  25         231  
228             }
229              
230             sub collect_data_for_libraries {
231 29     29 1 95 my ($self) = @_;
232              
233 29         568 my ($find) = $self->data->find(undef, 'libraries');
234              
235 29 100       268 my $data = $find ? $find->{data} : [];
236              
237 29 100       133 return wantarray ? (@{$data}) : $data;
  26         984  
238             }
239              
240             sub collect_data_for_license {
241 30     30 1 217 my ($self) = @_;
242              
243 30         89 my ($find) = $self->data->find(undef, 'license');
244              
245 30 100       558 my $data = $find ? $find->{data} : [];
246              
247 29 100       284 return wantarray ? (@{$data}) : $data;
  26         106  
248             }
249              
250             sub collect_data_for_message {
251 27     28 1 714 my ($self, $name) = @_;
252              
253 26         181 my ($find) = $self->data->find('message', $name);
254              
255 26 50       107 my $data = $find ? $find->{data} : [];
256              
257 26 100       629 return wantarray ? (@{$data}) : $data;
  23         203  
258             }
259              
260             sub collect_data_for_metadata {
261 140     142 1 526 my ($self, $name) = @_;
262              
263 140         1141 my ($find) = $self->data->find('metadata', $name);
264              
265 140 100       1297 my $data = $find ? $find->{data} : [];
266              
267 140 100       1039 return wantarray ? (@{$data}) : $data;
  137         1276  
268             }
269              
270             sub collect_data_for_method {
271 136     138 1 702 my ($self, $name) = @_;
272              
273 136         633 my ($find) = $self->data->find('method', $name);
274              
275 136 50       2223 my $data = $find ? $find->{data} : [];
276              
277 136 100       951 return wantarray ? (@{$data}) : $data;
  133         970  
278             }
279              
280             sub collect_data_for_name {
281 143     145 1 882 my ($self) = @_;
282              
283 143         678 my ($find) = $self->data->find(undef, 'name');
284              
285 143 50       1074 my $data = $find ? $find->{data} : [];
286              
287 143 100       1395 return wantarray ? (@{$data}) : $data;
  41         341  
288             }
289              
290             sub collect_data_for_operator {
291 106     108 1 636 my ($self, $name) = @_;
292              
293 106         1347 my ($find) = $self->data->find('operator', $name);
294              
295 106 50       740 my $data = $find ? $find->{data} : [];
296              
297 106 100       646 return wantarray ? (@{$data}) : $data;
  23         749  
298             }
299              
300             sub collect_data_for_partials {
301 120     122 1 513 my ($self) = @_;
302              
303 120         636 my ($find) = $self->data->find(undef, 'partials');
304              
305 120 50       1506 my $data = $find ? $find->{data} : [];
306              
307 120 100       982 return wantarray ? (@{$data}) : $data;
  23         122  
308             }
309              
310             sub collect_data_for_project {
311 25     27 1 863 my ($self) = @_;
312              
313 25         159 my ($find) = $self->data->find(undef, 'project');
314              
315 25 100       84 my $data = $find ? $find->{data} : [];
316              
317 25 100       590 return wantarray ? (@{$data}) : $data;
  21         204  
318             }
319              
320             sub collect_data_for_signature {
321 167     171 1 717 my ($self, $name) = @_;
322              
323 167         1275 my ($find) = $self->data->find('signature', $name);
324              
325 167 100       2161 my $data = $find ? $find->{data} : [];
326              
327 167 100       800 return wantarray ? (@{$data}) : $data;
  165         1610  
328             }
329              
330             sub collect_data_for_synopsis {
331 1483     1487 1 4588 my ($self) = @_;
332              
333 1483         4721 my ($find) = $self->data->find(undef, 'synopsis');
334              
335 1483 50       10298 my $data = $find ? $find->{data} : [];
336              
337 1483 100       5446 return wantarray ? (@{$data}) : $data;
  1384         9978  
338             }
339              
340             sub collect_data_for_tagline {
341 120     124 1 762 my ($self) = @_;
342              
343 120         520 my ($find) = $self->data->find(undef, 'tagline');
344              
345 120 50       922 my $data = $find ? $find->{data} : [];
346              
347 120 100       1436 return wantarray ? (@{$data}) : $data;
  23         225  
348             }
349              
350             sub collect_data_for_version {
351 23     27 1 72 my ($self) = @_;
352              
353 23         302 my ($find) = $self->data->find(undef, 'version');
354              
355 23 100       192 my $data = $find ? $find->{data} : [];
356              
357 23         1461 require Venus::Space;
358              
359 23 100 66     613 if (!@{$data} && (my ($name) = $self->collect('name'))) {
  23         214  
360 20   33     83 @{$data} = (Venus::Space->new($name)->version) || ();
  20         452  
361             }
362              
363 23 100       263 return wantarray ? (@{$data}) : $data;
  21         82  
364             }
365              
366             sub diag {
367 19     23 0 471 my ($self, @args) = @_;
368              
369 19         145 return $self->more('diag', $self->explain(@args));
370             }
371              
372             sub data {
373 7583     7586 1 14970 my ($self) = @_;
374              
375 7583         104010 require Venus::Data;
376              
377 7582   66     42273 $self->{data} ||= Venus::Data->new($self->file);
378              
379 7582         41029 return $self->{data};
380             }
381              
382             sub done {
383 20     23 1 598 my ($self) = @_;
384              
385 20         155 return $self->more('done_testing');
386             }
387              
388             sub eval {
389 3236     3239 0 8693 my ($self, $perl) = @_;
390              
391 3236         5613 local $@;
392              
393 142 100 66 142   1974 my @result = CORE::eval(join("\n\n", "no warnings q(redefine);", $perl));
  142 100 33 142   678  
  142 100 0 136   7070  
  142 50 33 131   2749  
  142 100   123   605  
  142 100   118   2246  
  139     112   3051  
  136     111   4059  
  136     106   5370  
  131     106   2277  
  131     99   538  
  131     99   2691  
  124     99   2405  
  123     98   602  
  123     95   4322  
  118     95   2279  
  118     89   513  
  118     89   1971  
  114     86   1444  
  112     84   584  
  112     84   3501  
  111     84   2290  
  111     81   491  
  111     80   2038  
  108     80   1479  
  106     80   544  
  106     79   3429  
  106     78   2153  
  106     77   451  
  106     77   1460  
  101     579   1485  
  99     27   512  
  99     35   3143  
  99     46   1945  
  99     22   500  
  99     30   1327  
  99     45   1565  
  99     43   496  
  99     29   3271  
  99     16   2742  
  98     18   466  
  98     16   1532  
  96     16   1457  
  95     16   483  
  95     13   2927  
  95     16   1785  
  95     16   413  
  95     13   1141  
  91     13   3117  
  89     13   458  
  89     13   2773  
  89     13   1585  
  89     13   415  
  89     13   1095  
  88     13   2122  
  86     13   434  
  86     13   2779  
  86     13   1509  
  84     12   417  
  84     12   1360  
  84     12   1953  
  84     12   472  
  84     12   2615  
  84     12   1635  
  84     12   361  
  84     12   1017  
  82     12   1245  
  81     12   426  
  81     12   2420  
  80     11   1435  
  80     11   388  
  80     11   1313  
  80     11   2077  
  80     9   414  
  80     9   2383  
  80     9   2130  
  80     9   397  
  80     9   1119  
  79     9   1124  
  79     9   376  
  79     9   1998  
  78     9   1311  
  78     9   385  
  78     9   1127  
  77     9   2285  
  77     9   378  
  77     9   2081  
  77     8   1432  
  77     8   359  
  77     7   850  
  3236     7   439878  
  570     7   2637  
  355     7   1377  
  25     7   139  
  15     7   94  
  29     7   393  
  26     7   135  
  13     7   69  
  43     7   233  
  40     7   208  
  14     7   66  
  14     7   240  
  34     7   203  
  14     7   73  
  22     7   202  
  42     7   203  
  9     7   27  
  9     7   185  
  9     7   52  
  18     7   113  
  8     7   108  
  5     7   92  
  8     7   49  
  7     7   242  
  7     7   713  
  4     7   404  
  4     7   36  
  4     7   33  
  4     7   10  
  4     6   144  
  4     6   33  
  4     6   12  
  4     6   111  
  4     6   29  
  4     6   10  
  4     6   141  
  4     6   37  
  4     6   12  
  4     6   74  
  3     5   24  
  3     5   10  
  3     5   145  
  3     5   25  
  3     5   10  
  3     5   48  
  3     5   23  
  3     5   19  
  3     5   200  
  3     5   19  
  3     5   8  
  3     5   24  
  3     5   27  
  3     5   14  
  3     5   203  
  3     5   21  
  3     5   7  
  3     5   45  
  3     5   24  
  3     5   9  
  3     5   212  
  3     5   25  
  3     5   8  
  3     5   28  
  3     5   590  
  3     5   10  
  3     5   199  
  3     5   24  
  3     5   6  
  3     5   26  
  3     5   24  
  3     5   9  
  3     4   177  
  3     4   23  
  3     4   9  
  3     4   32  
  3     4   26  
  3     4   7  
  3     4   177  
  3     4   29  
  3     4   7  
  3     4   26  
  3     3   24  
  3     3   8  
  3     3   168  
  3     3   27  
  3     3   9  
  3     3   23  
  3     3   25  
  3     3   9  
  3     3   169  
  3     3   21  
  3     3   11  
  3     3   61  
  3     3   35  
  3     3   11  
  3     3   177  
  3     3   19  
  3     3   9  
  3     3   26  
  3     3   26  
  3     3   9  
  3     3   180  
  3     3   17  
  3     3   9  
  3     3   24  
  3     2   25  
  3     2   8  
  3     2   179  
  3     2   22  
  3     2   8  
  3     2   25  
  2     2   15  
  2     2   5  
  2     2   113  
  2     2   12  
  2     2   35  
  2     2   20  
  2     2   17  
  2     2   5  
  2     2   109  
  2     2   12  
  2     2   5  
  2     2   16  
  2     2   18  
  2     2   9  
  2     2   96  
  2     2   13  
  2     2   15  
  2     2   21  
  2     2   18  
  2     2   10  
  2     2   85  
  2     2   14  
  2     2   6  
  2     2   13  
  2     2   21  
  2     2   5  
  2     2   94  
  2     2   11  
  2     2   7  
  2     2   16  
  2     2   14  
  2     2   6  
  2     2   108  
  2     2   15  
  2     2   5  
  2     2   14  
  2     2   16  
  2     2   6  
  2     2   127  
  2     2   15  
  2     2   5  
  2     2   19  
  2     2   16  
  2     2   8  
  2     2   161  
  2     2   15  
  2     2   6  
  2     2   19  
  2     2   18  
  2     2   6  
  2         140  
  2         12  
  2         5  
  2         18  
  2         15  
  2         5  
  2         119  
  2         11  
  2         7  
  2         21  
  2         15  
  2         6  
  2         123  
  2         22  
  2         4  
  2         18  
  2         25  
  2         6  
  2         129  
  2         14  
  2         6  
  2         17  
  2         17  
  2         6  
  2         127  
  2         12  
  2         8  
  2         27  
  2         24  
  2         4  
  2         112  
  2         12  
  2         4  
  2         18  
  2         17  
  2         5  
  2         124  
  2         14  
  2         5  
  2         15  
  2         12  
  2         5  
  2         96  
  2         16  
  2         7  
  2         59  
  2         16  
  2         5  
  2         78  
  2         14  
  2         6  
  2         22  
  2         17  
  2         7  
  2         114  
  2         10  
  2         6  
  2         19  
  2         48  
  2         10  
  2         80  
  2         13  
  2         5  
  2         65  
  2         13  
  2         15  
  2         74  
  2         23  
  2         6  
  2         20  
  2         13  
  2         6  
  2         126  
  2         11  
  2         5  
  2         16  
  2         14  
  2         5  
  2         73  
  2         16  
  2         6  
  2         50  
  2         12  
  2         4  
  2         82  
  2         11  
  2         7  
  2         16  
  2         14  
  2         5  
  2         108  
  2         12  
  2         4  
  2         15  
  2         15  
  2         5  
  2         75  
  2         14  
  2         4  
  2         64  
  2         13  
  2         9  
  2         73  
  2         17  
  2         7  
  2         16  
  2         16  
  2         5  
  2         113  
  2         11  
  2         5  
  2         19  
  2         16  
  2         4  
  2         131  
  2         13  
  2         5  
  2         18  
394              
395 3236         9350 my $dollarat = $@;
396              
397 3236 100       9623 die $dollarat if $dollarat;
398              
399 3158 50       18749 return wantarray ? (@result) : $result[0];
400             }
401              
402             sub execute {
403 4083     4086 1 13073 my ($self, $name, @args) = @_;
404              
405 4083         10771 my $method = "execute_test_for_$name";
406              
407 4082         18273 return $self->$method(@args);
408             }
409              
410             sub execute_test_for_abstract {
411 113     117 1 532 my ($self, $code) = @_;
412              
413 113         934 my $data = $self->collect('abstract');
414              
415 113         693 my $result = $self->perform('abstract', $data);
416              
417 113 50       604 $result = $code->($data) if $code;
418              
419 113         905 $self->pass($result, '=abstract');
420              
421 113         37983 return $result;
422             }
423              
424             sub execute_test_for_attribute {
425 18     22 1 64 my ($self, $name, $code) = @_;
426              
427 18         564 my $data = $self->collect('attribute', $name);
428              
429 18         139 my $result = $self->perform('attribute', $name, $data);
430              
431 18 50       55 $result = $code->($data) if $code;
432              
433 18         356 $self->pass($result, "=attribute $name");
434              
435 17         555 return $result;
436             }
437              
438             sub execute_test_for_attributes {
439 30     35 0 129 my ($self, $code) = @_;
440              
441 30         587 my $data = $self->collect('attributes');
442              
443 30         232 my $result = $self->perform('attributes', $data);
444              
445 30 50       153 $result = $code->($data) if $code;
446              
447 30         483 $self->pass($result, '=attributes');
448              
449 30         5406 my ($package) = $self->collect('name');
450              
451 30         98 for my $line (@{$data}) {
  30         482  
452 30 50       194 next if !$line;
453              
454 30         168 my ($name, $is, $pre, $isa, $def) = map { split /,\s*/ } split /:\s*/,
  44         655  
455             $line, 2;
456              
457 30         378 $self->pass($package->can($name), "$package has $name");
458 30   33     5884 $self->pass((($is eq 'ro' || $is eq 'rw')
459             && ($pre eq 'opt' || $pre eq 'req')
460             && $isa), $line);
461             }
462              
463 30         7355 return $result;
464             }
465              
466             sub execute_test_for_authors {
467 17     22 1 144 my ($self, $code) = @_;
468              
469 17         55 my $data = $self->collect('authors');
470              
471 17         327 my $result = $self->perform('authors', $data);
472              
473 17 50       160 $result = $code->($data) if $code;
474              
475 17         63 $self->pass($result, '=authors');
476              
477 17         979 return $result;
478             }
479              
480             sub execute_test_for_description {
481 112     117 1 598 my ($self, $code) = @_;
482              
483 112         491 my $data = $self->collect('description');
484              
485 112         951 my $result = $self->perform('description', $data);
486              
487 112 50       674 $result = $code->($data) if $code;
488              
489 112         571 $self->pass($result, '=description');
490              
491 112         38902 return $result;
492             }
493              
494             sub execute_test_for_encoding {
495 17     22 1 124 my ($self, $code) = @_;
496              
497 17         56 my $data = $self->collect('encoding');
498              
499 17         433 my $result = $self->perform('encoding', $data);
500              
501 17 50       141 $result = $code->($data) if $code;
502              
503 17         63 $self->pass($result, '=encoding');
504              
505 17         881 return $result;
506             }
507              
508             sub execute_test_for_error {
509 73     78 1 387 my ($self, $name, $code) = @_;
510              
511 73         301 my $data = $self->collect('error', $name);
512              
513 73         721 my $result = $self->perform('error', $name, $data);
514              
515 73 50       409 $result = $code->($data) if $code;
516              
517 73         367 $self->pass($result, "=error $name");
518              
519 73         24381 return $result;
520             }
521              
522             sub execute_test_for_example {
523 3168     3173 1 9293 my ($self, $number, $name, $code) = @_;
524              
525 3168         9844 my $data = $self->collect('example', $number, $name);
526              
527 3168         6897 my $text = join "\n\n", @{$data};
  3168         15234  
528              
529 3168         6787 my @includes;
530              
531 3168 100       19676 if ($text =~ /.*#\s*given:\s*synopsis/m) {
532 1413         5408 my $line = $&;
533 1413 100       8030 if ($line !~ /#.*#\s*given:\s*synopsis/) {
534 1379         6495 push @includes, $self->collect('synopsis');
535             }
536             }
537              
538 3168         14962 for my $given ($text =~ /.*#\s*given:\s*example-((?:\d+)\s+(?:[\-\w]+))/gm) {
539 21         72 my $line = $&;
540 21 50       468 if ($line !~ /#.*#\s*given:\s*example-(?:\d+)\s+(?:[\-\w]+)/) {
541 21         155 my ($number, $name) = split /\s+/, $given, 2;
542 21         87 push @includes, $self->collect('example', $number, $name);
543             }
544             }
545              
546 3168         18799 $text =~ s/.*#\s*given:\s*.*\n\n*//g;
547 3168         13588 $text = join "\n\n", @includes, $text;
548              
549 3168         15081 my $result = $self->perform('example', $number, $name, $data);
550              
551 3168         17034 $self->pass($result, "=example-$number $name");
552              
553 3168 100       1271632 $result = $code->($self->try('eval', $text)) if $code;
554              
555 3164 100       428793 $self->pass($result, "=example-$number $name returns ok") if $code;
556              
557 3164         1271658 return $result;
558             }
559              
560             sub execute_test_for_feature {
561 32     35 1 176 my ($self, $name, $code) = @_;
562              
563 32         90 my $data = $self->collect('feature', $name);
564              
565 32         579 my $result = $self->perform('feature', $name, $data);
566              
567 32 50       238 $result = $code->($data) if $code;
568              
569 32         126 $self->pass($result, "=feature $name");
570              
571 32         6695 return $result;
572             }
573              
574             sub execute_test_for_function {
575 17     20 1 128 my ($self, $name, $code) = @_;
576              
577 17         74 my $data = $self->collect('function', $name);
578              
579 17         433 my $result = $self->perform('function', $name, $data);
580              
581 17 50       139 $result = $code->($data) if $code;
582              
583 17         75 $self->pass($result, "=function $name");
584              
585 17         878 return $result;
586             }
587              
588             sub execute_test_for_includes {
589 107     110 1 669 my ($self, $code) = @_;
590              
591 107         433 my $data = $self->collect('includes');
592              
593 107         973 my $result = $self->perform('includes', $data);
594              
595 107 50       664 $result = $code->($data) if $code;
596              
597 107         583 $self->pass($result, '=includes');
598              
599 107         37768 return $result;
600             }
601              
602             sub execute_test_for_inherits {
603 70     73 1 397 my ($self, $code) = @_;
604              
605 70         255 my $data = $self->collect('inherits');
606              
607 70         922 my $result = $self->perform('inherits', $data);
608              
609 70 50       459 $result = $code->($data) if $code;
610              
611 70         345 $self->pass($result, '=inherits');
612              
613 70         21387 return $result;
614             }
615              
616             sub execute_test_for_integrates {
617 48     51 1 323 my ($self, $code) = @_;
618              
619 48         189 my $data = $self->collect('integrates');
620              
621 48         615 my $result = $self->perform('integrates', $data);
622              
623 48 50       333 $result = $code->($data) if $code;
624              
625 48         251 $self->pass($result, '=integrates');
626              
627 48         12980 return $result;
628             }
629              
630             sub execute_test_for_layout {
631 17     20 1 116 my ($self, $code) = @_;
632              
633 17         49 my $data = $self->collect('layout');
634              
635 17         425 my $result = $self->perform('layout', $data);
636              
637 17 50       131 $result = $code->($data) if $code;
638              
639 17         54 $self->pass($result, '=layout');
640              
641 17         661 return $result;
642             }
643              
644             sub execute_test_for_libraries {
645 17     20 1 125 my ($self, $code) = @_;
646              
647 17         60 my $data = $self->collect('libraries');
648              
649 17         582 my $result = $self->perform('libraries', $data);
650              
651 17 50       150 $result = $code->($data) if $code;
652              
653 17         46 $self->pass($result, '=libraries');
654              
655 17         724 return $result;
656             }
657              
658             sub execute_test_for_license {
659 17     20 1 166 my ($self, $code) = @_;
660              
661 17         63 my $data = $self->collect('license');
662              
663 17         520 my $result = $self->perform('license', $data);
664              
665 17 50       142 $result = $code->($data) if $code;
666              
667 17         61 $self->pass($result, '=license');
668              
669 17         877 return $result;
670             }
671              
672             sub execute_test_for_message {
673 17     20 1 134 my ($self, $name, $code) = @_;
674              
675 17         47 my $data = $self->collect('message', $name);
676              
677 17         468 my $result = $self->perform('message', $name, $data);
678              
679 17 50       151 $result = $code->($data) if $code;
680              
681 17         47 $self->pass($result, "=message $name");
682              
683 17         746 return $result;
684             }
685              
686             sub execute_test_for_metadata {
687 17     20 1 142 my ($self, $name, $code) = @_;
688              
689 17         54 my $data = $self->collect('metadata', $name);
690              
691 17         720 my $result = $self->perform('metadata', $name, $data);
692              
693 17 50       142 $result = $code->($data) if $code;
694              
695 17         63 $self->pass($result, "=metadata $name");
696              
697 17         731 return $result;
698             }
699              
700             sub execute_test_for_method {
701 17     19 1 155 my ($self, $name, $code) = @_;
702              
703 17         76 my $data = $self->collect('method', $name);
704              
705 17         589 my $result = $self->perform('method', $name, $data);
706              
707 17 50       149 $result = $code->($data) if $code;
708              
709 17         71 $self->pass($result, "=method $name");
710              
711 17         918 return $result;
712             }
713              
714             sub execute_test_for_name {
715 114     116 1 518 my ($self, $code) = @_;
716              
717 114         512 my $data = $self->collect('name');
718              
719 114         1191 my $result = $self->perform('name', $data);
720              
721 114 100       687 $result = $code->($data) if $code;
722              
723 114         562 $self->pass($result, '=name');
724              
725 114         40027 return $result;
726             }
727              
728             sub execute_test_for_operator {
729 97     99 1 431 my ($self, $name, $code) = @_;
730              
731 97         316 my $data = $self->collect('operator', $name);
732              
733 97         862 my $result = $self->perform('operator', $name, $data);
734              
735 97 50       480 $result = $code->($data) if $code;
736              
737 97         465 $self->pass($result, "=operator $name");
738              
739 97         33326 return $result;
740             }
741              
742             sub execute_test_for_partials {
743 111     113 0 636 my ($self, $code) = @_;
744              
745 111         523 my $data = $self->collect('partials');
746              
747 111         1138 my $result = $self->perform('partials', $data);
748              
749 111 50       757 $result = $code->($data) if $code;
750              
751 111         572 $self->pass($result, '=partials');
752              
753 111         38577 return $result;
754             }
755              
756             sub execute_test_for_project {
757 15     17 0 137 my ($self, $code) = @_;
758              
759 15         43 my $data = $self->collect('project');
760              
761 15         441 my $result = $self->perform('project', $data);
762              
763 15 0       154 $result = $code->($data) if $code;
764              
765 15         51 $self->pass($result, '=project');
766              
767 15         372 return $result;
768             }
769              
770             sub execute_test_for_signature {
771 15     17 0 142 my ($self, $name, $code) = @_;
772              
773 15         43 my $data = $self->collect('signature', $name);
774              
775 15         502 my $result = $self->perform('signature', $name, $data);
776              
777 15 0       106 $result = $code->($data) if $code;
778              
779 15         40 $self->pass($result, "=signature $name");
780              
781 15         299 return $result;
782             }
783              
784             sub execute_test_for_synopsis {
785 111     114 0 697 my ($self, $code) = @_;
786              
787 111         492 my $data = $self->collect('synopsis');
788              
789 111         825 my $text = join "\n\n", @{$data};
  111         752  
790              
791 111         303 my @includes;
792              
793 111         1374 for my $given ($text =~ /.*#\s*given:\s*example-((?:\d+)\s+(?:[\-\w]+))/gm) {
794 14         108 my $line = $&;
795 14 0       53 if ($line !~ /#.*#\s*given:\s*example-(?:\d+)\s+(?:[\-\w]+)/) {
796 14         297 my ($number, $name) = split /\s+/, $given, 2;
797 14         101 push @includes, $self->collect('example', $number, $name);
798             }
799             }
800              
801 111         552 $text =~ s/.*#\s*given:\s*.*\n\n*//g;
802 111         877 $text = join "\n\n", @includes, $text;
803              
804 111         600 my $result = $self->perform('synopsis', $data);
805              
806 111         791 $self->pass($result, "=synopsis");
807              
808 111 100       40691 $result = $code->($self->try('eval', $text)) if $code;
809              
810 111 100       4966 $self->pass($result, "=synopsis returns ok") if $code;
811              
812 111         40471 return $result;
813             }
814              
815             sub execute_test_for_tagline {
816 109     112 0 785 my ($self, $code) = @_;
817              
818 109         518 my $data = $self->collect('tagline');
819              
820 109         639 my $result = $self->perform('tagline', $data);
821              
822 109 50       1134 $result = $code->($data) if $code;
823              
824 109         590 $self->pass($result, '=tagline');
825              
826 109         37742 return $result;
827             }
828              
829             sub execute_test_for_version {
830 14     16 0 355 my ($self, $code) = @_;
831              
832 14         133 my $data = $self->collect('version');
833              
834 14         49 my $result = $self->perform('version', $data);
835              
836 14 0       280 $result = $code->($data) if $code;
837              
838 14         131 $self->pass($result, '=version');
839              
840 14         38 return $result;
841             }
842              
843             sub explain {
844 114     116 1 1086 my ($self, @args) = @_;
845              
846 114         544 return join ' ', map {s/^\s+|\s+$//gr} map {$self->more('explain', $_)} @args;
  213         4494  
  213         772441  
847             }
848              
849             sub fail {
850 15     17 1 102 my ($self, $data, $desc) = @_;
851              
852 15   33     90 return $self->more('ok', ($data ? false : true), $desc) || $self->diag($data);
853             }
854              
855             sub for {
856 4077     4079 1 66698 my ($self, $type, @args) = @_;
857              
858             my $name = join(
859 4076 100       10850 ' ', map {ref($_) ? () : $_} $type, @args
  13776         40359  
860             );
861              
862             $self->more('subtest', $name, sub {
863 4076     4079   3453513 $self->execute($type, @args);
864 4076         23531 });
865              
866 4076         5631037 return $self;
867             }
868              
869             sub like {
870 15     18 1 296 my ($self, $this, $that, $desc) = @_;
871              
872 15 100       155 $that = qr/$that/ if ref $that ne 'Regexp';
873              
874 15         45 return $self->more('like', $this, $that, $desc);
875             }
876              
877             sub more {
878 15859     15862 1 41796 my ($self, $name, @args) = @_;
879              
880 15859         60555 require Test::More;
881              
882 15859         26231 my $level = 1;
883              
884 15859         30578 local $Test::Builder::Level = $Test::Builder::Level + $level;
885              
886 15859         138224 for (my $i = 0; my @caller = caller($i); $i++) {
887 135181 100       224755 $level += $i; last if $caller[1] =~ qr{@{[quotemeta($self->file)]}$};
  135181         166220  
  135181         270167  
888             }
889              
890 15859         119070 return Test::More->can($name)->(@args);
891             }
892              
893             sub okay {
894 16     19 1 326 my ($self, $data, $desc) = @_;
895              
896 16 50       141 return $self->more('ok', ($data ? true : false), $desc);
897             }
898              
899             sub okay_can {
900 14     17 1 39 my ($self, $data, @args) = @_;
901              
902 14         468 return $self->more('can_ok', $data, @args);
903             }
904              
905             sub okay_isa {
906 15     18 1 135 my ($self, $data, $name) = @_;
907              
908 15         51 return $self->more('isa_ok', $data, $name);
909             }
910              
911             sub pass {
912 11582     11585 1 27578 my ($self, $data, $desc) = @_;
913              
914 11582   33     38923 return $self->more('ok', ($data ? true : false), $desc) || $self->diag($data);
915             }
916              
917             sub perform {
918 4098     4101 1 14800 my ($self, $name, @args) = @_;
919              
920 4098         11842 my $method = "perform_test_for_$name";
921              
922 4098         20263 return $self->$method(@args);
923             }
924              
925             sub perform_test_for_abstract {
926 109     112 1 419 my ($self, $data) = @_;
927              
928 109 50       542 my $result = length(join "\n", @{$data}) ? true : false;
  109         913  
929              
930 109         794 $self->pass($result, '=abstract content');
931              
932 109         42589 return $result;
933             }
934              
935             sub perform_test_for_attribute {
936 14     17 1 111 my ($self, $name, $data) = @_;
937              
938 14 50       49 my $result = length(join "\n", @{$data}) ? true : false;
  14         296  
939              
940 14         112 $self->pass($result, "=attribute $name content");
941              
942 14         438 return $result;
943             }
944              
945             sub perform_test_for_attributes {
946 27     30 0 527 my ($self, $data) = @_;
947              
948 27 50       1701 my $result = length(join "\n", @{$data}) ? true : false;
  27         222  
949              
950 27         222 $self->pass($result, '=attributes content');
951              
952 27         6166 return $result;
953             }
954              
955             sub perform_test_for_authors {
956 14     17 1 67 my ($self, $data) = @_;
957              
958 14 50       516 my $result = length(join "\n", @{$data}) ? true : false;
  14         127  
959              
960 14         45 $self->pass($result, '=authors content');
961              
962 14         736 return $result;
963             }
964              
965             sub perform_test_for_description {
966 109     112 1 534 my ($self, $data) = @_;
967              
968 109 50       282 my $result = length(join "\n", @{$data}) ? true : false;
  109         1538  
969              
970 109         790 $self->pass($result, '=description content');
971              
972 109         42586 return $result;
973             }
974              
975             sub perform_test_for_encoding {
976 14     17 1 290 my ($self, $data) = @_;
977              
978 14 50       111 my $result = length(join "\n", @{$data}) ? true : false;
  14         55  
979              
980 14         441 $self->pass($result, '=encoding content');
981              
982 14         497 return $result;
983             }
984              
985             sub perform_test_for_error {
986 70     73 1 244 my ($self, $name, $data) = @_;
987              
988 70 50       318 my $result = length(join "\n", @{$data}) ? true : false;
  70         601  
989              
990 70         472 $self->pass($result, "=error $name content");
991              
992 70         32417 return $result;
993             }
994              
995             sub perform_test_for_example {
996 3165     3168 1 9187 my ($self, $number, $name, $data) = @_;
997              
998 3165 50       5791 my $result = length(join "\n", @{$data}) ? true : false;
  3165         19961  
999              
1000 3165         17876 $self->pass($result, "=example-$number $name content");
1001              
1002 3165         1532608 return $result;
1003             }
1004              
1005             sub perform_test_for_feature {
1006 29     32 1 347 my ($self, $name, $data) = @_;
1007              
1008 29 50       143 my $result = length(join "\n", @{$data}) ? true : false;
  29         152  
1009              
1010 29         448 $self->pass($result, "=feature $name content");
1011              
1012 29         6593 return $result;
1013             }
1014              
1015             sub perform_test_for_function {
1016 14     17 1 49 my ($self, $name, $data) = @_;
1017              
1018 14 50       326 my $result = length(join "\n", @{$data}) ? true : false;
  14         114  
1019              
1020 14         48 $self->pass($result, "=function $name content");
1021              
1022 14         651 return $result;
1023             }
1024              
1025             sub perform_test_for_includes {
1026 104     107 1 537 my ($self, $data) = @_;
1027              
1028 104 50       283 my $result = length(join "\n", @{$data}) ? true : false;
  104         1448  
1029              
1030 104         749 $self->pass($result, '=includes content');
1031              
1032 104         39890 return $result;
1033             }
1034              
1035             sub perform_test_for_inherits {
1036 67     70 1 667 my ($self, $data) = @_;
1037              
1038 67 50       242 my $result = length(join "\n", @{$data}) ? true : false;
  67         469  
1039              
1040 67         703 $self->pass($result, '=inherits content');
1041              
1042 67         24159 return $result;
1043             }
1044              
1045             sub perform_test_for_integrates {
1046 45     48 1 217 my ($self, $data) = @_;
1047              
1048 45 50       543 my $result = length(join "\n", @{$data}) ? true : false;
  45         464  
1049              
1050 45         312 $self->pass($result, '=integrates content');
1051              
1052 45         14245 return $result;
1053             }
1054              
1055             sub perform_test_for_layout {
1056 14     17 1 109 my ($self, $data) = @_;
1057              
1058 14 50       50 my $result = length(join "\n", @{$data}) ? true : false;
  14         334  
1059              
1060 14         102 $self->pass($result, '=layout content');
1061              
1062 14         493 return $result;
1063             }
1064              
1065             sub perform_test_for_libraries {
1066 14     17 1 368 my ($self, $data) = @_;
1067              
1068 14 50       136 my $result = length(join "\n", @{$data}) ? true : false;
  14         45  
1069              
1070 14         381 $self->pass($result, '=libraries content');
1071              
1072 14         512 return $result;
1073             }
1074              
1075             sub perform_test_for_license {
1076 14     17 1 46 my ($self, $data) = @_;
1077              
1078 14 50       347 my $result = length(join "\n", @{$data}) ? true : false;
  14         148  
1079              
1080 14         62 $self->pass($result, '=license content');
1081              
1082 14         774 return $result;
1083             }
1084              
1085             sub perform_test_for_message {
1086 14     17 1 158 my ($self, $name, $data) = @_;
1087              
1088 14 50       80 my $result = length(join "\n", @{$data}) ? true : false;
  14         341  
1089              
1090 14         130 $self->pass($result, "=message $name content");
1091              
1092 14         446 return $result;
1093             }
1094              
1095             sub perform_test_for_metadata {
1096 14     17 1 374 my ($self, $name, $data) = @_;
1097              
1098 14 50       124 my $result = length(join "\n", @{$data}) ? true : false;
  14         57  
1099              
1100 14         294 $self->pass($result, "=metadata $name content");
1101              
1102 14         559 return $result;
1103             }
1104              
1105             sub perform_test_for_method {
1106 14     17 1 36 my ($self, $name, $data) = @_;
1107              
1108 14 50       343 my $result = length(join "\n", @{$data}) ? true : false;
  14         134  
1109              
1110 14         58 $self->pass($result, "=method $name content");
1111              
1112 14         746 return $result;
1113             }
1114              
1115             sub perform_test_for_name {
1116 112     115 1 545 my ($self, $data) = @_;
1117              
1118 112         261 my $text = join "\n", @{$data};
  112         776  
1119              
1120 112 50       934 my $result = length($text) ? true : false;
1121              
1122 112         653 $self->pass($result, '=name content');
1123              
1124 112         66738 $self->pass(scalar(eval("require $text")), $self->explain('require', $text));
1125              
1126 112         44721 return $result;
1127             }
1128              
1129             sub perform_test_for_operator {
1130 94     97 1 288 my ($self, $name, $data) = @_;
1131              
1132 94 50       469 my $result = length(join "\n", @{$data}) ? true : false;
  94         606  
1133              
1134 94         550 $self->pass($result, "=operator $name content");
1135              
1136 94         37414 return $result;
1137             }
1138              
1139             sub perform_test_for_partials {
1140 108     111 1 518 my ($self, $data) = @_;
1141              
1142 108 50       529 my $result = length(join "\n", @{$data}) ? true : false;
  108         1516  
1143              
1144 108         942 $self->pass($result, '=partials content');
1145              
1146 108         42732 return $result;
1147             }
1148              
1149             sub perform_test_for_project {
1150 13     16 1 253 my ($self, $data) = @_;
1151              
1152 13 0       97 my $result = length(join "\n", @{$data}) ? true : false;
  13         44  
1153              
1154 13         386 $self->pass($result, '=project content');
1155              
1156 13         104 return $result;
1157             }
1158              
1159             sub perform_test_for_signature {
1160 13     16 1 38 my ($self, $name, $data) = @_;
1161              
1162 13 0       354 my $result = length(join "\n", @{$data}) ? true : false;
  13         99  
1163              
1164 13         46 $self->pass($result, "=signature $name content");
1165              
1166 13         272 return $result;
1167             }
1168              
1169             sub perform_test_for_synopsis {
1170 110     113 1 604 my ($self, $data) = @_;
1171              
1172 110 50       278 my $result = length(join "\n", @{$data}) ? true : false;
  110         1767  
1173              
1174 110         761 $self->pass($result, '=synopsis content');
1175              
1176 110         42121 return $result;
1177             }
1178              
1179             sub perform_test_for_tagline {
1180 108     111 1 730 my ($self, $data) = @_;
1181              
1182 108 50       366 my $result = length(join "\n", @{$data}) ? true : false;
  108         853  
1183              
1184 108         956 $self->pass($result, '=tagline content');
1185              
1186 108         42387 return $result;
1187             }
1188              
1189             sub perform_test_for_version {
1190 13     16 1 38 my ($self, $data) = @_;
1191              
1192 13 0       368 my $result = length(join "\n", @{$data}) ? true : false;
  13         93  
1193              
1194 13         43 $self->pass($result, '=version content');
1195              
1196 13         314 return $result;
1197             }
1198              
1199             sub present {
1200 333     337 1 1312 my ($self, $name, @args) = @_;
1201              
1202 333         1184 my $method = "present_data_for_$name";
1203              
1204 333         2179 return $self->$method(@args);
1205             }
1206              
1207             sub present_data_for_abstract {
1208 14     18 1 107 my ($self) = @_;
1209              
1210 14         61 my @data = $self->collect('abstract');
1211              
1212 14 50       405 return @data ? ($self->present_data_for_head1('abstract', @data)) : ();
1213             }
1214              
1215             sub present_data_for_attribute {
1216 13     17 1 127 my ($self, $name) = @_;
1217              
1218 13         39 return $self->present_data_for_attribute_type2($name);
1219             }
1220              
1221             sub present_data_for_attribute_type1 {
1222 12     16 0 302 my ($self, $name, $is, $pre, $isa, $def) = @_;
1223              
1224 12         97 my @output;
1225              
1226 12 0       50 $is = $is eq 'ro' ? 'read-only' : 'read-write';
1227 12 0       414 $pre = $pre eq 'req' ? 'required' : 'optional';
1228              
1229 12         81 push @output, " $name($isa)\n";
1230 12 0       41 push @output, "This attribute is $is, accepts C<($isa)> values, ". (
1231             $def ? "is $pre, and defaults to $def." : "and is $pre."
1232             );
1233              
1234 12         362 return ($self->present_data_for_head2($name, @output));
1235             }
1236              
1237             sub present_data_for_attribute_type2 {
1238 14     18 0 99 my ($self, $name) = @_;
1239              
1240 14         52 my @output;
1241              
1242 14         271 my ($metadata) = $self->collect('metadata', $name);
1243 14         131 my ($signature) = $self->collect('signature', $name);
1244              
1245 14 100       67 push @output, ($signature, '') if $signature;
1246              
1247 14         385 my @data = $self->collect('attribute', $name);
1248              
1249 14 50       101 return () if !@data;
1250              
1251 14         48 push @output, join "\n\n", @data;
1252              
1253 14 100       279 if ($metadata) {
1254 13         125 local $@;
1255 13 50       300 if ($metadata = eval $metadata) {
1256 13 50       330 if (my $since = $metadata->{since}) {
1257 13         114 push @output, "", "I>";
1258             }
1259             }
1260             }
1261              
1262 14         56 my @results = $self->data->search({name => $name});
1263              
1264 14   100     349 for my $i (1..(int grep {($$_{list} || '') =~ /^example-\d+/} @results)) {
  21         169  
1265 16         73 push @output, join "\n\n", $self->present('example', $i, $name);
1266             }
1267              
1268 14 100       406 pop @output if $output[-1] eq '';
1269              
1270 13         95 return ($self->present_data_for_head2($name, @output));
1271             }
1272              
1273             sub present_data_for_attributes {
1274 12     17 0 47 my ($self, @args) = @_;
1275              
1276 12 50       200 my $method = $self->data->count({list => undef, name => 'attributes'})
1277             ? 'attributes_type1'
1278             : 'attributes_type2';
1279              
1280 12         91 return $self->present($method, @args);
1281             }
1282              
1283             sub present_data_for_attributes_type1 {
1284 11     16 0 40 my ($self) = @_;
1285              
1286 11         391 my @output;
1287              
1288 11         91 my @data = $self->collect('attributes');
1289              
1290 11 0       31 return () if !@data;
1291              
1292 11         359 for my $line (split /\r?\n/, join "\n", @data) {
1293             push @output, $self->present('attribute_type1', (
1294 11         94 map {split /,\s*/} split /:\s*/, $line, 2
  11         29  
1295             ));
1296             }
1297              
1298 11 0       273 return () if !@output;
1299              
1300 9 0       69 if (@output) {
1301 9         25 unshift @output,
1302             $self->present_data_for_head1('attributes',
1303             'This package has the following attributes:');
1304             }
1305              
1306 9         264 return join "\n", @output;
1307             }
1308              
1309             sub present_data_for_attributes_type2 {
1310 10     17 0 69 my ($self) = @_;
1311              
1312 10         22 my @output;
1313              
1314 10         323 for my $list ($self->data->search({list => 'attribute'})) {
1315 10         84 push @output, $self->present('attribute_type2', $list->{name});
1316             }
1317              
1318 10 50       34 if (@output) {
1319 10         244 unshift @output,
1320             $self->present_data_for_head1('attributes',
1321             'This package has the following attributes:');
1322             }
1323              
1324 10         81 return join "\n", @output;
1325             }
1326              
1327             sub present_data_for_authors {
1328 12     19 1 51 my ($self) = @_;
1329              
1330 12         310 my @data = $self->collect('authors');
1331              
1332 12 100       98 return @data ? ($self->present_data_for_head1('authors', join "\n\n", @data)) : ();
1333             }
1334              
1335             sub present_data_for_description {
1336 11     17 1 40 my ($self) = @_;
1337              
1338 11         288 my @data = $self->collect('description');
1339              
1340 11 50       120 return @data ? ($self->present_data_for_head1('description', join "\n\n", @data)) : ();
1341             }
1342              
1343             sub present_data_for_encoding {
1344 11     17 1 56 my ($self) = @_;
1345              
1346 11         310 my ($name) = $self->collect('encoding');
1347              
1348 11 100       91 return () if !$name;
1349              
1350 10         41 return join("\n", "", "=encoding \U$name", "", "=cut");
1351             }
1352              
1353             sub present_data_for_error {
1354 15     21 1 245 my ($self, $name) = @_;
1355              
1356 15         87 my @output;
1357              
1358 15         53 my @data = $self->collect('error', $name);
1359              
1360 15 50       316 return () if !@data;
1361              
1362 15         99 my @results = $self->data->search({name => $name});
1363              
1364 15   50     64 for my $i (1..(int grep {($$_{list} || '') =~ /^example-\d+/} @results)) {
  21         423  
1365 15         152 push @output, "B", $self->collect('example', $i, $name);
1366             }
1367              
1368             return (
1369 15         127 $self->present_data_for_over($self->present_data_for_item(
1370             "error: C<$name>",
1371             join "\n\n", @data, @output
1372             ))
1373             );
1374             }
1375              
1376             sub present_data_for_errors {
1377 10     16 0 277 my ($self) = @_;
1378              
1379 10         71 my @output;
1380              
1381 10         50 my $type = 'error';
1382              
1383 10         307 for my $name (
1384             sort map $$_{name},
1385             $self->data->search({list => $type})
1386             )
1387             {
1388 14         106 push @output, $self->present($type, $name);
1389             }
1390              
1391 10 50       41 if (@output) {
1392 10         382 unshift @output,
1393             $self->present_data_for_head1('errors',
1394             'This package may raise the following errors:');
1395             }
1396              
1397 10         327 return join "\n", @output;
1398             }
1399              
1400             sub present_data_for_example {
1401 160     165 1 636 my ($self, $number, $name) = @_;
1402              
1403 160         1020 my @data = $self->collect('example', $number, $name);
1404              
1405             return @data
1406 160 100       3071 ? (
1407             $self->present_data_for_over($self->present_data_for_item(
1408             "$name example $number", join "\n\n", @data)))
1409             : ();
1410             }
1411              
1412             sub present_data_for_feature {
1413 38     43 1 138 my ($self, $name) = @_;
1414              
1415 38         395 my @output;
1416              
1417 37         189 my ($signature) = $self->collect('signature', $name);
1418              
1419 37 50       185 push @output, ($signature, '') if $signature;
1420              
1421 37         447 my @data = $self->collect('feature', $name);
1422              
1423 37 50       229 return () if !@data;
1424              
1425 37         202 my @results = $self->data->search({name => $name});
1426              
1427 37   50     439 for my $i (1..(int grep {($$_{list} || '') =~ /^example-\d+/} @results)) {
  36         424  
1428 7         34 push @output, "B", $self->collect('example', $i, $name);
1429             }
1430              
1431             return (
1432 36         1186 $self->present_data_for_over($self->present_data_for_item(
1433             $name, join "\n\n", @data, @output))
1434             );
1435             }
1436              
1437             sub present_data_for_features {
1438 8     15 0 64 my ($self) = @_;
1439              
1440 8         24 my @output;
1441              
1442 8         262 my $type = 'feature';
1443              
1444 8         88 for my $name (
1445             sort map $$_{name},
1446             $self->data->search({list => $type})
1447             )
1448             {
1449 35         174 push @output, $self->present($type, $name);
1450             }
1451              
1452 8 50       313 if (@output) {
1453 8         74 unshift @output,
1454             $self->present_data_for_head1('features',
1455             'This package provides the following features:');
1456             }
1457              
1458 8         71 return join "\n", @output;
1459             }
1460              
1461             sub present_data_for_function {
1462 9     16 1 271 my ($self, $name) = @_;
1463              
1464 9         74 my @output;
1465              
1466 9         43 my ($metadata) = $self->collect('metadata', $name);
1467 9         254 my ($signature) = $self->collect('signature', $name);
1468              
1469 9 100       58 push @output, ($signature, '') if $signature;
1470              
1471 9         44 my @data = $self->collect('function', $name);
1472              
1473 9 50       203 return () if !@data;
1474              
1475 9         75 push @output, join "\n\n", @data;
1476              
1477 9 100       52 if ($metadata) {
1478 8         329 local $@;
1479 8 50       291 if ($metadata = eval $metadata) {
1480 8 50       34 if (my $since = $metadata->{since}) {
1481 8         267 push @output, "", "I>";
1482             }
1483             }
1484             }
1485              
1486 9         81 my @results = $self->data->search({name => $name});
1487              
1488 9   50     30 for my $i (1..(int grep {($$_{list} || '') =~ /^example-\d+/} @results)) {
  12         199  
1489 8         70 push @output, $self->present('example', $i, $name);
1490             }
1491              
1492 9 50       37 pop @output if $output[-1] eq '';
1493              
1494 9         318 return ($self->present_data_for_head2($name, @output));
1495             }
1496              
1497             sub present_data_for_functions {
1498 8     15 0 54 my ($self) = @_;
1499              
1500 8         26 my @output;
1501              
1502 8         200 my $type = 'function';
1503              
1504 8         71 for my $name (
1505             sort map /:\s*(\w+)$/,
1506             grep /^$type/,
1507             split /\r?\n/,
1508             join "\n\n", $self->collect('includes')
1509             )
1510             {
1511 8         29 push @output, $self->present($type, $name);
1512             }
1513              
1514 8 50       225 if (@output) {
1515 8         75 unshift @output,
1516             $self->present_data_for_head1('functions',
1517             'This package provides the following functions:');
1518             }
1519              
1520 8         33 return join "\n", @output;
1521             }
1522              
1523             sub present_data_for_head1 {
1524 29     36 0 378 my ($self, $name, @data) = @_;
1525              
1526 29         651 return join("\n", "", "=head1 \U$name", "", grep(defined, @data), "", "=cut");
1527             }
1528              
1529             sub present_data_for_head2 {
1530 122     129 0 650 my ($self, $name, @data) = @_;
1531              
1532 122         6109 return join("\n", "", "=head2 \L$name", "", grep(defined, @data), "", "=cut");
1533             }
1534              
1535             sub present_data_for_includes {
1536 8     15 1 62 my ($self) = @_;
1537              
1538 8         30 return ();
1539             }
1540              
1541             sub present_data_for_inherits {
1542 9     16 1 212 my ($self) = @_;
1543              
1544 9         108 my @output = map +($self->present_data_for_link($_), ""), grep defined,
1545             split /\r?\n/, join "\n\n", $self->collect('inherits');
1546              
1547 9 50       40 return () if !@output;
1548              
1549 9         350 pop @output;
1550              
1551 9         74 return $self->present_data_for_head1('inherits',
1552             "This package inherits behaviors from:",
1553             "",
1554             @output,
1555             );
1556             }
1557              
1558             sub present_data_for_integrates {
1559 9     16 1 31 my ($self) = @_;
1560              
1561 9         255 my @output = map +($self->present_data_for_link($_), ""), grep defined,
1562             split /\r?\n/, join "\n\n", $self->collect('integrates');
1563              
1564 9 50       62 return () if !@output;
1565              
1566 9         27 pop @output;
1567              
1568 9         201 return $self->present_data_for_head1('integrates',
1569             "This package integrates behaviors from:",
1570             "",
1571             @output,
1572             );
1573             }
1574              
1575             sub present_data_for_item {
1576 194     201 0 910 my ($self, $name, $data) = @_;
1577              
1578 194         1842 return ("=item $name\n", "$data\n");
1579             }
1580              
1581             sub present_data_for_layout {
1582 8     15 1 339 my ($self) = @_;
1583              
1584 8         64 return ();
1585             }
1586              
1587             sub present_data_for_libraries {
1588 9     15 1 27 my ($self) = @_;
1589              
1590 9         282 my @output = map +($self->present_data_for_link($_), ""), grep defined,
1591             split /\r?\n/, join "\n\n", $self->collect('libraries');
1592              
1593 9 100       72 return '' if !@output;
1594              
1595 8         36 pop @output;
1596              
1597 8         291 return $self->present_data_for_head1('libraries',
1598             "This package uses type constraints from:",
1599             "",
1600             @output,
1601             );
1602             }
1603              
1604             sub present_data_for_license {
1605 10     16 1 74 my ($self) = @_;
1606              
1607 10         32 my @data = $self->collect('license');
1608              
1609             return @data
1610 10 100       255 ? ($self->present_data_for_head1('license', join "\n\n", @data))
1611             : ();
1612             }
1613              
1614             sub present_data_for_link {
1615 13     19 0 88 my ($self, @data) = @_;
1616              
1617 13         45 return ("L<@{[join('|', @data)]}>");
  13         426  
1618             }
1619              
1620             sub present_data_for_message {
1621 8     14 1 76 my ($self, $name) = @_;
1622              
1623 8         559 my @output;
1624              
1625 8         574 my ($signature) = $self->collect('signature', $name);
1626              
1627 8 50       76 push @output, ($signature, '') if $signature;
1628              
1629 8         22 my @data = $self->collect('message', $name);
1630              
1631 8 50       324 return () if !@data;
1632              
1633 8         64 my @results = $self->data->search({name => $name});
1634              
1635 8   50     26 for my $i (1..(int grep {($$_{list} || '') =~ /^example-\d+/} @results)) {
  9         296  
1636 8         66 push @output, "B", join "\n\n",
1637             $self->collect('example', $i, $name);
1638             }
1639              
1640             return (
1641 8         32 $self->present_data_for_over($self->present_data_for_item(
1642             $name, join "\n\n", @data, @output))
1643             );
1644             }
1645              
1646             sub present_data_for_messages {
1647 8     14 0 315 my ($self) = @_;
1648              
1649 8         53 my @output;
1650              
1651 8         23 my $type = 'message';
1652              
1653 8         245 for my $name (
1654             sort map /:\s*(\w+)$/,
1655             grep /^$type/,
1656             split /\r?\n/,
1657             join "\n\n", $self->collect('includes')
1658             )
1659             {
1660 7         61 push @output, $self->present($type, $name);
1661             }
1662              
1663 8 50       53 if (@output) {
1664 7         336 unshift @output,
1665             $self->present_data_for_head1('messages',
1666             'This package provides the following messages:');
1667             }
1668              
1669 8         65 return join "\n", @output;
1670             }
1671              
1672             sub present_data_for_metadata {
1673 8     14 1 25 my ($self) = @_;
1674              
1675 8         251 return ();
1676             }
1677              
1678             sub present_data_for_method {
1679 117     124 1 501 my ($self, $name) = @_;
1680              
1681 117         348 my @output;
1682              
1683 117         760 my ($metadata) = $self->collect('metadata', $name);
1684 117         789 my ($signature) = $self->collect('signature', $name);
1685              
1686 117 50       873 push @output, ($signature, '') if $signature;
1687              
1688 117         873 my @data = $self->collect('method', $name);
1689              
1690 117 50       798 return () if !@data;
1691              
1692 117         597 push @output, join "\n\n", @data;
1693              
1694 117 50       785 if ($metadata) {
1695 117         360 local $@;
1696 117 50       35413 if ($metadata = eval $metadata) {
1697 117 50       832 if (my $since = $metadata->{since}) {
1698 117         796 push @output, "", "I>";
1699             }
1700             }
1701             }
1702              
1703 117         1148 my @results = $self->data->search({name => $name});
1704              
1705 117   50     1225 for my $i (1..(int grep {($$_{list} || '') =~ /^example-\d+/} @results)) {
  485         2852  
1706 151         1166 push @output, $self->present('example', $i, $name);
1707             }
1708              
1709 117 50       834 pop @output if $output[-1] eq '';
1710              
1711 117         730 return ($self->present_data_for_head2($name, @output));
1712             }
1713              
1714             sub present_data_for_methods {
1715 7     14 0 27 my ($self) = @_;
1716              
1717 7         325 my @output;
1718              
1719 7         57 my $type = 'method';
1720              
1721 7         31 for my $name (
1722             sort map /:\s*(\w+)$/,
1723             grep /^$type/,
1724             split /\r?\n/,
1725             join "\n\n", $self->collect('includes')
1726             )
1727             {
1728 116         667 push @output, $self->present($type, $name);
1729             }
1730              
1731 7 50       182 if (@output) {
1732 7         32 unshift @output,
1733             $self->present_data_for_head1('methods',
1734             'This package provides the following methods:');
1735             }
1736              
1737 7         548 return join "\n", @output;
1738             }
1739              
1740             sub present_data_for_name {
1741 9     16 1 52 my ($self) = @_;
1742              
1743 9         41 my $name = join ' - ', map $self->collect($_), 'name', 'tagline';
1744              
1745 9 50       82 return $name ? ($self->present_data_for_head1('name', $name)) : ();
1746             }
1747              
1748             sub present_data_for_operator {
1749 6     14 1 48 my ($self, $name) = @_;
1750              
1751 6         34 my @output;
1752              
1753 6         276 my @data = $self->collect('operator', $name);
1754              
1755 6 50       43 return () if !@data;
1756              
1757 6         19 my @results = $self->data->search({name => $name});
1758              
1759 6   50     101 for my $i (1..(int grep {($$_{list} || '') =~ /^example-\d+/} @results)) {
  7         70  
1760 6         25 push @output, "B", join "\n\n",
1761             $self->collect('example', $i, $name);
1762             }
1763              
1764             return (
1765 6         222 $self->present_data_for_over($self->present_data_for_item(
1766             "operation: C<$name>",
1767             join "\n\n", @data, @output
1768             ))
1769             );
1770             }
1771              
1772             sub present_data_for_operators {
1773 6     14 0 63 my ($self) = @_;
1774              
1775 6         23 my @output;
1776              
1777 6         43 my $type = 'operator';
1778              
1779 6         48 for my $name (
1780             sort map $$_{name},
1781             $self->data->search({list => $type})
1782             )
1783             {
1784 5         17 push @output, $self->present($type, $name);
1785             }
1786              
1787 6 50       265 if (@output) {
1788 5         38 unshift @output,
1789             $self->present_data_for_head1('operators',
1790             'This package overloads the following operators:');
1791             }
1792              
1793 6         21 return join "\n", @output;
1794             }
1795              
1796             sub present_data_for_over {
1797 192     200 0 694 my ($self, @data) = @_;
1798              
1799 192         4101 return join("\n", "", "=over 4", "", grep(defined, @data), "=back");
1800             }
1801              
1802             sub present_data_for_partial {
1803 7     15 0 27 my ($self, $data) = @_;
1804              
1805 7         246 my ($file, $method, @args) = @{$data};
  7         48  
1806              
1807 7 50       21 $method = 'present' if lc($method) eq 'pdml';
1808              
1809 7         54 my $test = $self->new($file);
1810              
1811 7         65 my @output;
1812              
1813 7   33     103 $self->pass((-f $file && (@output = ($test->$method(@args)))),
1814             "$file: $method: @args");
1815              
1816 7         1758 return join "\n", @output;
1817             }
1818              
1819             sub present_data_for_partials {
1820 6     14 0 51 my ($self) = @_;
1821              
1822 6         28 my @output;
1823              
1824             push @output, $self->present('partial', $_)
1825 6         84 for map [split /\:\s*/], grep /\w/, grep !/^#/, split /\r?\n/, join "\n\n",
1826             $self->collect('partials');
1827              
1828 6         53 return join "\n", @output;
1829             }
1830              
1831             sub present_data_for_project {
1832 6     14 0 22 my ($self) = @_;
1833              
1834 6         241 my @data = $self->collect('project');
1835              
1836 6 50       39 return @data ? ($self->present_data_for_head1('project', join "\n\n", @data)) : ();
1837             }
1838              
1839             sub present_data_for_signature {
1840 5     13 0 20 my ($self) = @_;
1841              
1842 5         41 return ();
1843             }
1844              
1845             sub present_data_for_synopsis {
1846 6     14 0 50 my ($self) = @_;
1847              
1848 6         23 my @data = $self->collect('synopsis');
1849              
1850             return @data
1851 6 50       330 ? ($self->present_data_for_head1('synopsis', join "\n\n", @data))
1852             : ();
1853             }
1854              
1855             sub present_data_for_tagline {
1856 5     13 0 36 my ($self) = @_;
1857              
1858 5         12 my @data = $self->collect('tagline');
1859              
1860             return @data
1861 5 0       64 ? ($self->present_data_for_head1('tagline', join "\n\n", @data))
1862             : ();
1863             }
1864              
1865             sub present_data_for_version {
1866 6     14 0 51 my ($self) = @_;
1867              
1868 6         22 my @data = $self->collect('version');
1869              
1870             return @data
1871 6 50       253 ? ($self->present_data_for_head1('version', join "\n\n", @data))
1872             : ();
1873             }
1874              
1875             sub render {
1876 6     14 1 42 my ($self, $file) = @_;
1877              
1878 6         42 require Venus::Path;
1879              
1880 6         115 my $path = Venus::Path->new($file);
1881              
1882 6         48 $path->parent->mkdirs;
1883              
1884 6         19 my @layout = $self->collect('layout');
1885              
1886 6         235 my @output;
1887              
1888 6         40 for my $item (@layout) {
1889 25         206 push @output, grep {length} $self->present(split /:\s*/, $item);
  20         190  
1890             }
1891              
1892 6         462 $path->write(join "\n", @output);
1893              
1894 6         42 return $path;
1895             }
1896              
1897             sub same {
1898 6     14 1 202 my ($self, $this, $that, $desc) = @_;
1899              
1900 6         49 return $self->more('is_deeply', $this, $that, $desc);
1901             }
1902              
1903             sub skip {
1904 7     15 1 35 my ($self, $desc, @args) = @_;
1905              
1906 7 50       109 my ($bool) = @args ? @args : (true);
1907              
1908 7 100       92 $bool = (ref $bool eq 'CODE') ? $self->$bool : $bool;
1909              
1910 7 50       36 $self->more('plan', 'skip_all', $desc) if $bool;
1911              
1912 7         234 return $bool;
1913             }
1914              
1915             # ERRORS
1916              
1917             sub error_on_abstract {
1918 6     14 1 55 my ($self, $data) = @_;
1919              
1920 6         21 my $message = 'Test file "{{file}}" missing abstract section';
1921              
1922 6         84 my $stash = {
1923             file => $self->file,
1924             };
1925              
1926 6         65 my $result = {
1927             name => 'on.abstract',
1928             raise => true,
1929             stash => $stash,
1930             message => $message,
1931             };
1932              
1933 6         26 return $result;
1934             }
1935              
1936             sub error_on_description {
1937 6     14 1 185 my ($self, $data) = @_;
1938              
1939 6         45 my $message = 'Test file "{{file}}" missing description section';
1940              
1941 6         25 my $stash = {
1942             file => $self->file,
1943             };
1944              
1945 6         111 my $result = {
1946             name => 'on.description',
1947             raise => true,
1948             stash => $stash,
1949             message => $message,
1950             };
1951              
1952 6         61 return $result;
1953             }
1954              
1955             sub error_on_name {
1956 6     14 1 23 my ($self, $data) = @_;
1957              
1958 6         199 my $message = 'Test file "{{file}}" missing name section';
1959              
1960 6         58 my $stash = {
1961             file => $self->file,
1962             };
1963              
1964 6         27 my $result = {
1965             name => 'on.name',
1966             raise => true,
1967             stash => $stash,
1968             message => $message,
1969             };
1970              
1971 6         108 return $result;
1972             }
1973              
1974             sub error_on_synopsis {
1975 6     14 1 53 my ($self, $data) = @_;
1976              
1977 6         17 my $message = 'Test file "{{file}}" missing synopsis section';
1978              
1979 6         202 my $stash = {
1980             file => $self->file,
1981             };
1982              
1983 6         41 my $result = {
1984             name => 'on.synopsis',
1985             raise => true,
1986             stash => $stash,
1987             message => $message,
1988             };
1989              
1990 6         19 return $result;
1991             }
1992              
1993             sub error_on_tagline {
1994 6     14 1 87 my ($self, $data) = @_;
1995              
1996 6         44 my $message = 'Test file "{{file}}" missing tagline section';
1997              
1998 6         24 my $stash = {
1999             file => $self->file,
2000             };
2001              
2002 6         217 my $result = {
2003             name => 'on.tagline',
2004             raise => true,
2005             stash => $stash,
2006             message => $message,
2007             };
2008              
2009 6         45 return $result;
2010             }
2011              
2012             1;
2013              
2014              
2015              
2016             =head1 NAME
2017              
2018             Venus::Test - Test Class
2019              
2020             =cut
2021              
2022             =head1 ABSTRACT
2023              
2024             Test Class for Perl 5
2025              
2026             =cut
2027              
2028             =head1 SYNOPSIS
2029              
2030             package main;
2031              
2032             use Venus::Test;
2033              
2034             my $test = Venus::Test->new('t/Venus_Test.t');
2035              
2036             # $test->for('name');
2037              
2038             # $test->for('tagline');
2039              
2040             # $test->for('abstract');
2041              
2042             # $test->for('synopsis');
2043              
2044             # $test->done;
2045              
2046             =cut
2047              
2048             =head1 DESCRIPTION
2049              
2050             This package aims to provide a standard for documenting L derived
2051             software projects, a framework writing tests, test automation, and
2052             documentation generation.
2053              
2054             =cut
2055              
2056             =head1 ATTRIBUTES
2057              
2058             This package has the following attributes:
2059              
2060             =cut
2061              
2062             =head2 file
2063              
2064             file(string $data) (string)
2065              
2066             The file attribute is read-write, accepts C<(string)> values, and is required.
2067              
2068             I>
2069              
2070             =over 4
2071              
2072             =item file example 1
2073              
2074             # given: synopsis
2075              
2076             package main;
2077              
2078             my $set_file = $test->file("t/Venus_Test.t");
2079              
2080             # "t/Venus_Test.t"
2081              
2082             =back
2083              
2084             =over 4
2085              
2086             =item file example 2
2087              
2088             # given: synopsis
2089              
2090             # given: example-1 file
2091              
2092             package main;
2093              
2094             my $get_file = $test->file;
2095              
2096             # "t/Venus_Test.t"
2097              
2098             =back
2099              
2100             =cut
2101              
2102             =head1 INHERITS
2103              
2104             This package inherits behaviors from:
2105              
2106             L
2107              
2108             =cut
2109              
2110             =head1 INTEGRATES
2111              
2112             This package integrates behaviors from:
2113              
2114             L
2115              
2116             =cut
2117              
2118             =head1 FUNCTIONS
2119              
2120             This package provides the following functions:
2121              
2122             =cut
2123              
2124             =head2 test
2125              
2126             test(string $file) (Venus::Test)
2127              
2128             The test function is exported automatically and returns a L object
2129             for the test file given.
2130              
2131             I>
2132              
2133             =over 4
2134              
2135             =item test example 1
2136              
2137             package main;
2138              
2139             use Venus::Test;
2140              
2141             my $test = test 't/Venus_Test.t';
2142              
2143             # bless(..., "Venus::Test")
2144              
2145             =back
2146              
2147             =cut
2148              
2149             =head1 METHODS
2150              
2151             This package provides the following methods:
2152              
2153             =cut
2154              
2155             =head2 collect
2156              
2157             collect(string $name, any @args) (any)
2158              
2159             The collect method dispatches to the C method
2160             indictated by the first argument and returns the result. Returns an arrayref in
2161             scalar context, and a list in list context.
2162              
2163             I>
2164              
2165             =over 4
2166              
2167             =item collect example 1
2168              
2169             # given: synopsis
2170              
2171             package main;
2172              
2173             my ($collect) = $test->collect('name');
2174              
2175             # "Venus::Test"
2176              
2177             =back
2178              
2179             =over 4
2180              
2181             =item collect example 2
2182              
2183             # given: synopsis
2184              
2185             package main;
2186              
2187             my $collect = $test->collect('name');
2188              
2189             # ["Venus::Test"]
2190              
2191             =back
2192              
2193             =cut
2194              
2195             =head2 collect_data_for_abstract
2196              
2197             collect_data_for_abstract() (arrayref)
2198              
2199             The collect_data_for_abstract method uses L to fetch data for the C
2200             section and returns the data. Returns an arrayref in scalar context, and a list
2201             in list context.
2202              
2203             I>
2204              
2205             =over 4
2206              
2207             =item collect_data_for_abstract example 1
2208              
2209             # =abstract
2210             #
2211             # Example Test Documentation
2212             #
2213             # =cut
2214              
2215             package main;
2216              
2217             use Venus::Test 'test';
2218              
2219             my $test = test 't/path/pod/example';
2220              
2221             my $collect_data_for_abstract = $test->collect_data_for_abstract;
2222              
2223             # ["Example Test Documentation"]
2224              
2225             =back
2226              
2227             =over 4
2228              
2229             =item collect_data_for_abstract example 2
2230              
2231             # =abstract
2232             #
2233             # Example Test Documentation
2234             #
2235             # =cut
2236              
2237             package main;
2238              
2239             use Venus::Test 'test';
2240              
2241             my $test = test 't/path/pod/example';
2242              
2243             my ($collect_data_for_abstract) = $test->collect_data_for_abstract;
2244              
2245             # "Example Test Documentation"
2246              
2247             =back
2248              
2249             =cut
2250              
2251             =head2 collect_data_for_attribute
2252              
2253             collect_data_for_attribute(string $name) (arrayref)
2254              
2255             The collect_data_for_attribute method uses L to fetch data for the
2256             C section and returns the data. Returns an arrayref in scalar
2257             context, and a list in list context.
2258              
2259             I>
2260              
2261             =over 4
2262              
2263             =item collect_data_for_attribute example 1
2264              
2265             # =attribute name
2266             #
2267             # The name attribute is read-write, optional, and holds a string.
2268             #
2269             # =cut
2270             #
2271             # =example-1 name
2272             #
2273             # # given: synopsis
2274             #
2275             # my $name = $example->name;
2276             #
2277             # # "..."
2278             #
2279             # =cut
2280              
2281             package main;
2282              
2283             use Venus::Test 'test';
2284              
2285             my $test = test 't/path/pod/example';
2286              
2287             my $collect_data_for_attribute = $test->collect_data_for_attribute('name');
2288              
2289             # ["The name attribute is read-write, optional, and holds a string."]
2290              
2291             =back
2292              
2293             =over 4
2294              
2295             =item collect_data_for_attribute example 2
2296              
2297             # =attribute name
2298             #
2299             # The name attribute is read-write, optional, and holds a string.
2300             #
2301             # =cut
2302             #
2303             # =example-1 name
2304             #
2305             # # given: synopsis
2306             #
2307             # my $name = $example->name;
2308             #
2309             # # "..."
2310             #
2311             # =cut
2312              
2313             package main;
2314              
2315             use Venus::Test 'test';
2316              
2317             my $test = test 't/path/pod/example';
2318              
2319             my ($collect_data_for_attribute) = $test->collect_data_for_attribute('name');
2320              
2321             # "The name attribute is read-write, optional, and holds a string."
2322              
2323             =back
2324              
2325             =cut
2326              
2327             =head2 collect_data_for_authors
2328              
2329             collect_data_for_authors() (arrayref)
2330              
2331             The collect_data_for_authors method uses L to fetch data for the
2332             C section and returns the data. Returns an arrayref in scalar context,
2333             and a list in list context.
2334              
2335             I>
2336              
2337             =over 4
2338              
2339             =item collect_data_for_authors example 1
2340              
2341             # =authors
2342             #
2343             # Awncorp, C
2344             #
2345             # =cut
2346              
2347             package main;
2348              
2349             use Venus::Test 'test';
2350              
2351             my $test = test 't/path/pod/example';
2352              
2353             my $collect_data_for_authors = $test->collect_data_for_authors;
2354              
2355             # ["Awncorp, C"]
2356              
2357             =back
2358              
2359             =over 4
2360              
2361             =item collect_data_for_authors example 2
2362              
2363             # =authors
2364             #
2365             # Awncorp, C
2366             #
2367             # =cut
2368              
2369             package main;
2370              
2371             use Venus::Test 'test';
2372              
2373             my $test = test 't/path/pod/example';
2374              
2375             my ($collect_data_for_authors) = $test->collect_data_for_authors;
2376              
2377             # "Awncorp, C"
2378              
2379             =back
2380              
2381             =cut
2382              
2383             =head2 collect_data_for_description
2384              
2385             collect_data_for_description() (arrayref)
2386              
2387             The collect_data_for_description method uses L to fetch data for the C
2388             section and returns the data. Returns an arrayref in scalar context, and a list
2389             in list context.
2390              
2391             I>
2392              
2393             =over 4
2394              
2395             =item collect_data_for_description example 1
2396              
2397             # =description
2398             #
2399             # This package provides an example class.
2400             #
2401             # =cut
2402              
2403             package main;
2404              
2405             use Venus::Test 'test';
2406              
2407             my $test = test 't/path/pod/example';
2408              
2409             my $collect_data_for_description = $test->collect_data_for_description;
2410              
2411             # ["This package provides an example class."]
2412              
2413             =back
2414              
2415             =over 4
2416              
2417             =item collect_data_for_description example 2
2418              
2419             # =description
2420             #
2421             # This package provides an example class.
2422             #
2423             # =cut
2424              
2425             package main;
2426              
2427             use Venus::Test 'test';
2428              
2429             my $test = test 't/path/pod/example';
2430              
2431             my ($collect_data_for_description) = $test->collect_data_for_description;
2432              
2433             # "This package provides an example class."
2434              
2435             =back
2436              
2437             =cut
2438              
2439             =head2 collect_data_for_encoding
2440              
2441             collect_data_for_encoding() (arrayref)
2442              
2443             The collect_data_for_encoding method uses L to fetch data for the C
2444             section and returns the data. Returns an arrayref in scalar context, and a list
2445             in list context.
2446              
2447             I>
2448              
2449             =over 4
2450              
2451             =item collect_data_for_encoding example 1
2452              
2453             # =encoding
2454             #
2455             # utf8
2456             #
2457             # =cut
2458              
2459             package main;
2460              
2461             use Venus::Test 'test';
2462              
2463             my $test = test 't/path/pod/example';
2464              
2465             my $collect_data_for_encoding = $test->collect_data_for_encoding;
2466              
2467             # ["UTF8"]
2468              
2469             =back
2470              
2471             =over 4
2472              
2473             =item collect_data_for_encoding example 2
2474              
2475             # =encoding
2476             #
2477             # utf8
2478             #
2479             # =cut
2480              
2481             package main;
2482              
2483             use Venus::Test 'test';
2484              
2485             my $test = test 't/path/pod/example';
2486              
2487             my ($collect_data_for_encoding) = $test->collect_data_for_encoding;
2488              
2489             # "UTF8"
2490              
2491             =back
2492              
2493             =cut
2494              
2495             =head2 collect_data_for_error
2496              
2497             collect_data_for_error(string $name) (arrayref)
2498              
2499             The collect_data_for_error method uses L to fetch data for the C
2500             $name> section and returns the data. Returns an arrayref in scalar context, and
2501             a list in list context.
2502              
2503             I>
2504              
2505             =over 4
2506              
2507             =item collect_data_for_error example 1
2508              
2509             # =error error_on_unknown
2510             #
2511             # This package may raise an error_on_unknown error.
2512             #
2513             # =cut
2514             #
2515             # =example-1 error_on_unknown
2516             #
2517             # # given: synopsis
2518             #
2519             # my $error = $example->catch('error', {
2520             # with => 'error_on_unknown',
2521             # });
2522             #
2523             # # "..."
2524             #
2525             # =cut
2526              
2527             package main;
2528              
2529             use Venus::Test 'test';
2530              
2531             my $test = test 't/path/pod/example';
2532              
2533             my $collect_data_for_error = $test->collect_data_for_error('error_on_unknown');
2534              
2535             # ["This package may raise an error_on_unknown error."]
2536              
2537             =back
2538              
2539             =over 4
2540              
2541             =item collect_data_for_error example 2
2542              
2543             # =error error_on_unknown
2544             #
2545             # This package may raise an error_on_unknown error.
2546             #
2547             # =cut
2548             #
2549             # =example-1 error_on_unknown
2550             #
2551             # # given: synopsis
2552             #
2553             # my $error = $example->catch('error', {
2554             # with => 'error_on_unknown',
2555             # });
2556             #
2557             # # "..."
2558             #
2559             # =cut
2560              
2561             package main;
2562              
2563             use Venus::Test 'test';
2564              
2565             my $test = test 't/path/pod/example';
2566              
2567             my ($collect_data_for_error) = $test->collect_data_for_error('error_on_unknown');
2568              
2569             # "This package may raise an error_on_unknown error."
2570              
2571             =back
2572              
2573             =cut
2574              
2575             =head2 collect_data_for_example
2576              
2577             collect_data_for_example(number $numberm string $name) (arrayref)
2578              
2579             The collect_data_for_example method uses L to fetch data for the
2580             C section and returns the data. Returns an arrayref in
2581             scalar context, and a list in list context.
2582              
2583             I>
2584              
2585             =over 4
2586              
2587             =item collect_data_for_example example 1
2588              
2589             # =attribute name
2590             #
2591             # The name attribute is read-write, optional, and holds a string.
2592             #
2593             # =cut
2594             #
2595             # =example-1 name
2596             #
2597             # # given: synopsis
2598             #
2599             # my $name = $example->name;
2600             #
2601             # # "..."
2602             #
2603             # =cut
2604              
2605             package main;
2606              
2607             use Venus::Test 'test';
2608              
2609             my $test = test 't/path/pod/example';
2610              
2611             my $collect_data_for_example = $test->collect_data_for_example(1, 'name');
2612              
2613             # [' # given: synopsis', ' my $name = $example->name;', ' # "..."']
2614              
2615             =back
2616              
2617             =over 4
2618              
2619             =item collect_data_for_example example 2
2620              
2621             # =attribute name
2622             #
2623             # The name attribute is read-write, optional, and holds a string.
2624             #
2625             # =cut
2626             #
2627             # =example-1 name
2628             #
2629             # # given: synopsis
2630             #
2631             # my $name = $example->name;
2632             #
2633             # # "..."
2634             #
2635             # =cut
2636              
2637             package main;
2638              
2639             use Venus::Test 'test';
2640              
2641             my $test = test 't/path/pod/example';
2642              
2643             my @collect_data_for_example = $test->collect_data_for_example(1, 'name');
2644              
2645             # (' # given: synopsis', ' my $name = $example->name;', ' # "..."')
2646              
2647             =back
2648              
2649             =cut
2650              
2651             =head2 collect_data_for_feature
2652              
2653             collect_data_for_feature(string $name) (arrayref)
2654              
2655             The collect_data_for_feature method uses L to fetch data for the
2656             C section and returns the data. Returns an arrayref in scalar
2657             context, and a list in list context.
2658              
2659             I>
2660              
2661             =over 4
2662              
2663             =item collect_data_for_feature example 1
2664              
2665             # =feature noop
2666             #
2667             # This package is no particularly useful features.
2668             #
2669             # =cut
2670              
2671             package main;
2672              
2673             use Venus::Test 'test';
2674              
2675             my $test = test 't/path/pod/example';
2676              
2677             my $collect_data_for_feature = $test->collect_data_for_feature('noop');
2678              
2679             # ["This package is no particularly useful features."]
2680              
2681             =back
2682              
2683             =over 4
2684              
2685             =item collect_data_for_feature example 2
2686              
2687             # =feature noop
2688             #
2689             # This package is no particularly useful features.
2690             #
2691             # =cut
2692              
2693             package main;
2694              
2695             use Venus::Test 'test';
2696              
2697             my $test = test 't/path/pod/example';
2698              
2699             my ($collect_data_for_feature) = $test->collect_data_for_feature('noop');
2700              
2701             # "This package is no particularly useful features."
2702              
2703             =back
2704              
2705             =cut
2706              
2707             =head2 collect_data_for_function
2708              
2709             collect_data_for_function(string $name) (arrayref)
2710              
2711             The collect_data_for_function method uses L to fetch data for the
2712             C section and returns the data. Returns an arrayref in scalar
2713             context, and a list in list context.
2714              
2715             I>
2716              
2717             =over 4
2718              
2719             =item collect_data_for_function example 1
2720              
2721             # =function eg
2722             #
2723             # The eg function returns a new instance of Example.
2724             #
2725             # =cut
2726             #
2727             # =example-1 name
2728             #
2729             # # given: synopsis
2730             #
2731             # my $example = eg();
2732             #
2733             # # "..."
2734             #
2735             # =cut
2736              
2737             package main;
2738              
2739             use Venus::Test 'test';
2740              
2741             my $test = test 't/path/pod/example';
2742              
2743             my $collect_data_for_function = $test->collect_data_for_function('eg');
2744              
2745             # ["The eg function returns a new instance of Example."]
2746              
2747             =back
2748              
2749             =over 4
2750              
2751             =item collect_data_for_function example 2
2752              
2753             # =function eg
2754             #
2755             # The eg function returns a new instance of Example.
2756             #
2757             # =cut
2758             #
2759             # =example-1 name
2760             #
2761             # # given: synopsis
2762             #
2763             # my $example = eg();
2764             #
2765             # # "..."
2766             #
2767             # =cut
2768              
2769             package main;
2770              
2771             use Venus::Test 'test';
2772              
2773             my $test = test 't/path/pod/example';
2774              
2775             my ($collect_data_for_function) = $test->collect_data_for_function('eg');
2776              
2777             # "The eg function returns a new instance of Example."
2778              
2779             =back
2780              
2781             =cut
2782              
2783             =head2 collect_data_for_includes
2784              
2785             collect_data_for_includes() (arrayref)
2786              
2787             The collect_data_for_includes method uses L to fetch data for the
2788             C section and returns the data. Returns an arrayref in scalar
2789             context, and a list in list context.
2790              
2791             I>
2792              
2793             =over 4
2794              
2795             =item collect_data_for_includes example 1
2796              
2797             # =includes
2798             #
2799             # function: eg
2800             #
2801             # method: prepare
2802             # method: execute
2803             #
2804             # =cut
2805              
2806             package main;
2807              
2808             use Venus::Test 'test';
2809              
2810             my $test = test 't/path/pod/example';
2811              
2812             my $collect_data_for_includes = $test->collect_data_for_includes;
2813              
2814             # ["function: eg", "method: prepare", "method: execute"]
2815              
2816             =back
2817              
2818             =over 4
2819              
2820             =item collect_data_for_includes example 2
2821              
2822             # =includes
2823             #
2824             # function: eg
2825             #
2826             # method: prepare
2827             # method: execute
2828             #
2829             # =cut
2830              
2831             package main;
2832              
2833             use Venus::Test 'test';
2834              
2835             my $test = test 't/path/pod/example';
2836              
2837             my @collect_data_for_includes = $test->collect_data_for_includes;
2838              
2839             # ("function: eg", "method: prepare", "method: execute")
2840              
2841             =back
2842              
2843             =cut
2844              
2845             =head2 collect_data_for_inherits
2846              
2847             collect_data_for_inherits() (arrayref)
2848              
2849             The collect_data_for_inherits method uses L to fetch data for the C
2850             section and returns the data. Returns an arrayref in scalar context, and a list
2851             in list context.
2852              
2853             I>
2854              
2855             =over 4
2856              
2857             =item collect_data_for_inherits example 1
2858              
2859             # =inherits
2860             #
2861             # Venus::Core::Class
2862             #
2863             # =cut
2864              
2865             package main;
2866              
2867             use Venus::Test 'test';
2868              
2869             my $test = test 't/path/pod/example';
2870              
2871             my $collect_data_for_inherits = $test->collect_data_for_inherits;
2872              
2873             # ["Venus::Core::Class"]
2874              
2875             =back
2876              
2877             =over 4
2878              
2879             =item collect_data_for_inherits example 2
2880              
2881             # =inherits
2882             #
2883             # Venus::Core::Class
2884             #
2885             # =cut
2886              
2887             package main;
2888              
2889             use Venus::Test 'test';
2890              
2891             my $test = test 't/path/pod/example';
2892              
2893             my ($collect_data_for_inherits) = $test->collect_data_for_inherits;
2894              
2895             # "Venus::Core::Class"
2896              
2897             =back
2898              
2899             =cut
2900              
2901             =head2 collect_data_for_integrates
2902              
2903             collect_data_for_integrates() (arrayref)
2904              
2905             The collect_data_for_integrates method uses L to fetch data for the C
2906             section and returns the data. Returns an arrayref in scalar context, and a list
2907             in list context.
2908              
2909             I>
2910              
2911             =over 4
2912              
2913             =item collect_data_for_integrates example 1
2914              
2915             # =integrates
2916             #
2917             # Venus::Role::Catchable
2918             # Venus::Role::Throwable
2919             #
2920             # =cut
2921              
2922             package main;
2923              
2924             use Venus::Test 'test';
2925              
2926             my $test = test 't/path/pod/example';
2927              
2928             my $collect_data_for_integrates = $test->collect_data_for_integrates;
2929              
2930             # ["Venus::Role::Catchable\nVenus::Role::Throwable"]
2931              
2932             =back
2933              
2934             =over 4
2935              
2936             =item collect_data_for_integrates example 2
2937              
2938             # =integrates
2939             #
2940             # Venus::Role::Catchable
2941             # Venus::Role::Throwable
2942             #
2943             # =cut
2944              
2945             package main;
2946              
2947             use Venus::Test 'test';
2948              
2949             my $test = test 't/path/pod/example';
2950              
2951             my ($collect_data_for_integrates) = $test->collect_data_for_integrates;
2952              
2953             # "Venus::Role::Catchable\nVenus::Role::Throwable"
2954              
2955             =back
2956              
2957             =cut
2958              
2959             =head2 collect_data_for_layout
2960              
2961             collect_data_for_layout() (arrayref)
2962              
2963             The collect_data_for_layout method uses L to fetch data for the C
2964             section and returns the data. Returns an arrayref in scalar context, and a list
2965             in list context.
2966              
2967             I>
2968              
2969             =over 4
2970              
2971             =item collect_data_for_layout example 1
2972              
2973             # =layout
2974             #
2975             # encoding
2976             # name
2977             # synopsis
2978             # description
2979             # attributes: attribute
2980             # authors
2981             # license
2982             #
2983             # =cut
2984              
2985             package main;
2986              
2987             use Venus::Test 'test';
2988              
2989             my $test = test 't/path/pod/example';
2990              
2991             my $collect_data_for_layout = $test->collect_data_for_layout;
2992              
2993             # ["encoding\nname\nsynopsis\ndescription\nattributes: attribute\nauthors\nlicense"]
2994              
2995             =back
2996              
2997             =over 4
2998              
2999             =item collect_data_for_layout example 2
3000              
3001             # =layout
3002             #
3003             # encoding
3004             # name
3005             # synopsis
3006             # description
3007             # attributes: attribute
3008             # authors
3009             # license
3010             #
3011             # =cut
3012              
3013             package main;
3014              
3015             use Venus::Test 'test';
3016              
3017             my $test = test 't/path/pod/example';
3018              
3019             my ($collect_data_for_layout) = $test->collect_data_for_layout;
3020              
3021             # "encoding\nname\nsynopsis\ndescription\nattributes: attribute\nauthors\nlicense"
3022              
3023             =back
3024              
3025             =cut
3026              
3027             =head2 collect_data_for_libraries
3028              
3029             collect_data_for_libraries() (arrayref)
3030              
3031             The collect_data_for_libraries method uses L to fetch data for the C
3032             section and returns the data. Returns an arrayref in scalar context, and a list
3033             in list context.
3034              
3035             I>
3036              
3037             =over 4
3038              
3039             =item collect_data_for_libraries example 1
3040              
3041             # =libraries
3042             #
3043             # Venus::Check
3044             #
3045             # =cut
3046              
3047             package main;
3048              
3049             use Venus::Test 'test';
3050              
3051             my $test = test 't/path/pod/example';
3052              
3053             my $collect_data_for_libraries = $test->collect_data_for_libraries;
3054              
3055             # ["Venus::Check"]
3056              
3057             =back
3058              
3059             =over 4
3060              
3061             =item collect_data_for_libraries example 2
3062              
3063             # =libraries
3064             #
3065             # Venus::Check
3066             #
3067             # =cut
3068              
3069             package main;
3070              
3071             use Venus::Test 'test';
3072              
3073             my $test = test 't/path/pod/example';
3074              
3075             my ($collect_data_for_libraries) = $test->collect_data_for_libraries;
3076              
3077             # "Venus::Check"
3078              
3079             =back
3080              
3081             =cut
3082              
3083             =head2 collect_data_for_license
3084              
3085             collect_data_for_license() (arrayref)
3086              
3087             The collect_data_for_license method uses L to fetch data for the C
3088             section and returns the data. Returns an arrayref in scalar context, and a list
3089             in list context.
3090              
3091             I>
3092              
3093             =over 4
3094              
3095             =item collect_data_for_license example 1
3096              
3097             # =license
3098             #
3099             # No license granted.
3100             #
3101             # =cut
3102              
3103             package main;
3104              
3105             use Venus::Test 'test';
3106              
3107             my $test = test 't/path/pod/example';
3108              
3109             my $collect_data_for_license = $test->collect_data_for_license;
3110              
3111             # ["No license granted."]
3112              
3113             =back
3114              
3115             =over 4
3116              
3117             =item collect_data_for_license example 2
3118              
3119             # =license
3120             #
3121             # No license granted.
3122             #
3123             # =cut
3124              
3125             package main;
3126              
3127             use Venus::Test 'test';
3128              
3129             my $test = test 't/path/pod/example';
3130              
3131             my ($collect_data_for_license) = $test->collect_data_for_license;
3132              
3133             # "No license granted."
3134              
3135             =back
3136              
3137             =cut
3138              
3139             =head2 collect_data_for_message
3140              
3141             collect_data_for_message(string $name) (arrayref)
3142              
3143             The collect_data_for_message method uses L to fetch data for the
3144             C section and returns the data. Returns an arrayref in scalar
3145             context, and a list in list context.
3146              
3147             I>
3148              
3149             =over 4
3150              
3151             =item collect_data_for_message example 1
3152              
3153             # =message accept
3154             #
3155             # The accept message represents acceptance.
3156             #
3157             # =cut
3158             #
3159             # =example-1 accept
3160             #
3161             # # given: synopsis
3162             #
3163             # my $accept = $example->accept;
3164             #
3165             # # "..."
3166             #
3167             # =cut
3168              
3169             package main;
3170              
3171             use Venus::Test 'test';
3172              
3173             my $test = test 't/path/pod/example';
3174              
3175             my $collect_data_for_message = $test->collect_data_for_message('accept');
3176              
3177             # ["The accept message represents acceptance."]
3178              
3179             =back
3180              
3181             =over 4
3182              
3183             =item collect_data_for_message example 2
3184              
3185             # =message accept
3186             #
3187             # The accept message represents acceptance.
3188             #
3189             # =cut
3190             #
3191             # =example-1 accept
3192             #
3193             # # given: synopsis
3194             #
3195             # my $accept = $example->accept;
3196             #
3197             # # "..."
3198             #
3199             # =cut
3200              
3201             package main;
3202              
3203             use Venus::Test 'test';
3204              
3205             my $test = test 't/path/pod/example';
3206              
3207             my ($collect_data_for_message) = $test->collect_data_for_message('accept');
3208              
3209             # "The accept message represents acceptance."
3210              
3211             =back
3212              
3213             =cut
3214              
3215             =head2 collect_data_for_metadata
3216              
3217             collect_data_for_metadata(string $name) (arrayref)
3218              
3219             The collect_data_for_metadata method uses L to fetch data for the C
3220             section and returns the data. Returns an arrayref in scalar context, and a list
3221             in list context.
3222              
3223             I>
3224              
3225             =over 4
3226              
3227             =item collect_data_for_metadata example 1
3228              
3229             # =method prepare
3230             #
3231             # The prepare method prepares for execution.
3232             #
3233             # =cut
3234             #
3235             # =metadata prepare
3236             #
3237             # {since => 1.2.3}
3238             #
3239             # =cut
3240             #
3241             # =example-1 prepare
3242             #
3243             # # given: synopsis
3244             #
3245             # my $prepare = $example->prepare;
3246             #
3247             # # "..."
3248             #
3249             # =cut
3250              
3251             package main;
3252              
3253             use Venus::Test 'test';
3254              
3255             my $test = test 't/path/pod/example';
3256              
3257             my $collect_data_for_metadata = $test->collect_data_for_metadata('prepare');
3258              
3259             # ["{since => 1.2.3}"]
3260              
3261             =back
3262              
3263             =over 4
3264              
3265             =item collect_data_for_metadata example 2
3266              
3267             # =method prepare
3268             #
3269             # The prepare method prepares for execution.
3270             #
3271             # =cut
3272             #
3273             # =metadata prepare
3274             #
3275             # {since => 1.2.3}
3276             #
3277             # =cut
3278             #
3279             # =example-1 prepare
3280             #
3281             # # given: synopsis
3282             #
3283             # my $prepare = $example->prepare;
3284             #
3285             # # "..."
3286             #
3287             # =cut
3288              
3289             package main;
3290              
3291             use Venus::Test 'test';
3292              
3293             my $test = test 't/path/pod/example';
3294              
3295             my ($collect_data_for_metadata) = $test->collect_data_for_metadata('prepare');
3296              
3297             # "{since => 1.2.3}"
3298              
3299             =back
3300              
3301             =cut
3302              
3303             =head2 collect_data_for_method
3304              
3305             collect_data_for_method(string $name) (arrayref)
3306              
3307             The collect_data_for_method method uses L to fetch data for the C
3308             section and returns the data. Returns an arrayref in scalar context, and a list
3309             in list context.
3310              
3311             I>
3312              
3313             =over 4
3314              
3315             =item collect_data_for_method example 1
3316              
3317             # =method execute
3318             #
3319             # The execute method executes the logic.
3320             #
3321             # =cut
3322             #
3323             # =metadata execute
3324             #
3325             # {since => 1.2.3}
3326             #
3327             # =cut
3328             #
3329             # =example-1 execute
3330             #
3331             # # given: synopsis
3332             #
3333             # my $execute = $example->execute;
3334             #
3335             # # "..."
3336             #
3337             # =cut
3338              
3339             package main;
3340              
3341             use Venus::Test 'test';
3342              
3343             my $test = test 't/path/pod/example';
3344              
3345             my $collect_data_for_method = $test->collect_data_for_method('execute');
3346              
3347             # ["The execute method executes the logic."]
3348              
3349             =back
3350              
3351             =over 4
3352              
3353             =item collect_data_for_method example 2
3354              
3355             # =method execute
3356             #
3357             # The execute method executes the logic.
3358             #
3359             # =cut
3360             #
3361             # =metadata execute
3362             #
3363             # {since => 1.2.3}
3364             #
3365             # =cut
3366             #
3367             # =example-1 execute
3368             #
3369             # # given: synopsis
3370             #
3371             # my $execute = $example->execute;
3372             #
3373             # # "..."
3374             #
3375             # =cut
3376              
3377             package main;
3378              
3379             use Venus::Test 'test';
3380              
3381             my $test = test 't/path/pod/example';
3382              
3383             my ($collect_data_for_method) = $test->collect_data_for_method('execute');
3384              
3385             # "The execute method executes the logic."
3386              
3387             =back
3388              
3389             =cut
3390              
3391             =head2 collect_data_for_name
3392              
3393             collect_data_for_name() (arrayref)
3394              
3395             The collect_data_for_name method uses L to fetch data for the C
3396             section and returns the data. Returns an arrayref in scalar context, and a list
3397             in list context.
3398              
3399             I>
3400              
3401             =over 4
3402              
3403             =item collect_data_for_name example 1
3404              
3405             # =name
3406              
3407             # Example
3408              
3409             # =cut
3410              
3411             package main;
3412              
3413             use Venus::Test 'test';
3414              
3415             my $test = test 't/path/pod/example';
3416              
3417             my $collect_data_for_name = $test->collect_data_for_name;
3418              
3419             # ["Example"]
3420              
3421             =back
3422              
3423             =over 4
3424              
3425             =item collect_data_for_name example 2
3426              
3427             # =name
3428              
3429             # Example
3430              
3431             # =cut
3432              
3433             package main;
3434              
3435             use Venus::Test 'test';
3436              
3437             my $test = test 't/path/pod/example';
3438              
3439             my ($collect_data_for_name) = $test->collect_data_for_name;
3440              
3441             # "Example"
3442              
3443             =back
3444              
3445             =cut
3446              
3447             =head2 collect_data_for_operator
3448              
3449             collect_data_for_operator(string $name) (arrayref)
3450              
3451             The collect_data_for_operator method uses L to fetch data for the C
3452             section and returns the data. Returns an arrayref in scalar context, and a list
3453             in list context.
3454              
3455             I>
3456              
3457             =over 4
3458              
3459             =item collect_data_for_operator example 1
3460              
3461             # =operator ("")
3462             #
3463             # This package overloads the C<""> operator.
3464             #
3465             # =cut
3466             #
3467             # =example-1 ("")
3468             #
3469             # # given: synopsis
3470             #
3471             # my $string = "$example";
3472             #
3473             # # "..."
3474             #
3475             # =cut
3476              
3477             package main;
3478              
3479             use Venus::Test 'test';
3480              
3481             my $test = test 't/path/pod/example';
3482              
3483             my $collect_data_for_operator = $test->collect_data_for_operator('("")');
3484              
3485             # ['This package overloads the C<""> operator.']
3486              
3487             =back
3488              
3489             =over 4
3490              
3491             =item collect_data_for_operator example 2
3492              
3493             # =operator ("")
3494             #
3495             # This package overloads the C<""> operator.
3496             #
3497             # =cut
3498             #
3499             # =example-1 ("")
3500             #
3501             # # given: synopsis
3502             #
3503             # my $string = "$example";
3504             #
3505             # # "..."
3506             #
3507             # =cut
3508              
3509             package main;
3510              
3511             use Venus::Test 'test';
3512              
3513             my $test = test 't/path/pod/example';
3514              
3515             my ($collect_data_for_operator) = $test->collect_data_for_operator('("")');
3516              
3517             # 'This package overloads the C<""> operator.'
3518              
3519             =back
3520              
3521             =cut
3522              
3523             =head2 collect_data_for_partials
3524              
3525             collect_data_for_partials() (arrayref)
3526              
3527             The collect_data_for_partials method uses L to fetch data for the C
3528             section and returns the data. Returns an arrayref in scalar context, and a list
3529             in list context.
3530              
3531             I>
3532              
3533             =over 4
3534              
3535             =item collect_data_for_partials example 1
3536              
3537             # =partials
3538             #
3539             # t/path/to/other.t: present: authors
3540             # t/path/to/other.t: present: license
3541             #
3542             # =cut
3543              
3544             package main;
3545              
3546             use Venus::Test 'test';
3547              
3548             my $test = test 't/path/pod/example';
3549              
3550             my $collect_data_for_partials = $test->collect_data_for_partials;
3551              
3552             # ["t/path/to/other.t: present: authors\nt/path/to/other.t: present: license"]
3553              
3554             =back
3555              
3556             =over 4
3557              
3558             =item collect_data_for_partials example 2
3559              
3560             # =partials
3561             #
3562             # t/path/to/other.t: present: authors
3563             # t/path/to/other.t: present: license
3564             #
3565             # =cut
3566              
3567             package main;
3568              
3569             use Venus::Test 'test';
3570              
3571             my $test = test 't/path/pod/example';
3572              
3573             my ($collect_data_for_partials) = $test->collect_data_for_partials;
3574              
3575             # "t/path/to/other.t: present: authors\nt/path/to/other.t: present: license"
3576              
3577             =back
3578              
3579             =cut
3580              
3581             =head2 collect_data_for_project
3582              
3583             collect_data_for_project() (arrayref)
3584              
3585             The collect_data_for_project method uses L to fetch data for the C
3586             section and returns the data. Returns an arrayref in scalar context, and a list
3587             in list context.
3588              
3589             I>
3590              
3591             =over 4
3592              
3593             =item collect_data_for_project example 1
3594              
3595             # =project
3596             #
3597             # https://github.com/awncorp/example
3598             #
3599             # =cut
3600              
3601             package main;
3602              
3603             use Venus::Test 'test';
3604              
3605             my $test = test 't/path/pod/example';
3606              
3607             my $collect_data_for_project = $test->collect_data_for_project;
3608              
3609             # ["https://github.com/awncorp/example"]
3610              
3611             =back
3612              
3613             =over 4
3614              
3615             =item collect_data_for_project example 2
3616              
3617             # =project
3618             #
3619             # https://github.com/awncorp/example
3620             #
3621             # =cut
3622              
3623             package main;
3624              
3625             use Venus::Test 'test';
3626              
3627             my $test = test 't/path/pod/example';
3628              
3629             my ($collect_data_for_project) = $test->collect_data_for_project;
3630              
3631             # "https://github.com/awncorp/example"
3632              
3633             =back
3634              
3635             =cut
3636              
3637             =head2 collect_data_for_signature
3638              
3639             collect_data_for_signature(string $name) (arrayref)
3640              
3641             The collect_data_for_signature method uses L to fetch data for the C
3642             section and returns the data. Returns an arrayref in scalar context, and a list
3643             in list context.
3644              
3645             I>
3646              
3647             =over 4
3648              
3649             =item collect_data_for_signature example 1
3650              
3651             # =method execute
3652             #
3653             # The execute method executes the logic.
3654             #
3655             # =cut
3656             #
3657             # =signature execute
3658             #
3659             # execute() (boolean)
3660             #
3661             # =cut
3662             #
3663             # =metadata execute
3664             #
3665             # {since => 1.2.3}
3666             #
3667             # =cut
3668             #
3669             # =example-1 execute
3670             #
3671             # # given: synopsis
3672             #
3673             # my $execute = $example->execute;
3674             #
3675             # # "..."
3676             #
3677             # =cut
3678              
3679             package main;
3680              
3681             use Venus::Test 'test';
3682              
3683             my $test = test 't/path/pod/example';
3684              
3685             my $collect_data_for_signature = $test->collect_data_for_signature('execute');
3686              
3687             # [" execute() (boolean)"]
3688              
3689             =back
3690              
3691             =over 4
3692              
3693             =item collect_data_for_signature example 2
3694              
3695             # =method execute
3696             #
3697             # The execute method executes the logic.
3698             #
3699             # =cut
3700             #
3701             # =signature execute
3702             #
3703             # execute() (boolean)
3704             #
3705             # =cut
3706             #
3707             # =metadata execute
3708             #
3709             # {since => 1.2.3}
3710             #
3711             # =cut
3712             #
3713             # =example-1 execute
3714             #
3715             # # given: synopsis
3716             #
3717             # my $execute = $example->execute;
3718             #
3719             # # "..."
3720             #
3721             # =cut
3722              
3723             package main;
3724              
3725             use Venus::Test 'test';
3726              
3727             my $test = test 't/path/pod/example';
3728              
3729             my ($collect_data_for_signature) = $test->collect_data_for_signature('execute');
3730              
3731             # " execute() (boolean)"
3732              
3733             =back
3734              
3735             =cut
3736              
3737             =head2 collect_data_for_synopsis
3738              
3739             collect_data_for_synopsis() (arrayref)
3740              
3741             The collect_data_for_synopsis method uses L to fetch data for the C
3742             section and returns the data. Returns an arrayref in scalar context, and a list
3743             in list context.
3744              
3745             I>
3746              
3747             =over 4
3748              
3749             =item collect_data_for_synopsis example 1
3750              
3751             # =synopsis
3752             #
3753             # use Example;
3754             #
3755             # my $example = Example->new;
3756             #
3757             # # bless(..., "Example")
3758             #
3759             # =cut
3760              
3761             package main;
3762              
3763             use Venus::Test 'test';
3764              
3765             my $test = test 't/path/pod/example';
3766              
3767             my $collect_data_for_synopsis = $test->collect_data_for_synopsis;
3768              
3769             # [' use Example;', ' my $example = Example->new;', ' # bless(..., "Example")']
3770              
3771             =back
3772              
3773             =over 4
3774              
3775             =item collect_data_for_synopsis example 2
3776              
3777             # =synopsis
3778             #
3779             # use Example;
3780             #
3781             # my $example = Example->new;
3782             #
3783             # # bless(..., "Example")
3784             #
3785             # =cut
3786              
3787             package main;
3788              
3789             use Venus::Test 'test';
3790              
3791             my $test = test 't/path/pod/example';
3792              
3793             my @collect_data_for_synopsis = $test->collect_data_for_synopsis;
3794              
3795             # (' use Example;', ' my $example = Example->new;', ' # bless(..., "Example")')
3796              
3797             =back
3798              
3799             =cut
3800              
3801             =head2 collect_data_for_tagline
3802              
3803             collect_data_for_tagline() (arrayref)
3804              
3805             The collect_data_for_tagline method uses L to fetch data for the C
3806             section and returns the data. Returns an arrayref in scalar context, and a list
3807             in list context.
3808              
3809             I>
3810              
3811             =over 4
3812              
3813             =item collect_data_for_tagline example 1
3814              
3815             # =tagline
3816             #
3817             # Example Class
3818             #
3819             # =cut
3820              
3821             package main;
3822              
3823             use Venus::Test 'test';
3824              
3825             my $test = test 't/path/pod/example';
3826              
3827             my $collect_data_for_tagline = $test->collect_data_for_tagline;
3828              
3829             # ["Example Class"]
3830              
3831             =back
3832              
3833             =over 4
3834              
3835             =item collect_data_for_tagline example 2
3836              
3837             # =tagline
3838             #
3839             # Example Class
3840             #
3841             # =cut
3842              
3843             package main;
3844              
3845             use Venus::Test 'test';
3846              
3847             my $test = test 't/path/pod/example';
3848              
3849             my ($collect_data_for_tagline) = $test->collect_data_for_tagline;
3850              
3851             # "Example Class"
3852              
3853             =back
3854              
3855             =cut
3856              
3857             =head2 collect_data_for_version
3858              
3859             collect_data_for_version() (arrayref)
3860              
3861             The collect_data_for_version method uses L to fetch data for the C
3862             section and returns the data. Returns an arrayref in scalar context, and a list
3863             in list context.
3864              
3865             I>
3866              
3867             =over 4
3868              
3869             =item collect_data_for_version example 1
3870              
3871             # =version
3872             #
3873             # 1.2.3
3874             #
3875             # =cut
3876              
3877             package main;
3878              
3879             use Venus::Test 'test';
3880              
3881             my $test = test 't/path/pod/example';
3882              
3883             my $collect_data_for_version = $test->collect_data_for_version;
3884              
3885             # ["1.2.3"]
3886              
3887             =back
3888              
3889             =over 4
3890              
3891             =item collect_data_for_version example 2
3892              
3893             # =version
3894             #
3895             # 1.2.3
3896             #
3897             # =cut
3898              
3899             package main;
3900              
3901             use Venus::Test 'test';
3902              
3903             my $test = test 't/path/pod/example';
3904              
3905             my ($collect_data_for_version) = $test->collect_data_for_version;
3906              
3907             # "1.2.3"
3908              
3909             =back
3910              
3911             =cut
3912              
3913             =head2 data
3914              
3915             data() (Venus::Data)
3916              
3917             The data method returns a L object using L for parsing the
3918             test specification.
3919              
3920             I>
3921              
3922             =over 4
3923              
3924             =item data example 1
3925              
3926             # given: synopsis
3927              
3928             package main;
3929              
3930             my $data = $test->data;
3931              
3932             # bless(..., "Venus::Data")
3933              
3934             =back
3935              
3936             =cut
3937              
3938             =head2 done
3939              
3940             done() (any)
3941              
3942             The done method dispatches to the L operation and
3943             returns the result.
3944              
3945             I>
3946              
3947             =over 4
3948              
3949             =item done example 1
3950              
3951             # given: synopsis
3952              
3953             package main;
3954              
3955             my $done = $test->done;
3956              
3957             # true
3958              
3959             =back
3960              
3961             =cut
3962              
3963             =head2 execute
3964              
3965             execute(string $name, any @args) (boolean)
3966              
3967             The execute method dispatches to the C method
3968             indictated by the first argument and returns the result. Returns an arrayref in
3969             scalar context, and a list in list context.
3970              
3971             I>
3972              
3973             =over 4
3974              
3975             =item execute example 1
3976              
3977             # given: synopsis
3978              
3979             package main;
3980              
3981             my $execute = $test->execute('name');
3982              
3983             # true
3984              
3985             =back
3986              
3987             =over 4
3988              
3989             =item execute example 2
3990              
3991             # given: synopsis
3992              
3993             package main;
3994              
3995             my $execute = $test->execute('name', sub {
3996             my ($data) = @_;
3997              
3998             my $result = $data->[0] eq 'Venus::Test' ? true : false;
3999              
4000             $self->pass($result, 'name set as Venus::Test');
4001              
4002             return $result;
4003             });
4004              
4005             # true
4006              
4007             =back
4008              
4009             =cut
4010              
4011             =head2 execute_test_for_abstract
4012              
4013             execute_test_for_abstract() (arrayref)
4014              
4015             The execute_test_for_abstract method tests a documentation block for the C section and returns the result.
4016              
4017             I>
4018              
4019             =over 4
4020              
4021             =item execute_test_for_abstract example 1
4022              
4023             # =abstract
4024             #
4025             # Example Test Documentation
4026             #
4027             # =cut
4028              
4029             package main;
4030              
4031             use Venus::Test 'test';
4032              
4033             my $test = test 't/path/pod/example';
4034              
4035             my $execute_test_for_abstract = $test->execute_test_for_abstract;
4036              
4037             # true
4038              
4039             =back
4040              
4041             =cut
4042              
4043             =head2 execute_test_for_attribute
4044              
4045             execute_test_for_attribute(string $name) (arrayref)
4046              
4047             The execute_test_for_attribute method tests a documentation block for the C section and returns the result.
4048              
4049             I>
4050              
4051             =over 4
4052              
4053             =item execute_test_for_attribute example 1
4054              
4055             # =attribute name
4056             #
4057             # The name attribute is read-write, optional, and holds a string.
4058             #
4059             # =cut
4060             #
4061             # =example-1 name
4062             #
4063             # # given: synopsis
4064             #
4065             # my $name = $example->name;
4066             #
4067             # # "..."
4068             #
4069             # =cut
4070              
4071             package main;
4072              
4073             use Venus::Test 'test';
4074              
4075             my $test = test 't/path/pod/example';
4076              
4077             my $execute_test_for_attribute = $test->execute_test_for_attribute('name');
4078              
4079             # true
4080              
4081             =back
4082              
4083             =cut
4084              
4085             =head2 execute_test_for_authors
4086              
4087             execute_test_for_authors() (arrayref)
4088              
4089             The execute_test_for_authors method tests a documentation block for the C section and returns the result.
4090              
4091             I>
4092              
4093             =over 4
4094              
4095             =item execute_test_for_authors example 1
4096              
4097             # =authors
4098             #
4099             # Awncorp, C
4100             #
4101             # =cut
4102              
4103             package main;
4104              
4105             use Venus::Test 'test';
4106              
4107             my $test = test 't/path/pod/example';
4108              
4109             my $execute_test_for_authors = $test->execute_test_for_authors;
4110              
4111             # true
4112              
4113             =back
4114              
4115             =cut
4116              
4117             =head2 execute_test_for_description
4118              
4119             execute_test_for_description() (arrayref)
4120              
4121             The execute_test_for_description method tests a documentation block for the C section and returns the result.
4122              
4123             I>
4124              
4125             =over 4
4126              
4127             =item execute_test_for_description example 1
4128              
4129             # =description
4130             #
4131             # This package provides an example class.
4132             #
4133             # =cut
4134              
4135             package main;
4136              
4137             use Venus::Test 'test';
4138              
4139             my $test = test 't/path/pod/example';
4140              
4141             my $execute_test_for_description = $test->execute_test_for_description;
4142              
4143             # true
4144              
4145             =back
4146              
4147             =cut
4148              
4149             =head2 execute_test_for_encoding
4150              
4151             execute_test_for_encoding() (arrayref)
4152              
4153             The execute_test_for_encoding method tests a documentation block for the C section and returns the result.
4154              
4155             I>
4156              
4157             =over 4
4158              
4159             =item execute_test_for_encoding example 1
4160              
4161             # =encoding
4162             #
4163             # utf8
4164             #
4165             # =cut
4166              
4167             package main;
4168              
4169             use Venus::Test 'test';
4170              
4171             my $test = test 't/path/pod/example';
4172              
4173             my $execute_test_for_encoding = $test->execute_test_for_encoding;
4174              
4175             # true
4176              
4177             =back
4178              
4179             =cut
4180              
4181             =head2 execute_test_for_error
4182              
4183             execute_test_for_error(string $name) (arrayref)
4184              
4185             The execute_test_for_error method tests a documentation block for the C section and returns the result.
4186              
4187             I>
4188              
4189             =over 4
4190              
4191             =item execute_test_for_error example 1
4192              
4193             # =error error_on_unknown
4194             #
4195             # This package may raise an error_on_unknown error.
4196             #
4197             # =cut
4198             #
4199             # =example-1 error_on_unknown
4200             #
4201             # # given: synopsis
4202             #
4203             # my $error = $example->catch('error', {
4204             # with => 'error_on_unknown',
4205             # });
4206             #
4207             # # "..."
4208             #
4209             # =cut
4210              
4211             package main;
4212              
4213             use Venus::Test 'test';
4214              
4215             my $test = test 't/path/pod/example';
4216              
4217             my $execute_test_for_error = $test->execute_test_for_error('error_on_unknown');
4218              
4219             # true
4220              
4221             =back
4222              
4223             =cut
4224              
4225             =head2 execute_test_for_example
4226              
4227             execute_test_for_example(number $numberm string $name) (arrayref)
4228              
4229             The execute_test_for_example method tests a documentation block for the C section and returns the result.
4230              
4231             I>
4232              
4233             =over 4
4234              
4235             =item execute_test_for_example example 1
4236              
4237             # =attribute name
4238             #
4239             # The name attribute is read-write, optional, and holds a string.
4240             #
4241             # =cut
4242             #
4243             # =example-1 name
4244             #
4245             # # given: synopsis
4246             #
4247             # my $name = $example->name;
4248             #
4249             # # "..."
4250             #
4251             # =cut
4252              
4253             package main;
4254              
4255             use Venus::Test 'test';
4256              
4257             my $test = test 't/path/pod/example';
4258              
4259             my $execute_test_for_example = $test->execute_test_for_example(1, 'name');
4260              
4261             # true
4262              
4263             =back
4264              
4265             =cut
4266              
4267             =head2 execute_test_for_feature
4268              
4269             execute_test_for_feature(string $name) (arrayref)
4270              
4271             The execute_test_for_feature method tests a documentation block for the C section and returns the result.
4272              
4273             I>
4274              
4275             =over 4
4276              
4277             =item execute_test_for_feature example 1
4278              
4279             # =feature noop
4280             #
4281             # This package is no particularly useful features.
4282             #
4283             # =cut
4284              
4285             package main;
4286              
4287             use Venus::Test 'test';
4288              
4289             my $test = test 't/path/pod/example';
4290              
4291             my $execute_test_for_feature = $test->execute_test_for_feature('noop');
4292              
4293             # true
4294              
4295             =back
4296              
4297             =cut
4298              
4299             =head2 execute_test_for_function
4300              
4301             execute_test_for_function(string $name) (arrayref)
4302              
4303             The execute_test_for_function method tests a documentation block for the C section and returns the result.
4304              
4305             I>
4306              
4307             =over 4
4308              
4309             =item execute_test_for_function example 1
4310              
4311             # =function eg
4312             #
4313             # The eg function returns a new instance of Example.
4314             #
4315             # =cut
4316             #
4317             # =example-1 name
4318             #
4319             # # given: synopsis
4320             #
4321             # my $example = eg();
4322             #
4323             # # "..."
4324             #
4325             # =cut
4326              
4327             package main;
4328              
4329             use Venus::Test 'test';
4330              
4331             my $test = test 't/path/pod/example';
4332              
4333             my $execute_test_for_function = $test->execute_test_for_function('eg');
4334              
4335             # true
4336              
4337             =back
4338              
4339             =cut
4340              
4341             =head2 execute_test_for_includes
4342              
4343             execute_test_for_includes() (arrayref)
4344              
4345             The execute_test_for_includes method tests a documentation block for the C section and returns the result.
4346              
4347             I>
4348              
4349             =over 4
4350              
4351             =item execute_test_for_includes example 1
4352              
4353             # =includes
4354             #
4355             # function: eg
4356             #
4357             # method: prepare
4358             # method: execute
4359             #
4360             # =cut
4361              
4362             package main;
4363              
4364             use Venus::Test 'test';
4365              
4366             my $test = test 't/path/pod/example';
4367              
4368             my $execute_test_for_includes = $test->execute_test_for_includes;
4369              
4370             # true
4371              
4372             =back
4373              
4374             =cut
4375              
4376             =head2 execute_test_for_inherits
4377              
4378             execute_test_for_inherits() (arrayref)
4379              
4380             The execute_test_for_inherits method tests a documentation block for the C section and returns the result.
4381              
4382             I>
4383              
4384             =over 4
4385              
4386             =item execute_test_for_inherits example 1
4387              
4388             # =inherits
4389             #
4390             # Venus::Core::Class
4391             #
4392             # =cut
4393              
4394             package main;
4395              
4396             use Venus::Test 'test';
4397              
4398             my $test = test 't/path/pod/example';
4399              
4400             my $execute_test_for_inherits = $test->execute_test_for_inherits;
4401              
4402             # true
4403              
4404             =back
4405              
4406             =cut
4407              
4408             =head2 execute_test_for_integrates
4409              
4410             execute_test_for_integrates() (arrayref)
4411              
4412             The execute_test_for_integrates method tests a documentation block for the C section and returns the result.
4413              
4414             I>
4415              
4416             =over 4
4417              
4418             =item execute_test_for_integrates example 1
4419              
4420             # =integrates
4421             #
4422             # Venus::Role::Catchable
4423             # Venus::Role::Throwable
4424             #
4425             # =cut
4426              
4427             package main;
4428              
4429             use Venus::Test 'test';
4430              
4431             my $test = test 't/path/pod/example';
4432              
4433             my $execute_test_for_integrates = $test->execute_test_for_integrates;
4434              
4435             # true
4436              
4437             =back
4438              
4439             =cut
4440              
4441             =head2 execute_test_for_layout
4442              
4443             execute_test_for_layout() (arrayref)
4444              
4445             The execute_test_for_layout method tests a documentation block for the C section and returns the result.
4446              
4447             I>
4448              
4449             =over 4
4450              
4451             =item execute_test_for_layout example 1
4452              
4453             # =layout
4454             #
4455             # encoding
4456             # name
4457             # synopsis
4458             # description
4459             # attributes: attribute
4460             # authors
4461             # license
4462             #
4463             # =cut
4464              
4465             package main;
4466              
4467             use Venus::Test 'test';
4468              
4469             my $test = test 't/path/pod/example';
4470              
4471             my $execute_test_for_layout = $test->execute_test_for_layout;
4472              
4473             # true
4474              
4475             =back
4476              
4477             =cut
4478              
4479             =head2 execute_test_for_libraries
4480              
4481             execute_test_for_libraries() (arrayref)
4482              
4483             The execute_test_for_libraries method tests a documentation block for the C section and returns the result.
4484              
4485             I>
4486              
4487             =over 4
4488              
4489             =item execute_test_for_libraries example 1
4490              
4491             # =libraries
4492             #
4493             # Venus::Check
4494             #
4495             # =cut
4496              
4497             package main;
4498              
4499             use Venus::Test 'test';
4500              
4501             my $test = test 't/path/pod/example';
4502              
4503             my $execute_test_for_libraries = $test->execute_test_for_libraries;
4504              
4505             # true
4506              
4507             =back
4508              
4509             =cut
4510              
4511             =head2 execute_test_for_license
4512              
4513             execute_test_for_license() (arrayref)
4514              
4515             The execute_test_for_license method tests a documentation block for the C section and returns the result.
4516              
4517             I>
4518              
4519             =over 4
4520              
4521             =item execute_test_for_license example 1
4522              
4523             # =license
4524             #
4525             # No license granted.
4526             #
4527             # =cut
4528              
4529             package main;
4530              
4531             use Venus::Test 'test';
4532              
4533             my $test = test 't/path/pod/example';
4534              
4535             my $execute_test_for_license = $test->execute_test_for_license;
4536              
4537             # true
4538              
4539             =back
4540              
4541             =cut
4542              
4543             =head2 execute_test_for_message
4544              
4545             execute_test_for_message(string $name) (arrayref)
4546              
4547             The execute_test_for_message method tests a documentation block for the C section and returns the result.
4548              
4549             I>
4550              
4551             =over 4
4552              
4553             =item execute_test_for_message example 1
4554              
4555             # =message accept
4556             #
4557             # The accept message represents acceptance.
4558             #
4559             # =cut
4560             #
4561             # =example-1 accept
4562             #
4563             # # given: synopsis
4564             #
4565             # my $accept = $example->accept;
4566             #
4567             # # "..."
4568             #
4569             # =cut
4570              
4571             package main;
4572              
4573             use Venus::Test 'test';
4574              
4575             my $test = test 't/path/pod/example';
4576              
4577             my $execute_test_for_message = $test->execute_test_for_message('accept');
4578              
4579             # true
4580              
4581             =back
4582              
4583             =cut
4584              
4585             =head2 execute_test_for_metadata
4586              
4587             execute_test_for_metadata(string $name) (arrayref)
4588              
4589             The execute_test_for_metadata method tests a documentation block for the C section and returns the result.
4590              
4591             I>
4592              
4593             =over 4
4594              
4595             =item execute_test_for_metadata example 1
4596              
4597             # =method prepare
4598             #
4599             # The prepare method prepares for execution.
4600             #
4601             # =cut
4602             #
4603             # =metadata prepare
4604             #
4605             # {since => 1.2.3}
4606             #
4607             # =cut
4608             #
4609             # =example-1 prepare
4610             #
4611             # # given: synopsis
4612             #
4613             # my $prepare = $example->prepare;
4614             #
4615             # # "..."
4616             #
4617             # =cut
4618              
4619             package main;
4620              
4621             use Venus::Test 'test';
4622              
4623             my $test = test 't/path/pod/example';
4624              
4625             my $execute_test_for_metadata = $test->execute_test_for_metadata('prepare');
4626              
4627             # true
4628              
4629             =back
4630              
4631             =cut
4632              
4633             =head2 execute_test_for_method
4634              
4635             execute_test_for_method(string $name) (arrayref)
4636              
4637             The execute_test_for_method method tests a documentation block for the C section and returns the result.
4638              
4639             I>
4640              
4641             =over 4
4642              
4643             =item execute_test_for_method example 1
4644              
4645             # =method execute
4646             #
4647             # The execute method executes the logic.
4648             #
4649             # =cut
4650             #
4651             # =metadata execute
4652             #
4653             # {since => 1.2.3}
4654             #
4655             # =cut
4656             #
4657             # =example-1 execute
4658             #
4659             # # given: synopsis
4660             #
4661             # my $execute = $example->execute;
4662             #
4663             # # "..."
4664             #
4665             # =cut
4666              
4667             package main;
4668              
4669             use Venus::Test 'test';
4670              
4671             my $test = test 't/path/pod/example';
4672              
4673             my $execute_test_for_method = $test->execute_test_for_method('execute');
4674              
4675             # true
4676              
4677             =back
4678              
4679             =cut
4680              
4681             =head2 execute_test_for_name
4682              
4683             execute_test_for_name() (arrayref)
4684              
4685             The execute_test_for_name method tests a documentation block for the C section and returns the result.
4686              
4687             I>
4688              
4689             =over 4
4690              
4691             =item execute_test_for_name example 1
4692              
4693             # =name
4694              
4695             # Example
4696              
4697             # =cut
4698              
4699             package main;
4700              
4701             use Venus::Test 'test';
4702              
4703             my $test = test 't/path/pod/example';
4704              
4705             my $execute_test_for_name = $test->execute_test_for_name;
4706              
4707             # true
4708              
4709             =back
4710              
4711             =cut
4712              
4713             =head2 execute_test_for_operator
4714              
4715             execute_test_for_operator(string $name) (arrayref)
4716              
4717             The execute_test_for_operator method tests a documentation block for the C section and returns the result.
4718              
4719             I>
4720              
4721             =over 4
4722              
4723             =item execute_test_for_operator example 1
4724              
4725             # =operator ("")
4726             #
4727             # This package overloads the C<""> operator.
4728             #
4729             # =cut
4730             #
4731             # =example-1 ("")
4732             #
4733             # # given: synopsis
4734             #
4735             # my $string = "$example";
4736             #
4737             # # "..."
4738             #
4739             # =cut
4740              
4741             package main;
4742              
4743             use Venus::Test 'test';
4744              
4745             my $test = test 't/path/pod/example';
4746              
4747             my $execute_test_for_operator = $test->execute_test_for_operator('("")');
4748              
4749             # true
4750              
4751             =back
4752              
4753             =cut
4754              
4755             =head2 explain
4756              
4757             explain(any @args) (any)
4758              
4759             The explain method dispatches to the L operation and
4760             returns the result.
4761              
4762             I>
4763              
4764             =over 4
4765              
4766             =item explain example 1
4767              
4768             # given: synopsis
4769              
4770             package main;
4771              
4772             my $explain = $test->explain(123.456);
4773              
4774             # "123.456"
4775              
4776             =back
4777              
4778             =cut
4779              
4780             =head2 fail
4781              
4782             fail(any $data, string $description) (any)
4783              
4784             The fail method dispatches to the L operation expecting the
4785             first argument to be falsy and returns the result.
4786              
4787             I>
4788              
4789             =over 4
4790              
4791             =item fail example 1
4792              
4793             # given: synopsis
4794              
4795             package main;
4796              
4797             my $fail = $test->fail(0, 'example-1 fail passed');
4798              
4799             # true
4800              
4801             =back
4802              
4803             =cut
4804              
4805             =head2 for
4806              
4807             for(any @args) (Venus::Test)
4808              
4809             The for method dispatches to the L method using the arguments
4810             provided within a L and returns the invocant.
4811              
4812             I>
4813              
4814             =over 4
4815              
4816             =item for example 1
4817              
4818             # given: synopsis
4819              
4820             package main;
4821              
4822             my $for = $test->for('name');
4823              
4824             # bless(..., "Venus::Test")
4825              
4826             =back
4827              
4828             =over 4
4829              
4830             =item for example 2
4831              
4832             # given: synopsis
4833              
4834             package main;
4835              
4836             my $for = $test->for('synopsis');
4837              
4838             # bless(..., "Venus::Test")
4839              
4840             =back
4841              
4842             =over 4
4843              
4844             =item for example 3
4845              
4846             # given: synopsis
4847              
4848             package main;
4849              
4850             my $for = $test->for('synopsis', sub{
4851             my ($tryable) = @_;
4852             return $tryable->result;
4853             });
4854              
4855             # bless(..., "Venus::Test")
4856              
4857             =back
4858              
4859             =over 4
4860              
4861             =item for example 4
4862              
4863             # given: synopsis
4864              
4865             package main;
4866              
4867             my $for = $test->for('example', 1, 'test', sub {
4868             my ($tryable) = @_;
4869             return $tryable->result;
4870             });
4871              
4872             # bless(..., "Venus::Test")
4873              
4874             =back
4875              
4876             =cut
4877              
4878             =head2 like
4879              
4880             like(string $data, string | Venus::Regexp $match, string $description) (any)
4881              
4882             The like method dispatches to the L operation and returns the
4883             result.
4884              
4885             I>
4886              
4887             =over 4
4888              
4889             =item like example 1
4890              
4891             # given: synopsis
4892              
4893             package main;
4894              
4895             my $like = $test->like('hello world', 'world', 'example-1 like passed');
4896              
4897             # true
4898              
4899             =back
4900              
4901             =over 4
4902              
4903             =item like example 2
4904              
4905             # given: synopsis
4906              
4907             package main;
4908              
4909             my $like = $test->like('hello world', qr/world/, 'example-1 like passed');
4910              
4911             # true
4912              
4913             =back
4914              
4915             =cut
4916              
4917             =head2 more
4918              
4919             more(any @args) (Venus::Test)
4920              
4921             The more method dispatches to the L method specified by the first
4922             argument and returns its result.
4923              
4924             I>
4925              
4926             =over 4
4927              
4928             =item more example 1
4929              
4930             # given: synopsis
4931              
4932             package main;
4933              
4934             my $more = $test->more('ok', true);
4935              
4936             # true
4937              
4938             =back
4939              
4940             =cut
4941              
4942             =head2 okay
4943              
4944             okay(any $data, string $description) (any)
4945              
4946             The okay method dispatches to the L operation and returns the
4947             result.
4948              
4949             I>
4950              
4951             =over 4
4952              
4953             =item okay example 1
4954              
4955             # given: synopsis
4956              
4957             package main;
4958              
4959             my $okay = $test->okay(1, 'example-1 okay passed');
4960              
4961             # true
4962              
4963             =back
4964              
4965             =over 4
4966              
4967             =item okay example 2
4968              
4969             # given: synopsis
4970              
4971             package main;
4972              
4973             my $okay = $test->okay(!0, 'example-1 okay passed');
4974              
4975             # true
4976              
4977             =back
4978              
4979             =cut
4980              
4981             =head2 okay_can
4982              
4983             okay_can(string $name, string @args) (any)
4984              
4985             The okay_can method dispatches to the L operation and
4986             returns the result.
4987              
4988             I>
4989              
4990             =over 4
4991              
4992             =item okay_can example 1
4993              
4994             # given: synopsis
4995              
4996             package main;
4997              
4998             my $okay_can = $test->okay_can('Venus::Test', 'diag');
4999              
5000             # true
5001              
5002             =back
5003              
5004             =cut
5005              
5006             =head2 okay_isa
5007              
5008             okay_isa(string $name, string $base) (any)
5009              
5010             The okay_isa method dispatches to the L operation and
5011             returns the result.
5012              
5013             I>
5014              
5015             =over 4
5016              
5017             =item okay_isa example 1
5018              
5019             # given: synopsis
5020              
5021             package main;
5022              
5023             my $okay_isa = $test->okay_isa('Venus::Test', 'Venus::Kind');
5024              
5025             # true
5026              
5027             =back
5028              
5029             =cut
5030              
5031             =head2 pass
5032              
5033             pass(any $data, string $description) (any)
5034              
5035             The pass method dispatches to the L operation expecting the
5036             first argument to be truthy and returns the result.
5037              
5038             I>
5039              
5040             =over 4
5041              
5042             =item pass example 1
5043              
5044             # given: synopsis
5045              
5046             package main;
5047              
5048             my $fail = $test->pass(1, 'example-1 pass passed');
5049              
5050             # true
5051              
5052             =back
5053              
5054             =cut
5055              
5056             =head2 perform
5057              
5058             perform(string $name, any @args) (boolean)
5059              
5060             The perform method dispatches to the C method
5061             indictated by the first argument and returns the result. Returns an arrayref in
5062             scalar context, and a list in list context.
5063              
5064             I>
5065              
5066             =over 4
5067              
5068             =item perform example 1
5069              
5070             # given: synopsis
5071              
5072             package main;
5073              
5074             my $data = $test->collect('name');
5075              
5076             my $perform = $test->perform('name', $data);
5077              
5078             # true
5079              
5080             =back
5081              
5082             =cut
5083              
5084             =head2 perform_test_for_abstract
5085              
5086             perform_test_for_abstract(arrayref $data) (boolean)
5087              
5088             The perform_data_for_abstract method performs an overridable test for the C section and returns truthy or falsy.
5089              
5090             I>
5091              
5092             =over 4
5093              
5094             =item perform_test_for_abstract example 1
5095              
5096             package Example::Test;
5097              
5098             use Venus::Class 'base';
5099              
5100             base 'Venus::Test';
5101              
5102             sub perform_test_for_abstract {
5103             my ($self, $data) = @_;
5104              
5105             my $result = length(join "\n", @{$data}) ? true : false;
5106              
5107             $self->pass($result, "=abstract content");
5108              
5109             return $result;
5110             }
5111              
5112             package main;
5113              
5114             my $test = Example::Test->new('t/path/pod/example');
5115              
5116             my $data = $test->collect_data_for_abstract;
5117              
5118             my $perform_test_for_abstract = $test->perform_test_for_abstract(
5119             $data,
5120             );
5121              
5122             # true
5123              
5124             =back
5125              
5126             =cut
5127              
5128             =head2 perform_test_for_attribute
5129              
5130             perform_test_for_attribute(string $name, arrayref $data) (boolean)
5131              
5132             The perform_data_for_attribute method performs an overridable test for the C section and returns truthy or falsy.
5133              
5134             I>
5135              
5136             =over 4
5137              
5138             =item perform_test_for_attribute example 1
5139              
5140             package Example::Test;
5141              
5142             use Venus::Class 'base';
5143              
5144             base 'Venus::Test';
5145              
5146             sub perform_test_for_attribute {
5147             my ($self, $name, $data) = @_;
5148              
5149             my $result = length(join "\n", @{$data}) ? true : false;
5150              
5151             $self->pass($result, "=attribute $name content");
5152              
5153             return $result;
5154             }
5155              
5156             package main;
5157              
5158             my $test = Example::Test->new('t/path/pod/example');
5159              
5160             my $data = $test->collect_data_for_attribute('name');
5161              
5162             my $perform_test_for_attribute = $test->perform_test_for_attribute(
5163             'name', $data,
5164             );
5165              
5166             # true
5167              
5168             =back
5169              
5170             =cut
5171              
5172             =head2 perform_test_for_authors
5173              
5174             perform_test_for_authors(arrayref $data) (boolean)
5175              
5176             The perform_data_for_authors method performs an overridable test for the C section and returns truthy or falsy.
5177              
5178             I>
5179              
5180             =over 4
5181              
5182             =item perform_test_for_authors example 1
5183              
5184             package Example::Test;
5185              
5186             use Venus::Class 'base';
5187              
5188             base 'Venus::Test';
5189              
5190             sub perform_test_for_authors {
5191             my ($self, $data) = @_;
5192              
5193             my $result = length(join "\n", @{$data}) ? true : false;
5194              
5195             $self->pass($result, "=authors content");
5196              
5197             return $result;
5198             }
5199              
5200             package main;
5201              
5202             my $test = Example::Test->new('t/path/pod/example');
5203              
5204             my $data = $test->collect_data_for_authors;
5205              
5206             my $perform_test_for_authors = $test->perform_test_for_authors(
5207             $data,
5208             );
5209              
5210             # true
5211              
5212             =back
5213              
5214             =cut
5215              
5216             =head2 perform_test_for_description
5217              
5218             perform_test_for_description(arrayref $data) (boolean)
5219              
5220             The perform_data_for_description method performs an overridable test for the C section and returns truthy or falsy.
5221              
5222             I>
5223              
5224             =over 4
5225              
5226             =item perform_test_for_description example 1
5227              
5228             package Example::Test;
5229              
5230             use Venus::Class 'base';
5231              
5232             base 'Venus::Test';
5233              
5234             sub perform_test_for_description {
5235             my ($self, $data) = @_;
5236              
5237             my $result = length(join "\n", @{$data}) ? true : false;
5238              
5239             $self->pass($result, "=description content");
5240              
5241             return $result;
5242             }
5243              
5244             package main;
5245              
5246             my $test = Example::Test->new('t/path/pod/example');
5247              
5248             my $data = $test->collect_data_for_description;
5249              
5250             my $perform_test_for_description = $test->perform_test_for_description(
5251             $data,
5252             );
5253              
5254             # true
5255              
5256             =back
5257              
5258             =cut
5259              
5260             =head2 perform_test_for_encoding
5261              
5262             perform_test_for_encoding(arrayref $data) (boolean)
5263              
5264             The perform_data_for_encoding method performs an overridable test for the C section and returns truthy or falsy.
5265              
5266             I>
5267              
5268             =over 4
5269              
5270             =item perform_test_for_encoding example 1
5271              
5272             package Example::Test;
5273              
5274             use Venus::Class 'base';
5275              
5276             base 'Venus::Test';
5277              
5278             sub perform_test_for_encoding {
5279             my ($self, $data) = @_;
5280              
5281             my $result = length(join "\n", @{$data}) ? true : false;
5282              
5283             $self->pass($result, "=encoding content");
5284              
5285             return $result;
5286             }
5287              
5288             package main;
5289              
5290             my $test = Example::Test->new('t/path/pod/example');
5291              
5292             my $data = $test->collect_data_for_encoding;
5293              
5294             my $perform_test_for_encoding = $test->perform_test_for_encoding(
5295             $data,
5296             );
5297              
5298             # true
5299              
5300             =back
5301              
5302             =cut
5303              
5304             =head2 perform_test_for_error
5305              
5306             perform_test_for_error(arrayref $data) (boolean)
5307              
5308             The perform_data_for_error method performs an overridable test for the C section and returns truthy or falsy.
5309              
5310             I>
5311              
5312             =over 4
5313              
5314             =item perform_test_for_error example 1
5315              
5316             package Example::Test;
5317              
5318             use Venus::Class 'base';
5319              
5320             base 'Venus::Test';
5321              
5322             sub perform_test_for_error {
5323             my ($self, $name, $data) = @_;
5324              
5325             my $result = length(join "\n", @{$data}) ? true : false;
5326              
5327             $self->pass($result, "=error $name content");
5328              
5329             return $result;
5330             }
5331              
5332             package main;
5333              
5334             my $test = Example::Test->new('t/path/pod/example');
5335              
5336             my $data = $test->collect_data_for_error('error_on_unknown');
5337              
5338             my $perform_test_for_error = $test->perform_test_for_error(
5339             'error_on_unknown', $data,
5340             );
5341              
5342             # true
5343              
5344             =back
5345              
5346             =cut
5347              
5348             =head2 perform_test_for_example
5349              
5350             perform_test_for_example(arrayref $data) (boolean)
5351              
5352             The perform_data_for_example method performs an overridable test for the C section and returns truthy or falsy.
5353              
5354             I>
5355              
5356             =over 4
5357              
5358             =item perform_test_for_example example 1
5359              
5360             package Example::Test;
5361              
5362             use Venus::Class 'base';
5363              
5364             base 'Venus::Test';
5365              
5366             sub perform_test_for_example {
5367             my ($self, $number, $name, $data) = @_;
5368              
5369             my $result = length(join "\n", @{$data}) ? true : false;
5370              
5371             $self->pass($result, "=example-$number $name content");
5372              
5373             return $result;
5374             }
5375              
5376             package main;
5377              
5378             my $test = Example::Test->new('t/path/pod/example');
5379              
5380             my $data = $test->collect_data_for_example(1, 'execute');
5381              
5382             my $perform_test_for_example = $test->perform_test_for_example(
5383             1, 'execute', $data,
5384             );
5385              
5386             # true
5387              
5388             =back
5389              
5390             =cut
5391              
5392             =head2 perform_test_for_feature
5393              
5394             perform_test_for_feature(arrayref $data) (boolean)
5395              
5396             The perform_data_for_feature method performs an overridable test for the C section and returns truthy or falsy.
5397              
5398             I>
5399              
5400             =over 4
5401              
5402             =item perform_test_for_feature example 1
5403              
5404             package Example::Test;
5405              
5406             use Venus::Class 'base';
5407              
5408             base 'Venus::Test';
5409              
5410             sub perform_test_for_feature {
5411             my ($self, $name, $data) = @_;
5412              
5413             my $result = length(join "\n", @{$data}) ? true : false;
5414              
5415             $self->pass($result, "=feature $name content");
5416              
5417             return $result;
5418             }
5419              
5420             package main;
5421              
5422             my $test = Example::Test->new('t/path/pod/example');
5423              
5424             my $data = $test->collect_data_for_feature('noop');
5425              
5426             my $perform_test_for_feature = $test->perform_test_for_feature(
5427             'noop', $data,
5428             );
5429              
5430             # true
5431              
5432             =back
5433              
5434             =cut
5435              
5436             =head2 perform_test_for_function
5437              
5438             perform_test_for_function(arrayref $data) (boolean)
5439              
5440             The perform_data_for_function method performs an overridable test for the C section and returns truthy or falsy.
5441              
5442             I>
5443              
5444             =over 4
5445              
5446             =item perform_test_for_function example 1
5447              
5448             package Example::Test;
5449              
5450             use Venus::Class 'base';
5451              
5452             base 'Venus::Test';
5453              
5454             sub perform_test_for_function {
5455             my ($self, $name, $data) = @_;
5456              
5457             my $result = length(join "\n", @{$data}) ? true : false;
5458              
5459             $self->pass($result, "=function $name content");
5460              
5461             return $result;
5462             }
5463              
5464             package main;
5465              
5466             my $test = Example::Test->new('t/path/pod/example');
5467              
5468             my $data = $test->collect_data_for_function('eg');
5469              
5470             my $perform_test_for_function = $test->perform_test_for_function(
5471             'eg', $data,
5472             );
5473              
5474             # true
5475              
5476             =back
5477              
5478             =cut
5479              
5480             =head2 perform_test_for_includes
5481              
5482             perform_test_for_includes(arrayref $data) (boolean)
5483              
5484             The perform_data_for_includes method performs an overridable test for the C section and returns truthy or falsy.
5485              
5486             I>
5487              
5488             =over 4
5489              
5490             =item perform_test_for_includes example 1
5491              
5492             package Example::Test;
5493              
5494             use Venus::Class 'base';
5495              
5496             base 'Venus::Test';
5497              
5498             sub perform_test_for_includes {
5499             my ($self, $data) = @_;
5500              
5501             my $result = length(join "\n", @{$data}) ? true : false;
5502              
5503             $self->pass($result, "=includes content");
5504              
5505             return $result;
5506             }
5507              
5508             package main;
5509              
5510             my $test = Example::Test->new('t/path/pod/example');
5511              
5512             my $data = $test->collect_data_for_includes;
5513              
5514             my $perform_test_for_includes = $test->perform_test_for_includes(
5515             $data,
5516             );
5517              
5518             # true
5519              
5520             =back
5521              
5522             =cut
5523              
5524             =head2 perform_test_for_inherits
5525              
5526             perform_test_for_inherits(arrayref $data) (boolean)
5527              
5528             The perform_data_for_inherits method performs an overridable test for the C section and returns truthy or falsy.
5529              
5530             I>
5531              
5532             =over 4
5533              
5534             =item perform_test_for_inherits example 1
5535              
5536             package Example::Test;
5537              
5538             use Venus::Class 'base';
5539              
5540             base 'Venus::Test';
5541              
5542             sub perform_test_for_inherits {
5543             my ($self, $data) = @_;
5544              
5545             my $result = length(join "\n", @{$data}) ? true : false;
5546              
5547             $self->pass($result, "=inherits content");
5548              
5549             return $result;
5550             }
5551              
5552             package main;
5553              
5554             my $test = Example::Test->new('t/path/pod/example');
5555              
5556             my $data = $test->collect_data_for_inherits;
5557              
5558             my $perform_test_for_inherits = $test->perform_test_for_inherits(
5559             $data,
5560             );
5561              
5562             # true
5563              
5564             =back
5565              
5566             =cut
5567              
5568             =head2 perform_test_for_integrates
5569              
5570             perform_test_for_integrates(arrayref $data) (boolean)
5571              
5572             The perform_data_for_integrates method performs an overridable test for the C section and returns truthy or falsy.
5573              
5574             I>
5575              
5576             =over 4
5577              
5578             =item perform_test_for_integrates example 1
5579              
5580             package Example::Test;
5581              
5582             use Venus::Class 'base';
5583              
5584             base 'Venus::Test';
5585              
5586             sub perform_test_for_integrates {
5587             my ($self, $data) = @_;
5588              
5589             my $result = length(join "\n", @{$data}) ? true : false;
5590              
5591             $self->pass($result, "=integrates content");
5592              
5593             return $result;
5594             }
5595              
5596             package main;
5597              
5598             my $test = Example::Test->new('t/path/pod/example');
5599              
5600             my $data = $test->collect_data_for_integrates;
5601              
5602             my $perform_test_for_integrates = $test->perform_test_for_integrates(
5603             $data,
5604             );
5605              
5606             # true
5607              
5608             =back
5609              
5610             =cut
5611              
5612             =head2 perform_test_for_layout
5613              
5614             perform_test_for_layout(arrayref $data) (boolean)
5615              
5616             The perform_data_for_layout method performs an overridable test for the C section and returns truthy or falsy.
5617              
5618             I>
5619              
5620             =over 4
5621              
5622             =item perform_test_for_layout example 1
5623              
5624             package Example::Test;
5625              
5626             use Venus::Class 'base';
5627              
5628             base 'Venus::Test';
5629              
5630             sub perform_test_for_layout {
5631             my ($self, $data) = @_;
5632              
5633             my $result = length(join "\n", @{$data}) ? true : false;
5634              
5635             $self->pass($result, "=layout content");
5636              
5637             return $result;
5638             }
5639              
5640             package main;
5641              
5642             my $test = Example::Test->new('t/path/pod/example');
5643              
5644             my $data = $test->collect_data_for_layout;
5645              
5646             my $perform_test_for_layout = $test->perform_test_for_layout(
5647             $data,
5648             );
5649              
5650             # true
5651              
5652             =back
5653              
5654             =cut
5655              
5656             =head2 perform_test_for_libraries
5657              
5658             perform_test_for_libraries(arrayref $data) (boolean)
5659              
5660             The perform_data_for_libraries method performs an overridable test for the C section and returns truthy or falsy.
5661              
5662             I>
5663              
5664             =over 4
5665              
5666             =item perform_test_for_libraries example 1
5667              
5668             package Example::Test;
5669              
5670             use Venus::Class 'base';
5671              
5672             base 'Venus::Test';
5673              
5674             sub perform_test_for_libraries {
5675             my ($self, $data) = @_;
5676              
5677             my $result = length(join "\n", @{$data}) ? true : false;
5678              
5679             $self->pass($result, "=libraries content");
5680              
5681             return $result;
5682             }
5683              
5684             package main;
5685              
5686             my $test = Example::Test->new('t/path/pod/example');
5687              
5688             my $data = $test->collect_data_for_libraries;
5689              
5690             my $perform_test_for_libraries = $test->perform_test_for_libraries(
5691             $data,
5692             );
5693              
5694             # true
5695              
5696             =back
5697              
5698             =cut
5699              
5700             =head2 perform_test_for_license
5701              
5702             perform_test_for_license(arrayref $data) (boolean)
5703              
5704             The perform_data_for_license method performs an overridable test for the C section and returns truthy or falsy.
5705              
5706             I>
5707              
5708             =over 4
5709              
5710             =item perform_test_for_license example 1
5711              
5712             package Example::Test;
5713              
5714             use Venus::Class 'base';
5715              
5716             base 'Venus::Test';
5717              
5718             sub perform_test_for_license {
5719             my ($self, $data) = @_;
5720              
5721             my $result = length(join "\n", @{$data}) ? true : false;
5722              
5723             $self->pass($result, "=license content");
5724              
5725             return $result;
5726             }
5727              
5728             package main;
5729              
5730             my $test = Example::Test->new('t/path/pod/example');
5731              
5732             my $data = $test->collect_data_for_license;
5733              
5734             my $perform_test_for_license = $test->perform_test_for_license(
5735             $data,
5736             );
5737              
5738             # true
5739              
5740             =back
5741              
5742             =cut
5743              
5744             =head2 perform_test_for_message
5745              
5746             perform_test_for_message(arrayref $data) (boolean)
5747              
5748             The perform_data_for_message method performs an overridable test for the C section and returns truthy or falsy.
5749              
5750             I>
5751              
5752             =over 4
5753              
5754             =item perform_test_for_message example 1
5755              
5756             package Example::Test;
5757              
5758             use Venus::Class 'base';
5759              
5760             base 'Venus::Test';
5761              
5762             sub perform_test_for_message {
5763             my ($self, $name, $data) = @_;
5764              
5765             my $result = length(join "\n", @{$data}) ? true : false;
5766              
5767             $self->pass($result, "=message $name content");
5768              
5769             return $result;
5770             }
5771              
5772             package main;
5773              
5774             my $test = Example::Test->new('t/path/pod/example');
5775              
5776             my $data = $test->collect_data_for_message('accept');
5777              
5778             my $perform_test_for_message = $test->perform_test_for_message(
5779             'accept', $data,
5780             );
5781              
5782             # true
5783              
5784             =back
5785              
5786             =cut
5787              
5788             =head2 perform_test_for_metadata
5789              
5790             perform_test_for_metadata(arrayref $data) (boolean)
5791              
5792             The perform_data_for_metadata method performs an overridable test for the C section and returns truthy or falsy.
5793              
5794             I>
5795              
5796             =over 4
5797              
5798             =item perform_test_for_metadata example 1
5799              
5800             package Example::Test;
5801              
5802             use Venus::Class 'base';
5803              
5804             base 'Venus::Test';
5805              
5806             sub perform_test_for_metadata {
5807             my ($self, $name, $data) = @_;
5808              
5809             my $result = length(join "\n", @{$data}) ? true : false;
5810              
5811             $self->pass($result, "=metadata $name content");
5812              
5813             return $result;
5814             }
5815              
5816             package main;
5817              
5818             my $test = Example::Test->new('t/path/pod/example');
5819              
5820             my $data = $test->collect_data_for_metadata('execute');
5821              
5822             my $perform_test_for_metadata = $test->perform_test_for_metadata(
5823             'execute', $data,
5824             );
5825              
5826             # true
5827              
5828             =back
5829              
5830             =cut
5831              
5832             =head2 perform_test_for_method
5833              
5834             perform_test_for_method(arrayref $data) (boolean)
5835              
5836             The perform_data_for_method method performs an overridable test for the C section and returns truthy or falsy.
5837              
5838             I>
5839              
5840             =over 4
5841              
5842             =item perform_test_for_method example 1
5843              
5844             package Example::Test;
5845              
5846             use Venus::Class 'base';
5847              
5848             base 'Venus::Test';
5849              
5850             sub perform_test_for_method {
5851             my ($self, $name, $data) = @_;
5852              
5853             my $result = length(join "\n", @{$data}) ? true : false;
5854              
5855             $self->pass($result, "=method $name content");
5856              
5857             return $result;
5858             }
5859              
5860             package main;
5861              
5862             my $test = Example::Test->new('t/path/pod/example');
5863              
5864             my $data = $test->collect_data_for_method('execute');
5865              
5866             my $perform_test_for_method = $test->perform_test_for_method(
5867             'execute', $data,
5868             );
5869              
5870             # true
5871              
5872             =back
5873              
5874             =cut
5875              
5876             =head2 perform_test_for_name
5877              
5878             perform_test_for_name(arrayref $data) (boolean)
5879              
5880             The perform_data_for_name method performs an overridable test for the C section and returns truthy or falsy.
5881              
5882             I>
5883              
5884             =over 4
5885              
5886             =item perform_test_for_name example 1
5887              
5888             package Example::Test;
5889              
5890             use Venus::Class 'base';
5891              
5892             base 'Venus::Test';
5893              
5894             sub perform_test_for_name {
5895             my ($self, $data) = @_;
5896              
5897             my $result = length(join "\n", @{$data}) ? true : false;
5898              
5899             $self->pass($result, "=name content");
5900              
5901             return $result;
5902             }
5903              
5904             package main;
5905              
5906             my $test = Example::Test->new('t/path/pod/example');
5907              
5908             my $data = $test->collect_data_for_name;
5909              
5910             my $perform_test_for_name = $test->perform_test_for_name(
5911             $data,
5912             );
5913              
5914             # true
5915              
5916             =back
5917              
5918             =cut
5919              
5920             =head2 perform_test_for_operator
5921              
5922             perform_test_for_operator(arrayref $data) (boolean)
5923              
5924             The perform_data_for_operator method performs an overridable test for the C section and returns truthy or falsy.
5925              
5926             I>
5927              
5928             =over 4
5929              
5930             =item perform_test_for_operator example 1
5931              
5932             package Example::Test;
5933              
5934             use Venus::Class 'base';
5935              
5936             base 'Venus::Test';
5937              
5938             sub perform_test_for_operator {
5939             my ($self, $name, $data) = @_;
5940              
5941             my $result = length(join "\n", @{$data}) ? true : false;
5942              
5943             $self->pass($result, "=operator $name content");
5944              
5945             return $result;
5946             }
5947              
5948             package main;
5949              
5950             my $test = Example::Test->new('t/path/pod/example');
5951              
5952             my $data = $test->collect_data_for_operator('("")');
5953              
5954             my $perform_test_for_operator = $test->perform_test_for_operator(
5955             '("")', $data,
5956             );
5957              
5958             # true
5959              
5960             =back
5961              
5962             =cut
5963              
5964             =head2 perform_test_for_partials
5965              
5966             perform_test_for_partials(arrayref $data) (boolean)
5967              
5968             The perform_data_for_partials method performs an overridable test for the C section and returns truthy or falsy.
5969              
5970             I>
5971              
5972             =over 4
5973              
5974             =item perform_test_for_partials example 1
5975              
5976             package Example::Test;
5977              
5978             use Venus::Class 'base';
5979              
5980             base 'Venus::Test';
5981              
5982             sub perform_test_for_partials {
5983             my ($self, $data) = @_;
5984              
5985             my $result = length(join "\n", @{$data}) ? true : false;
5986              
5987             $self->pass($result, "=partials content");
5988              
5989             return $result;
5990             }
5991              
5992             package main;
5993              
5994             my $test = Example::Test->new('t/path/pod/example');
5995              
5996             my $data = $test->collect_data_for_partials;
5997              
5998             my $perform_test_for_partials = $test->perform_test_for_partials(
5999             $data,
6000             );
6001              
6002             # true
6003              
6004             =back
6005              
6006             =cut
6007              
6008             =head2 perform_test_for_project
6009              
6010             perform_test_for_project(arrayref $data) (boolean)
6011              
6012             The perform_data_for_project method performs an overridable test for the C section and returns truthy or falsy.
6013              
6014             I>
6015              
6016             =over 4
6017              
6018             =item perform_test_for_project example 1
6019              
6020             package Example::Test;
6021              
6022             use Venus::Class 'base';
6023              
6024             base 'Venus::Test';
6025              
6026             sub perform_test_for_project {
6027             my ($self, $data) = @_;
6028              
6029             my $result = length(join "\n", @{$data}) ? true : false;
6030              
6031             $self->pass($result, "=project content");
6032              
6033             return $result;
6034             }
6035              
6036             package main;
6037              
6038             my $test = Example::Test->new('t/path/pod/example');
6039              
6040             my $data = $test->collect_data_for_project;
6041              
6042             my $perform_test_for_project = $test->perform_test_for_project(
6043             $data,
6044             );
6045              
6046             # true
6047              
6048             =back
6049              
6050             =cut
6051              
6052             =head2 perform_test_for_signature
6053              
6054             perform_test_for_signature(arrayref $data) (boolean)
6055              
6056             The perform_data_for_signature method performs an overridable test for the C section and returns truthy or falsy.
6057              
6058             I>
6059              
6060             =over 4
6061              
6062             =item perform_test_for_signature example 1
6063              
6064             package Example::Test;
6065              
6066             use Venus::Class 'base';
6067              
6068             base 'Venus::Test';
6069              
6070             sub perform_test_for_signature {
6071             my ($self, $name, $data) = @_;
6072              
6073             my $result = length(join "\n", @{$data}) ? true : false;
6074              
6075             $self->pass($result, "=signature $name content");
6076              
6077             return $result;
6078             }
6079              
6080             package main;
6081              
6082             my $test = Example::Test->new('t/path/pod/example');
6083              
6084             my $data = $test->collect_data_for_signature('execute');
6085              
6086             my $perform_test_for_signature = $test->perform_test_for_signature(
6087             'execute', $data,
6088             );
6089              
6090             # true
6091              
6092             =back
6093              
6094             =cut
6095              
6096             =head2 perform_test_for_synopsis
6097              
6098             perform_test_for_synopsis(arrayref $data) (boolean)
6099              
6100             The perform_data_for_synopsis method performs an overridable test for the C section and returns truthy or falsy.
6101              
6102             I>
6103              
6104             =over 4
6105              
6106             =item perform_test_for_synopsis example 1
6107              
6108             package Example::Test;
6109              
6110             use Venus::Class 'base';
6111              
6112             base 'Venus::Test';
6113              
6114             sub perform_test_for_synopsis {
6115             my ($self, $data) = @_;
6116              
6117             my $result = length(join "\n", @{$data}) ? true : false;
6118              
6119             $self->pass($result, "=synopsis content");
6120              
6121             return $result;
6122             }
6123              
6124             package main;
6125              
6126             my $test = Example::Test->new('t/path/pod/example');
6127              
6128             my $data = $test->collect_data_for_synopsis;
6129              
6130             my $perform_test_for_synopsis = $test->perform_test_for_synopsis(
6131             $data,
6132             );
6133              
6134             # true
6135              
6136             =back
6137              
6138             =cut
6139              
6140             =head2 perform_test_for_tagline
6141              
6142             perform_test_for_tagline(arrayref $data) (boolean)
6143              
6144             The perform_data_for_tagline method performs an overridable test for the C section and returns truthy or falsy.
6145              
6146             I>
6147              
6148             =over 4
6149              
6150             =item perform_test_for_tagline example 1
6151              
6152             package Example::Test;
6153              
6154             use Venus::Class 'base';
6155              
6156             base 'Venus::Test';
6157              
6158             sub perform_test_for_tagline {
6159             my ($self, $data) = @_;
6160              
6161             my $result = length(join "\n", @{$data}) ? true : false;
6162              
6163             $self->pass($result, "=tagline content");
6164              
6165             return $result;
6166             }
6167              
6168             package main;
6169              
6170             my $test = Example::Test->new('t/path/pod/example');
6171              
6172             my $data = $test->collect_data_for_tagline;
6173              
6174             my $perform_test_for_tagline = $test->perform_test_for_tagline(
6175             $data,
6176             );
6177              
6178             # true
6179              
6180             =back
6181              
6182             =cut
6183              
6184             =head2 perform_test_for_version
6185              
6186             perform_test_for_version(arrayref $data) (boolean)
6187              
6188             The perform_data_for_version method performs an overridable test for the C section and returns truthy or falsy.
6189              
6190             I>
6191              
6192             =over 4
6193              
6194             =item perform_test_for_version example 1
6195              
6196             package Example::Test;
6197              
6198             use Venus::Class 'base';
6199              
6200             base 'Venus::Test';
6201              
6202             sub perform_test_for_version {
6203             my ($self, $data) = @_;
6204              
6205             my $result = length(join "\n", @{$data}) ? true : false;
6206              
6207             $self->pass($result, "=version content");
6208              
6209             return $result;
6210             }
6211              
6212             package main;
6213              
6214             my $test = Example::Test->new('t/path/pod/example');
6215              
6216             my $data = $test->collect_data_for_version;
6217              
6218             my $perform_test_for_version = $test->perform_test_for_version(
6219             $data,
6220             );
6221              
6222             # true
6223              
6224             =back
6225              
6226             =cut
6227              
6228             =head2 present
6229              
6230             present(string $name, any @args) (string)
6231              
6232             The present method dispatches to the C method
6233             indictated by the first argument and returns the result. Returns an arrayref in
6234             scalar context, and a list in list context.
6235              
6236             I>
6237              
6238             =over 4
6239              
6240             =item present example 1
6241              
6242             # given: synopsis
6243              
6244             package main;
6245              
6246             my $present = $test->present('name');
6247              
6248             # =head1 NAME
6249             #
6250             # Venus::Test - Test Class
6251             #
6252             # =cut
6253              
6254             =back
6255              
6256             =cut
6257              
6258             =head2 present_data_for_abstract
6259              
6260             present_data_for_abstract() (arrayref)
6261              
6262             The present_data_for_abstract method builds a documentation block for the C section and returns it as a string.
6263              
6264             I>
6265              
6266             =over 4
6267              
6268             =item present_data_for_abstract example 1
6269              
6270             # =abstract
6271             #
6272             # Example Test Documentation
6273             #
6274             # =cut
6275              
6276             package main;
6277              
6278             use Venus::Test 'test';
6279              
6280             my $test = test 't/path/pod/example';
6281              
6282             my $present_data_for_abstract = $test->present_data_for_abstract;
6283              
6284             # =head1 ABSTRACT
6285             #
6286             # Example Test Documentation
6287             #
6288             # =cut
6289              
6290             =back
6291              
6292             =cut
6293              
6294             =head2 present_data_for_attribute
6295              
6296             present_data_for_attribute(string $name) (arrayref)
6297              
6298             The present_data_for_attribute method builds a documentation block for the C section and returns it as a string.
6299              
6300             I>
6301              
6302             =over 4
6303              
6304             =item present_data_for_attribute example 1
6305              
6306             # =attribute name
6307             #
6308             # The name attribute is read-write, optional, and holds a string.
6309             #
6310             # =cut
6311             #
6312             # =example-1 name
6313             #
6314             # # given: synopsis
6315             #
6316             # my $name = $example->name;
6317             #
6318             # # "..."
6319             #
6320             # =cut
6321              
6322             package main;
6323              
6324             use Venus::Test 'test';
6325              
6326             my $test = test 't/path/pod/example';
6327              
6328             my $present_data_for_attribute = $test->present_data_for_attribute('name');
6329              
6330             # =head2 name
6331             #
6332             # The name attribute is read-write, optional, and holds a string.
6333             #
6334             # =over 4
6335             #
6336             # =item name example 1
6337             #
6338             # # given: synopsis
6339             #
6340             # my $name = $example->name;
6341             #
6342             # # "..."
6343             #
6344             # =back
6345             #
6346             # =cut
6347              
6348             =back
6349              
6350             =cut
6351              
6352             =head2 present_data_for_authors
6353              
6354             present_data_for_authors() (arrayref)
6355              
6356             The present_data_for_authors method builds a documentation block for the C section and returns it as a string.
6357              
6358             I>
6359              
6360             =over 4
6361              
6362             =item present_data_for_authors example 1
6363              
6364             # =authors
6365             #
6366             # Awncorp, C
6367             #
6368             # =cut
6369              
6370             package main;
6371              
6372             use Venus::Test 'test';
6373              
6374             my $test = test 't/path/pod/example';
6375              
6376             my $present_data_for_authors = $test->present_data_for_authors;
6377              
6378             # =head1 AUTHORS
6379             #
6380             # Awncorp, C
6381             #
6382             # =cut
6383              
6384             =back
6385              
6386             =cut
6387              
6388             =head2 present_data_for_description
6389              
6390             present_data_for_description() (arrayref)
6391              
6392             The present_data_for_description method builds a documentation block for the C section and returns it as a string.
6393              
6394             I>
6395              
6396             =over 4
6397              
6398             =item present_data_for_description example 1
6399              
6400             # =description
6401             #
6402             # This package provides an example class.
6403             #
6404             # =cut
6405              
6406             package main;
6407              
6408             use Venus::Test 'test';
6409              
6410             my $test = test 't/path/pod/example';
6411              
6412             my $present_data_for_description = $test->present_data_for_description;
6413              
6414             # =head1 DESCRIPTION
6415             #
6416             # This package provides an example class.
6417             #
6418             # =cut
6419              
6420             =back
6421              
6422             =cut
6423              
6424             =head2 present_data_for_encoding
6425              
6426             present_data_for_encoding() (arrayref)
6427              
6428             The present_data_for_encoding method builds a documentation block for the C section and returns it as a string.
6429              
6430             I>
6431              
6432             =over 4
6433              
6434             =item present_data_for_encoding example 1
6435              
6436             # =encoding
6437             #
6438             # utf8
6439             #
6440             # =cut
6441              
6442             package main;
6443              
6444             use Venus::Test 'test';
6445              
6446             my $test = test 't/path/pod/example';
6447              
6448             my $present_data_for_encoding = $test->present_data_for_encoding;
6449              
6450             # =encoding UTF8
6451             #
6452             # =cut
6453              
6454             =back
6455              
6456             =cut
6457              
6458             =head2 present_data_for_error
6459              
6460             present_data_for_error(string $name) (arrayref)
6461              
6462             The present_data_for_error method builds a documentation block for the C section and returns it as a string.
6463              
6464             I>
6465              
6466             =over 4
6467              
6468             =item present_data_for_error example 1
6469              
6470             # =error error_on_unknown
6471             #
6472             # This package may raise an error_on_unknown error.
6473             #
6474             # =cut
6475             #
6476             # =example-1 error_on_unknown
6477             #
6478             # # given: synopsis
6479             #
6480             # my $error = $example->catch('error', {
6481             # with => 'error_on_unknown',
6482             # });
6483             #
6484             # # "..."
6485             #
6486             # =cut
6487              
6488             package main;
6489              
6490             use Venus::Test 'test';
6491              
6492             my $test = test 't/path/pod/example';
6493              
6494             my $present_data_for_error = $test->present_data_for_error('error_on_unknown');
6495              
6496             # =over 4
6497             #
6498             # =item error: C
6499             #
6500             # This package may raise an error_on_unknown error.
6501             #
6502             # B
6503             #
6504             # # given: synopsis
6505             #
6506             # my $error = $example->catch('error', {
6507             # with => 'error_on_unknown',
6508             # });
6509             #
6510             # # "..."
6511             #
6512             # =back
6513              
6514             =back
6515              
6516             =cut
6517              
6518             =head2 present_data_for_example
6519              
6520             present_data_for_example(number $numberm string $name) (arrayref)
6521              
6522             The present_data_for_example method builds a documentation block for the C section and returns it as a string.
6523              
6524             I>
6525              
6526             =over 4
6527              
6528             =item present_data_for_example example 1
6529              
6530             # =attribute name
6531             #
6532             # The name attribute is read-write, optional, and holds a string.
6533             #
6534             # =cut
6535             #
6536             # =example-1 name
6537             #
6538             # # given: synopsis
6539             #
6540             # my $name = $example->name;
6541             #
6542             # # "..."
6543             #
6544             # =cut
6545              
6546             package main;
6547              
6548             use Venus::Test 'test';
6549              
6550             my $test = test 't/path/pod/example';
6551              
6552             my $present_data_for_example = $test->present_data_for_example(1, 'name');
6553              
6554             # =over 4
6555             #
6556             # =item name example 1
6557             #
6558             # # given: synopsis
6559             #
6560             # my $name = $example->name;
6561             #
6562             # # "..."
6563             #
6564             # =back
6565              
6566             =back
6567              
6568             =cut
6569              
6570             =head2 present_data_for_feature
6571              
6572             present_data_for_feature(string $name) (arrayref)
6573              
6574             The present_data_for_feature method builds a documentation block for the C section and returns it as a string.
6575              
6576             I>
6577              
6578             =over 4
6579              
6580             =item present_data_for_feature example 1
6581              
6582             # =feature noop
6583             #
6584             # This package is no particularly useful features.
6585             #
6586             # =cut
6587              
6588             package main;
6589              
6590             use Venus::Test 'test';
6591              
6592             my $test = test 't/path/pod/example';
6593              
6594             my $present_data_for_feature = $test->present_data_for_feature('noop');
6595              
6596             # =over 4
6597             #
6598             # =item noop
6599             #
6600             # This package is no particularly useful features.
6601             #
6602             # =back
6603              
6604             =back
6605              
6606             =cut
6607              
6608             =head2 present_data_for_function
6609              
6610             present_data_for_function(string $name) (arrayref)
6611              
6612             The present_data_for_function method builds a documentation block for the C section and returns it as a string.
6613              
6614             I>
6615              
6616             =over 4
6617              
6618             =item present_data_for_function example 1
6619              
6620             # =function eg
6621             #
6622             # The eg function returns a new instance of Example.
6623             #
6624             # =cut
6625             #
6626             # =example-1 name
6627             #
6628             # # given: synopsis
6629             #
6630             # my $example = eg();
6631             #
6632             # # "..."
6633             #
6634             # =cut
6635              
6636             package main;
6637              
6638             use Venus::Test 'test';
6639              
6640             my $test = test 't/path/pod/example';
6641              
6642             my $present_data_for_function = $test->present_data_for_function('eg');
6643              
6644             # =head2 eg
6645             #
6646             # The eg function returns a new instance of Example.
6647             #
6648             # =cut
6649              
6650             =back
6651              
6652             =cut
6653              
6654             =head2 present_data_for_includes
6655              
6656             present_data_for_includes() (arrayref)
6657              
6658             The present_data_for_includes method builds a documentation block for the C section and returns it as a string.
6659              
6660             I>
6661              
6662             =over 4
6663              
6664             =item present_data_for_includes example 1
6665              
6666             # =includes
6667             #
6668             # function: eg
6669             #
6670             # method: prepare
6671             # method: execute
6672             #
6673             # =cut
6674              
6675             package main;
6676              
6677             use Venus::Test 'test';
6678              
6679             my $test = test 't/path/pod/example';
6680              
6681             my $present_data_for_includes = $test->present_data_for_includes;
6682              
6683             # undef
6684              
6685             =back
6686              
6687             =cut
6688              
6689             =head2 present_data_for_inherits
6690              
6691             present_data_for_inherits() (arrayref)
6692              
6693             The present_data_for_inherits method builds a documentation block for the C section and returns it as a string.
6694              
6695             I>
6696              
6697             =over 4
6698              
6699             =item present_data_for_inherits example 1
6700              
6701             # =inherits
6702             #
6703             # Venus::Core::Class
6704             #
6705             # =cut
6706              
6707             package main;
6708              
6709             use Venus::Test 'test';
6710              
6711             my $test = test 't/path/pod/example';
6712              
6713             my $present_data_for_inherits = $test->present_data_for_inherits;
6714              
6715             # =head1 INHERITS
6716             #
6717             # This package inherits behaviors from:
6718             #
6719             # L
6720             #
6721             # =cut
6722              
6723             =back
6724              
6725             =cut
6726              
6727             =head2 present_data_for_integrates
6728              
6729             present_data_for_integrates() (arrayref)
6730              
6731             The present_data_for_integrates method builds a documentation block for the C section and returns it as a string.
6732              
6733             I>
6734              
6735             =over 4
6736              
6737             =item present_data_for_integrates example 1
6738              
6739             # =integrates
6740             #
6741             # Venus::Role::Catchable
6742             # Venus::Role::Throwable
6743             #
6744             # =cut
6745              
6746             package main;
6747              
6748             use Venus::Test 'test';
6749              
6750             my $test = test 't/path/pod/example';
6751              
6752             my $present_data_for_integrates = $test->present_data_for_integrates;
6753              
6754             # =head1 INTEGRATES
6755             #
6756             # This package integrates behaviors from:
6757             #
6758             # L
6759             #
6760             # L
6761             #
6762             # =cut
6763              
6764             =back
6765              
6766             =cut
6767              
6768             =head2 present_data_for_layout
6769              
6770             present_data_for_layout() (arrayref)
6771              
6772             The present_data_for_layout method builds a documentation block for the C section and returns it as a string.
6773              
6774             I>
6775              
6776             =over 4
6777              
6778             =item present_data_for_layout example 1
6779              
6780             # =layout
6781             #
6782             # encoding
6783             # name
6784             # synopsis
6785             # description
6786             # attributes: attribute
6787             # authors
6788             # license
6789             #
6790             # =cut
6791              
6792             package main;
6793              
6794             use Venus::Test 'test';
6795              
6796             my $test = test 't/path/pod/example';
6797              
6798             my $present_data_for_layout = $test->present_data_for_layout;
6799              
6800             # undef
6801              
6802             =back
6803              
6804             =cut
6805              
6806             =head2 present_data_for_libraries
6807              
6808             present_data_for_libraries() (arrayref)
6809              
6810             The present_data_for_libraries method builds a documentation block for the C section and returns it as a string.
6811              
6812             I>
6813              
6814             =over 4
6815              
6816             =item present_data_for_libraries example 1
6817              
6818             # =libraries
6819             #
6820             # Venus::Check
6821             #
6822             # =cut
6823              
6824             package main;
6825              
6826             use Venus::Test 'test';
6827              
6828             my $test = test 't/path/pod/example';
6829              
6830             my $present_data_for_libraries = $test->present_data_for_libraries;
6831              
6832             # =head1 LIBRARIES
6833             #
6834             # This package uses type constraints from:
6835             #
6836             # L
6837             #
6838             # =cut
6839              
6840             =back
6841              
6842             =cut
6843              
6844             =head2 present_data_for_license
6845              
6846             present_data_for_license() (arrayref)
6847              
6848             The present_data_for_license method builds a documentation block for the C section and returns it as a string.
6849              
6850             I>
6851              
6852             =over 4
6853              
6854             =item present_data_for_license example 1
6855              
6856             # =license
6857             #
6858             # No license granted.
6859             #
6860             # =cut
6861              
6862             package main;
6863              
6864             use Venus::Test 'test';
6865              
6866             my $test = test 't/path/pod/example';
6867              
6868             my $present_data_for_license = $test->present_data_for_license;
6869              
6870             # =head1 LICENSE
6871             #
6872             # No license granted.
6873             #
6874             # =cut
6875              
6876             =back
6877              
6878             =cut
6879              
6880             =head2 present_data_for_message
6881              
6882             present_data_for_message(string $name) (arrayref)
6883              
6884             The present_data_for_message method builds a documentation block for the C section and returns it as a string.
6885              
6886             I>
6887              
6888             =over 4
6889              
6890             =item present_data_for_message example 1
6891              
6892             # =message accept
6893             #
6894             # The accept message represents acceptance.
6895             #
6896             # =cut
6897             #
6898             # =example-1 accept
6899             #
6900             # # given: synopsis
6901             #
6902             # my $accept = $example->accept;
6903             #
6904             # # "..."
6905             #
6906             # =cut
6907              
6908             package main;
6909              
6910             use Venus::Test 'test';
6911              
6912             my $test = test 't/path/pod/example';
6913              
6914             my $present_data_for_message = $test->present_data_for_message('accept');
6915              
6916             # =over 4
6917             #
6918             # =item accept
6919             #
6920             # The accept message represents acceptance.
6921             #
6922             # B
6923             #
6924             # # given: synopsis
6925             #
6926             # my $accept = $example->accept;
6927             #
6928             # # "..."
6929             #
6930             # =back
6931              
6932             =back
6933              
6934             =cut
6935              
6936             =head2 present_data_for_metadata
6937              
6938             present_data_for_metadata(string $name) (arrayref)
6939              
6940             The present_data_for_metadata method builds a documentation block for the C section and returns it as a string.
6941              
6942             I>
6943              
6944             =over 4
6945              
6946             =item present_data_for_metadata example 1
6947              
6948             # =method prepare
6949             #
6950             # The prepare method prepares for execution.
6951             #
6952             # =cut
6953             #
6954             # =metadata prepare
6955             #
6956             # {since => 1.2.3}
6957             #
6958             # =cut
6959             #
6960             # =example-1 prepare
6961             #
6962             # # given: synopsis
6963             #
6964             # my $prepare = $example->prepare;
6965             #
6966             # # "..."
6967             #
6968             # =cut
6969              
6970             package main;
6971              
6972             use Venus::Test 'test';
6973              
6974             my $test = test 't/path/pod/example';
6975              
6976             my $present_data_for_metadata = $test->present_data_for_metadata('prepare');
6977              
6978             # undef
6979              
6980             =back
6981              
6982             =cut
6983              
6984             =head2 present_data_for_method
6985              
6986             present_data_for_method(string $name) (arrayref)
6987              
6988             The present_data_for_method method builds a documentation block for the C section and returns it as a string.
6989              
6990             I>
6991              
6992             =over 4
6993              
6994             =item present_data_for_method example 1
6995              
6996             # =method execute
6997             #
6998             # The execute method executes the logic.
6999             #
7000             # =cut
7001             #
7002             # =metadata execute
7003             #
7004             # {since => 1.2.3}
7005             #
7006             # =cut
7007             #
7008             # =example-1 execute
7009             #
7010             # # given: synopsis
7011             #
7012             # my $execute = $example->execute;
7013             #
7014             # # "..."
7015             #
7016             # =cut
7017              
7018             package main;
7019              
7020             use Venus::Test 'test';
7021              
7022             my $test = test 't/path/pod/example';
7023              
7024             my $present_data_for_method = $test->present_data_for_method('execute');
7025              
7026             # =head2 execute
7027             #
7028             # execute() (boolean)
7029             #
7030             # The execute method executes the logic.
7031             #
7032             # I>
7033             #
7034             # =over 4
7035             #
7036             # =item execute example 1
7037             #
7038             # # given: synopsis
7039             #
7040             # my $execute = $example->execute;
7041             #
7042             # # "..."
7043             #
7044             # =back
7045             #
7046             # =cut
7047              
7048             =back
7049              
7050             =cut
7051              
7052             =head2 present_data_for_name
7053              
7054             present_data_for_name() (arrayref)
7055              
7056             The present_data_for_name method builds a documentation block for the C section and returns it as a string.
7057              
7058             I>
7059              
7060             =over 4
7061              
7062             =item present_data_for_name example 1
7063              
7064             # =name
7065              
7066             # Example
7067              
7068             # =cut
7069              
7070             package main;
7071              
7072             use Venus::Test 'test';
7073              
7074             my $test = test 't/path/pod/example';
7075              
7076             my $present_data_for_name = $test->present_data_for_name;
7077              
7078             # =head1 NAME
7079             #
7080             # Example - Example Class
7081             #
7082             # =cut
7083              
7084             =back
7085              
7086             =cut
7087              
7088             =head2 present_data_for_operator
7089              
7090             present_data_for_operator(string $name) (arrayref)
7091              
7092             The present_data_for_operator method builds a documentation block for the C section and returns it as a string.
7093              
7094             I>
7095              
7096             =over 4
7097              
7098             =item present_data_for_operator example 1
7099              
7100             # =operator ("")
7101             #
7102             # This package overloads the C<""> operator.
7103             #
7104             # =cut
7105             #
7106             # =example-1 ("")
7107             #
7108             # # given: synopsis
7109             #
7110             # my $string = "$example";
7111             #
7112             # # "..."
7113             #
7114             # =cut
7115              
7116             package main;
7117              
7118             use Venus::Test 'test';
7119              
7120             my $test = test 't/path/pod/example';
7121              
7122             my $present_data_for_operator = $test->present_data_for_operator('("")');
7123              
7124             # =over 4
7125             #
7126             # =item operation: C<("")>
7127             #
7128             # This package overloads the C<""> operator.
7129             #
7130             # B
7131             #
7132             # # given: synopsis
7133             #
7134             # my $string = "$example";
7135             #
7136             # # "..."
7137             #
7138             # =back
7139              
7140             =back
7141              
7142             =cut
7143              
7144             =head2 render
7145              
7146             render(string $file) (Venus::Path)
7147              
7148             The render method reads the test specification and generates L
7149             documentation and returns a L object for the filename provided.
7150              
7151             I>
7152              
7153             =over 4
7154              
7155             =item render example 1
7156              
7157             # given: synopsis
7158              
7159             package main;
7160              
7161             my $path = $test->render('t/path/pod/test');
7162              
7163             # bless(..., "Venus::Path")
7164              
7165             =back
7166              
7167             =cut
7168              
7169             =head2 same
7170              
7171             same(any $data1, any $data2, string $description) (any)
7172              
7173             The same method dispatches to the L operation and returns
7174             the result.
7175              
7176             I>
7177              
7178             =over 4
7179              
7180             =item same example 1
7181              
7182             # given: synopsis
7183              
7184             package main;
7185              
7186             my $same = $test->same({1..4}, {1..4}, 'example-1 same passed');
7187              
7188             # true
7189              
7190             =back
7191              
7192             =cut
7193              
7194             =head2 skip
7195              
7196             skip(string $description, boolean | coderef $value) (any)
7197              
7198             The skip method dispatches to the L operation with the
7199             C option and returns the result.
7200              
7201             I>
7202              
7203             =over 4
7204              
7205             =item skip example 1
7206              
7207             # given: synopsis
7208              
7209             package main;
7210              
7211             my $skip = $test->skip('Unsupported', !0);
7212              
7213             # true
7214              
7215             =back
7216              
7217             =over 4
7218              
7219             =item skip example 2
7220              
7221             # given: synopsis
7222              
7223             package main;
7224              
7225             my $skip = $test->skip('Unsupported', sub{!0});
7226              
7227             # true
7228              
7229             =back
7230              
7231             =cut
7232              
7233             =head1 FEATURES
7234              
7235             This package provides the following features:
7236              
7237             =cut
7238              
7239             =over 4
7240              
7241             =item spec
7242              
7243             # [required]
7244              
7245             =name
7246             =abstract
7247             =tagline
7248             =synopsis
7249             =description
7250              
7251             # [optional]
7252              
7253             =includes
7254             =libraries
7255             =inherits
7256             =integrates
7257              
7258             # [optional; repeatable]
7259              
7260             =attribute $name
7261             =signature $name
7262             =example-$number $name # [repeatable]
7263              
7264             # [optional; repeatable]
7265              
7266             =function $name
7267             =signature $name
7268             =example-$number $name # [repeatable]
7269              
7270             # [optional; repeatable]
7271              
7272             =message $name
7273             =signature $name
7274             =example-$number $name # [repeatable]
7275              
7276             # [optional; repeatable]
7277              
7278             =method $name
7279             =signature $name
7280             =example-$number $name # [repeatable]
7281              
7282             # [optional; repeatable]
7283              
7284             =routine $name
7285             =signature $name
7286             =example-$number $name # [repeatable]
7287              
7288             # [optional; repeatable]
7289              
7290             =feature $name
7291             =example $name
7292              
7293             # [optional; repeatable]
7294              
7295             =error $name
7296             =example $name
7297              
7298             # [optional; repeatable]
7299              
7300             =operator $name
7301             =example $name
7302              
7303             # [optional]
7304              
7305             =partials
7306             =authors
7307             =license
7308             =project
7309              
7310             The specification is designed to accommodate typical package declarations. It
7311             is used by the parser to provide the content used in test automation and
7312             document generation. B When code blocks are evaluated, the
7313             I<"redefined"> warnings are now automatically disabled.
7314              
7315             =back
7316              
7317             =over 4
7318              
7319             =item spec-abstract
7320              
7321             =abstract
7322              
7323             Example Test Documentation
7324              
7325             =cut
7326              
7327             $test->for('abstract');
7328              
7329             The C block should contain a subtitle describing the package. This is
7330             tested for existence.
7331              
7332             =back
7333              
7334             =over 4
7335              
7336             =item spec-attribute
7337              
7338             =attribute name
7339              
7340             The name attribute is read-write, optional, and holds a string.
7341              
7342             =example-1 name
7343              
7344             # given: synopsis
7345              
7346             my $name = $example->name;
7347              
7348             # "..."
7349              
7350             =cut
7351              
7352             $test->for('attribute', 'name');
7353              
7354             $test->for('example', 1, 'name', sub {
7355             my ($tryable) = @_;
7356             $tryable->result;
7357             });
7358              
7359             Describing an attribute requires at least three blocks, i.e. C
7360             $name>, C, and C. The C
7361             block should contain a description of the attribute and its purpose. The
7362             C block should contain a routine signature in the form of
7363             C<$signature : $return_type>, where C<$signature> is a valid typed signature
7364             and C<$return_type> is any valid L expression. The
7365             C block is a repeatable block, and at least one block must
7366             exist when documenting an attribute. The C block should
7367             contain valid Perl code and return a value. The block may contain a "magic"
7368             comment in the form of C or C
7369             which if present will include the given code example(s) with the evaluation of
7370             the current block. Each attribute is tested and must be recognized to exist.
7371              
7372             =back
7373              
7374             =over 4
7375              
7376             =item spec-authors
7377              
7378             =authors
7379              
7380             Awncorp, C
7381              
7382             =cut
7383              
7384             $test->for('authors');
7385              
7386             The C block should contain text describing the authors of the package.
7387              
7388             =back
7389              
7390             =over 4
7391              
7392             =item spec-description
7393              
7394             =description
7395              
7396             This package provides an example class.
7397              
7398             =cut
7399              
7400             $test->for('description');
7401              
7402             The C block should contain a description of the package and it's
7403             behaviors.
7404              
7405             =back
7406              
7407             =over 4
7408              
7409             =item spec-encoding
7410              
7411             =encoding
7412              
7413             utf8
7414              
7415             =cut
7416              
7417             $test->for('encoding');
7418              
7419             The C block should contain the appropriate L.
7420              
7421             =back
7422              
7423             =over 4
7424              
7425             =item spec-error
7426              
7427             =error error_on_unknown
7428              
7429             This package may raise an error_on_unknown error.
7430              
7431             =example-1 error_on_unknown
7432              
7433             # given: synopsis
7434              
7435             my $error = $example->error;
7436              
7437             # "..."
7438              
7439             =cut
7440              
7441             $test->for('error', 'error_on_unknown');
7442              
7443             $test->for('example', 1, 'error_on_unknown', sub {
7444             my ($tryable) = @_;
7445             $tryable->result;
7446             });
7447              
7448             The C block should contain a description of the error the package
7449             may raise, and can include an C block to ensure the
7450             error is raised and caught.
7451              
7452             =back
7453              
7454             =over 4
7455              
7456             =item spec-example
7457              
7458             =example-1 name
7459              
7460             # given: synopsis
7461              
7462             my $name = $example->name;
7463              
7464             # "..."
7465              
7466             =cut
7467              
7468             $test->for('example', 1, 'name', sub {
7469             my ($tryable) = @_;
7470             $tryable->result;
7471             });
7472              
7473             The C block should contain valid Perl code and return a
7474             value. The block may contain a "magic" comment in the form of C
7475             synopsis> or C which if present will include the
7476             given code example(s) with the evaluation of the current block.
7477              
7478             =back
7479              
7480             =over 4
7481              
7482             =item spec-feature
7483              
7484             =feature noop
7485              
7486             This package is no particularly useful features.
7487              
7488             =example-1 noop
7489              
7490             # given: synopsis
7491              
7492             my $feature = $example->feature;
7493              
7494             # "..."
7495              
7496             =cut
7497              
7498             $test->for('feature');
7499              
7500             $test->for('example', 1, 'noop', sub {
7501             my ($tryable) = @_;
7502             $tryable->result;
7503             });
7504              
7505             The C block should contain a description of the feature(s) the
7506             package enables, and can include an C block to ensure
7507             the feature described works as expected.
7508              
7509             =back
7510              
7511             =over 4
7512              
7513             =item spec-function
7514              
7515             =function eg
7516              
7517             The eg function returns a new instance of Example.
7518              
7519             =example-1 eg
7520              
7521             # given: synopsis
7522              
7523             my $example = eg();
7524              
7525             # "..."
7526              
7527             =cut
7528              
7529             $test->for('function', 'eg');
7530              
7531             $test->for('example', 1, 'eg', sub {
7532             my ($tryable) = @_;
7533             $tryable->result;
7534             });
7535              
7536             Describing a function requires at least three blocks, i.e. C,
7537             C, and C. The C block should
7538             contain a description of the function and its purpose. The C block
7539             should contain a routine signature in the form of C<$signature : $return_type>,
7540             where C<$signature> is a valid typed signature and C<$return_type> is any valid
7541             L expression. The C block is a repeatable block,
7542             and at least one block must exist when documenting an attribute. The
7543             C block should contain valid Perl code and return a value. The
7544             block may contain a "magic" comment in the form of C or
7545             C which if present will include the given code
7546             example(s) with the evaluation of the current block. Each attribute is tested
7547             and must be recognized to exist.
7548              
7549             =back
7550              
7551             =over 4
7552              
7553             =item spec-includes
7554              
7555             =includes
7556              
7557             function: eg
7558              
7559             method: prepare
7560             method: execute
7561              
7562             =cut
7563              
7564             $test->for('includes');
7565              
7566             The C block should contain a list of C, C, and/or
7567             C names in the format of C<$type: $name>. Empty (or commented out)
7568             lines are ignored. Each function, method, and/or routine is tested to be
7569             documented properly, i.e. has the requisite counterparts (e.g. signature and at
7570             least one example block). Also, the package must recognize that each exists.
7571              
7572             =back
7573              
7574             =over 4
7575              
7576             =item spec-inherits
7577              
7578             =inherits
7579              
7580             Venus::Core::Class
7581              
7582             =cut
7583              
7584             $test->for('inherits');
7585              
7586             The C block should contain a list of parent packages. These packages
7587             are tested for loadability.
7588              
7589             =back
7590              
7591             =over 4
7592              
7593             =item spec-integrates
7594              
7595             =integrates
7596              
7597             Venus::Role::Catchable
7598             Venus::Role::Throwable
7599              
7600             =cut
7601              
7602             $test->for('integrates');
7603              
7604             The C block should contain a list of packages that are involved in
7605             the behavior of the main package. These packages are not automatically tested.
7606              
7607             =back
7608              
7609             =over 4
7610              
7611             =item spec-layout
7612              
7613             =layout
7614              
7615             encoding
7616             name
7617             synopsis
7618             description
7619             attributes: attribute
7620             authors
7621             license
7622              
7623             =cut
7624              
7625             $test->for('layout');
7626              
7627             The C block should contain a list blocks to render using L, in
7628             the order they should be rendered.
7629              
7630             =back
7631              
7632             =over 4
7633              
7634             =item spec-libraries
7635              
7636             =libraries
7637              
7638             Venus::Check
7639              
7640             =cut
7641              
7642             $test->for('libraries');
7643              
7644             The C block should contain a list of packages, each describing how
7645             particular type names used within function and method signatures will be
7646             validated. These packages are tested for loadability.
7647              
7648             =back
7649              
7650             =over 4
7651              
7652             =item spec-license
7653              
7654             =license
7655              
7656             No license granted.
7657              
7658             =cut
7659              
7660             $test->for('license');
7661              
7662             The C block should contain a link and/or description of the license
7663             governing the package.
7664              
7665             =back
7666              
7667             =over 4
7668              
7669             =item spec-message
7670              
7671             =message accept
7672              
7673             The accept message represents acceptance.
7674              
7675             =example-1 accept
7676              
7677             # given: synopsis
7678              
7679             my $accept = $example->accept;
7680              
7681             # "..."
7682              
7683             =cut
7684              
7685             $test->for('message', 'accept');
7686              
7687             $test->for('example', 1, 'accept', sub {
7688             my ($tryable) = @_;
7689             $tryable->result;
7690             });
7691              
7692             Describing a message requires at least three blocks, i.e. C,
7693             C, and C. The C block should
7694             contain a description of the message and its purpose. The C block
7695             should contain a routine signature in the form of C<$signature : $return_type>,
7696             where C<$signature> is a valid typed signature and C<$return_type> is any valid
7697             L expression. The C block is a repeatable block,
7698             and at least one block must exist when documenting an attribute. The
7699             C block should contain valid Perl code and return a value. The
7700             block may contain a "magic" comment in the form of C or
7701             C which if present will include the given code
7702             example(s) with the evaluation of the current block. Each attribute is tested
7703             and must be recognized to exist.
7704              
7705             =back
7706              
7707             =over 4
7708              
7709             =item spec-metadata
7710              
7711             =metadata prepare
7712              
7713             {since => "1.2.3"}
7714              
7715             =cut
7716              
7717             $test->for('metadata', 'prepare');
7718              
7719             The C block should contain a stringified hashref containing Perl data
7720             structures used in the rendering of the package's documentation.
7721              
7722             =back
7723              
7724             =over 4
7725              
7726             =item spec-method
7727              
7728             =method prepare
7729              
7730             The prepare method prepares for execution.
7731              
7732             =example-1 prepare
7733              
7734             # given: synopsis
7735              
7736             my $prepare = $example->prepare;
7737              
7738             # "..."
7739              
7740             =cut
7741              
7742             $test->for('method', 'prepare');
7743              
7744             $test->for('example', 1, 'prepare', sub {
7745             my ($tryable) = @_;
7746             $tryable->result;
7747             });
7748              
7749             Describing a method requires at least three blocks, i.e. C,
7750             C, and C. The C block should
7751             contain a description of the method and its purpose. The C block
7752             should contain a routine signature in the form of C<$signature : $return_type>,
7753             where C<$signature> is a valid typed signature and C<$return_type> is any valid
7754             L expression. The C block is a repeatable block,
7755             and at least one block must exist when documenting an attribute. The
7756             C block should contain valid Perl code and return a value. The
7757             block may contain a "magic" comment in the form of C or
7758             C which if present will include the given code
7759             example(s) with the evaluation of the current block. Each attribute is tested
7760             and must be recognized to exist.
7761              
7762             =back
7763              
7764             =over 4
7765              
7766             =item spec-name
7767              
7768             =name
7769              
7770             Example
7771              
7772             =cut
7773              
7774             $test->for('name');
7775              
7776             The C block should contain the package name. This is tested for
7777             loadability.
7778              
7779             =back
7780              
7781             =over 4
7782              
7783             =item spec-operator
7784              
7785             =operator ("")
7786              
7787             This package overloads the C<""> operator.
7788              
7789             =example-1 ("")
7790              
7791             # given: synopsis
7792              
7793             my $string = "$example";
7794              
7795             # "..."
7796              
7797             =cut
7798              
7799             $test->for('operator', '("")');
7800              
7801             $test->for('example', 1, '("")', sub {
7802             my ($tryable) = @_;
7803             $tryable->result;
7804             });
7805              
7806             The C block should contain a description of the overloaded
7807             operation the package performs, and can include an C
7808             block to ensure the operation is functioning properly.
7809              
7810             =back
7811              
7812             =over 4
7813              
7814             =item spec-partials
7815              
7816             =partials
7817              
7818             t/path/to/other.t: present: authors
7819             t/path/to/other.t: present: license
7820              
7821             =cut
7822              
7823             $test->for('partials');
7824              
7825             The C block should contain references to other marked-up test files
7826             in the form of C<$file: $method: $section>, which will call the C<$method> on a
7827             L instance for the C<$file> and include the results in-place as
7828             part of the rendering of the current file.
7829              
7830             =back
7831              
7832             =over 4
7833              
7834             =item spec-project
7835              
7836             =project
7837              
7838             https://github.com/awncorp/example
7839              
7840             =cut
7841              
7842             $test->for('project');
7843              
7844             The C block should contain a description and/or links for the
7845             package's project.
7846              
7847             =back
7848              
7849             =over 4
7850              
7851             =item spec-signature
7852              
7853             =signature prepare
7854              
7855             prepare() (boolean)
7856              
7857             =cut
7858              
7859             $test->for('signature', 'prepare');
7860              
7861             The C block should contain a routine signature in the form of
7862             C<$signature : $return_type>, where C<$signature> is a valid typed signature
7863             and C<$return_type> is any valid L expression.
7864              
7865             =back
7866              
7867             =over 4
7868              
7869             =item spec-synopsis
7870              
7871             =synopsis
7872              
7873             use Example;
7874              
7875             my $example = Example->new;
7876              
7877             # bless(..., "Example")
7878              
7879             =cut
7880              
7881             $test->for('synopsis', sub {
7882             my ($tryable) = @_;
7883             $tryable->result;
7884             });
7885              
7886             The C block should contain the normative usage of the package. This
7887             is tested for existence. This block should be written in a way that allows it
7888             to be evaled successfully and should return a value.
7889              
7890             =back
7891              
7892             =over 4
7893              
7894             =item spec-tagline
7895              
7896             =tagline
7897              
7898             Example Class
7899              
7900             =cut
7901              
7902             $test->for('tagline');
7903              
7904             The C block should contain a 2-5 word description of the package,
7905             which will be prepended to the name as a full description of the package.
7906              
7907             =back
7908              
7909             =over 4
7910              
7911             =item spec-version
7912              
7913             =version
7914              
7915             1.2.3
7916              
7917             =cut
7918              
7919             $test->for('version');
7920              
7921             The C block should contain a valid version number for the package.
7922              
7923             =back
7924              
7925             =over 4
7926              
7927             =item test-for
7928              
7929             # ...
7930              
7931             $test->for('name');
7932              
7933             This framework provides a set of automated subtests based on the package
7934             specification, but not everything can be automated so it also provides you with
7935             powerful hooks into the framework for manual testing.
7936              
7937             # ...
7938              
7939             $test->for('synopsis', sub {
7940             my ($tryable) = @_;
7941              
7942             my $result = $tryable->result;
7943              
7944             # must return truthy to continue
7945             $result;
7946             });
7947              
7948             The code examples documented can be automatically evaluated (evaled) and
7949             returned using a callback you provide for further testing. Because the code
7950             examples are returned as L objects this makes capturing and testing
7951             exceptions simple, for example:
7952              
7953             # ...
7954              
7955             $test->for('synopsis', sub {
7956             my ($tryable) = @_;
7957              
7958             # catch exception thrown by the synopsis
7959             $tryable->catch('Path::Find::Error', sub {
7960             return $_[0];
7961             });
7962              
7963             # test the exception
7964             my $result = $tryable->result;
7965             ok $result->isa('Path::Find::Error'), 'exception caught';
7966              
7967             # must return truthy to continue
7968             $result;
7969             });
7970              
7971             Additionally, another manual testing hook (with some automation) is the
7972             C method. This hook evaluates (evals) a given example and returns the
7973             result as a L object. The first argument is the example ID (or
7974             number), for example:
7975              
7976             # ...
7977              
7978             $test->for('example', 1, 'children', sub {
7979             my ($tryable) = @_;
7980              
7981             my $result = $tryable->result;
7982              
7983             # must return truthy to continue
7984             $result;
7985             });
7986              
7987             Finally, the lesser-used but useful manual testing hook is the C
7988             method. This hook evaluates (evals) a documented feature and returns the result
7989             as a L object, for example:
7990              
7991             # ...
7992              
7993             $test->for('feature', 'export-path-make', sub {
7994             my ($tryable) = @_;
7995              
7996             ok my $result = $tryable->result, 'result ok';
7997              
7998             # must return truthy to continue
7999             $result;
8000             });
8001              
8002             The test automation and documentation generation enabled through this framework
8003             makes it easy to maintain source/test/documentation parity. This also increases
8004             reusability and reduces the need for complicated state and test setup.
8005              
8006             =back
8007              
8008             =head1 ERRORS
8009              
8010             This package may raise the following errors:
8011              
8012             =cut
8013              
8014             =over 4
8015              
8016             =item error: C
8017              
8018             This package may raise an error_on_abstract exception.
8019              
8020             B
8021              
8022             # given: synopsis;
8023              
8024             my $input = {
8025             throw => 'error_on_abstract',
8026             };
8027              
8028             my $error = $test->catch('error', $input);
8029              
8030             # my $name = $error->name;
8031              
8032             # "on_abstract"
8033              
8034             # my $message = $error->render;
8035              
8036             # "Test file \"t/Venus_Test.t\" missing abstract section"
8037              
8038             # my $file = $error->stash('file');
8039              
8040             # "t/Venus_Test.t"
8041              
8042             =back
8043              
8044             =over 4
8045              
8046             =item error: C
8047              
8048             This package may raise an error_on_description exception.
8049              
8050             B
8051              
8052             # given: synopsis;
8053              
8054             my $input = {
8055             throw => 'error_on_description',
8056             };
8057              
8058             my $error = $test->catch('error', $input);
8059              
8060             # my $name = $error->name;
8061              
8062             # "on_description"
8063              
8064             # my $message = $error->render;
8065              
8066             # "Test file \"t/Venus_Test.t\" missing description section"
8067              
8068             # my $file = $error->stash('file');
8069              
8070             # "t/Venus_Test.t"
8071              
8072             =back
8073              
8074             =over 4
8075              
8076             =item error: C
8077              
8078             This package may raise an error_on_name exception.
8079              
8080             B
8081              
8082             # given: synopsis;
8083              
8084             my $input = {
8085             throw => 'error_on_name',
8086             };
8087              
8088             my $error = $test->catch('error', $input);
8089              
8090             # my $name = $error->name;
8091              
8092             # "on_name"
8093              
8094             # my $message = $error->render;
8095              
8096             # "Test file \"t/Venus_Test.t\" missing name section"
8097              
8098             # my $file = $error->stash('file');
8099              
8100             # "t/Venus_Test.t"
8101              
8102             =back
8103              
8104             =over 4
8105              
8106             =item error: C
8107              
8108             This package may raise an error_on_synopsis exception.
8109              
8110             B
8111              
8112             # given: synopsis;
8113              
8114             my $input = {
8115             throw => 'error_on_synopsis',
8116             };
8117              
8118             my $error = $test->catch('error', $input);
8119              
8120             # my $name = $error->name;
8121              
8122             # "on_synopsis"
8123              
8124             # my $message = $error->render;
8125              
8126             # "Test file \"t/Venus_Test.t\" missing synopsis section"
8127              
8128             # my $file = $error->stash('file');
8129              
8130             # "t/Venus_Test.t"
8131              
8132             =back
8133              
8134             =over 4
8135              
8136             =item error: C
8137              
8138             This package may raise an error_on_tagline exception.
8139              
8140             B
8141              
8142             # given: synopsis;
8143              
8144             my $input = {
8145             throw => 'error_on_tagline',
8146             };
8147              
8148             my $error = $test->catch('error', $input);
8149              
8150             # my $name = $error->name;
8151              
8152             # "on_tagline"
8153              
8154             # my $message = $error->render;
8155              
8156             # "Test file \"t/Venus_Test.t\" missing tagline section"
8157              
8158             # my $file = $error->stash('file');
8159              
8160             # "t/Venus_Test.t"
8161              
8162             =back
8163              
8164             =head1 AUTHORS
8165              
8166             Awncorp, C
8167              
8168             =cut
8169              
8170             =head1 LICENSE
8171              
8172             Copyright (C) 2000, Awncorp, C.
8173              
8174             This program is free software, you can redistribute it and/or modify it under
8175             the terms of the Apache license version 2.0.
8176              
8177             =cut