Compare commits

..

1 commit

Author SHA1 Message Date
Simon Brooke 0ae34c8ac1 Brought documentation up to date 2023-01-10 02:15:29 +00:00
35 changed files with 3894 additions and 1409 deletions

View file

@ -42,7 +42,7 @@ Note, though, that internationalisation files for languages other than British E
The following severity levels are understood:
0. `info` things which are not actuallys fault, but issues noted during
0. `info` things which are not actually faults, but issues noted during
validation;
1. `minor` things which I consider to be faults, but which
don't actually breach the spec;

View file

@ -2,95 +2,90 @@
{"dog_and_duck/quack/picky/constants.clj":
[null, 1, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, 1, null, null, null,
null, 1, null, null, null, null, 1, null, null, null, null, null, 1,
null, null, null, 1, null, 1, null, null, null, null, null, null,
null, null, null, null, null, 1, null, 1, null, 1, 1, 1, 1, 1, 1,
null, 1, null, null, null, null, 1, null, null, null, null, 1, null,
null, null, null],
null, null, null, null, null, 1, null, null, null, null, 1, null,
null, null, null, null, 1, null, null, null, 1, null, 1, null, null,
null, null, 1, null, null, null, null, null, null, null, null, null,
null, null, 1, null, 1, null, 1, 1, 1, 1, 1, 1, null, 1, null, null,
null, null, 1, null, null, null, null, 1, null, null, null, null, 1,
null, null, null, null, null, 1, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, 1, null, null,
null, 1, null],
"dog_and_duck/quack/picky/utils.clj":
[null, 1, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, 1,
null, null, 7, null, 1, null, null, null, 0, null, 1, null, null,
null, null, null, 0, 0, 0, 0, 0, null, 1, null, null, 0, 0, 0, null,
null, null, null, true, null, null, 0, null, null, 1, null, null,
null, 4, null, 1, null, null, null, 0, 0, 0, 0, null, 1, null, null,
null, 3, 3, true, 3, null, 1, null, null, null, true, true, 45, 45,
45, 70, 45, null, 0, 0, null, 0, 0, null, 1, null, null, null, null,
null, null, true, 162, 66, true, 6, null, null, null, 53, null,
null, 3, null, 1, null, null, null, null, null, null, null, null,
220, 220, 220, 220, null, 220, null, 220, null, 220, 220, true,
null, 0, 0, null, 53, null, null, 2, 2, null, 1, null, null, null,
true, null, 1, null, null, null, null, null, null, 0, 0, 0, 0, 0, 0,
0, 0, 0, null, 0, 0, 0, 0, 0, 0, null, 1, null, null, null, null,
null, null, null, null, null, 0, 0, null, 0, null, 3, null, null,
null, 3, null, 1, null, null, null, null, null, 0, null, 0, 0, null,
null, 1, null, null, null, null, null, null, true, 53, 53, 53, 3,
53, 53, 41, 53, 9, 53, 16, null, 0, 0, 0, 0, 0, null, null, 1, null,
null, null, null, null, null, null, null, null, null, 1, null, null,
7, null, 1, null, null, null, 1023, null, 1, null, null, null, true,
null, 1, null, null, null, null, null, null, null, null, null, true,
1023, 1023, true, true, true, 1023, 140, null, 1, null, null, true,
408, 352, null, null, null, null, 125, 122, 70, null, null, null,
true, null, null, 0, null, null, 1, null, null, null, 74, null, 1,
null, null, null, 70, 70, true, 70, null, 1, null, null, null, 3, 3,
true, 3, null, 1, null, null, null, true, 0, null, 0, 0, 16, true,
11, 11, 11, true, 21, null, 11, null, 0, 0, null, 0, 0, null, 1,
null, null, null, null, null, null, true, 56, 47, true, 8, null,
null, null, 1, null, null, 1, null, 1, null, null, null, null, null,
null, null, null, 99, 99, 99, 99, null, 99, null, 99, null, 99, 99,
true, null, 0, 0, null, 115, null, null, 2, 2, null, 1, null, null,
null, true, null, 1, null, null, null, null, null, null, 12, 12, 12,
true, true, 0, 0, 0, 0, 0, 0, 0, 0, null, 0, 0, 0, 0, 1, null, 1,
null, null, null, null, null, null, null, null, null, 1, 1, null, 1,
null, 1, null, null, null, 298, null, 1, null, null, null, null,
null, 0, null, 0, 0],
"dog_and_duck/quack/picky/time.clj":
[null, 1, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, 0, 0, 0, 0, 0, 0, null, 0, 0, 0, null,
null, 0, 0, 0, null, 0, 0, 0, 0, 0, null, 0, 0, 0, 0, 0, null, 1,
null, null, null, 0, 0, 0, 0, 0, 0, 0, 0, 0, null, 0, 0, 0, 0],
null, null, null, null, null, 1, null, null, null, true, true, null,
0, null, null, 0, null, null, 1, null, null, null, 0, 0, 0, null, 0,
null, null, 0, null, null, 1, null, null, null, null, null, null, 0,
0, 0, 0, 0],
"dog_and_duck/quack/quack.clj":
[null, 1, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, 1, null, null, null, null, null,
null, null, null, null, null, null, null, 1, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null,
null, null, null, 34, null, 34, null, 1, null, null, null, null,
null, 4, null, 4, null, 1, null, 3, null, 3, null, 1, null, null,
null, null, null, null, null, 0, 0, 0, 0, null, null, null, null, 1,
null, 0, null, 0, null, 1, null, 0, null, 0, null, 1, null, null,
null, null, null, 0, 0, 0, null, null, 1, null, null, null, null,
null, true, true, true, true, 2, 1, null, 1, 1, true, true, 1, null,
null, null, null, null, null, null, null, 0, 0, 0, 0, null, null, 1,
null, null, 0, null, 1, null, null, 0, null, 1, null, null, 0, null,
1, null, null, 2, null, null],
"dog_and_duck/quack/picky/fault_messages.clj":
[null, 1, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, 1, null, 1,
null, null, null, null, null, null, null, null, null, null, null,
null],
null, null, null, null, 14, null, 14, null, 1, null, null, null,
null, null, 1, null, true, null, 1, null, 3, null, 3, null, 1, null,
null, null, null, null, null, null, 0, 0, 0, 0, null, null, null,
null, 1, null, 0, null, 0, null, 1, null, 0, null, 0, null, 1, null,
null, null, null, null, 0, 0, 0, null, null, 1, null, null, null,
null, null, true, true, true, true, 2, 1, null, 1, 1, true, true, 1,
null, null, null, null, null, null, null, null, 0, 0, 0, 0, null,
null, 1, null, null, 0, null, 1, null, null, 0, null, 1, null, null,
0, null, 1, null, null, 2, null, null],
"dog_and_duck/utils/process.clj":
[null, 1, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, 1, null, null, null,
null, null, null, 1, 1, 1, 1, 1, null, true, null, null, null, null,
null, null, null, null, null, 1, null, 1, null, null, null, null,
1],
"clj_activitypub/internal/http_util.clj":
[null, 1, null, null, null, null, null, null, null, null, 1, 1, 1, 1,
2, 2, 1, 1, 1, null, 1, 0, 0, null, 1, null, null, null, 0],
"clj_activitypub/internal/thread_cache.clj":
[null, 1, null, null, null, null, 1, null, null, 8, null, 1, 4, 4, 4,
null, 1, null, 2, null, 2, 2, 2, 2, 2, 2, 2, 2, null, 4, 4, 4, null,
4, 4, 2, 2, true, 2, 2, null, 0, 0, 0, 2, 2, 2, 2],
"dog_and_duck/scratch/parser.clj":
[null, 1, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null,
null, 1, null, null, null, 9, 9, 9, 9, 9, true, 0, null, null, null,
null, null, null, null, null, null, null, null, null, null],
"dog_and_duck/quack/picky/required_properties.clj":[null, 1],
null, 1, null, null, null, 11, 11, 11, 11, 11, true, 0, null, null,
null, null, null, null, null, null, null, null, null, null, null],
"dog_and_duck/quack/picky/scratch.clj":
[null, 1, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null],
"dog_and_duck/quack/picky/control_variables.clj":
[null, 1, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, 1, null, null, null,
null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, 1, null, null, null, null, null,
null, null, null],
"clj_activitypub/core.clj":
[null, 1, null, null, null, null, null, null, null, null, null, 1,
null, null, null, null, null, 0, 0, 0, 0, 0, 0, 0, 0, null, 1, null,
null, null, 6, 2, 2, null, 1, 1, null, null, null, 1, 1, 1, 1, null,
null, 1, null, 1, null, null, null, 0, null, 0, null, 0, 0, 0, 0, 0,
0, null, 1, null, 1, 0, 0, 0, 0, 0, 0, 0, 0, null, 1, null, null, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, null, 1, null, null, null, 0, 0, 0, 0,
0, 0, 0, null, 1, null, null, null, true, null, 1, null, null, null,
null, null, 0, null, 0, 0, 0, 0, 0, null, 1, null, null, null, true,
null, 1, 0, null, null, 0, 0, null, 1, 0, null, null, 0, 0, null, 1,
null, null, null, 0, 0, 0, 0, 0, 0],
"clj_activitypub/internal/crypto.clj":
[null, 1, null, null, null, null, null, null, null, 1, 1, null, 1, 0,
0, null, null, 1, 0, 0, null, 1, 0, 0, null, null, 1, 0, null, 1, 0,
0, null, 1, 0, 0, 0, 0, 0, null],
"dog_and_duck/quack/cli.clj":
[null, 1, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, 1, null, null, null, 1, null, 1, null, 1,
null, 1, null, 0, true, 1, 1, 1, null, 0, true, 1, null, 1, 1, null,
1, null, 0, 0, 0, 0, 0, 0, 0, null, 1, null, 0, 0, 0, 0, 0, 0, null,
1, null, 0, null, 1, null, 0, 0, null, 1, 0, null, 0, 0, 0, 0, 0, 0,
0, null, null, 1, null, 0, 0, 0, 0, 0, null, 0, null, null, 0, 0, 0,
null, 0, 0, 0, 0, 0, null, 0, 0, 0, null, 0, 0, 0, 0, 0, null, 1,
null, 0, 0, 0, 0, 0, 0, null, 1, 0, 0, 0, 0, 0, 0, 0, 0, null, 0, 0,
0, 0, 0, 0, 0, 0, 0],
"dog_and_duck/quack/picky.clj":
[null, 1, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null,
@ -98,34 +93,68 @@
null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, 1, null, null, null, null, 0,
null, 6, 6, null, 0, null, 0, null, 4, null, 1, null, null, 12, 12,
12, 12, 9, 8, 4, null, 1, null, 0, 3, null, 0, 0, 0, 0, null, 1,
null, null, 3, 3, 3, 3, 1, 3, 3, 3, 3, null, 1, null, null, null,
null, 0, 0, 0, 0, 0, 0, null, null, null, 1, null, null, null, true,
0, true, true, null, 1, null, null, null, 1, null, 1, null, null, 1,
null, 1, 0, null, null, null, 1, null, null, 1, 1, 1, 1, null, 1, 1,
1, 1, 1, 1, null, 1, 1, 1, 0, null, null, null, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, null, 1, null, null, null, null, null,
null, null, 0, 0, 0, null, 0, 0, 0, 0, null, 1, null, 0, 0, 0, 0, 0,
0, 0, null, 1, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, 0, 0, 0, 0, 0, 0, null, null,
null, null, null, 0, 0, 0, 0, null, null, 0, 0],
"dog_and_duck/scratch/core.clj":
null, 6, 6, null, 0, null, 0, null, 4, null, 1, null, null, 9, 9, 8,
8, 7, 6, 3, null, 1, null, 0, 1, null, 0, 0, 0, 0, null, 1, null,
null, 3, 3, 3, 3, 1, 3, 3, 3, 3, null, 1, null, null, null, null, 0,
0, 0, 0, 0, 0, null, null, null, 1, null, null, null, true, 0, true,
true, null, 1, null, null, null, 1, null, 1, null, null, 1, null, 1,
0, null, null, null, 1, null, null, 1, 1, 1, 1, null, 1, 1, 1, 1, 1,
1, null, 1, 1, 1, 0, null, null, null, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, null, 1, null, null, null, null, null, null, null,
0, 0, 0, null, 0, 0, 0, 0, null, 1, null, 0, 0, 0, 0, 0, 0, 0, 0,
null, 1, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, 3, 3, 3, 3, 12, 3, null, null, null,
null, null, 3, true, 1, 1, null, null, true, 0],
"dog_and_duck/quack/picky/objects.clj":
[null, 1, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, 1, null, null, 0],
"clj_activitypub/webfinger.clj":
[null, 1, null, null, null, null, null, null, null, 1, null, 1, 1,
null, 1, null, null, 1, 1, 1, null, 1, 1, null, 1, null, null, null,
3, 3, 3, true, 1, true, 2, null],
null, null, null, null, null, null, null, null, null, null, null,
null, null, null, 1, null, 0, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null, 1,
null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, 1, 1, true, 0, 0, 1,
1, 1, 1, 1, 1, 1, 1, 1, null, null, null, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, true, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, null, null, null, null, null, 85, 85, 73, 33, true, null, 1, 1,
1, 78, 1, 1, 76, 1, null, null, null, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, null, null, null, null, null, 70, 70, 58, 20, 8, null, 1, 1, 1,
70, null, null, 1, 1, 1, 1, 1, 1, 1, 1, 1, true, null, true, 1, 1,
null, null, true, 1, 1, 547, 51, null, 1, 1, true, 1, 1, true, 1, 1,
1, 1, null, 1, 1, true, 70, null, null, 12, 12, 12, true, 1, 1, 1,
true, 70, 0, null, null, null, null, null, null, null, null, 70, 70,
null, 20, 8, null, 1, 1, null, null, null, 1, 1, 1, true, 1, 1, 1,
1, 1, true, 1, 1, 1, 1, 1, 12, null, 1, 1, 1, 1, null, null, null,
1, 1, null, 1, null, 1, 1, true, 66, null, null, 14, 14, 0, true, 1,
1, 1, 1, 1, 1, 70, null, 12, null, 1, 1, 12, null, 1, 1, null, 1, 1,
1, 1, 1, 1, true, null, 1, 1, true, 1, 1, null, true, 1, null, null,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 70, 1, 1, 1, null, null, 1, 1,
1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, null, 1, 1, 1, null, null,
true, 1, 1, 1, 1, 1, true, 1, 1, 1, null, 1, 1104, 1104, 1104, 807,
807, 21, null, 1, null, null, 1104, 1104, 1104, 1104, 283, 283, 283,
null, 1, 549, true, 547, true, 547, 547, 547, 547, null, 1, null,
null, null, 42, 42, 42, 41, 41, 2542, 41, 41, 549, 41, null, 1,
null, null, null, null, null, null, null, null, null, null, null,
42, 42, 42, 42, 3, 42, 42, 20, 42, 3, 42, 17, 42, null, 16, 16, 16,
12, 12, null, 1, null, null, null, null, null, null, null, null, 1,
1, true, true, 0, null, 0, null, null, 0, null, null, 1, null, null,
null, null, 10, 10, 0, true, null, 1, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null,
null, 18, 18, 8, 0, null, null, 0, 0, 0, null, 0, 0, 7, 1, 1, null,
1, 1, 1, 1, 17, null, 1, null, null, null, 0, 0, 0, 0, 0, 0, 0, 0,
0, null, 0, 0, 0, 0],
"dog_and_duck/scratch/scratch.clj":
[null, 1, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null,
null, null, 1, null, 1, 1, 1, null, null, null, null, 1, null, 1, 1,
1, 1, null, null, 1, null, null, null, null, null, null, null, 1, 1,
1, 1, 1, 1, null, null],
null, null, null, null, null, 1, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null],
"dog_and_duck/quack/picky/collections.clj":
[null, 1, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, null, null, null, null,
null, 1, null, null, null, 0, 0, 0, 0, 0, 0, null, 1, null, null,
null, 0, 0, 0, 0, 0, 0, 0, null, 1, null, 0, 0, 0, 0, 0, null, null,
0, 0]}}
null, 1, null, null, null, 3, 3, 3, 3, 3, 2, null, 1, null, null,
null, 6, 6, 6, 6, 6, 6, 6, 6, null, 1, null, null, null, 2, 2, 2, 2,
2, null, null, 2, 2],
"dog_and_duck/quack/picky/distribution.clj":
[null, 1, null, null, null, null, null, null, null, null, null, null,
null, null, null, null, null, null, null, 1, null, null, null, null,
null, 0, 0, 0, 0, null, null]}}

View file

@ -1 +1 @@
<?xml version="1.0" encoding="UTF-8"?><report><stats><packages value="17"/><methods value="2634"/><srcfiles value="17"/><srclines value="572"/></stats><data><all name="total"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="50% (1326/2634)"/><coverage type="line, %" value="53% (303/572)"/><package name="dog-and-duck.scratch.scratch"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="100% (66/66)"/><coverage type="line, %" value="100% (17/17)"/></package><package name="clj-activitypub.internal.thread-cache"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="83% (105/126)"/><coverage type="line, %" value="88% (30/34)"/></package><package name="clj-activitypub.internal.crypto"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="19% (9/48)"/><coverage type="line, %" value="39% (9/23)"/></package><package name="dog-and-duck.quack.quack"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="47% (122/262)"/><coverage type="line, %" value="51% (25/49)"/></package><package name="clj-activitypub.webfinger"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="96% (107/112)"/><coverage type="line, %" value="89% (16/18)"/></package><package name="dog-and-duck.quack.picky"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="42% (169/406)"/><coverage type="line, %" value="59% (65/111)"/></package><package name="clj-activitypub.internal.http-util"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="74% (29/39)"/><coverage type="line, %" value="80% (12/15)"/></package><package name="dog-and-duck.quack.picky.collections"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="3% (4/133)"/><coverage type="line, %" value="17% (4/24)"/></package><package name="dog-and-duck.quack.picky.constants"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="100% (73/73)"/><coverage type="line, %" value="100% (18/18)"/></package><package name="dog-and-duck.quack.picky.required-properties"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="100% (1/1)"/><coverage type="line, %" value="100% (1/1)"/></package><package name="dog-and-duck.scratch.core"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="33% (2/6)"/><coverage type="line, %" value="67% (2/3)"/></package><package name="dog-and-duck.quack.picky.control-variables"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="100% (5/5)"/><coverage type="line, %" value="100% (3/3)"/></package><package name="dog-and-duck.utils.process"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="89% (34/38)"/><coverage type="line, %" value="91% (10/11)"/></package><package name="dog-and-duck.quack.picky.utils"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="50% (479/959)"/><coverage type="line, %" value="39% (57/147)"/></package><package name="dog-and-duck.quack.picky.fault-messages"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="100% (29/29)"/><coverage type="line, %" value="100% (3/3)"/></package><package name="dog-and-duck.scratch.parser"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="70% (21/30)"/><coverage type="line, %" value="78% (7/9)"/></package><package name="clj-activitypub.core"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="24% (71/301)"/><coverage type="line, %" value="28% (24/86)"/></package></all></data></report>
<?xml version="1.0" encoding="UTF-8"?><report><stats><packages value="14"/><methods value="3905"/><srcfiles value="14"/><srclines value="793"/></stats><data><all name="total"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="61% (2375/3905)"/><coverage type="line, %" value="68% (538/793)"/><package name="dog-and-duck.scratch.scratch"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="100% (3/3)"/><coverage type="line, %" value="100% (2/2)"/></package><package name="dog-and-duck.quack.picky.time"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="7% (10/135)"/><coverage type="line, %" value="22% (4/18)"/></package><package name="dog-and-duck.quack.quack"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="46% (121/262)"/><coverage type="line, %" value="49% (24/49)"/></package><package name="dog-and-duck.quack.picky"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="55% (225/406)"/><coverage type="line, %" value="66% (74/112)"/></package><package name="dog-and-duck.quack.picky.distribution"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="10% (2/20)"/><coverage type="line, %" value="33% (2/6)"/></package><package name="dog-and-duck.quack.picky.objects"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="81% (1220/1499)"/><coverage type="line, %" value="83% (278/333)"/></package><package name="dog-and-duck.quack.picky.collections"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="100% (130/130)"/><coverage type="line, %" value="100% (25/25)"/></package><package name="dog-and-duck.quack.picky.constants"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="100% (99/99)"/><coverage type="line, %" value="100% (23/23)"/></package><package name="dog-and-duck.quack.cli"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="12% (70/584)"/><coverage type="line, %" value="22% (20/93)"/></package><package name="dog-and-duck.quack.picky.control-variables"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="100% (5/5)"/><coverage type="line, %" value="100% (3/3)"/></package><package name="dog-and-duck.utils.process"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="89% (34/38)"/><coverage type="line, %" value="91% (10/11)"/></package><package name="dog-and-duck.quack.picky.utils"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="63% (434/693)"/><coverage type="line, %" value="60% (65/108)"/></package><package name="dog-and-duck.quack.picky.scratch"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="100% (1/1)"/><coverage type="line, %" value="100% (1/1)"/></package><package name="dog-and-duck.scratch.parser"><coverage type="class, %" value="0% (0/1)"/><coverage type="method, %" value="0% (0/1)"/><coverage type="block, %" value="70% (21/30)"/><coverage type="line, %" value="78% (7/9)"/></package></all></data></report>

