| Test |
Method name |
Duration |
Result |
| Counts match subfactorial values for n=0..6 |
counts_matchSubfactorial() |
0.001s |
passed |
| Returned arrays are defensive copies (immutability) |
defensiveCopies() |
0s |
passed |
| Edge case n=0 yields one empty derangement; n=1 yields none |
edgeCases_n0_n1() |
0.001s |
passed |
| Invalid arguments throw IllegalArgumentException |
invalidArgs() |
0s |
passed |
| Iterator respects hasNext()/next() and throws on exhaustion (n=4) |
iteratorContract_n4() |
0s |
passed |
| Small order check: n=3 in lexicographic order |
order_n3() |
0s |
passed |
| Every output is a derangement: d[i] != i |
property_noFixedPoints() |
0.005s |
passed |
| No duplicates for n=5 (exactly 44 unique derangements) |
uniqueness_n5() |
0.001s |
passed |