View file

@ -0,0 +1,425 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="../../coverage.css"/> <title> dog_and_duck/quack/cli.clj </title>
</head>
<body>
<span class="covered" title="1 out of 1 forms covered">
001&nbsp;&nbsp;(ns&nbsp;dog-and-duck.quack.cli
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
002&nbsp;&nbsp;&nbsp;&nbsp;(:require&nbsp;[clojure.data.json&nbsp;:refer&nbsp;[read-str]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
003&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[clojure.java.io&nbsp;:refer&nbsp;[resource]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
004&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[clojure.pprint&nbsp;:refer&nbsp;[pprint]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[clojure.string&nbsp;:refer&nbsp;[join]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
006&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[clojure.tools.cli&nbsp;:refer&nbsp;[parse-opts]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
007&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[clojure.walk&nbsp;:refer&nbsp;[keywordize-keys]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
008&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[dog-and-duck.quack.picky.constants&nbsp;:refer&nbsp;[severity]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
009&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[dog-and-duck.quack.picky.objects&nbsp;:refer&nbsp;[object-faults]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
010&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[dog-and-duck.quack.picky.utils&nbsp;:refer&nbsp;[filter-severity]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
011&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[hiccup.core&nbsp;:refer&nbsp;[html]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
012&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[scot.weft.i18n.core&nbsp;:refer&nbsp;[get-message&nbsp;*config*]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
013&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[trptr.java-wrapper.locale&nbsp;:as&nbsp;locale])
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
014&nbsp;&nbsp;&nbsp;&nbsp;(:gen-class))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
015&nbsp;&nbsp;
</span><br/>
<span class="covered" title="2 out of 2 forms covered">
016&nbsp;&nbsp;(def&nbsp;^:const&nbsp;stylesheet-url
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
017&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;TODO:&nbsp;fix&nbsp;this&nbsp;to&nbsp;github&nbsp;pages&nbsp;before&nbsp;go&nbsp;live
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
018&nbsp;&nbsp;&nbsp;&nbsp;&quot;https:&#x2F;&#x2F;simon-brooke.github.io&#x2F;dog-and-duck&#x2F;style.css&quot;)
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
019&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
020&nbsp;&nbsp;(def&nbsp;cli-options
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
021&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;An&nbsp;option&nbsp;with&nbsp;a&nbsp;required&nbsp;argument
</span><br/>
<span class="covered" title="7 out of 7 forms covered">
022&nbsp;&nbsp;&nbsp;&nbsp;[[&quot;-i&quot;&nbsp;&quot;--input&nbsp;SOURCE&quot;&nbsp;&quot;The&nbsp;file&nbsp;or&nbsp;URL&nbsp;to&nbsp;validate&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
023&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:default&nbsp;&quot;standard&nbsp;input&quot;]
</span><br/>
<span class="covered" title="6 out of 6 forms covered">
024&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&quot;-o&quot;&nbsp;&quot;--output&nbsp;DEST&quot;&nbsp;&quot;The&nbsp;file&nbsp;to&nbsp;write&nbsp;to,&nbsp;defaults&nbsp;to&nbsp;standard&nbsp;out&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
025&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:default&nbsp;&quot;standard&nbsp;output&quot;]
</span><br/>
<span class="covered" title="9 out of 9 forms covered">
026&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&quot;-f&quot;&nbsp;&quot;--format&nbsp;FORMAT&quot;&nbsp;&quot;The&nbsp;format&nbsp;to&nbsp;output,&nbsp;one&nbsp;of&nbsp;`edn`&nbsp;`csv`&nbsp;`html`&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
027&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:default&nbsp;:edn
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
028&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:parse-fn&nbsp;#(keyword&nbsp;%)
</span><br/>
<span class="partial" title="3 out of 9 forms covered">
029&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:validate&nbsp;[#(#{:csv&nbsp;:edn&nbsp;:html}&nbsp;%)&nbsp;&quot;Expect&nbsp;one&nbsp;of&nbsp;`edn`&nbsp;`csv`&nbsp;`html`&quot;]]
</span><br/>
<span class="covered" title="5 out of 5 forms covered">
030&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&quot;-l&quot;&nbsp;&quot;--language&nbsp;LANG&quot;&nbsp;&quot;The&nbsp;ISO&nbsp;639-1&nbsp;code&nbsp;for&nbsp;the&nbsp;language&nbsp;to&nbsp;output&quot;
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
031&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:default&nbsp;(-&gt;&nbsp;(locale&#x2F;get-default)&nbsp;locale&#x2F;to-language-tag)]
</span><br/>
<span class="covered" title="9 out of 9 forms covered">
032&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&quot;-s&quot;&nbsp;&quot;--severity&nbsp;LEVEL&quot;&nbsp;&quot;The&nbsp;minimum&nbsp;severity&nbsp;of&nbsp;faults&nbsp;to&nbsp;report&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
033&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:default&nbsp;:info
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
034&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:parse-fn&nbsp;#(keyword&nbsp;%)
</span><br/>
<span class="partial" title="5 out of 8 forms covered">
035&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:validate&nbsp;[#(severity&nbsp;%)&nbsp;(join&nbsp;&quot;&nbsp;&quot;
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
036&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cons
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
037&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Expected&nbsp;one&nbsp;of&quot;
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
038&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(map&nbsp;name&nbsp;severity)))]]
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
039&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&quot;-h&quot;&nbsp;&quot;--help&quot;]])
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
040&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
041&nbsp;&nbsp;(defn&nbsp;validate
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
042&nbsp;&nbsp;&nbsp;&nbsp;[source]
</span><br/>
<span class="not-covered" title="0 out of 6 forms covered">
043&nbsp;&nbsp;&nbsp;&nbsp;(println&nbsp;(str&nbsp;&quot;Reading&nbsp;&quot;&nbsp;source))
</span><br/>
<span class="not-covered" title="0 out of 6 forms covered">
044&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;[input&nbsp;(read-str&nbsp;(slurp&nbsp;source))]
</span><br/>
<span class="not-covered" title="0 out of 11 forms covered">
045&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cond&nbsp;(map?&nbsp;input)&nbsp;(object-faults&nbsp;(keywordize-keys&nbsp;input))
</span><br/>
<span class="not-covered" title="0 out of 8 forms covered">
046&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(and&nbsp;(coll?&nbsp;input)
</span><br/>
<span class="not-covered" title="0 out of 8 forms covered">
047&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(every?&nbsp;map?&nbsp;input))&nbsp;(map&nbsp;#(object-faults
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
048&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(keywordize-keys&nbsp;%)
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
049&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;input)))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
050&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
051&nbsp;&nbsp;(defn&nbsp;output-csv
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
052&nbsp;&nbsp;&nbsp;&nbsp;[faults]
</span><br/>
<span class="not-covered" title="0 out of 10 forms covered">
053&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;[cols&nbsp;(set&nbsp;(reduce&nbsp;concat&nbsp;(map&nbsp;keys&nbsp;faults)))]
</span><br/>
<span class="not-covered" title="0 out of 15 forms covered">
054&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(with-out-str
</span><br/>
<span class="not-covered" title="0 out of 9 forms covered">
055&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(println&nbsp;(join&nbsp;&quot;,&nbsp;&quot;&nbsp;(map&nbsp;name&nbsp;cols)))
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
056&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(map
</span><br/>
<span class="not-covered" title="0 out of 12 forms covered">
057&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#(println&nbsp;(join&nbsp;&quot;,&nbsp;&quot;&nbsp;(map&nbsp;(fn&nbsp;[p]&nbsp;(p&nbsp;%))&nbsp;cols)))
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
058&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;faults))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
059&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
060&nbsp;&nbsp;(defn&nbsp;html-header-row
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
061&nbsp;&nbsp;&nbsp;&nbsp;[cols]
</span><br/>
<span class="not-covered" title="0 out of 16 forms covered">
062&nbsp;&nbsp;&nbsp;&nbsp;(apply&nbsp;vector&nbsp;(cons&nbsp;:tr&nbsp;(map&nbsp;#(vector&nbsp;:th&nbsp;(name&nbsp;%))&nbsp;cols))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
063&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
064&nbsp;&nbsp;(defn&nbsp;html-fault-row
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
065&nbsp;&nbsp;&nbsp;&nbsp;[fault&nbsp;cols]
</span><br/>
<span class="not-covered" title="0 out of 2 forms covered">
066&nbsp;&nbsp;&nbsp;&nbsp;(apply
</span><br/>
<span class="not-covered" title="0 out of 14 forms covered">
067&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vector&nbsp;(cons&nbsp;:tr&nbsp;(map&nbsp;(fn&nbsp;[col]&nbsp;(vector&nbsp;:td&nbsp;(col&nbsp;fault)))&nbsp;cols))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
068&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
069&nbsp;&nbsp;(defn-&nbsp;version-string&nbsp;[]
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
070&nbsp;&nbsp;&nbsp;&nbsp;(join
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
071&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;&nbsp;&quot;
</span><br/>
<span class="not-covered" title="0 out of 2 forms covered">
072&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&quot;dog-and-duck&#x2F;quack&quot;
</span><br/>
<span class="not-covered" title="0 out of 2 forms covered">
073&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(try
</span><br/>
<span class="not-covered" title="0 out of 21 forms covered">
074&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(some-&gt;&gt;
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
075&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(resource&nbsp;&quot;META-INF&#x2F;maven&#x2F;dog-and-duck&#x2F;dog-and-duck&#x2F;pom.properties&quot;)
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
076&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;slurp
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
077&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(re-find&nbsp;#&quot;version=(.*)&quot;)
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
078&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;second)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
079&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(catch&nbsp;Exception&nbsp;_&nbsp;nil))]))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
080&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
081&nbsp;&nbsp;(defn&nbsp;output-html
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
082&nbsp;&nbsp;&nbsp;&nbsp;[faults&nbsp;opts]
</span><br/>
<span class="not-covered" title="0 out of 13 forms covered">
083&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;[source-name&nbsp;(if&nbsp;(=&nbsp;(:input&nbsp;opts)&nbsp;*in*)&nbsp;&quot;Standard&nbsp;input&quot;&nbsp;(str&nbsp;(:input&nbsp;opts)))
</span><br/>
<span class="not-covered" title="0 out of 8 forms covered">
084&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;title&nbsp;(join&nbsp;&quot;&nbsp;&quot;&nbsp;[(get-message&nbsp;:validation-report-for)&nbsp;source-name])
</span><br/>
<span class="not-covered" title="0 out of 9 forms covered">
085&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cols&nbsp;(set&nbsp;(reduce&nbsp;concat&nbsp;(map&nbsp;keys&nbsp;faults)))
</span><br/>
<span class="not-covered" title="0 out of 2 forms covered">
086&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version&nbsp;(version-string)]
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
087&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(str
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
088&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;&lt;!DOCTYPE&nbsp;html&gt;&quot;
</span><br/>
<span class="not-covered" title="0 out of 130 forms covered">
089&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(html
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
090&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:html
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
091&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:head
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
092&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:title&nbsp;title]
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
093&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:meta&nbsp;{:name&nbsp;&quot;generator&quot;&nbsp;:content&nbsp;version}]
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
094&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:link&nbsp;{:rel&nbsp;&quot;stylesheet&quot;&nbsp;:media&nbsp;&quot;screen&quot;&nbsp;:href&nbsp;stylesheet-url&nbsp;:type&nbsp;&quot;text&#x2F;css&quot;}]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
095&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:body
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
096&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:h1&nbsp;title]
</span><br/>
<span class="not-covered" title="0 out of 10 forms covered">
097&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:p&nbsp;(join&nbsp;&quot;&nbsp;&quot;&nbsp;(remove&nbsp;nil?&nbsp;[(get-message&nbsp;:generated-on)
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
098&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(java.time.LocalDateTime&#x2F;now)
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
099&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(get-message&nbsp;:by)
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
100&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;version]))]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
101&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if-not
</span><br/>
<span class="not-covered" title="0 out of 2 forms covered">
102&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(empty?&nbsp;faults)
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
103&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(apply
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
104&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;vector
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
105&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:table
</span><br/>
<span class="not-covered" title="0 out of 2 forms covered">
106&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(html-header-row&nbsp;cols)
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
107&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(map
</span><br/>
<span class="not-covered" title="0 out of 2 forms covered">
108&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#(html-fault-row&nbsp;%&nbsp;cols)
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
109&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;faults))
</span><br/>
<span class="not-covered" title="0 out of 5 forms covered">
110&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[:p&nbsp;(get-message&nbsp;:no-faults-found)])]]))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
111&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
112&nbsp;&nbsp;(defn&nbsp;output
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
113&nbsp;&nbsp;&nbsp;&nbsp;[content&nbsp;options]
</span><br/>
<span class="not-covered" title="0 out of 7 forms covered">
114&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;[faults&nbsp;(filter-severity&nbsp;content&nbsp;(:severity&nbsp;options))]
</span><br/>
<span class="not-covered" title="0 out of 5 forms covered">
115&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(spit&nbsp;(:output&nbsp;options)
</span><br/>
<span class="not-covered" title="0 out of 5 forms covered">
116&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(case&nbsp;(:format&nbsp;options)
</span><br/>
<span class="not-covered" title="0 out of 4 forms covered">
117&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:html&nbsp;(output-html&nbsp;faults&nbsp;options)
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
118&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:csv&nbsp;(output-csv&nbsp;faults)
</span><br/>
<span class="not-covered" title="0 out of 18 forms covered">
119&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(with-out-str&nbsp;(pprint&nbsp;faults))))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
120&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
121&nbsp;&nbsp;(defn&nbsp;-main&nbsp;[&amp;&nbsp;args]
</span><br/>
<span class="not-covered" title="0 out of 5 forms covered">
122&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;[opts&nbsp;(parse-opts&nbsp;args&nbsp;cli-options)
</span><br/>
<span class="not-covered" title="0 out of 7 forms covered">
123&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options&nbsp;(assoc&nbsp;(:options&nbsp;opts)
</span><br/>
<span class="not-covered" title="0 out of 8 forms covered">
124&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:input&nbsp;(if&nbsp;(=&nbsp;(:input&nbsp;(:options&nbsp;opts))&nbsp;&quot;standard&nbsp;input&quot;)
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
125&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*in*
</span><br/>
<span class="not-covered" title="0 out of 5 forms covered">
126&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(:input&nbsp;(:options&nbsp;opts)))
</span><br/>
<span class="not-covered" title="0 out of 8 forms covered">
127&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:output&nbsp;(if&nbsp;(=&nbsp;(:output&nbsp;(:options&nbsp;opts))&nbsp;&quot;standard&nbsp;output&quot;)
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
128&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*out*
</span><br/>
<span class="not-covered" title="0 out of 5 forms covered">
129&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(:output&nbsp;(:options&nbsp;opts))))]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
130&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;(println&nbsp;options)
</span><br/>
<span class="not-covered" title="0 out of 5 forms covered">
131&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(when&nbsp;(:help&nbsp;options)
</span><br/>
<span class="not-covered" title="0 out of 5 forms covered">
132&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(println&nbsp;(:summary&nbsp;opts)))
</span><br/>
<span class="not-covered" title="0 out of 5 forms covered">
133&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(when&nbsp;(:errors&nbsp;opts)
</span><br/>
<span class="not-covered" title="0 out of 5 forms covered">
134&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(println&nbsp;(:errors&nbsp;opts)))
</span><br/>
<span class="not-covered" title="0 out of 13 forms covered">
135&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(when-not&nbsp;(or&nbsp;(:help&nbsp;options)&nbsp;(:errors&nbsp;options))
</span><br/>
<span class="not-covered" title="0 out of 16 forms covered">
136&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(binding&nbsp;[*config*&nbsp;(assoc&nbsp;*config*&nbsp;:default-language&nbsp;(:language&nbsp;options))]
</span><br/>
<span class="not-covered" title="0 out of 2 forms covered">
137&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(output
</span><br/>
<span class="not-covered" title="0 out of 5 forms covered">
138&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(validate&nbsp;(:input&nbsp;options))
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
139&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options)))))
</span><br/>
</body>
</html>

View file

@ -104,31 +104,31 @@
033&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[dog-and-duck.quack.picky.constants&nbsp;:refer&nbsp;[actor-types]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
034&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[dog-and-duck.quack.picky.utils&nbsp;:refer&nbsp;[any-or-faults
034&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[dog-and-duck.quack.picky.objects&nbsp;:refer&nbsp;[coll-object-reference-or-fault
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
035&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;coll-object-reference-or-fault
035&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;object-faults
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
036&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;concat-non-empty
036&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;object-reference-or-faults]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
037&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;has-activity-type?
037&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[dog-and-duck.quack.picky.utils&nbsp;:refer&nbsp;[any-or-faults
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
038&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;has-actor-type?&nbsp;has-type?
038&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;concat-non-empty
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
039&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;has-type-or-fault
039&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;has-activity-type?
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
040&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;make-fault-object
040&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;has-actor-type?&nbsp;has-type?
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
041&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;object-faults
041&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;has-type-or-fault
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
042&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;object-reference-or-faults
042&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;make-fault-object
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
043&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;string-or-fault]])
@ -628,134 +628,137 @@
<span class="not-tracked" title="0 out of 0 forms covered">
208&nbsp;&nbsp;&nbsp;&nbsp;[x]
</span><br/>
<span class="not-covered" title="0 out of 5 forms covered">
209&nbsp;&nbsp;&nbsp;&nbsp;(concat-non-empty&nbsp;(persistent-object-faults&nbsp;x)
<span class="not-covered" title="0 out of 2 forms covered">
209&nbsp;&nbsp;&nbsp;&nbsp;(concat-non-empty
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
210&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(activity-type-faults&nbsp;x)
210&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(persistent-object-faults&nbsp;x)
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
211&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(activity-type-faults&nbsp;x)
</span><br/>
<span class="not-covered" title="0 out of 2 forms covered">
211&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(list
212&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(list
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
212&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(when-not
213&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(when-not
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
213&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(has-activity-type?&nbsp;x)
214&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(has-activity-type?&nbsp;x)
</span><br/>
<span class="not-covered" title="0 out of 4 forms covered">
214&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(make-fault-object&nbsp;:must&nbsp;:not-activity-type))
215&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(make-fault-object&nbsp;:must&nbsp;:not-activity-type))
</span><br/>
<span class="not-covered" title="0 out of 12 forms covered">
215&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(when-not&nbsp;(string?&nbsp;(:summary&nbsp;x))&nbsp;(make-fault-object&nbsp;:should&nbsp;:no-summary)))))
216&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(when-not&nbsp;(string?&nbsp;(:summary&nbsp;x))&nbsp;(make-fault-object&nbsp;:should&nbsp;:no-summary)))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
216&nbsp;&nbsp;
217&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
217&nbsp;&nbsp;(defn&nbsp;collection-faults
218&nbsp;&nbsp;(defn&nbsp;collection-faults
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
218&nbsp;&nbsp;&nbsp;&nbsp;&quot;Return&nbsp;a&nbsp;list&nbsp;of&nbsp;faults&nbsp;found&nbsp;in&nbsp;the&nbsp;collection&nbsp;`x`;&nbsp;if&nbsp;`type`&nbsp;is&nbsp;also&nbsp;
219&nbsp;&nbsp;&nbsp;&nbsp;&quot;Return&nbsp;a&nbsp;list&nbsp;of&nbsp;faults&nbsp;found&nbsp;in&nbsp;the&nbsp;collection&nbsp;`x`;&nbsp;if&nbsp;`type`&nbsp;is&nbsp;also&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
219&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;specified,&nbsp;it&nbsp;should&nbsp;be&nbsp;a&nbsp;string&nbsp;naming&nbsp;a&nbsp;specific&nbsp;collection&nbsp;type&nbsp;for
220&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;specified,&nbsp;it&nbsp;should&nbsp;be&nbsp;a&nbsp;string&nbsp;naming&nbsp;a&nbsp;specific&nbsp;collection&nbsp;type&nbsp;for
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
220&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;which&nbsp;checks&nbsp;should&nbsp;be&nbsp;performed.&nbsp;
221&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;which&nbsp;checks&nbsp;should&nbsp;be&nbsp;performed.&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
221&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
222&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
222&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Every&nbsp;collection&nbsp;*should*(?)&nbsp;have&nbsp;a&nbsp;`totalItems`&nbsp;field&nbsp;(an&nbsp;integer).
223&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Every&nbsp;collection&nbsp;*should*(?)&nbsp;have&nbsp;a&nbsp;`totalItems`&nbsp;field&nbsp;(an&nbsp;integer).
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
223&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
224&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
224&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Beyond&nbsp;that,&nbsp;collections&nbsp;are&nbsp;either&nbsp;&#x27;just&nbsp;collections&#x27;&nbsp;(in&nbsp;which&nbsp;case
225&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Beyond&nbsp;that,&nbsp;collections&nbsp;are&nbsp;either&nbsp;&#x27;just&nbsp;collections&#x27;&nbsp;(in&nbsp;which&nbsp;case
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
225&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;they&nbsp;*should*&nbsp;have&nbsp;an&nbsp;`items`&nbsp;field&nbsp;(a&nbsp;sequence)),&nbsp;or&nbsp;else&nbsp;they&#x27;re&nbsp;paged
226&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;they&nbsp;*should*&nbsp;have&nbsp;an&nbsp;`items`&nbsp;field&nbsp;(a&nbsp;sequence)),&nbsp;or&nbsp;else&nbsp;they&#x27;re&nbsp;paged
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
226&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;collections,&nbsp;in&nbsp;which&nbsp;case&nbsp;they&nbsp;*must*(?)&nbsp;have&nbsp;a&nbsp;`first`&nbsp;field&nbsp;which&nbsp;is&nbsp;
227&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;collections,&nbsp;in&nbsp;which&nbsp;case&nbsp;they&nbsp;*must*(?)&nbsp;have&nbsp;a&nbsp;`first`&nbsp;field&nbsp;which&nbsp;is&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
227&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;collection&nbsp;page&nbsp;or&nbsp;a&nbsp;URI&nbsp;pointing&nbsp;to&nbsp;a&nbsp;collection&nbsp;page,&nbsp;and&nbsp;*should*&nbsp;
228&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;a&nbsp;collection&nbsp;page&nbsp;or&nbsp;a&nbsp;URI&nbsp;pointing&nbsp;to&nbsp;a&nbsp;collection&nbsp;page,&nbsp;and&nbsp;*should*&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
228&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;have&nbsp;a&nbsp;`last`&nbsp;field&nbsp;which&nbsp;is&nbsp;similar.
229&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;have&nbsp;a&nbsp;`last`&nbsp;field&nbsp;which&nbsp;is&nbsp;similar.
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
229&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
230&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
230&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;pages&nbsp;of&nbsp;collections&nbsp;*should*&nbsp;be&nbsp;collection&nbsp;pages;&nbsp;the&nbsp;pages&nbsp;of&nbsp;
231&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;The&nbsp;pages&nbsp;of&nbsp;collections&nbsp;*should*&nbsp;be&nbsp;collection&nbsp;pages;&nbsp;the&nbsp;pages&nbsp;of&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
231&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ordered&nbsp;collections&nbsp;*should*&nbsp;be&nbsp;ordered&nbsp;collection&nbsp;pages.&quot;
232&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ordered&nbsp;collections&nbsp;*should*&nbsp;be&nbsp;ordered&nbsp;collection&nbsp;pages.&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
232&nbsp;&nbsp;&nbsp;&nbsp;([x]
233&nbsp;&nbsp;&nbsp;&nbsp;([x]
</span><br/>
<span class="not-covered" title="0 out of 2 forms covered">
233&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(collection-faults
<span class="covered" title="2 out of 2 forms covered">
234&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(collection-faults
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
234&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x
<span class="covered" title="1 out of 1 forms covered">
235&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;x
</span><br/>
<span class="not-covered" title="0 out of 2 forms covered">
235&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(first
<span class="covered" title="2 out of 2 forms covered">
236&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(first
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
236&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(remove&nbsp;nil?
<span class="covered" title="3 out of 3 forms covered">
237&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(remove&nbsp;nil?
</span><br/>
<span class="not-covered" title="0 out of 10 forms covered">
237&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(map&nbsp;#(when&nbsp;(has-type?&nbsp;x&nbsp;%)&nbsp;%)
<span class="covered" title="10 out of 10 forms covered">
238&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(map&nbsp;#(when&nbsp;(has-type?&nbsp;x&nbsp;%)&nbsp;%)
</span><br/>
<span class="not-covered" title="0 out of 5 forms covered">
238&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&quot;Collection&quot;
<span class="covered" title="5 out of 5 forms covered">
239&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[&quot;Collection&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
239&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;OrderedCollection&quot;
240&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;OrderedCollection&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
240&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;CollectionPage&quot;
241&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;CollectionPage&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
241&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;OrderedCollectionPage&quot;])))))
242&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;OrderedCollectionPage&quot;])))))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
242&nbsp;&nbsp;&nbsp;&nbsp;([x&nbsp;type]
243&nbsp;&nbsp;&nbsp;&nbsp;([x&nbsp;type]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
243&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;(log&#x2F;info&nbsp;&quot;collection-faults&nbsp;called&nbsp;with&nbsp;argumens&nbsp;&quot;&nbsp;x&nbsp;&quot;,&nbsp;&quot;&nbsp;type)
244&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;(log&#x2F;info&nbsp;&quot;collection-faults&nbsp;called&nbsp;with&nbsp;argumens&nbsp;&quot;&nbsp;x&nbsp;&quot;,&nbsp;&quot;&nbsp;type)
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
244&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(case&nbsp;type
<span class="covered" title="3 out of 3 forms covered">
245&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(case&nbsp;type
</span><br/>
<span class="not-covered" title="0 out of 8 forms covered">
245&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&quot;Collection&quot;&nbsp;&quot;OrderedCollection&quot;)&nbsp;(any-or-faults
<span class="partial" title="6 out of 8 forms covered">
246&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&quot;Collection&quot;&nbsp;&quot;OrderedCollection&quot;)&nbsp;(any-or-faults
</span><br/>
<span class="not-covered" title="0 out of 12 forms covered">
246&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(list&nbsp;(simple-collection-faults&nbsp;x&nbsp;type)
<span class="covered" title="12 out of 12 forms covered">
247&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(list&nbsp;(simple-collection-faults&nbsp;x&nbsp;type)
</span><br/>
<span class="not-covered" title="0 out of 8 forms covered">
247&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(paged-collection-faults&nbsp;x&nbsp;type))
<span class="covered" title="8 out of 8 forms covered">
248&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(paged-collection-faults&nbsp;x&nbsp;type))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
248&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:must
249&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:must
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
249&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:no-items)
250&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:no-items)
</span><br/>
<span class="not-covered" title="0 out of 8 forms covered">
250&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&quot;CollectionPage&quot;&nbsp;&quot;OrderedCollectionPage&quot;)&nbsp;(collection-page-faults&nbsp;x&nbsp;type)
<span class="partial" title="4 out of 8 forms covered">
251&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(&quot;CollectionPage&quot;&nbsp;&quot;OrderedCollectionPage&quot;)&nbsp;(collection-page-faults&nbsp;x&nbsp;type)
</span><br/>
<span class="not-covered" title="0 out of 6 forms covered">
251&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(list&nbsp;(make-fault-object&nbsp;:critical&nbsp;:expected-collection)))))
252&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(list&nbsp;(make-fault-object&nbsp;:critical&nbsp;:expected-collection)))))
</span><br/>
</body>
</html>

View file

@ -8,16 +8,16 @@
001&nbsp;&nbsp;(ns&nbsp;dog-and-duck.quack.picky.collections
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
002&nbsp;&nbsp;&nbsp;&nbsp;(:require&nbsp;[dog-and-duck.quack.picky.utils&nbsp;:refer&nbsp;[concat-non-empty
002&nbsp;&nbsp;&nbsp;&nbsp;(:require&nbsp;[dog-and-duck.quack.picky.objects&nbsp;:refer&nbsp;[object-faults
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
003&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cond-make-fault-object
003&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;object-reference-or-faults]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
004&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;object-faults
004&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[dog-and-duck.quack.picky.utils&nbsp;:refer&nbsp;[concat-non-empty
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;object-reference-or-faults]]))
005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cond-make-fault-object]]))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
006&nbsp;&nbsp;
@ -85,23 +85,23 @@
<span class="not-tracked" title="0 out of 0 forms covered">
027&nbsp;&nbsp;&nbsp;&nbsp;[x&nbsp;type]
</span><br/>
<span class="not-covered" title="0 out of 2 forms covered">
<span class="covered" title="2 out of 2 forms covered">
028&nbsp;&nbsp;&nbsp;&nbsp;(concat-non-empty
</span><br/>
<span class="not-covered" title="0 out of 4 forms covered">
<span class="covered" title="4 out of 4 forms covered">
029&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(object-faults&nbsp;x&nbsp;type)
</span><br/>
<span class="not-covered" title="0 out of 8 forms covered">
<span class="covered" title="8 out of 8 forms covered">
030&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(list&nbsp;(object-reference-or-faults&nbsp;x&nbsp;type&nbsp;:critical&nbsp;:expected-collection)
</span><br/>
<span class="not-covered" title="0 out of 11 forms covered">
<span class="covered" title="9 out of 9 forms covered">
031&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cond-make-fault-object&nbsp;(integer?&nbsp;(:totalItems&nbsp;x))&nbsp;:should&nbsp;:no-total-items)
</span><br/>
<span class="not-covered" title="0 out of 8 forms covered">
032&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(object-reference-or-faults&nbsp;(:first&nbsp;x)&nbsp;nil&nbsp;:must&nbsp;:no-first-page)
<span class="covered" title="11 out of 11 forms covered">
032&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(object-reference-or-faults&nbsp;(:first&nbsp;x)&nbsp;(str&nbsp;type&nbsp;&quot;Page&quot;)&nbsp;:must&nbsp;:no-first-page)
</span><br/>
<span class="not-covered" title="0 out of 8 forms covered">
033&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(object-reference-or-faults&nbsp;(:last&nbsp;x)&nbsp;nil&nbsp;:should&nbsp;:no-last-page))))
<span class="covered" title="11 out of 11 forms covered">
033&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(object-reference-or-faults&nbsp;(:last&nbsp;x)&nbsp;(str&nbsp;type&nbsp;&quot;Page&quot;)&nbsp;:should&nbsp;:no-last-page))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
034&nbsp;&nbsp;
@ -118,62 +118,71 @@
<span class="not-tracked" title="0 out of 0 forms covered">
038&nbsp;&nbsp;&nbsp;&nbsp;[x&nbsp;type]
</span><br/>
<span class="not-covered" title="0 out of 2 forms covered">
<span class="covered" title="2 out of 2 forms covered">
039&nbsp;&nbsp;&nbsp;&nbsp;(concat-non-empty
</span><br/>
<span class="not-covered" title="0 out of 4 forms covered">
<span class="covered" title="4 out of 4 forms covered">
040&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(object-faults&nbsp;x&nbsp;type)
</span><br/>
<span class="not-covered" title="0 out of 2 forms covered">
041&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cons
<span class="covered" title="2 out of 2 forms covered">
041&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(concat
</span><br/>
<span class="not-covered" title="0 out of 8 forms covered">
042&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(list&nbsp;(object-reference-or-faults&nbsp;x&nbsp;type&nbsp;:critical&nbsp;:expected-collection)
<span class="covered" title="11 out of 11 forms covered">
042&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(list&nbsp;(cond-make-fault-object&nbsp;(integer?&nbsp;(:totalItems&nbsp;x))&nbsp;:should&nbsp;:no-total-items)
</span><br/>
<span class="not-covered" title="0 out of 11 forms covered">
043&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cond-make-fault-object&nbsp;(integer?&nbsp;(:totalItems&nbsp;x))&nbsp;:should&nbsp;:no-total-items)
<span class="covered" title="9 out of 9 forms covered">
043&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cond-make-fault-object&nbsp;(coll?&nbsp;(:items&nbsp;x))&nbsp;:must&nbsp;:no-items-collection))
</span><br/>
<span class="not-covered" title="0 out of 11 forms covered">
044&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cond-make-fault-object&nbsp;(coll?&nbsp;(:items&nbsp;x))&nbsp;:must&nbsp;:no-items-collection))
</span><br/>
<span class="not-covered" title="0 out of 12 forms covered">
045&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(map&nbsp;#(object-reference-or-faults&nbsp;%&nbsp;nil&nbsp;:must&nbsp;:not-object-reference)&nbsp;(:items&nbsp;x)))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
046&nbsp;&nbsp;
<span class="covered" title="2 out of 2 forms covered">
044&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(reduce
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
047&nbsp;&nbsp;(defn&nbsp;collection-page-faults
045&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;concat
</span><br/>
<span class="covered" title="12 out of 12 forms covered">
046&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(map&nbsp;#(object-reference-or-faults&nbsp;%&nbsp;nil&nbsp;:must&nbsp;:not-object-reference)&nbsp;(:items&nbsp;x))))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
047&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
048&nbsp;&nbsp;(defn&nbsp;collection-page-faults
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
048&nbsp;&nbsp;&nbsp;&nbsp;[x&nbsp;type]
</span><br/>
<span class="not-covered" title="0 out of 2 forms covered">
049&nbsp;&nbsp;&nbsp;&nbsp;(concat-non-empty
</span><br/>
<span class="not-covered" title="0 out of 4 forms covered">
050&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(simple-collection-faults&nbsp;x&nbsp;type)
</span><br/>
<span class="not-covered" title="0 out of 2 forms covered">
051&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(list
</span><br/>
<span class="not-covered" title="0 out of 7 forms covered">
052&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(object-reference-or-faults&nbsp;(:partOf&nbsp;x)
</span><br/>
<span class="not-covered" title="0 out of 7 forms covered">
053&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(apply&nbsp;str&nbsp;(drop-last&nbsp;4&nbsp;type))
049&nbsp;&nbsp;&nbsp;&nbsp;&quot;Return&nbsp;a&nbsp;list&nbsp;of&nbsp;faults&nbsp;found&nbsp;in&nbsp;`x`&nbsp;considered&nbsp;as&nbsp;a&nbsp;collection&nbsp;page
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
054&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:should
050&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;object&nbsp;of&nbsp;this&nbsp;sub-`type`,&nbsp;or&nbsp;`nil`&nbsp;if&nbsp;none&nbsp;are&nbsp;found.&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
055&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:n-part-of)
051&nbsp;&nbsp;&nbsp;&nbsp;[x&nbsp;type]
</span><br/>
<span class="not-covered" title="0 out of 8 forms covered">
056&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(object-reference-or-faults&nbsp;(:next&nbsp;x)&nbsp;type&nbsp;:minor&nbsp;:no-next-page)
<span class="covered" title="2 out of 2 forms covered">
052&nbsp;&nbsp;&nbsp;&nbsp;(concat-non-empty
</span><br/>
<span class="not-covered" title="0 out of 8 forms covered">
057&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(object-reference-or-faults&nbsp;(:prev&nbsp;x)&nbsp;type&nbsp;:minor&nbsp;:no-prev-page))))
<span class="covered" title="4 out of 4 forms covered">
053&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(simple-collection-faults&nbsp;x&nbsp;type)
</span><br/>
<span class="covered" title="2 out of 2 forms covered">
054&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(list
</span><br/>
<span class="covered" title="7 out of 7 forms covered">
055&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(object-reference-or-faults&nbsp;(:partOf&nbsp;x)
</span><br/>
<span class="covered" title="7 out of 7 forms covered">
056&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(apply&nbsp;str&nbsp;(drop-last&nbsp;4&nbsp;type))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
057&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:should
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
058&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:n-part-of)
</span><br/>
<span class="covered" title="8 out of 8 forms covered">
059&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(object-reference-or-faults&nbsp;(:next&nbsp;x)&nbsp;type&nbsp;:minor&nbsp;:no-next-page)
</span><br/>
<span class="covered" title="8 out of 8 forms covered">
060&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(object-reference-or-faults&nbsp;(:prev&nbsp;x)&nbsp;type&nbsp;:minor&nbsp;:no-prev-page))))
</span><br/>
</body>
</html>

View file

@ -68,178 +68,289 @@
021&nbsp;&nbsp;&nbsp;&nbsp;&quot;The&nbsp;URI&nbsp;of&nbsp;the&nbsp;context&nbsp;of&nbsp;an&nbsp;ActivityStreams&nbsp;object&nbsp;is&nbsp;expected&nbsp;to&nbsp;be&nbsp;this
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
022&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;literal&nbsp;string.&quot;
022&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;literal&nbsp;string.
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
023&nbsp;&nbsp;&nbsp;&nbsp;&quot;https:&#x2F;&#x2F;www.w3.org&#x2F;ns&#x2F;activitystreams&quot;)
023&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
024&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;**NOTE&nbsp;THAT**&nbsp;the&nbsp;URI&nbsp;actually&nbsp;used&nbsp;in&nbsp;the&nbsp;published&nbsp;suite&nbsp;of&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
025&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;activitystreams-test-documents&nbsp;use&nbsp;this&nbsp;URI&nbsp;with&nbsp;&#x27;http&#x27;&nbsp;rather&nbsp;than
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
026&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#x27;https&#x27;&nbsp;as&nbsp;the&nbsp;property&nbsp;part,&nbsp;but&nbsp;the&nbsp;spec&nbsp;itself&nbsp;specifies&nbsp;&#x27;https&#x27;.&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
027&nbsp;&nbsp;&nbsp;&nbsp;&quot;https:&#x2F;&#x2F;www.w3.org&#x2F;ns&#x2F;activitystreams&quot;)
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
024&nbsp;&nbsp;
028&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
025&nbsp;&nbsp;(def&nbsp;^:const&nbsp;actor-types
029&nbsp;&nbsp;(def&nbsp;^:const&nbsp;actor-types
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
026&nbsp;&nbsp;&nbsp;&nbsp;&quot;The&nbsp;set&nbsp;of&nbsp;types&nbsp;we&nbsp;will&nbsp;accept&nbsp;as&nbsp;actors.
030&nbsp;&nbsp;&nbsp;&nbsp;&quot;The&nbsp;set&nbsp;of&nbsp;types&nbsp;we&nbsp;will&nbsp;accept&nbsp;as&nbsp;actors.
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
027&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
031&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
028&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;There&#x27;s&nbsp;an&nbsp;[explicit&nbsp;set&nbsp;of&nbsp;allowed&nbsp;actor&nbsp;types]
032&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;There&#x27;s&nbsp;an&nbsp;[explicit&nbsp;set&nbsp;of&nbsp;allowed&nbsp;actor&nbsp;types]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
029&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(https:&#x2F;&#x2F;www.w3.org&#x2F;TR&#x2F;activitystreams-vocabulary&#x2F;#actor-types).&quot;
033&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(https:&#x2F;&#x2F;www.w3.org&#x2F;TR&#x2F;activitystreams-vocabulary&#x2F;#actor-types).&quot;
</span><br/>
<span class="covered" title="6 out of 6 forms covered">
030&nbsp;&nbsp;&nbsp;&nbsp;#{&quot;Application&quot;
034&nbsp;&nbsp;&nbsp;&nbsp;#{&quot;Application&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
031&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Group&quot;
035&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Group&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
032&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Organization&quot;
036&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Organization&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
033&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Person&quot;
037&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Person&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
034&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Service&quot;})
038&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Service&quot;})
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
035&nbsp;&nbsp;
039&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
036&nbsp;&nbsp;(def&nbsp;^:const&nbsp;context-key
040&nbsp;&nbsp;(def&nbsp;^:const&nbsp;context-key
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
037&nbsp;&nbsp;&nbsp;&nbsp;&quot;The&nbsp;Clojure&nbsp;reader&nbsp;barfs&nbsp;on&nbsp;`:@context`,&nbsp;although&nbsp;it&nbsp;is&nbsp;in&nbsp;principle&nbsp;a&nbsp;valid&nbsp;
041&nbsp;&nbsp;&nbsp;&nbsp;&quot;The&nbsp;Clojure&nbsp;reader&nbsp;barfs&nbsp;on&nbsp;`:@context`,&nbsp;although&nbsp;it&nbsp;is&nbsp;in&nbsp;principle&nbsp;a&nbsp;valid&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
038&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyword.&nbsp;So&nbsp;we&#x27;ll&nbsp;make&nbsp;it&nbsp;once,&nbsp;here,&nbsp;to&nbsp;make&nbsp;the&nbsp;code&nbsp;more&nbsp;performant&nbsp;and
042&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;keyword.&nbsp;So&nbsp;we&#x27;ll&nbsp;make&nbsp;it&nbsp;once,&nbsp;here,&nbsp;to&nbsp;make&nbsp;the&nbsp;code&nbsp;more&nbsp;performant&nbsp;and
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
039&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;easier&nbsp;to&nbsp;read.&quot;
043&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;easier&nbsp;to&nbsp;read.&quot;
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
040&nbsp;&nbsp;&nbsp;&nbsp;(keyword&nbsp;&quot;@context&quot;))
044&nbsp;&nbsp;&nbsp;&nbsp;(keyword&nbsp;&quot;@context&quot;))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
041&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
042&nbsp;&nbsp;(def&nbsp;^:const&nbsp;severity
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
043&nbsp;&nbsp;&nbsp;&nbsp;&quot;Severity&nbsp;of&nbsp;faults&nbsp;found,&nbsp;as&nbsp;follows:
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
044&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
045&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.&nbsp;`:info`&nbsp;not&nbsp;actually&nbsp;a&nbsp;fault,&nbsp;but&nbsp;an&nbsp;issue&nbsp;noted&nbsp;during&nbsp;validation;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
046&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;`:minor`&nbsp;things&nbsp;which&nbsp;I&nbsp;consider&nbsp;to&nbsp;be&nbsp;faults,&nbsp;but&nbsp;which&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
047&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;don&#x27;t&nbsp;actually&nbsp;breach&nbsp;the&nbsp;spec;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
048&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;`:should`&nbsp;instances&nbsp;where&nbsp;the&nbsp;spec&nbsp;says&nbsp;something&nbsp;SHOULD
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
049&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;be&nbsp;done,&nbsp;which&nbsp;isn&#x27;t;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
050&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.&nbsp;`:must`&nbsp;instances&nbsp;where&nbsp;the&nbsp;spec&nbsp;says&nbsp;something&nbsp;MUST
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
051&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;be&nbsp;done,&nbsp;which&nbsp;isn&#x27;t;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
052&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.&nbsp;`:critical`&nbsp;instances&nbsp;where&nbsp;I&nbsp;believe&nbsp;the&nbsp;fault&nbsp;means&nbsp;that
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
053&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;object&nbsp;cannot&nbsp;be&nbsp;meaningfully&nbsp;processed.&quot;
</span><br/>
<span class="covered" title="6 out of 6 forms covered">
054&nbsp;&nbsp;&nbsp;&nbsp;#{:info&nbsp;:minor&nbsp;:should&nbsp;:must&nbsp;:critical})
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
055&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
056&nbsp;&nbsp;(def&nbsp;^:const&nbsp;severity-filters
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
057&nbsp;&nbsp;&nbsp;&nbsp;&quot;Hack&nbsp;for&nbsp;implementing&nbsp;a&nbsp;severity&nbsp;hierarchy&quot;
</span><br/>
<span class="covered" title="8 out of 8 forms covered">
058&nbsp;&nbsp;&nbsp;&nbsp;{:all&nbsp;#{}
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
059&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:info&nbsp;#{}
045&nbsp;&nbsp;
</span><br/>
<span class="covered" title="2 out of 2 forms covered">
060&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:minor&nbsp;#{:info}
046&nbsp;&nbsp;(def&nbsp;^:const&nbsp;re-rfc5646&nbsp;
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
061&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:should&nbsp;#{:info&nbsp;:minor}
<span class="not-tracked" title="0 out of 0 forms covered">
047&nbsp;&nbsp;&nbsp;&nbsp;&quot;A&nbsp;regex&nbsp;which&nbsp;tests&nbsp;conformity&nbsp;to&nbsp;RFC&nbsp;5646.&nbsp;Cribbed&nbsp;from
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
062&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:must&nbsp;#{:info&nbsp;:minor&nbsp;:should}
<span class="not-tracked" title="0 out of 0 forms covered">
048&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;https:&#x2F;&#x2F;newbedev.com&#x2F;regex-to-detect-locales&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
049&nbsp;&nbsp;&nbsp;&nbsp;#&quot;^[a-z]{2,4}(-[A-Z][a-z]{3})?(-([A-Z]{2}|[0-9]{3}))?$&quot;)
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
050&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
063&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:critical&nbsp;severity})
051&nbsp;&nbsp;(def&nbsp;^:const&nbsp;severity
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
052&nbsp;&nbsp;&nbsp;&nbsp;&quot;Severity&nbsp;of&nbsp;faults&nbsp;found,&nbsp;as&nbsp;follows:
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
053&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
054&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.&nbsp;`:info`&nbsp;not&nbsp;actually&nbsp;a&nbsp;fault,&nbsp;but&nbsp;an&nbsp;issue&nbsp;noted&nbsp;during&nbsp;validation;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
055&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.&nbsp;`:minor`&nbsp;things&nbsp;which&nbsp;I&nbsp;consider&nbsp;to&nbsp;be&nbsp;faults,&nbsp;but&nbsp;which&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
056&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;don&#x27;t&nbsp;actually&nbsp;breach&nbsp;the&nbsp;spec;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
057&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2.&nbsp;`:should`&nbsp;instances&nbsp;where&nbsp;the&nbsp;spec&nbsp;says&nbsp;something&nbsp;SHOULD
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
058&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;be&nbsp;done,&nbsp;which&nbsp;isn&#x27;t;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
059&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3.&nbsp;`:must`&nbsp;instances&nbsp;where&nbsp;the&nbsp;spec&nbsp;says&nbsp;something&nbsp;MUST
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
060&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;be&nbsp;done,&nbsp;which&nbsp;isn&#x27;t;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
061&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;4.&nbsp;`:critical`&nbsp;instances&nbsp;where&nbsp;I&nbsp;believe&nbsp;the&nbsp;fault&nbsp;means&nbsp;that
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
062&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;the&nbsp;object&nbsp;cannot&nbsp;be&nbsp;meaningfully&nbsp;processed.&quot;
</span><br/>
<span class="covered" title="6 out of 6 forms covered">
063&nbsp;&nbsp;&nbsp;&nbsp;#{:info&nbsp;:minor&nbsp;:should&nbsp;:must&nbsp;:critical})
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
064&nbsp;&nbsp;
</span><br/>
<span class="covered" title="2 out of 2 forms covered">
065&nbsp;&nbsp;(def&nbsp;^:const&nbsp;validation-fault-context-uri
<span class="covered" title="1 out of 1 forms covered">
065&nbsp;&nbsp;(def&nbsp;^:const&nbsp;severity-filters
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
066&nbsp;&nbsp;&nbsp;&nbsp;&quot;The&nbsp;URI&nbsp;of&nbsp;the&nbsp;context&nbsp;of&nbsp;a&nbsp;validation&nbsp;fault&nbsp;report&nbsp;object&nbsp;shall&nbsp;be&nbsp;this
066&nbsp;&nbsp;&nbsp;&nbsp;&quot;Hack&nbsp;for&nbsp;implementing&nbsp;a&nbsp;severity&nbsp;hierarchy&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
067&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;literal&nbsp;string.&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
068&nbsp;&nbsp;&nbsp;&nbsp;&quot;https:&#x2F;&#x2F;simon-brooke.github.io&#x2F;dog-and-duck&#x2F;codox&#x2F;Validation_Faults.html&quot;)
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
069&nbsp;&nbsp;
<span class="covered" title="8 out of 8 forms covered">
067&nbsp;&nbsp;&nbsp;&nbsp;{:all&nbsp;#{}
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
070&nbsp;&nbsp;(def&nbsp;^:const&nbsp;verb-types
068&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:info&nbsp;#{}
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
071&nbsp;&nbsp;&nbsp;&nbsp;&quot;The&nbsp;set&nbsp;of&nbsp;types&nbsp;we&nbsp;will&nbsp;accept&nbsp;as&nbsp;verbs.
<span class="covered" title="2 out of 2 forms covered">
069&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:minor&nbsp;#{:info}
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
072&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<span class="covered" title="3 out of 3 forms covered">
070&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:should&nbsp;#{:info&nbsp;:minor}
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
073&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;There&#x27;s&nbsp;an&nbsp;[explicit&nbsp;set&nbsp;of&nbsp;allowed&nbsp;verb&nbsp;types]
<span class="covered" title="4 out of 4 forms covered">
071&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:must&nbsp;#{:info&nbsp;:minor&nbsp;:should}
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
074&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(https:&#x2F;&#x2F;www.w3.org&#x2F;TR&#x2F;activitystreams-vocabulary&#x2F;#activity-types).&quot;
</span><br/>
<span class="covered" title="29 out of 29 forms covered">
075&nbsp;&nbsp;&nbsp;&nbsp;#{&quot;Accept&quot;&nbsp;&quot;Add&quot;&nbsp;&quot;Announce&quot;&nbsp;&quot;Arrive&quot;&nbsp;&quot;Block&quot;&nbsp;&quot;Create&quot;&nbsp;&quot;Delete&quot;&nbsp;&quot;Dislike&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
076&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Flag&quot;&nbsp;&quot;Follow&quot;&nbsp;&quot;Ignore&quot;&nbsp;&quot;Invite&quot;&nbsp;&quot;Join&quot;&nbsp;&quot;Leave&quot;&nbsp;&quot;Like&quot;&nbsp;&quot;Listen&quot;&nbsp;&quot;Move&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
077&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Offer&quot;&nbsp;&quot;Question&quot;&nbsp;&quot;Reject&quot;&nbsp;&quot;Read&quot;&nbsp;&quot;Remove&quot;&nbsp;&quot;TentativeAccept&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
078&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;TentativeReject&quot;&nbsp;&quot;Travel&quot;&nbsp;&quot;Undo&quot;&nbsp;&quot;Update&quot;&nbsp;&quot;View&quot;})
<span class="covered" title="5 out of 5 forms covered">
072&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:critical&nbsp;#{:info&nbsp;:minor&nbsp;:should&nbsp;:must}})
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
079&nbsp;&nbsp;
073&nbsp;&nbsp;
</span><br/>
<span class="covered" title="2 out of 2 forms covered">
074&nbsp;&nbsp;(def&nbsp;^:const&nbsp;validation-fault-context-uri
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
075&nbsp;&nbsp;&nbsp;&nbsp;&quot;The&nbsp;URI&nbsp;of&nbsp;the&nbsp;context&nbsp;of&nbsp;a&nbsp;validation&nbsp;fault&nbsp;report&nbsp;object&nbsp;shall&nbsp;be&nbsp;this
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
076&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;literal&nbsp;string.&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
077&nbsp;&nbsp;&nbsp;&nbsp;&quot;https:&#x2F;&#x2F;simon-brooke.github.io&#x2F;dog-and-duck&#x2F;codox&#x2F;Validation_Faults.html&quot;)
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
078&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
079&nbsp;&nbsp;(def&nbsp;^:const&nbsp;activity-types
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
080&nbsp;&nbsp;&nbsp;&nbsp;&quot;The&nbsp;set&nbsp;of&nbsp;types&nbsp;we&nbsp;will&nbsp;accept&nbsp;as&nbsp;activities.
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
081&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
082&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;There&#x27;s&nbsp;an&nbsp;[explicit&nbsp;set&nbsp;of&nbsp;allowed&nbsp;activity&nbsp;types]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
083&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(https:&#x2F;&#x2F;www.w3.org&#x2F;TR&#x2F;activitystreams-vocabulary&#x2F;#activity-types).&quot;
</span><br/>
<span class="covered" title="29 out of 29 forms covered">
084&nbsp;&nbsp;&nbsp;&nbsp;#{&quot;Accept&quot;&nbsp;&quot;Add&quot;&nbsp;&quot;Announce&quot;&nbsp;&quot;Arrive&quot;&nbsp;&quot;Block&quot;&nbsp;&quot;Create&quot;&nbsp;&quot;Delete&quot;&nbsp;&quot;Dislike&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
085&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Flag&quot;&nbsp;&quot;Follow&quot;&nbsp;&quot;Ignore&quot;&nbsp;&quot;Invite&quot;&nbsp;&quot;Join&quot;&nbsp;&quot;Leave&quot;&nbsp;&quot;Like&quot;&nbsp;&quot;Listen&quot;&nbsp;&quot;Move&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
086&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Offer&quot;&nbsp;&quot;Question&quot;&nbsp;&quot;Reject&quot;&nbsp;&quot;Read&quot;&nbsp;&quot;Remove&quot;&nbsp;&quot;TentativeAccept&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
087&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;TentativeReject&quot;&nbsp;&quot;Travel&quot;&nbsp;&quot;Undo&quot;&nbsp;&quot;Update&quot;&nbsp;&quot;View&quot;})
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
088&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
089&nbsp;&nbsp;(def&nbsp;^:const&nbsp;noun-types
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
090&nbsp;&nbsp;&nbsp;&nbsp;&quot;The&nbsp;set&nbsp;of&nbsp;object&nbsp;types&nbsp;we&nbsp;will&nbsp;accept&nbsp;as&nbsp;nouns.
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
091&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
092&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;There&#x27;s&nbsp;an&nbsp;[explicit&nbsp;set&nbsp;of&nbsp;allowed&nbsp;&#x27;object&nbsp;types&#x27;]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
093&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(https:&#x2F;&#x2F;www.w3.org&#x2F;TR&#x2F;activitystreams-vocabulary&#x2F;#object-types),&nbsp;but&nbsp;by&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
094&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;implication&nbsp;it&nbsp;is&nbsp;not&nbsp;exhaustive.&quot;
</span><br/>
<span class="covered" title="16 out of 16 forms covered">
095&nbsp;&nbsp;&nbsp;&nbsp;#{&quot;Article&quot;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
096&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Audio&quot;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
097&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Document&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
098&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Event&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
099&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Image&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
100&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Link&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
101&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Mention&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
102&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Note&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
103&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Object&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
104&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Page&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
105&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Place&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
106&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Profile&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
107&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Relationsip&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
108&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Tombstone&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
109&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;Video&quot;})
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
110&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
111&nbsp;&nbsp;(def&nbsp;^:const&nbsp;implicit-noun-types
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
112&nbsp;&nbsp;&nbsp;&nbsp;&quot;These&nbsp;types&nbsp;are&nbsp;not&nbsp;explicitly&nbsp;listed&nbsp;in&nbsp;[Section&nbsp;3.3&nbsp;of&nbsp;the&nbsp;spec]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
113&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(https:&#x2F;&#x2F;www.w3.org&#x2F;TR&#x2F;activitystreams-vocabulary&#x2F;#object-types),&nbsp;but&nbsp;are&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
114&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mentioned&nbsp;in&nbsp;narrative&quot;
</span><br/>
<span class="covered" title="2 out of 2 forms covered">
115&nbsp;&nbsp;&nbsp;&nbsp;#{&quot;Link&quot;})
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
116&nbsp;&nbsp;
</span><br/>
</body>
</html>

View file

@ -0,0 +1,98 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="../../../coverage.css"/> <title> dog_and_duck/quack/picky/distribution.clj </title>
</head>
<body>
<span class="covered" title="1 out of 1 forms covered">
001&nbsp;&nbsp;(ns&nbsp;dog-and-duck.quack.picky.distribution)
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
002&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
003&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copyright&nbsp;(C)&nbsp;Simon&nbsp;Brooke,&nbsp;2022
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
004&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
005&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;program&nbsp;is&nbsp;free&nbsp;software;&nbsp;you&nbsp;can&nbsp;redistribute&nbsp;it&nbsp;and&#x2F;or
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
006&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modify&nbsp;it&nbsp;under&nbsp;the&nbsp;terms&nbsp;of&nbsp;the&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
007&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;as&nbsp;published&nbsp;by&nbsp;the&nbsp;Free&nbsp;Software&nbsp;Foundation;&nbsp;either&nbsp;version&nbsp;2
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
008&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;of&nbsp;the&nbsp;License,&nbsp;or&nbsp;(at&nbsp;your&nbsp;option)&nbsp;any&nbsp;later&nbsp;version.
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
009&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
010&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;program&nbsp;is&nbsp;distributed&nbsp;in&nbsp;the&nbsp;hope&nbsp;that&nbsp;it&nbsp;will&nbsp;be&nbsp;useful,
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
011&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;but&nbsp;WITHOUT&nbsp;ANY&nbsp;WARRANTY;&nbsp;without&nbsp;even&nbsp;the&nbsp;implied&nbsp;warranty&nbsp;of
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
012&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MERCHANTABILITY&nbsp;or&nbsp;FITNESS&nbsp;FOR&nbsp;A&nbsp;PARTICULAR&nbsp;PURPOSE.&nbsp;&nbsp;See&nbsp;the
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
013&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License&nbsp;for&nbsp;more&nbsp;details.
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
014&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
015&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;You&nbsp;should&nbsp;have&nbsp;received&nbsp;a&nbsp;copy&nbsp;of&nbsp;the&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
016&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;along&nbsp;with&nbsp;this&nbsp;program;&nbsp;if&nbsp;not,&nbsp;write&nbsp;to&nbsp;the&nbsp;Free&nbsp;Software
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
017&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Foundation,&nbsp;Inc.,&nbsp;51&nbsp;Franklin&nbsp;Street,&nbsp;Fifth&nbsp;Floor,&nbsp;Boston,&nbsp;MA&nbsp;&nbsp;02110-1301,&nbsp;USA.
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
018&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
019&nbsp;&nbsp;(defn&nbsp;distribution
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
020&nbsp;&nbsp;&nbsp;&nbsp;&quot;Distribution&nbsp;of&nbsp;values&nbsp;of&nbsp;function&nbsp;`f`&nbsp;when&nbsp;applied&nbsp;to&nbsp;`vals`.
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
021&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
022&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;I&nbsp;*know*&nbsp;there&#x27;s&nbsp;a&nbsp;library&nbsp;function&nbsp;that&nbsp;does&nbsp;this,&nbsp;probably&nbsp;better,&nbsp;but&nbsp;I
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
023&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;don&#x27;t&nbsp;remember&nbsp;what&nbsp;it&#x27;s&nbsp;called!&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
024&nbsp;&nbsp;&nbsp;&nbsp;[f&nbsp;vals]
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
025&nbsp;&nbsp;&nbsp;&nbsp;(loop&nbsp;[result&nbsp;{}&nbsp;values&nbsp;vals]
</span><br/>
<span class="not-covered" title="0 out of 5 forms covered">
026&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(empty?&nbsp;values)&nbsp;result&nbsp;
</span><br/>
<span class="not-covered" title="0 out of 9 forms covered">
027&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;[r&nbsp;(apply&nbsp;f&nbsp;(list&nbsp;(first&nbsp;values)))]
</span><br/>
<span class="not-covered" title="0 out of 1 forms covered">
028&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(recur&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
029&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(assoc&nbsp;result&nbsp;r&nbsp;(if&nbsp;(result&nbsp;r)&nbsp;(inc&nbsp;(result&nbsp;r))&nbsp;1))&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
030&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(rest&nbsp;values))))))
</span><br/>
</body>
</html>

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,167 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="../../../coverage.css"/> <title> dog_and_duck/quack/picky/scratch.clj </title>
</head>
<body>
<span class="covered" title="1 out of 1 forms covered">
001&nbsp;&nbsp;(ns&nbsp;dog-and-duck.quack.picky.scratch
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
002&nbsp;&nbsp;&nbsp;&nbsp;&quot;Development&nbsp;scratchpad&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
003&nbsp;&nbsp;&nbsp;&nbsp;(:require&nbsp;[clojure.data.json&nbsp;:refer&nbsp;[read-str]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
004&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[clojure.java.io&nbsp;:refer&nbsp;[file]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[clojure.walk&nbsp;:refer&nbsp;[keywordize-keys]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
006&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[dog-and-duck.quack.picky.distribution&nbsp;:refer&nbsp;[distribution]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
007&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[dog-and-duck.quack.picky.objects&nbsp;:refer
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
008&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[object-faults&nbsp;properties-faults]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
009&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[dog-and-duck.quack.picky.utils&nbsp;:refer&nbsp;[concat-non-empty
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
010&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;filter-severity]]))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
011&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
012&nbsp;&nbsp;;;&nbsp;(def&nbsp;files&nbsp;(filter
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
013&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#(and&nbsp;(.isFile&nbsp;%)&nbsp;(.endsWith&nbsp;(.getName&nbsp;%)&nbsp;&quot;.json&quot;))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
014&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(file-seq&nbsp;(file&nbsp;&quot;resources&#x2F;activitystreams-test-documents&quot;))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
015&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
016&nbsp;&nbsp;;;&nbsp;(def&nbsp;r
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
017&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;(reduce
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
018&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;concat-non-empty
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
019&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;(map
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
020&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#(try
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
021&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;[contents&nbsp;(read-str&nbsp;(slurp&nbsp;%))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
022&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;faults&nbsp;(cond&nbsp;(map?&nbsp;contents)&nbsp;(filter-severity
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
023&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(object-faults
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
024&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(keywordize-keys&nbsp;contents))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
025&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:should)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
026&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;(coll?&nbsp;contents)&nbsp;(apply
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
027&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;concat-non-empty
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
028&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(map&nbsp;(fn&nbsp;[obj]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
029&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(object-faults
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
030&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(keywordize-keys&nbsp;obj)))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
031&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;contents))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
032&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;)]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
033&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(map&nbsp;(fn&nbsp;[f]&nbsp;(assoc&nbsp;f&nbsp;:document&nbsp;(.getName&nbsp;%)))&nbsp;faults))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
034&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(catch&nbsp;Exception&nbsp;any
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
035&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[(.getName&nbsp;%)&nbsp;(str&nbsp;&quot;Exception&nbsp;&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
036&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(.getName&nbsp;(.getClass&nbsp;any))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
037&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&quot;:&nbsp;&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
038&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(.getMessage&nbsp;any))]))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
039&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(filter
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
040&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#(and&nbsp;(.isFile&nbsp;%)&nbsp;(.endsWith&nbsp;(.getName&nbsp;%)&nbsp;&quot;.json&quot;))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
041&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(file-seq&nbsp;(file&nbsp;&quot;resources&#x2F;activitystreams-test-documents&quot;))))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
042&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
043&nbsp;&nbsp;;;&nbsp;(count&nbsp;(filter-severity&nbsp;(object-faults&nbsp;(keywordize-keys&nbsp;(read-str&nbsp;(slurp&nbsp;&quot;resources&#x2F;activitystreams-test-documents&#x2F;vocabulary-ex189-jsonld.json&quot;))))&nbsp;:critical))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
044&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
045&nbsp;&nbsp;;;&nbsp;(count&nbsp;(filter
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
046&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#(and&nbsp;(.isFile&nbsp;%)&nbsp;(.endsWith&nbsp;(.getName&nbsp;%)&nbsp;&quot;.json&quot;))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
047&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(file-seq&nbsp;(file&nbsp;&quot;resources&#x2F;activitystreams-test-documents&quot;))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
048&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
049&nbsp;&nbsp;;;&nbsp;(count&nbsp;r)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
050&nbsp;&nbsp;;;&nbsp;(last&nbsp;r)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
051&nbsp;&nbsp;;;&nbsp;(clojure.pprint&#x2F;pprint&nbsp;(last&nbsp;r))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
052&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
053&nbsp;&nbsp;;;&nbsp;(distribution&nbsp;:fault&nbsp;r)
</span><br/>
</body>
</html>

View file

@ -0,0 +1,206 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<link rel="stylesheet" href="../../../coverage.css"/> <title> dog_and_duck/quack/picky/time.clj </title>
</head>
<body>
<span class="covered" title="1 out of 1 forms covered">
001&nbsp;&nbsp;(ns&nbsp;dog-and-duck.quack.picky.time
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
002&nbsp;&nbsp;&nbsp;&nbsp;&quot;Time,&nbsp;gentleman,&nbsp;please!&nbsp;Recognising&nbsp;and&nbsp;validating&nbsp;date&nbsp;time&nbsp;values.&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
003&nbsp;&nbsp;&nbsp;&nbsp;(:require&nbsp;[dog-and-duck.quack.picky.utils&nbsp;:refer&nbsp;[cond-make-fault-object
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
004&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;make-fault-object
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;truthy?]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
006&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[scot.weft.i18n.core&nbsp;:refer&nbsp;[get-message]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
007&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[taoensso.timbre&nbsp;:refer&nbsp;[warn&nbsp;error]])
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
008&nbsp;&nbsp;&nbsp;&nbsp;(:import&nbsp;[java.time&nbsp;LocalDateTime]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
009&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[java.time.format&nbsp;DateTimeFormatter&nbsp;DateTimeParseException]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
010&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[javax.xml.datatype&nbsp;DatatypeFactory]))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
011&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
012&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copyright&nbsp;(C)&nbsp;Simon&nbsp;Brooke,&nbsp;2023
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
013&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
014&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;program&nbsp;is&nbsp;free&nbsp;software;&nbsp;you&nbsp;can&nbsp;redistribute&nbsp;it&nbsp;and&#x2F;or
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
015&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modify&nbsp;it&nbsp;under&nbsp;the&nbsp;terms&nbsp;of&nbsp;the&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
016&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;as&nbsp;published&nbsp;by&nbsp;the&nbsp;Free&nbsp;Software&nbsp;Foundation;&nbsp;either&nbsp;version&nbsp;2
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
017&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;of&nbsp;the&nbsp;License,&nbsp;or&nbsp;(at&nbsp;your&nbsp;option)&nbsp;any&nbsp;later&nbsp;version.
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
018&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
019&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;program&nbsp;is&nbsp;distributed&nbsp;in&nbsp;the&nbsp;hope&nbsp;that&nbsp;it&nbsp;will&nbsp;be&nbsp;useful,
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
020&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;but&nbsp;WITHOUT&nbsp;ANY&nbsp;WARRANTY;&nbsp;without&nbsp;even&nbsp;the&nbsp;implied&nbsp;warranty&nbsp;of
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
021&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MERCHANTABILITY&nbsp;or&nbsp;FITNESS&nbsp;FOR&nbsp;A&nbsp;PARTICULAR&nbsp;PURPOSE.&nbsp;&nbsp;See&nbsp;the
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
022&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License&nbsp;for&nbsp;more&nbsp;details.
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
023&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
024&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;You&nbsp;should&nbsp;have&nbsp;received&nbsp;a&nbsp;copy&nbsp;of&nbsp;the&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
025&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;along&nbsp;with&nbsp;this&nbsp;program;&nbsp;if&nbsp;not,&nbsp;write&nbsp;to&nbsp;the&nbsp;Free&nbsp;Software
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
026&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Foundation,&nbsp;Inc.,&nbsp;51&nbsp;Franklin&nbsp;Street,&nbsp;Fifth&nbsp;Floor,&nbsp;Boston,&nbsp;MA&nbsp;&nbsp;02110-1301,&nbsp;USA.
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
027&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
028&nbsp;&nbsp;(defn&nbsp;xsd-date-time?
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
029&nbsp;&nbsp;&nbsp;&nbsp;&quot;Return&nbsp;`true`&nbsp;if&nbsp;`value`&nbsp;matches&nbsp;the&nbsp;pattern&nbsp;for&nbsp;an&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
030&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[xsd:dateTime](https:&#x2F;&#x2F;www.w3.org&#x2F;TR&#x2F;xmlschema11-2&#x2F;#dateTime),&nbsp;else&nbsp;`false`&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
031&nbsp;&nbsp;&nbsp;&nbsp;[^String&nbsp;value]
</span><br/>
<span class="partial" title="1 out of 3 forms covered">
032&nbsp;&nbsp;&nbsp;&nbsp;(try
</span><br/>
<span class="partial" title="5 out of 6 forms covered">
033&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(LocalDateTime&#x2F;from&nbsp;(.parse&nbsp;DateTimeFormatter&#x2F;ISO_DATE_TIME&nbsp;value))&nbsp;true&nbsp;false)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
034&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(catch&nbsp;DateTimeParseException&nbsp;_
</span><br/>
<span class="not-covered" title="0 out of 20 forms covered">
035&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(warn&nbsp;(get-message&nbsp;:bad-date-time)&nbsp;&quot;:&quot;&nbsp;value)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
036&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;false)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
037&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(catch&nbsp;Exception&nbsp;e
</span><br/>
<span class="not-covered" title="0 out of 18 forms covered">
038&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(error&nbsp;&quot;Exception&nbsp;thrown&nbsp;while&nbsp;parsing&nbsp;date&quot;&nbsp;value&nbsp;e)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
039&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;false)))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
040&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
041&nbsp;&nbsp;(defn&nbsp;xsd-duration?
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
042&nbsp;&nbsp;&nbsp;&nbsp;&quot;Return&nbsp;`true`&nbsp;if&nbsp;`value`&nbsp;matches&nbsp;the&nbsp;pattern&nbsp;for&nbsp;an&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
043&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[xsd:duration](https:&#x2F;&#x2F;www.w3.org&#x2F;TR&#x2F;xmlschema11-2&#x2F;#duration),&nbsp;else&nbsp;`false`&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
044&nbsp;&nbsp;&nbsp;&nbsp;[value]
</span><br/>
<span class="not-covered" title="0 out of 2 forms covered">
045&nbsp;&nbsp;&nbsp;&nbsp;(truthy?
</span><br/>
<span class="not-covered" title="0 out of 10 forms covered">
046&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(and&nbsp;(string?&nbsp;value)
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
047&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(try&nbsp;(.newDuration&nbsp;(DatatypeFactory&#x2F;newInstance)&nbsp;value)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
048&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(catch&nbsp;IllegalArgumentException&nbsp;_
</span><br/>
<span class="not-covered" title="0 out of 20 forms covered">
049&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(warn&nbsp;(get-message&nbsp;:bad-duration)&nbsp;&quot;:&quot;&nbsp;value)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
050&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;false)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
051&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(catch&nbsp;Exception&nbsp;e
</span><br/>
<span class="not-covered" title="0 out of 18 forms covered">
052&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(error&nbsp;&quot;Exception&nbsp;thrown&nbsp;while&nbsp;parsing&nbsp;duration&quot;&nbsp;value&nbsp;e)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
053&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;false)))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
054&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
055&nbsp;&nbsp;(defn&nbsp;date-time-property-or-fault
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
056&nbsp;&nbsp;&nbsp;&nbsp;&quot;If&nbsp;the&nbsp;value&nbsp;of&nbsp;this&nbsp;`property`&nbsp;of&nbsp;object&nbsp;`x`&nbsp;is&nbsp;a&nbsp;valid&nbsp;xsd:dateTime&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
057&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value,&nbsp;return&nbsp;a&nbsp;fault&nbsp;object&nbsp;with&nbsp;this&nbsp;`token`&nbsp;and&nbsp;`severity`.&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
058&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
059&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;If&nbsp;`required?`&nbsp;is&nbsp;false&nbsp;and&nbsp;there&nbsp;is&nbsp;no&nbsp;such&nbsp;property,&nbsp;no&nbsp;fault&nbsp;will&nbsp;be
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
060&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;returned.&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
061&nbsp;&nbsp;&nbsp;&nbsp;[x&nbsp;property&nbsp;severity&nbsp;token&nbsp;required?]
</span><br/>
<span class="not-covered" title="0 out of 4 forms covered">
062&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;[value&nbsp;(property&nbsp;x)]
</span><br/>
<span class="not-covered" title="0 out of 11 forms covered">
063&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;(and&nbsp;required?&nbsp;(not&nbsp;(x&nbsp;property)))
</span><br/>
<span class="not-covered" title="0 out of 4 forms covered">
064&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(make-fault-object&nbsp;severity&nbsp;token)
</span><br/>
<span class="not-covered" title="0 out of 2 forms covered">
065&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cond-make-fault-object
</span><br/>
<span class="not-covered" title="0 out of 10 forms covered">
066&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(and&nbsp;value&nbsp;(xsd-date-time?&nbsp;value))&nbsp;severity&nbsp;token))))
</span><br/>
</body>
</html>

File diff suppressed because it is too large Load diff

View file

@ -62,460 +62,463 @@
019&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[dog-and-duck.quack.picky.control-variables&nbsp;:refer&nbsp;[*reject-severity*]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
020&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[dog-and-duck.quack.picky.utils&nbsp;:refer&nbsp;[filter-severity&nbsp;object-faults]])
020&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[dog-and-duck.quack.picky.objects&nbsp;:refer&nbsp;[object-faults]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
021&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[dog-and-duck.quack.picky.utils&nbsp;:refer&nbsp;[filter-severity]])
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
021&nbsp;&nbsp;
022&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
022&nbsp;&nbsp;&nbsp;&nbsp;(:import&nbsp;[java.net&nbsp;URI&nbsp;URISyntaxException]))
023&nbsp;&nbsp;&nbsp;&nbsp;(:import&nbsp;[java.net&nbsp;URI&nbsp;URISyntaxException]))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
023&nbsp;&nbsp;
024&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
024&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copyright&nbsp;(C)&nbsp;Simon&nbsp;Brooke,&nbsp;2022
025&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copyright&nbsp;(C)&nbsp;Simon&nbsp;Brooke,&nbsp;2022
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
025&nbsp;&nbsp;
026&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
026&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;program&nbsp;is&nbsp;free&nbsp;software;&nbsp;you&nbsp;can&nbsp;redistribute&nbsp;it&nbsp;and&#x2F;or
027&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;program&nbsp;is&nbsp;free&nbsp;software;&nbsp;you&nbsp;can&nbsp;redistribute&nbsp;it&nbsp;and&#x2F;or
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
027&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modify&nbsp;it&nbsp;under&nbsp;the&nbsp;terms&nbsp;of&nbsp;the&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License
028&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modify&nbsp;it&nbsp;under&nbsp;the&nbsp;terms&nbsp;of&nbsp;the&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
028&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;as&nbsp;published&nbsp;by&nbsp;the&nbsp;Free&nbsp;Software&nbsp;Foundation;&nbsp;either&nbsp;version&nbsp;2
029&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;as&nbsp;published&nbsp;by&nbsp;the&nbsp;Free&nbsp;Software&nbsp;Foundation;&nbsp;either&nbsp;version&nbsp;2
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
029&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;of&nbsp;the&nbsp;License,&nbsp;or&nbsp;(at&nbsp;your&nbsp;option)&nbsp;any&nbsp;later&nbsp;version.
030&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;of&nbsp;the&nbsp;License,&nbsp;or&nbsp;(at&nbsp;your&nbsp;option)&nbsp;any&nbsp;later&nbsp;version.
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
030&nbsp;&nbsp;
031&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
031&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;program&nbsp;is&nbsp;distributed&nbsp;in&nbsp;the&nbsp;hope&nbsp;that&nbsp;it&nbsp;will&nbsp;be&nbsp;useful,
032&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;program&nbsp;is&nbsp;distributed&nbsp;in&nbsp;the&nbsp;hope&nbsp;that&nbsp;it&nbsp;will&nbsp;be&nbsp;useful,
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
032&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;but&nbsp;WITHOUT&nbsp;ANY&nbsp;WARRANTY;&nbsp;without&nbsp;even&nbsp;the&nbsp;implied&nbsp;warranty&nbsp;of
033&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;but&nbsp;WITHOUT&nbsp;ANY&nbsp;WARRANTY;&nbsp;without&nbsp;even&nbsp;the&nbsp;implied&nbsp;warranty&nbsp;of
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
033&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MERCHANTABILITY&nbsp;or&nbsp;FITNESS&nbsp;FOR&nbsp;A&nbsp;PARTICULAR&nbsp;PURPOSE.&nbsp;&nbsp;See&nbsp;the
034&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MERCHANTABILITY&nbsp;or&nbsp;FITNESS&nbsp;FOR&nbsp;A&nbsp;PARTICULAR&nbsp;PURPOSE.&nbsp;&nbsp;See&nbsp;the
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
034&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License&nbsp;for&nbsp;more&nbsp;details.
035&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License&nbsp;for&nbsp;more&nbsp;details.
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
035&nbsp;&nbsp;
036&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
036&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;You&nbsp;should&nbsp;have&nbsp;received&nbsp;a&nbsp;copy&nbsp;of&nbsp;the&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License
037&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;You&nbsp;should&nbsp;have&nbsp;received&nbsp;a&nbsp;copy&nbsp;of&nbsp;the&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
037&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;along&nbsp;with&nbsp;this&nbsp;program;&nbsp;if&nbsp;not,&nbsp;write&nbsp;to&nbsp;the&nbsp;Free&nbsp;Software
038&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;along&nbsp;with&nbsp;this&nbsp;program;&nbsp;if&nbsp;not,&nbsp;write&nbsp;to&nbsp;the&nbsp;Free&nbsp;Software
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
038&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Foundation,&nbsp;Inc.,&nbsp;51&nbsp;Franklin&nbsp;Street,&nbsp;Fifth&nbsp;Floor,&nbsp;Boston,&nbsp;MA&nbsp;&nbsp;02110-1301,&nbsp;USA.
039&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Foundation,&nbsp;Inc.,&nbsp;51&nbsp;Franklin&nbsp;Street,&nbsp;Fifth&nbsp;Floor,&nbsp;Boston,&nbsp;MA&nbsp;&nbsp;02110-1301,&nbsp;USA.
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
039&nbsp;&nbsp;
040&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
040&nbsp;&nbsp;(defn&nbsp;object?
041&nbsp;&nbsp;(defn&nbsp;object?
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
041&nbsp;&nbsp;&nbsp;&nbsp;&quot;Returns&nbsp;`true`&nbsp;iff&nbsp;`x`&nbsp;is&nbsp;recognisably&nbsp;an&nbsp;ActivityStreams&nbsp;object.
042&nbsp;&nbsp;&nbsp;&nbsp;&quot;Returns&nbsp;`true`&nbsp;iff&nbsp;`x`&nbsp;is&nbsp;recognisably&nbsp;an&nbsp;ActivityStreams&nbsp;object.
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
042&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
043&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
043&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;**NOTE&nbsp;THAT**&nbsp;The&nbsp;ActivityStreams&nbsp;spec&nbsp;
044&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;**NOTE&nbsp;THAT**&nbsp;The&nbsp;ActivityStreams&nbsp;spec&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
044&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[says](https:&#x2F;&#x2F;www.w3.org&#x2F;TR&#x2F;activitystreams-core&#x2F;#object):
045&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[says](https:&#x2F;&#x2F;www.w3.org&#x2F;TR&#x2F;activitystreams-core&#x2F;#object):
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
045&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
046&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
046&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;All&nbsp;properties&nbsp;are&nbsp;optional&nbsp;(including&nbsp;the&nbsp;id&nbsp;and&nbsp;type)
047&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;All&nbsp;properties&nbsp;are&nbsp;optional&nbsp;(including&nbsp;the&nbsp;id&nbsp;and&nbsp;type)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
047&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
048&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
048&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;But&nbsp;we&nbsp;are&nbsp;*just&nbsp;not&nbsp;having&nbsp;that*,&nbsp;because&nbsp;otherwise&nbsp;we&#x27;re&nbsp;flying&nbsp;blind.
049&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;But&nbsp;we&nbsp;are&nbsp;*just&nbsp;not&nbsp;having&nbsp;that*,&nbsp;because&nbsp;otherwise&nbsp;we&#x27;re&nbsp;flying&nbsp;blind.
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
049&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;We&nbsp;*shall*&nbsp;reject&nbsp;objects&nbsp;lacking&nbsp;at&nbsp;least&nbsp;`:type`.&nbsp;Missing&nbsp;`:id`&nbsp;keys&nbsp;are
050&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;We&nbsp;*shall*&nbsp;reject&nbsp;objects&nbsp;lacking&nbsp;at&nbsp;least&nbsp;`:type`.&nbsp;Missing&nbsp;`:id`&nbsp;keys&nbsp;are
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
050&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tolerable&nbsp;because&nbsp;they&nbsp;represent&nbsp;transient&nbsp;objects,&nbsp;which&nbsp;we&nbsp;expect&nbsp;to&nbsp;
051&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tolerable&nbsp;because&nbsp;they&nbsp;represent&nbsp;transient&nbsp;objects,&nbsp;which&nbsp;we&nbsp;expect&nbsp;to&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
051&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handle.
052&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;handle.
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
052&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
053&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
053&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;**NOTE&nbsp;THAT**&nbsp;The&nbsp;ActivityPub&nbsp;spec&nbsp;[says](https:&#x2F;&#x2F;www.w3.org&#x2F;TR&#x2F;activitypub&#x2F;#obj)
054&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;**NOTE&nbsp;THAT**&nbsp;The&nbsp;ActivityPub&nbsp;spec&nbsp;[says](https:&#x2F;&#x2F;www.w3.org&#x2F;TR&#x2F;activitypub&#x2F;#obj)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
054&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
055&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
055&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;Implementers&nbsp;SHOULD&nbsp;include&nbsp;the&nbsp;ActivityPub&nbsp;context&nbsp;in&nbsp;their&nbsp;object&nbsp;
056&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;Implementers&nbsp;SHOULD&nbsp;include&nbsp;the&nbsp;ActivityPub&nbsp;context&nbsp;in&nbsp;their&nbsp;object&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
056&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;definitions
057&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&nbsp;definitions
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
057&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
058&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
058&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;but&nbsp;in&nbsp;samples&nbsp;found&nbsp;in&nbsp;the&nbsp;wild&nbsp;they&nbsp;typically&nbsp;don&#x27;t.&quot;
059&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;but&nbsp;in&nbsp;samples&nbsp;found&nbsp;in&nbsp;the&nbsp;wild&nbsp;they&nbsp;typically&nbsp;don&#x27;t.&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
059&nbsp;&nbsp;&nbsp;&nbsp;([x]
060&nbsp;&nbsp;&nbsp;&nbsp;([x]
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
060&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(object?&nbsp;x&nbsp;*reject-severity*))
061&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(object?&nbsp;x&nbsp;*reject-severity*))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
061&nbsp;&nbsp;&nbsp;&nbsp;([x&nbsp;severity]
062&nbsp;&nbsp;&nbsp;&nbsp;([x&nbsp;severity]
</span><br/>
<span class="covered" title="8 out of 8 forms covered">
062&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(empty?&nbsp;(filter-severity&nbsp;(object-faults&nbsp;x)&nbsp;severity))))
063&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(empty?&nbsp;(filter-severity&nbsp;(object-faults&nbsp;x)&nbsp;severity))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
063&nbsp;&nbsp;
064&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
064&nbsp;&nbsp;(defn&nbsp;persistent-object?
065&nbsp;&nbsp;(defn&nbsp;persistent-object?
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
065&nbsp;&nbsp;&nbsp;&nbsp;&quot;`true`&nbsp;iff&nbsp;`x`&nbsp;is&nbsp;a&nbsp;persistent&nbsp;object.
066&nbsp;&nbsp;&nbsp;&nbsp;&quot;`true`&nbsp;iff&nbsp;`x`&nbsp;is&nbsp;a&nbsp;persistent&nbsp;object.
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
066&nbsp;&nbsp;
067&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
067&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transient&nbsp;objects&nbsp;in&nbsp;ActivityPub&nbsp;are&nbsp;not&nbsp;required&nbsp;to&nbsp;have&nbsp;an&nbsp;`id`&nbsp;key,&nbsp;but&nbsp;persistent
068&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Transient&nbsp;objects&nbsp;in&nbsp;ActivityPub&nbsp;are&nbsp;not&nbsp;required&nbsp;to&nbsp;have&nbsp;an&nbsp;`id`&nbsp;key,&nbsp;but&nbsp;persistent
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
068&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ones&nbsp;must&nbsp;have&nbsp;a&nbsp;key,&nbsp;and&nbsp;it&nbsp;must&nbsp;be&nbsp;an&nbsp;IRI&nbsp;(but&nbsp;normally&nbsp;a&nbsp;URI).&quot;
069&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ones&nbsp;must&nbsp;have&nbsp;a&nbsp;key,&nbsp;and&nbsp;it&nbsp;must&nbsp;be&nbsp;an&nbsp;IRI&nbsp;(but&nbsp;normally&nbsp;a&nbsp;URI).&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
069&nbsp;&nbsp;&nbsp;&nbsp;([x]
070&nbsp;&nbsp;&nbsp;&nbsp;([x]
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
070&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(persistent-object?&nbsp;x&nbsp;*reject-severity*))
071&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(persistent-object?&nbsp;x&nbsp;*reject-severity*))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
071&nbsp;&nbsp;&nbsp;&nbsp;([x&nbsp;severity]
072&nbsp;&nbsp;&nbsp;&nbsp;([x&nbsp;severity]
</span><br/>
<span class="covered" title="8 out of 8 forms covered">
072&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(empty?&nbsp;(filter-severity&nbsp;(persistent-object-faults&nbsp;x)&nbsp;severity))))
<span class="partial" title="7 out of 8 forms covered">
073&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(empty?&nbsp;(filter-severity&nbsp;(persistent-object-faults&nbsp;x)&nbsp;severity))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
073&nbsp;&nbsp;
074&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
074&nbsp;&nbsp;(defn&nbsp;actor?
075&nbsp;&nbsp;(defn&nbsp;actor?
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
075&nbsp;&nbsp;&nbsp;&nbsp;&quot;Returns&nbsp;`true`&nbsp;if&nbsp;`x`&nbsp;quacks&nbsp;like&nbsp;an&nbsp;actor,&nbsp;else&nbsp;false.&quot;
076&nbsp;&nbsp;&nbsp;&nbsp;&quot;Returns&nbsp;`true`&nbsp;if&nbsp;`x`&nbsp;quacks&nbsp;like&nbsp;an&nbsp;actor,&nbsp;else&nbsp;false.&quot;
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
076&nbsp;&nbsp;&nbsp;&nbsp;([x]&nbsp;(actor?&nbsp;x&nbsp;*reject-severity*))
077&nbsp;&nbsp;&nbsp;&nbsp;([x]&nbsp;(actor?&nbsp;x&nbsp;*reject-severity*))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
077&nbsp;&nbsp;&nbsp;&nbsp;([x&nbsp;severity]
078&nbsp;&nbsp;&nbsp;&nbsp;([x&nbsp;severity]
</span><br/>
<span class="covered" title="8 out of 8 forms covered">
078&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(empty?&nbsp;(filter-severity&nbsp;(actor-faults&nbsp;x)&nbsp;severity))))
079&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(empty?&nbsp;(filter-severity&nbsp;(actor-faults&nbsp;x)&nbsp;severity))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
079&nbsp;&nbsp;
080&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
080&nbsp;&nbsp;(defn&nbsp;actor-or-uri?
081&nbsp;&nbsp;(defn&nbsp;actor-or-uri?
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
081&nbsp;&nbsp;&nbsp;&nbsp;&quot;`true`&nbsp;if&nbsp;`x`&nbsp;is&nbsp;either&nbsp;a&nbsp;URI&nbsp;or&nbsp;an&nbsp;actor.
082&nbsp;&nbsp;&nbsp;&nbsp;&quot;`true`&nbsp;if&nbsp;`x`&nbsp;is&nbsp;either&nbsp;a&nbsp;URI&nbsp;or&nbsp;an&nbsp;actor.
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
082&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
083&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
083&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;**TODO**:&nbsp;I&nbsp;need&nbsp;to&nbsp;decide&nbsp;about&nbsp;whether&nbsp;to&nbsp;reify&nbsp;referenced&nbsp;objects
084&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;**TODO**:&nbsp;I&nbsp;need&nbsp;to&nbsp;decide&nbsp;about&nbsp;whether&nbsp;to&nbsp;reify&nbsp;referenced&nbsp;objects
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
084&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;before&nbsp;validation&nbsp;or&nbsp;after.&nbsp;After&nbsp;reification,&nbsp;every&nbsp;reference&nbsp;to&nbsp;an&nbsp;actor
085&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;before&nbsp;validation&nbsp;or&nbsp;after.&nbsp;After&nbsp;reification,&nbsp;every&nbsp;reference&nbsp;to&nbsp;an&nbsp;actor
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
085&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*must&nbsp;be*&nbsp;to&nbsp;an&nbsp;actor&nbsp;object,&nbsp;but&nbsp;before,&nbsp;may&nbsp;only&nbsp;be&nbsp;to&nbsp;a&nbsp;URI&nbsp;pointing&nbsp;to&nbsp;
086&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*must&nbsp;be*&nbsp;to&nbsp;an&nbsp;actor&nbsp;object,&nbsp;but&nbsp;before,&nbsp;may&nbsp;only&nbsp;be&nbsp;to&nbsp;a&nbsp;URI&nbsp;pointing&nbsp;to&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
086&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;one.&quot;
087&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;one.&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
087&nbsp;&nbsp;&nbsp;&nbsp;[x]
088&nbsp;&nbsp;&nbsp;&nbsp;[x]
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
088&nbsp;&nbsp;&nbsp;&nbsp;(try
089&nbsp;&nbsp;&nbsp;&nbsp;(try
</span><br/>
<span class="not-covered" title="0 out of 5 forms covered">
089&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(and
090&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(and
</span><br/>
<span class="not-covered" title="0 out of 9 forms covered">
090&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cond&nbsp;(string?&nbsp;x)&nbsp;(uri?&nbsp;(URI.&nbsp;x))
091&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cond&nbsp;(string?&nbsp;x)&nbsp;(uri?&nbsp;(URI.&nbsp;x))
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
091&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:else&nbsp;(actor?&nbsp;x))
092&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:else&nbsp;(actor?&nbsp;x))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
092&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true)
093&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
093&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(catch&nbsp;URISyntaxException&nbsp;_&nbsp;false)
094&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(catch&nbsp;URISyntaxException&nbsp;_&nbsp;false)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
094&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(catch&nbsp;NullPointerException&nbsp;_&nbsp;false)))
095&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(catch&nbsp;NullPointerException&nbsp;_&nbsp;false)))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
095&nbsp;&nbsp;
096&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
096&nbsp;&nbsp;(defn&nbsp;activity?
097&nbsp;&nbsp;(defn&nbsp;activity?
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
097&nbsp;&nbsp;&nbsp;&nbsp;&quot;`true`&nbsp;iff&nbsp;`x`&nbsp;quacks&nbsp;like&nbsp;an&nbsp;activity,&nbsp;else&nbsp;false.&quot;
098&nbsp;&nbsp;&nbsp;&nbsp;&quot;`true`&nbsp;iff&nbsp;`x`&nbsp;quacks&nbsp;like&nbsp;an&nbsp;activity,&nbsp;else&nbsp;false.&quot;
</span><br/>
<span class="not-covered" title="0 out of 4 forms covered">
098&nbsp;&nbsp;&nbsp;&nbsp;([x]&nbsp;(activity?&nbsp;x&nbsp;*reject-severity*))
099&nbsp;&nbsp;&nbsp;&nbsp;([x]&nbsp;(activity?&nbsp;x&nbsp;*reject-severity*))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
099&nbsp;&nbsp;&nbsp;&nbsp;([x&nbsp;severity]
100&nbsp;&nbsp;&nbsp;&nbsp;([x&nbsp;severity]
</span><br/>
<span class="not-covered" title="0 out of 8 forms covered">
100&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(empty?&nbsp;(filter-severity&nbsp;(activity-faults&nbsp;x)&nbsp;severity))))
101&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(empty?&nbsp;(filter-severity&nbsp;(activity-faults&nbsp;x)&nbsp;severity))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
101&nbsp;&nbsp;
102&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
102&nbsp;&nbsp;(defn&nbsp;link?
103&nbsp;&nbsp;(defn&nbsp;link?
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
103&nbsp;&nbsp;&nbsp;&nbsp;&quot;`true`&nbsp;iff&nbsp;`x`&nbsp;quacks&nbsp;like&nbsp;a&nbsp;link,&nbsp;else&nbsp;false.&quot;
104&nbsp;&nbsp;&nbsp;&nbsp;&quot;`true`&nbsp;iff&nbsp;`x`&nbsp;quacks&nbsp;like&nbsp;a&nbsp;link,&nbsp;else&nbsp;false.&quot;
</span><br/>
<span class="not-covered" title="0 out of 4 forms covered">
104&nbsp;&nbsp;&nbsp;&nbsp;([x]&nbsp;(link?&nbsp;x&nbsp;*reject-severity*))
105&nbsp;&nbsp;&nbsp;&nbsp;([x]&nbsp;(link?&nbsp;x&nbsp;*reject-severity*))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
105&nbsp;&nbsp;&nbsp;&nbsp;([x&nbsp;severity]
106&nbsp;&nbsp;&nbsp;&nbsp;([x&nbsp;severity]
</span><br/>
<span class="not-covered" title="0 out of 8 forms covered">
106&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(empty?&nbsp;(filter-severity&nbsp;(link-faults&nbsp;x)&nbsp;severity))))
107&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(empty?&nbsp;(filter-severity&nbsp;(link-faults&nbsp;x)&nbsp;severity))))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
107&nbsp;&nbsp;
108&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
108&nbsp;&nbsp;(defn&nbsp;link-or-uri?
109&nbsp;&nbsp;(defn&nbsp;link-or-uri?
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
109&nbsp;&nbsp;&nbsp;&nbsp;&quot;`true`&nbsp;iff&nbsp;`x`&nbsp;is&nbsp;either&nbsp;a&nbsp;URI&nbsp;or&nbsp;a&nbsp;link,&nbsp;else&nbsp;false.
110&nbsp;&nbsp;&nbsp;&nbsp;&quot;`true`&nbsp;iff&nbsp;`x`&nbsp;is&nbsp;either&nbsp;a&nbsp;URI&nbsp;or&nbsp;a&nbsp;link,&nbsp;else&nbsp;false.
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
110&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
111&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
111&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;There&nbsp;are&nbsp;several&nbsp;points&nbsp;in&nbsp;the&nbsp;specification&nbsp;where&nbsp;e.g.&nbsp;the&nbsp;`:image`
112&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;There&nbsp;are&nbsp;several&nbsp;points&nbsp;in&nbsp;the&nbsp;specification&nbsp;where&nbsp;e.g.&nbsp;the&nbsp;`:image`
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
112&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;property&nbsp;(if&nbsp;present)&nbsp;may&nbsp;be&nbsp;either&nbsp;a&nbsp;link&nbsp;or&nbsp;a&nbsp;URI.&quot;
113&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;property&nbsp;(if&nbsp;present)&nbsp;may&nbsp;be&nbsp;either&nbsp;a&nbsp;link&nbsp;or&nbsp;a&nbsp;URI.&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
113&nbsp;&nbsp;&nbsp;&nbsp;[x]
114&nbsp;&nbsp;&nbsp;&nbsp;[x]
</span><br/>
<span class="not-covered" title="0 out of 5 forms covered">
114&nbsp;&nbsp;&nbsp;&nbsp;(and
115&nbsp;&nbsp;&nbsp;&nbsp;(and
</span><br/>
<span class="not-covered" title="0 out of 9 forms covered">
115&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cond&nbsp;(string?&nbsp;x)&nbsp;(uri?&nbsp;(URI.&nbsp;x))
116&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cond&nbsp;(string?&nbsp;x)&nbsp;(uri?&nbsp;(URI.&nbsp;x))
</span><br/>
<span class="not-covered" title="0 out of 3 forms covered">
116&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:else&nbsp;(link?&nbsp;x))
117&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:else&nbsp;(link?&nbsp;x))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
117&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true))
118&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
118&nbsp;&nbsp;
119&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
119&nbsp;&nbsp;(defn&nbsp;collection?
120&nbsp;&nbsp;(defn&nbsp;collection?
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
120&nbsp;&nbsp;&nbsp;&nbsp;&quot;`true`&nbsp;iff&nbsp;`x`&nbsp;quacks&nbsp;like&nbsp;a&nbsp;collection&nbsp;of&nbsp;type&nbsp;`object-type`,&nbsp;else&nbsp;`false`.
121&nbsp;&nbsp;&nbsp;&nbsp;&quot;`true`&nbsp;iff&nbsp;`x`&nbsp;quacks&nbsp;like&nbsp;a&nbsp;collection&nbsp;of&nbsp;type&nbsp;`object-type`,&nbsp;else&nbsp;`false`.
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
121&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
122&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
122&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;With&nbsp;one&nbsp;argument,&nbsp;will&nbsp;recognise&nbsp;plain&nbsp;collections&nbsp;and&nbsp;ordered&nbsp;collections,
123&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;With&nbsp;one&nbsp;argument,&nbsp;will&nbsp;recognise&nbsp;plain&nbsp;collections&nbsp;and&nbsp;ordered&nbsp;collections,
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
123&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;but&nbsp;(currently)&nbsp;not&nbsp;collection&nbsp;pages.&quot;
124&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;but&nbsp;(currently)&nbsp;not&nbsp;collection&nbsp;pages.&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
124&nbsp;&nbsp;&nbsp;&nbsp;([x&nbsp;^String&nbsp;object-type]
125&nbsp;&nbsp;&nbsp;&nbsp;([x&nbsp;^String&nbsp;object-type]
</span><br/>
<span class="partial" title="10 out of 11 forms covered">
125&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;[items&nbsp;(or&nbsp;(:items&nbsp;x)&nbsp;(:orderedItems&nbsp;x))]
126&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;[items&nbsp;(or&nbsp;(:items&nbsp;x)&nbsp;(:orderedItems&nbsp;x))]
</span><br/>
<span class="partial" title="14 out of 17 forms covered">
126&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(and
127&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(and
</span><br/>
<span class="partial" title="5 out of 6 forms covered">
127&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cond
128&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(cond
</span><br/>
<span class="partial" title="3 out of 8 forms covered">
128&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(:items&nbsp;x)&nbsp;(nil?&nbsp;(:orderedItems&nbsp;x))
129&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(:items&nbsp;x)&nbsp;(nil?&nbsp;(:orderedItems&nbsp;x))
</span><br/>
<span class="covered" title="8 out of 8 forms covered">
129&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(:orderedItems&nbsp;x)&nbsp;(nil?&nbsp;(:items&nbsp;x))&nbsp;;;&nbsp;can&#x27;t&nbsp;have&nbsp;both&nbsp;properties
130&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(:orderedItems&nbsp;x)&nbsp;(nil?&nbsp;(:items&nbsp;x))&nbsp;;;&nbsp;can&#x27;t&nbsp;have&nbsp;both&nbsp;properties
</span><br/>
<span class="covered" title="5 out of 5 forms covered">
130&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(integer?&nbsp;(:totalItems&nbsp;x))&nbsp;true&nbsp;;;&nbsp;can&nbsp;have&nbsp;neither,&nbsp;provided&nbsp;it&nbsp;has&nbsp;totalItems.
131&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(integer?&nbsp;(:totalItems&nbsp;x))&nbsp;true&nbsp;;;&nbsp;can&nbsp;have&nbsp;neither,&nbsp;provided&nbsp;it&nbsp;has&nbsp;totalItems.
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
131&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:else&nbsp;false)
132&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:else&nbsp;false)
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
132&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(object?&nbsp;x)
133&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(object?&nbsp;x)
</span><br/>
<span class="covered" title="5 out of 5 forms covered">
133&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(=&nbsp;(:type&nbsp;x)&nbsp;object-type)
134&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(=&nbsp;(:type&nbsp;x)&nbsp;object-type)
</span><br/>
<span class="partial" title="2 out of 3 forms covered">
134&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;items
135&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(if&nbsp;items
</span><br/>
<span class="partial" title="10 out of 12 forms covered">
135&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(and&nbsp;(coll?&nbsp;items)
136&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(and&nbsp;(coll?&nbsp;items)
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
136&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(every?&nbsp;object?&nbsp;items)&nbsp;;;&nbsp;if&nbsp;there&nbsp;are&nbsp;items,&nbsp;they&nbsp;must&nbsp;form&nbsp;a
137&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(every?&nbsp;object?&nbsp;items)&nbsp;;;&nbsp;if&nbsp;there&nbsp;are&nbsp;items,&nbsp;they&nbsp;must&nbsp;form&nbsp;a
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
137&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;collection&nbsp;of&nbsp;objects.
138&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;collection&nbsp;of&nbsp;objects.
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
138&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true)
139&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
139&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true)&nbsp;;;&nbsp;but&nbsp;it&#x27;s&nbsp;OK&nbsp;if&nbsp;there&nbsp;aren&#x27;t.
140&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true)&nbsp;;;&nbsp;but&nbsp;it&#x27;s&nbsp;OK&nbsp;if&nbsp;there&nbsp;aren&#x27;t.
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
140&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true)
141&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
141&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;test&nbsp;for&nbsp;totalItems&nbsp;not&nbsp;done&nbsp;here,&nbsp;because&nbsp;collection&nbsp;pages&nbsp;don&#x27;t
142&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;test&nbsp;for&nbsp;totalItems&nbsp;not&nbsp;done&nbsp;here,&nbsp;because&nbsp;collection&nbsp;pages&nbsp;don&#x27;t
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
142&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;have&nbsp;it.
143&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;;;&nbsp;have&nbsp;it.
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
143&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;))
144&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
144&nbsp;&nbsp;&nbsp;&nbsp;([x]
145&nbsp;&nbsp;&nbsp;&nbsp;([x]
</span><br/>
<span class="not-covered" title="0 out of 9 forms covered">
145&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(and
146&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(and
</span><br/>
<span class="not-covered" title="0 out of 10 forms covered">
146&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(or&nbsp;(collection?&nbsp;x&nbsp;&quot;Collection&quot;)
147&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(or&nbsp;(collection?&nbsp;x&nbsp;&quot;Collection&quot;)
</span><br/>
<span class="not-covered" title="0 out of 2 forms covered">
147&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(collection?&nbsp;x&nbsp;&quot;OrderedCollection&quot;))
148&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(collection?&nbsp;x&nbsp;&quot;OrderedCollection&quot;))
</span><br/>
<span class="not-covered" title="0 out of 5 forms covered">
148&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(integer?&nbsp;(:totalItems&nbsp;x))
149&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(integer?&nbsp;(:totalItems&nbsp;x))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
149&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true)))
150&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;true)))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
150&nbsp;&nbsp;
151&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
151&nbsp;&nbsp;(defn&nbsp;unordered-collection?
152&nbsp;&nbsp;(defn&nbsp;unordered-collection?
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
152&nbsp;&nbsp;&nbsp;&nbsp;&quot;`true`&nbsp;iff&nbsp;`x`&nbsp;quacks&nbsp;like&nbsp;an&nbsp;unordered&nbsp;collection,&nbsp;else&nbsp;`false`.&quot;
153&nbsp;&nbsp;&nbsp;&nbsp;&quot;`true`&nbsp;iff&nbsp;`x`&nbsp;quacks&nbsp;like&nbsp;an&nbsp;unordered&nbsp;collection,&nbsp;else&nbsp;`false`.&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
153&nbsp;&nbsp;&nbsp;&nbsp;[x]
154&nbsp;&nbsp;&nbsp;&nbsp;[x]
</span><br/>
<span class="not-covered" title="0 out of 18 forms covered">
154&nbsp;&nbsp;&nbsp;&nbsp;(and&nbsp;(collection?&nbsp;x&nbsp;&quot;Collection&quot;)&nbsp;(integer?&nbsp;(:totalItems&nbsp;x))&nbsp;true))
155&nbsp;&nbsp;&nbsp;&nbsp;(and&nbsp;(collection?&nbsp;x&nbsp;&quot;Collection&quot;)&nbsp;(integer?&nbsp;(:totalItems&nbsp;x))&nbsp;true))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
155&nbsp;&nbsp;
156&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
156&nbsp;&nbsp;(defn&nbsp;ordered-collection?
157&nbsp;&nbsp;(defn&nbsp;ordered-collection?
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
157&nbsp;&nbsp;&nbsp;&nbsp;&quot;`true`&nbsp;iff&nbsp;`x`&nbsp;quacks&nbsp;like&nbsp;an&nbsp;ordered&nbsp;collection,&nbsp;else&nbsp;`false`.&quot;
158&nbsp;&nbsp;&nbsp;&nbsp;&quot;`true`&nbsp;iff&nbsp;`x`&nbsp;quacks&nbsp;like&nbsp;an&nbsp;ordered&nbsp;collection,&nbsp;else&nbsp;`false`.&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
158&nbsp;&nbsp;&nbsp;&nbsp;[x]
159&nbsp;&nbsp;&nbsp;&nbsp;[x]
</span><br/>
<span class="not-covered" title="0 out of 18 forms covered">
159&nbsp;&nbsp;&nbsp;&nbsp;(and&nbsp;(collection?&nbsp;x&nbsp;&quot;OrderedCollection&quot;)&nbsp;(integer?&nbsp;(:totalItems&nbsp;x))&nbsp;true))
160&nbsp;&nbsp;&nbsp;&nbsp;(and&nbsp;(collection?&nbsp;x&nbsp;&quot;OrderedCollection&quot;)&nbsp;(integer?&nbsp;(:totalItems&nbsp;x))&nbsp;true))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
160&nbsp;&nbsp;
161&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
161&nbsp;&nbsp;(defn&nbsp;collection-page?
162&nbsp;&nbsp;(defn&nbsp;collection-page?
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
162&nbsp;&nbsp;&nbsp;&nbsp;&quot;`true`&nbsp;iff&nbsp;`x`&nbsp;quacks&nbsp;like&nbsp;a&nbsp;page&nbsp;in&nbsp;a&nbsp;paged&nbsp;collection,&nbsp;else&nbsp;`false`.&quot;
163&nbsp;&nbsp;&nbsp;&nbsp;&quot;`true`&nbsp;iff&nbsp;`x`&nbsp;quacks&nbsp;like&nbsp;a&nbsp;page&nbsp;in&nbsp;a&nbsp;paged&nbsp;collection,&nbsp;else&nbsp;`false`.&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
163&nbsp;&nbsp;&nbsp;&nbsp;[x]
164&nbsp;&nbsp;&nbsp;&nbsp;[x]
</span><br/>
<span class="not-covered" title="0 out of 4 forms covered">
164&nbsp;&nbsp;&nbsp;&nbsp;(collection?&nbsp;x&nbsp;&quot;CollectionPage&quot;))
165&nbsp;&nbsp;&nbsp;&nbsp;(collection?&nbsp;x&nbsp;&quot;CollectionPage&quot;))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
165&nbsp;&nbsp;
166&nbsp;&nbsp;
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
166&nbsp;&nbsp;(defn&nbsp;ordered-collection-page?
167&nbsp;&nbsp;(defn&nbsp;ordered-collection-page?
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
167&nbsp;&nbsp;&nbsp;&nbsp;&quot;`true`&nbsp;iff&nbsp;`x`&nbsp;quacks&nbsp;like&nbsp;a&nbsp;page&nbsp;in&nbsp;an&nbsp;ordered&nbsp;paged&nbsp;collection,&nbsp;else&nbsp;`false`.&quot;
168&nbsp;&nbsp;&nbsp;&nbsp;&quot;`true`&nbsp;iff&nbsp;`x`&nbsp;quacks&nbsp;like&nbsp;a&nbsp;page&nbsp;in&nbsp;an&nbsp;ordered&nbsp;paged&nbsp;collection,&nbsp;else&nbsp;`false`.&quot;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
168&nbsp;&nbsp;&nbsp;&nbsp;[x]
169&nbsp;&nbsp;&nbsp;&nbsp;[x]
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
169&nbsp;&nbsp;&nbsp;&nbsp;(collection?&nbsp;x&nbsp;&quot;OrderedCollectionPage&quot;))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
170&nbsp;&nbsp;
170&nbsp;&nbsp;&nbsp;&nbsp;(collection?&nbsp;x&nbsp;&quot;OrderedCollectionPage&quot;))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
171&nbsp;&nbsp;
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
172&nbsp;&nbsp;
</span><br/>
</body>
</html>

View file

@ -17,163 +17,190 @@
004&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[clj-activitypub.webfinger&nbsp;:as&nbsp;webfinger]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[clj-pgp.generate&nbsp;:as&nbsp;pgp-gen]
005&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[clj-activitypub.net&nbsp;:as&nbsp;activitypub-net]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
006&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[clojure.walk&nbsp;:refer&nbsp;[keywordize-keys]]))
006&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[clj-pgp.generate&nbsp;:as&nbsp;pgp-gen]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
007&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[clojure.walk&nbsp;:refer&nbsp;[keywordize-keys]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
008&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[clojure.pprint&nbsp;:refer&nbsp;[pprint]]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
009&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[clojure.data.json&nbsp;:as&nbsp;json]))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
007&nbsp;&nbsp;
010&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
008&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copyright&nbsp;(C)&nbsp;Simon&nbsp;Brooke,&nbsp;2022
011&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Copyright&nbsp;(C)&nbsp;Simon&nbsp;Brooke,&nbsp;2022
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
009&nbsp;&nbsp;
012&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
010&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;program&nbsp;is&nbsp;free&nbsp;software;&nbsp;you&nbsp;can&nbsp;redistribute&nbsp;it&nbsp;and&#x2F;or
013&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;program&nbsp;is&nbsp;free&nbsp;software;&nbsp;you&nbsp;can&nbsp;redistribute&nbsp;it&nbsp;and&#x2F;or
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
011&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modify&nbsp;it&nbsp;under&nbsp;the&nbsp;terms&nbsp;of&nbsp;the&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License
014&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;modify&nbsp;it&nbsp;under&nbsp;the&nbsp;terms&nbsp;of&nbsp;the&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
012&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;as&nbsp;published&nbsp;by&nbsp;the&nbsp;Free&nbsp;Software&nbsp;Foundation;&nbsp;either&nbsp;version&nbsp;2
015&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;as&nbsp;published&nbsp;by&nbsp;the&nbsp;Free&nbsp;Software&nbsp;Foundation;&nbsp;either&nbsp;version&nbsp;2
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
013&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;of&nbsp;the&nbsp;License,&nbsp;or&nbsp;(at&nbsp;your&nbsp;option)&nbsp;any&nbsp;later&nbsp;version.
016&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;of&nbsp;the&nbsp;License,&nbsp;or&nbsp;(at&nbsp;your&nbsp;option)&nbsp;any&nbsp;later&nbsp;version.
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
014&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
017&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
015&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;program&nbsp;is&nbsp;distributed&nbsp;in&nbsp;the&nbsp;hope&nbsp;that&nbsp;it&nbsp;will&nbsp;be&nbsp;useful,
018&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This&nbsp;program&nbsp;is&nbsp;distributed&nbsp;in&nbsp;the&nbsp;hope&nbsp;that&nbsp;it&nbsp;will&nbsp;be&nbsp;useful,
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
016&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;but&nbsp;WITHOUT&nbsp;ANY&nbsp;WARRANTY;&nbsp;without&nbsp;even&nbsp;the&nbsp;implied&nbsp;warranty&nbsp;of
019&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;but&nbsp;WITHOUT&nbsp;ANY&nbsp;WARRANTY;&nbsp;without&nbsp;even&nbsp;the&nbsp;implied&nbsp;warranty&nbsp;of
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
017&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MERCHANTABILITY&nbsp;or&nbsp;FITNESS&nbsp;FOR&nbsp;A&nbsp;PARTICULAR&nbsp;PURPOSE.&nbsp;&nbsp;See&nbsp;the
020&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MERCHANTABILITY&nbsp;or&nbsp;FITNESS&nbsp;FOR&nbsp;A&nbsp;PARTICULAR&nbsp;PURPOSE.&nbsp;&nbsp;See&nbsp;the
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
018&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License&nbsp;for&nbsp;more&nbsp;details.
021&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License&nbsp;for&nbsp;more&nbsp;details.
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
019&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
022&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
020&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;You&nbsp;should&nbsp;have&nbsp;received&nbsp;a&nbsp;copy&nbsp;of&nbsp;the&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License
023&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;You&nbsp;should&nbsp;have&nbsp;received&nbsp;a&nbsp;copy&nbsp;of&nbsp;the&nbsp;GNU&nbsp;General&nbsp;Public&nbsp;License
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
021&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;along&nbsp;with&nbsp;this&nbsp;program;&nbsp;if&nbsp;not,&nbsp;write&nbsp;to&nbsp;the&nbsp;Free&nbsp;Software
024&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;along&nbsp;with&nbsp;this&nbsp;program;&nbsp;if&nbsp;not,&nbsp;write&nbsp;to&nbsp;the&nbsp;Free&nbsp;Software
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
022&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Foundation,&nbsp;Inc.,&nbsp;51&nbsp;Franklin&nbsp;Street,&nbsp;Fifth&nbsp;Floor,&nbsp;Boston,&nbsp;MA&nbsp;&nbsp;02110-1301,&nbsp;USA.
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
023&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
024&nbsp;&nbsp;;;;&nbsp;Use&nbsp;any&nbsp;ActivityPub&nbsp;account&nbsp;handle&nbsp;you&nbsp;like&nbsp;-&nbsp;for&nbsp;example,&nbsp;your&nbsp;own
</span><br/>
<span class="covered" title="2 out of 2 forms covered">
025&nbsp;&nbsp;(def&nbsp;account-handle&nbsp;&quot;@simon_brooke@mastodon.scot&quot;)
025&nbsp;&nbsp;;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Foundation,&nbsp;Inc.,&nbsp;51&nbsp;Franklin&nbsp;Street,&nbsp;Fifth&nbsp;Floor,&nbsp;Boston,&nbsp;MA&nbsp;&nbsp;02110-1301,&nbsp;USA.
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
026&nbsp;&nbsp;
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
027&nbsp;&nbsp;(def&nbsp;handle&nbsp;(activitypub&#x2F;parse-account&nbsp;account-handle))
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
028&nbsp;&nbsp;(webfinger&#x2F;fetch-user-id&nbsp;&quot;mastodon.scot&quot;&nbsp;&quot;simon_brooke&quot;)
</span><br/>
<span class="covered" title="9 out of 9 forms covered">
029&nbsp;&nbsp;(apply&nbsp;webfinger&#x2F;fetch-user-id&nbsp;(map&nbsp;handle&nbsp;[:domain&nbsp;:username]))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
030&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
031&nbsp;&nbsp;;;;&nbsp;Retrieve&nbsp;the&nbsp;account&nbsp;details&nbsp;from&nbsp;its&nbsp;home&nbsp;server
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
032&nbsp;&nbsp;;;;&nbsp;(`keywordize-keys`&nbsp;is&nbsp;not&nbsp;necessary&nbsp;here&nbsp;but&nbsp;produces&nbsp;a&nbsp;more&nbsp;idiomatic&nbsp;clojure
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
033&nbsp;&nbsp;;;;&nbsp;data&nbsp;structure)
</span><br/>
<span class="covered" title="1 out of 1 forms covered">
034&nbsp;&nbsp;(def&nbsp;account
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
035&nbsp;&nbsp;&nbsp;&nbsp;&quot;Fetch&nbsp;my&nbsp;account&nbsp;to&nbsp;mess&nbsp;with&quot;
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
036&nbsp;&nbsp;&nbsp;&nbsp;(let&nbsp;[handle&nbsp;(activitypub&#x2F;parse-account&nbsp;account-handle)]
027&nbsp;&nbsp;;;;&nbsp;Use&nbsp;any&nbsp;ActivityPub&nbsp;account&nbsp;handle&nbsp;you&nbsp;like&nbsp;-&nbsp;for&nbsp;example,&nbsp;your&nbsp;own
</span><br/>
<span class="covered" title="2 out of 2 forms covered">
037&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(keywordize-keys
</span><br/>
<span class="covered" title="2 out of 2 forms covered">
038&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(activitypub&#x2F;fetch-user
</span><br/>
<span class="covered" title="9 out of 9 forms covered">
039&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(apply&nbsp;webfinger&#x2F;fetch-user-id&nbsp;(map&nbsp;handle&nbsp;[:domain&nbsp;:username]))))))
028&nbsp;&nbsp;(def&nbsp;account-handle&nbsp;&quot;@simon_brooke@mastodon.scot&quot;)
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
040&nbsp;&nbsp;
029&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
041&nbsp;&nbsp;;;;&nbsp;examine&nbsp;what&nbsp;you&nbsp;got&nbsp;back!
030&nbsp;&nbsp;;;(def&nbsp;handle&nbsp;(activitypub&#x2F;parse-account&nbsp;account-handle))
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
042&nbsp;&nbsp;(:inbox&nbsp;account)
<span class="not-tracked" title="0 out of 0 forms covered">
031&nbsp;&nbsp;;;(webfinger&#x2F;fetch-user-id&nbsp;&quot;mastodon.scot&quot;&nbsp;&quot;simon_brooke&quot;)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
032&nbsp;&nbsp;;;(apply&nbsp;webfinger&#x2F;fetch-user-id&nbsp;(map&nbsp;handle&nbsp;[:domain&nbsp;:username]))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
033&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
034&nbsp;&nbsp;;;;&nbsp;Retrieve&nbsp;the&nbsp;account&nbsp;details&nbsp;from&nbsp;its&nbsp;home&nbsp;server
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
035&nbsp;&nbsp;;;;&nbsp;(`keywordize-keys`&nbsp;is&nbsp;not&nbsp;necessary&nbsp;here&nbsp;but&nbsp;produces&nbsp;a&nbsp;more&nbsp;idiomatic&nbsp;clojure
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
036&nbsp;&nbsp;;;;&nbsp;data&nbsp;structure)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
037&nbsp;&nbsp;;;&nbsp;(def&nbsp;account
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
038&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;(-&gt;&nbsp;account-handle
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
039&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(webfinger&#x2F;parse-handle)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
040&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(webfinger&#x2F;fetch-user-id!)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
041&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(activitypub-net&#x2F;fetch-user!)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
042&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;(select-keys&nbsp;[:name&nbsp;:preferredUsername&nbsp;:inbox&nbsp;:summary])))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
043&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
044&nbsp;&nbsp;;;&nbsp;(def&nbsp;rsa&nbsp;(pgp-gen&#x2F;rsa-keypair-generator&nbsp;2048))
044&nbsp;&nbsp;;;&nbsp;;;;&nbsp;examine&nbsp;what&nbsp;you&nbsp;got&nbsp;back!
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
045&nbsp;&nbsp;;;&nbsp;(def&nbsp;kp&nbsp;(pgp-gen&#x2F;generate-keypair&nbsp;rsa&nbsp;:rsa-general))
045&nbsp;&nbsp;;;&nbsp;(:inbox&nbsp;account)
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
046&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
047&nbsp;&nbsp;;;&nbsp;how&nbsp;we&nbsp;make&nbsp;a&nbsp;public&#x2F;private&nbsp;key&nbsp;pair.&nbsp;But&nbsp;this&nbsp;key&nbsp;pair&nbsp;is&nbsp;not&nbsp;the&nbsp;one&nbsp;
047&nbsp;&nbsp;;;&nbsp;(-&gt;&nbsp;account
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
048&nbsp;&nbsp;;;&nbsp;known&nbsp;to&nbsp;mastodon.scot&nbsp;as&nbsp;my&nbsp;key&nbsp;pair,&nbsp;so&nbsp;that&nbsp;doesn&#x27;t&nbsp;get&nbsp;us&nbsp;very&nbsp;far...
048&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:inbox
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
049&nbsp;&nbsp;;;&nbsp;I&nbsp;think.
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
050&nbsp;&nbsp;(let&nbsp;[rsa&nbsp;(pgp-gen&#x2F;rsa-keypair-generator&nbsp;2048)
</span><br/>
<span class="covered" title="4 out of 4 forms covered">
051&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kp&nbsp;(pgp-gen&#x2F;generate-keypair&nbsp;rsa&nbsp;:rsa-general)
</span><br/>
<span class="covered" title="2 out of 2 forms covered">
052&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;(-&gt;&nbsp;kp&nbsp;.getPublicKey&nbsp;.getEncoded)
</span><br/>
<span class="covered" title="3 out of 3 forms covered">
053&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;(-&gt;&nbsp;kp&nbsp;.getPrivateKey&nbsp;.getPrivateKeyDataPacket&nbsp;.getEncoded)]
</span><br/>
<span class="covered" title="6 out of 6 forms covered">
054&nbsp;&nbsp;&nbsp;&nbsp;(println&nbsp;(str&nbsp;&quot;Public&nbsp;key:&nbsp;&nbsp;&quot;&nbsp;public))
</span><br/>
<span class="covered" title="6 out of 6 forms covered">
055&nbsp;&nbsp;&nbsp;&nbsp;(println&nbsp;(str&nbsp;&quot;Private&nbsp;key:&nbsp;&quot;&nbsp;private))
049&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;slurp
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
056&nbsp;&nbsp;&nbsp;&nbsp;)
050&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;json&#x2F;read-str
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
051&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pprint)&nbsp;;;&nbsp;=&gt;&nbsp;80
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
057&nbsp;&nbsp;
052&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
053&nbsp;&nbsp;;;&nbsp;(def&nbsp;rsa&nbsp;(pgp-gen&#x2F;rsa-keypair-generator&nbsp;2048))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
054&nbsp;&nbsp;;;&nbsp;(def&nbsp;kp&nbsp;(pgp-gen&#x2F;generate-keypair&nbsp;rsa&nbsp;:rsa-general))
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
055&nbsp;&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
056&nbsp;&nbsp;;;&nbsp;how&nbsp;we&nbsp;make&nbsp;a&nbsp;public&#x2F;private&nbsp;key&nbsp;pair.&nbsp;But&nbsp;this&nbsp;key&nbsp;pair&nbsp;is&nbsp;not&nbsp;the&nbsp;one&nbsp;
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
057&nbsp;&nbsp;;;&nbsp;known&nbsp;to&nbsp;mastodon.scot&nbsp;as&nbsp;my&nbsp;key&nbsp;pair,&nbsp;so&nbsp;that&nbsp;doesn&#x27;t&nbsp;get&nbsp;us&nbsp;very&nbsp;far...
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
058&nbsp;&nbsp;;;&nbsp;I&nbsp;think.
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
059&nbsp;&nbsp;;;&nbsp;(let&nbsp;[rsa&nbsp;(pgp-gen&#x2F;rsa-keypair-generator&nbsp;2048)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
060&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;kp&nbsp;(pgp-gen&#x2F;generate-keypair&nbsp;rsa&nbsp;:rsa-general)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
061&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;public&nbsp;(-&gt;&nbsp;kp&nbsp;.getPublicKey&nbsp;.getEncoded)
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
062&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;private&nbsp;(-&gt;&nbsp;kp&nbsp;.getPrivateKey&nbsp;.getPrivateKeyDataPacket&nbsp;.getEncoded)]
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
063&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;(println&nbsp;(str&nbsp;&quot;Public&nbsp;key:&nbsp;&nbsp;&quot;&nbsp;public))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
064&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;(println&nbsp;(str&nbsp;&quot;Private&nbsp;key:&nbsp;&quot;&nbsp;private))
</span><br/>
<span class="not-tracked" title="0 out of 0 forms covered">
065&nbsp;&nbsp;;;&nbsp;&nbsp;&nbsp;)
</span><br/>
<span class="blank" title="0 out of 0 forms covered">
066&nbsp;&nbsp;
</span><br/>
</body>
</html>

View file

@ -15,126 +15,60 @@
<td class="with-number">Total</td><td class="with-number">Blank</td><td class="with-number">Instrumented</td>
</tr></thead>
<tr>
<td><a href="clj_activitypub/core.clj.html">clj-activitypub.core</a></td><td class="with-bar"><div class="covered"
style="width:23.588039867109636%;
float:left;"> 71 </div><div class="not-covered"
style="width:76.41196013289037%;
float:left;"> 230 </div></td>
<td class="with-number">23.59 %</td>
<td><a href="dog_and_duck/quack/cli.clj.html">dog-and-duck.quack.cli</a></td><td class="with-bar"><div class="covered"
style="width:11.986301369863014%;
float:left;"> 70 </div><div class="not-covered"
style="width:88.01369863013699%;
float:left;"> 514 </div></td>
<td class="with-number">11.99 %</td>
<td class="with-bar"><div class="covered"
style="width:27.906976744186046%;
float:left;"> 24 </div><div class="partial"
style="width:2.3255813953488373%;
style="width:21.50537634408602%;
float:left;"> 20 </div><div class="partial"
style="width:2.150537634408602%;
float:left;"> 2 </div><div class="not-covered"
style="width:69.76744186046511%;
float:left;"> 60 </div></td>
<td class="with-number">30.23 %</td>
<td class="with-number">150</td><td class="with-number">14</td><td class="with-number">86</td>
</tr>
<tr>
<td><a href="clj_activitypub/internal/crypto.clj.html">clj-activitypub.internal.crypto</a></td><td class="with-bar"><div class="covered"
style="width:18.75%;
float:left;"> 9 </div><div class="not-covered"
style="width:81.25%;
float:left;"> 39 </div></td>
<td class="with-number">18.75 %</td>
<td class="with-bar"><div class="covered"
style="width:39.130434782608695%;
float:left;"> 9 </div><div class="not-covered"
style="width:60.869565217391305%;
float:left;"> 14 </div></td>
<td class="with-number">39.13 %</td>
<td class="with-number">39</td><td class="with-number">8</td><td class="with-number">23</td>
</tr>
<tr>
<td><a href="clj_activitypub/internal/http_util.clj.html">clj-activitypub.internal.http-util</a></td><td class="with-bar"><div class="covered"
style="width:74.35897435897436%;
float:left;"> 29 </div><div class="not-covered"
style="width:25.641025641025642%;
float:left;"> 10 </div></td>
<td class="with-number">74.36 %</td>
<td class="with-bar"><div class="covered"
style="width:80.0%;
float:left;"> 12 </div><div class="not-covered"
style="width:20.0%;
float:left;"> 3 </div></td>
<td class="with-number">80.00 %</td>
<td class="with-number">28</td><td class="with-number">3</td><td class="with-number">15</td>
</tr>
<tr>
<td><a href="clj_activitypub/internal/thread_cache.clj.html">clj-activitypub.internal.thread-cache</a></td><td class="with-bar"><div class="covered"
style="width:83.33333333333333%;
float:left;"> 105 </div><div class="not-covered"
style="width:16.666666666666668%;
float:left;"> 21 </div></td>
<td class="with-number">83.33 %</td>
<td class="with-bar"><div class="covered"
style="width:88.23529411764706%;
float:left;"> 30 </div><div class="partial"
style="width:2.9411764705882355%;
float:left;"> 1 </div><div class="not-covered"
style="width:8.823529411764707%;
float:left;"> 3 </div></td>
<td class="with-number">91.18 %</td>
<td class="with-number">47</td><td class="with-number">3</td><td class="with-number">34</td>
</tr>
<tr>
<td><a href="clj_activitypub/webfinger.clj.html">clj-activitypub.webfinger</a></td><td class="with-bar"><div class="covered"
style="width:95.53571428571429%;
float:left;"> 107 </div><div class="not-covered"
style="width:4.464285714285714%;
float:left;"> 5 </div></td>
<td class="with-number">95.54 %</td>
<td class="with-bar"><div class="covered"
style="width:88.88888888888889%;
float:left;"> 16 </div><div class="partial"
style="width:11.11111111111111%;
float:left;"> 2 </div></td>
<td class="with-number">100.00 %</td>
<td class="with-number">35</td><td class="with-number">5</td><td class="with-number">18</td>
style="width:76.34408602150538%;
float:left;"> 71 </div></td>
<td class="with-number">23.66 %</td>
<td class="with-number">139</td><td class="with-number">10</td><td class="with-number">93</td>
</tr>
<tr>
<td><a href="dog_and_duck/quack/picky.clj.html">dog-and-duck.quack.picky</a></td><td class="with-bar"><div class="covered"
style="width:41.6256157635468%;
float:left;"> 169 </div><div class="not-covered"
style="width:58.3743842364532%;
float:left;"> 237 </div></td>
<td class="with-number">41.63 %</td>
style="width:55.41871921182266%;
float:left;"> 225 </div><div class="not-covered"
style="width:44.58128078817734%;
float:left;"> 181 </div></td>
<td class="with-number">55.42 %</td>
<td class="with-bar"><div class="covered"
style="width:58.55855855855856%;
float:left;"> 65 </div><div class="partial"
style="width:2.7027027027027026%;
float:left;"> 3 </div><div class="not-covered"
style="width:38.73873873873874%;
float:left;"> 43 </div></td>
<td class="with-number">61.26 %</td>
<td class="with-number">251</td><td class="with-number">15</td><td class="with-number">111</td>
style="width:66.07142857142857%;
float:left;"> 74 </div><div class="partial"
style="width:4.464285714285714%;
float:left;"> 5 </div><div class="not-covered"
style="width:29.464285714285715%;
float:left;"> 33 </div></td>
<td class="with-number">70.54 %</td>
<td class="with-number">252</td><td class="with-number">15</td><td class="with-number">112</td>
</tr>
<tr>
<td><a href="dog_and_duck/quack/picky/collections.clj.html">dog-and-duck.quack.picky.collections</a></td><td class="with-bar"><div class="covered"
style="width:3.007518796992481%;
float:left;"> 4 </div><div class="not-covered"
style="width:96.99248120300751%;
float:left;"> 129 </div></td>
<td class="with-number">3.01 %</td>
style="width:100.0%;
float:left;"> 130 </div></td>
<td class="with-number">100.00 %</td>
<td class="with-bar"><div class="covered"
style="width:16.666666666666668%;
float:left;"> 4 </div><div class="not-covered"
style="width:83.33333333333333%;
float:left;"> 20 </div></td>
<td class="with-number">16.67 %</td>
<td class="with-number">57</td><td class="with-number">8</td><td class="with-number">24</td>
style="width:100.0%;
float:left;"> 25 </div></td>
<td class="with-number">100.00 %</td>
<td class="with-number">60</td><td class="with-number">8</td><td class="with-number">25</td>
</tr>
<tr>
<td><a href="dog_and_duck/quack/picky/constants.clj.html">dog-and-duck.quack.picky.constants</a></td><td class="with-bar"><div class="covered"
style="width:100.0%;
float:left;"> 73 </div></td>
float:left;"> 99 </div></td>
<td class="with-number">100.00 %</td>
<td class="with-bar"><div class="covered"
style="width:100.0%;
float:left;"> 18 </div></td>
float:left;"> 23 </div></td>
<td class="with-number">100.00 %</td>
<td class="with-number">79</td><td class="with-number">12</td><td class="with-number">18</td>
<td class="with-number">116</td><td class="with-number">15</td><td class="with-number">23</td>
</tr>
<tr>
<td><a href="dog_and_duck/quack/picky/control_variables.clj.html">dog-and-duck.quack.picky.control-variables</a></td><td class="with-bar"><div class="covered"
@ -148,75 +82,98 @@
<td class="with-number">49</td><td class="with-number">6</td><td class="with-number">3</td>
</tr>
<tr>
<td><a href="dog_and_duck/quack/picky/fault_messages.clj.html">dog-and-duck.quack.picky.fault-messages</a></td><td class="with-bar"><div class="covered"
style="width:100.0%;
float:left;"> 29 </div></td>
<td class="with-number">100.00 %</td>
<td class="with-bar"><div class="covered"
style="width:100.0%;
float:left;"> 3 </div></td>
<td class="with-number">100.00 %</td>
<td class="with-number">35</td><td class="with-number">5</td><td class="with-number">3</td>
</tr>
<tr>
<td><a href="dog_and_duck/quack/picky/required_properties.clj.html">dog-and-duck.quack.picky.required-properties</a></td><td class="with-bar"><div class="covered"
style="width:100.0%;
float:left;"> 1 </div></td>
<td class="with-number">100.00 %</td>
<td class="with-bar"><div class="covered"
style="width:100.0%;
float:left;"> 1 </div></td>
<td class="with-number">100.00 %</td>
<td class="with-number">1</td><td class="with-number">0</td><td class="with-number">1</td>
</tr>
<tr>
<td><a href="dog_and_duck/quack/picky/utils.clj.html">dog-and-duck.quack.picky.utils</a></td><td class="with-bar"><div class="covered"
style="width:49.94786235662148%;
float:left;"> 479 </div><div class="not-covered"
style="width:50.05213764337852%;
float:left;"> 480 </div></td>
<td class="with-number">49.95 %</td>
<td class="with-bar"><div class="covered"
style="width:38.775510204081634%;
float:left;"> 57 </div><div class="partial"
style="width:6.122448979591836%;
float:left;"> 9 </div><div class="not-covered"
style="width:55.10204081632653%;
float:left;"> 81 </div></td>
<td class="with-number">44.90 %</td>
<td class="with-number">319</td><td class="with-number">30</td><td class="with-number">147</td>
</tr>
<tr>
<td><a href="dog_and_duck/quack/quack.clj.html">dog-and-duck.quack.quack</a></td><td class="with-bar"><div class="covered"
style="width:46.56488549618321%;
float:left;"> 122 </div><div class="not-covered"
style="width:53.43511450381679%;
float:left;"> 140 </div></td>
<td class="with-number">46.56 %</td>
<td class="with-bar"><div class="covered"
style="width:51.02040816326531%;
float:left;"> 25 </div><div class="partial"
style="width:12.244897959183673%;
float:left;"> 6 </div><div class="not-covered"
style="width:36.734693877551024%;
<td><a href="dog_and_duck/quack/picky/distribution.clj.html">dog-and-duck.quack.picky.distribution</a></td><td class="with-bar"><div class="covered"
style="width:10.0%;
float:left;"> 2 </div><div class="not-covered"
style="width:90.0%;
float:left;"> 18 </div></td>
<td class="with-number">63.27 %</td>
<td class="with-number">171</td><td class="with-number">21</td><td class="with-number">49</td>
</tr>
<tr>
<td><a href="dog_and_duck/scratch/core.clj.html">dog-and-duck.scratch.core</a></td><td class="with-bar"><div class="covered"
<td class="with-number">10.00 %</td>
<td class="with-bar"><div class="covered"
style="width:33.333333333333336%;
float:left;"> 2 </div><div class="not-covered"
style="width:66.66666666666667%;
float:left;"> 4 </div></td>
<td class="with-number">33.33 %</td>
<td class="with-number">30</td><td class="with-number">5</td><td class="with-number">6</td>
</tr>
<tr>
<td><a href="dog_and_duck/quack/picky/objects.clj.html">dog-and-duck.quack.picky.objects</a></td><td class="with-bar"><div class="covered"
style="width:81.38759172781855%;
float:left;"> 1220 </div><div class="not-covered"
style="width:18.612408272181455%;
float:left;"> 279 </div></td>
<td class="with-number">81.39 %</td>
<td class="with-bar"><div class="covered"
style="width:66.66666666666667%;
float:left;"> 2 </div><div class="not-covered"
style="width:33.333333333333336%;
style="width:83.48348348348348%;
float:left;"> 278 </div><div class="partial"
style="width:7.5075075075075075%;
float:left;"> 25 </div><div class="not-covered"
style="width:9.00900900900901%;
float:left;"> 30 </div></td>
<td class="with-number">90.99 %</td>
<td class="with-number">522</td><td class="with-number">16</td><td class="with-number">333</td>
</tr>
<tr>
<td><a href="dog_and_duck/quack/picky/scratch.clj.html">dog-and-duck.quack.picky.scratch</a></td><td class="with-bar"><div class="covered"
style="width:100.0%;
float:left;"> 1 </div></td>
<td class="with-number">66.67 %</td>
<td class="with-number">22</td><td class="with-number">5</td><td class="with-number">3</td>
<td class="with-number">100.00 %</td>
<td class="with-bar"><div class="covered"
style="width:100.0%;
float:left;"> 1 </div></td>
<td class="with-number">100.00 %</td>
<td class="with-number">53</td><td class="with-number">6</td><td class="with-number">1</td>
</tr>
<tr>
<td><a href="dog_and_duck/quack/picky/time.clj.html">dog-and-duck.quack.picky.time</a></td><td class="with-bar"><div class="covered"
style="width:7.407407407407407%;
float:left;"> 10 </div><div class="not-covered"
style="width:92.5925925925926%;
float:left;"> 125 </div></td>
<td class="with-number">7.41 %</td>
<td class="with-bar"><div class="covered"
style="width:22.22222222222222%;
float:left;"> 4 </div><div class="partial"
style="width:11.11111111111111%;
float:left;"> 2 </div><div class="not-covered"
style="width:66.66666666666667%;
float:left;"> 12 </div></td>
<td class="with-number">33.33 %</td>
<td class="with-number">66</td><td class="with-number">7</td><td class="with-number">18</td>
</tr>
<tr>
<td><a href="dog_and_duck/quack/picky/utils.clj.html">dog-and-duck.quack.picky.utils</a></td><td class="with-bar"><div class="covered"
style="width:62.62626262626262%;
float:left;"> 434 </div><div class="not-covered"
style="width:37.37373737373738%;
float:left;"> 259 </div></td>
<td class="with-number">62.63 %</td>
<td class="with-bar"><div class="covered"
style="width:60.18518518518518%;
float:left;"> 65 </div><div class="partial"
style="width:16.666666666666668%;
float:left;"> 18 </div><div class="not-covered"
style="width:23.14814814814815%;
float:left;"> 25 </div></td>
<td class="with-number">76.85 %</td>
<td class="with-number">253</td><td class="with-number">26</td><td class="with-number">108</td>
</tr>
<tr>
<td><a href="dog_and_duck/quack/quack.clj.html">dog-and-duck.quack.quack</a></td><td class="with-bar"><div class="covered"
style="width:46.18320610687023%;
float:left;"> 121 </div><div class="not-covered"
style="width:53.81679389312977%;
float:left;"> 141 </div></td>
<td class="with-number">46.18 %</td>
<td class="with-bar"><div class="covered"
style="width:48.97959183673469%;
float:left;"> 24 </div><div class="partial"
style="width:14.285714285714286%;
float:left;"> 7 </div><div class="not-covered"
style="width:36.734693877551024%;
float:left;"> 18 </div></td>
<td class="with-number">63.27 %</td>
<td class="with-number">172</td><td class="with-number">21</td><td class="with-number">49</td>
</tr>
<tr>
<td><a href="dog_and_duck/scratch/parser.clj.html">dog-and-duck.scratch.parser</a></td><td class="with-bar"><div class="covered"
@ -238,13 +195,13 @@
<tr>
<td><a href="dog_and_duck/scratch/scratch.clj.html">dog-and-duck.scratch.scratch</a></td><td class="with-bar"><div class="covered"
style="width:100.0%;
float:left;"> 66 </div></td>
float:left;"> 3 </div></td>
<td class="with-number">100.00 %</td>
<td class="with-bar"><div class="covered"
style="width:100.0%;
float:left;"> 17 </div></td>
float:left;"> 2 </div></td>
<td class="with-number">100.00 %</td>
<td class="with-number">57</td><td class="with-number">9</td><td class="with-number">17</td>
<td class="with-number">66</td><td class="with-number">10</td><td class="with-number">2</td>
</tr>
<tr>
<td><a href="dog_and_duck/utils/process.clj.html">dog-and-duck.utils.process</a></td><td class="with-bar"><div class="covered"
@ -263,9 +220,9 @@
</tr>
<tr><td>Totals:</td>
<td class="with-bar"></td>
<td class="with-number">50.34 %</td>
<td class="with-number">60.82 %</td>
<td class="with-bar"></td>
<td class="with-number">57.34 %</td>
<td class="with-number">75.54 %</td>
</tr>
</table>
</body>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -56,11 +56,11 @@
;; how we make a public/private key pair. But this key pair is not the one
;; known to mastodon.scot as my key pair, so that doesn't get us very far...
;; I think.
(let [rsa (pgp-gen/rsa-keypair-generator 2048)
kp (pgp-gen/generate-keypair rsa :rsa-general)
public (-> kp .getPublicKey .getEncoded)
private (-> kp .getPrivateKey .getPrivateKeyDataPacket .getEncoded)]
(println (str "Public key: " public))
(println (str "Private key: " private))
)
;; (let [rsa (pgp-gen/rsa-keypair-generator 2048)
;; kp (pgp-gen/generate-keypair rsa :rsa-general)
;; public (-> kp .getPublicKey .getEncoded)
;; private (-> kp .getPrivateKey .getPrivateKeyDataPacket .getEncoded)]
;; (println (str "Public key: " public))
;; (println (str "Private key: " private))
;; )