p5pclub / ref-util

Ref::Util - Utility functions for checking references
6 stars 11 forks source link

Add tests that test all permutations: #31

Closed xsawyerx closed 7 years ago

xsawyerx commented 7 years ago

Wow. This took a while. Mostly to figure out, then write it out cleanly. Plenty of copy pasting and search/replace with Vim.

Why? Because I didn't want to do it dynamically.

This tests several things:

Things still to do:

xsawyerx commented 7 years ago
Test output (click me) ``` $ perl -Mblib t/all-permutations.t 1..3 # Subtest: is_ref 1..21 ok 1 - is_ref(blessed_arrayref) is true ok 2 - is_ref(blessed_coderef) is true ok 3 - is_ref(blessed_formatref) is true ok 4 - is_ref(blessed_globref) is true ok 5 - is_ref(blessed_hashref) is true ok 6 - is_ref(blessed_refref) is true ok 7 - is_ref(blessed_scalarref) is true ok 8 - is_ref(plain_arrayref) is true ok 9 - is_ref(plain_coderef) is true ok 10 - is_ref(plain_formatref) is true ok 11 - is_ref(plain_globref) is true ok 12 - is_ref(plain_hashref) is true ok 13 - is_ref(plain_refref) is true ok 14 - is_ref(plain_scalarref) is true ok 15 - is_ref(0) is false ok 16 - is_ref(1) is false ok 17 - is_ref(string) is false ok 18 - is_ref('') is false ok 19 - is_ref((undef)) is false ok 20 - is_ref(0) is false ok 21 - is_ref(0e0) is false ok 1 - is_ref # Subtest: plain references 1..119 ok 1 - is_blessed_ref(plain_arrayref) is false ok 2 - is_blessed_scalarref(plain_arrayref) is false ok 3 - is_blessed_arrayref(plain_arrayref) is false ok 4 - is_blessed_hashref(plain_arrayref) is false ok 5 - is_blessed_coderef(plain_arrayref) is false ok 6 - is_blessed_coderef(plain_arrayref) is false ok 7 - is_blessed_formatref(plain_arrayref) is false ok 8 - is_blessed_refref(plain_arrayref) is false ok 9 - is_blessed_ref(plain_coderef) is false ok 10 - is_blessed_scalarref(plain_coderef) is false ok 11 - is_blessed_arrayref(plain_coderef) is false ok 12 - is_blessed_hashref(plain_coderef) is false ok 13 - is_blessed_coderef(plain_coderef) is false ok 14 - is_blessed_coderef(plain_coderef) is false ok 15 - is_blessed_formatref(plain_coderef) is false ok 16 - is_blessed_refref(plain_coderef) is false ok 17 - is_blessed_ref(plain_formatref) is false ok 18 - is_blessed_scalarref(plain_formatref) is false ok 19 - is_blessed_arrayref(plain_formatref) is false ok 20 - is_blessed_hashref(plain_formatref) is false ok 21 - is_blessed_coderef(plain_formatref) is false ok 22 - is_blessed_coderef(plain_formatref) is false ok 23 - is_blessed_formatref(plain_formatref) is false ok 24 - is_blessed_refref(plain_formatref) is false ok 25 - is_blessed_ref(plain_globref) is false ok 26 - is_blessed_scalarref(plain_globref) is false ok 27 - is_blessed_arrayref(plain_globref) is false ok 28 - is_blessed_hashref(plain_globref) is false ok 29 - is_blessed_coderef(plain_globref) is false ok 30 - is_blessed_coderef(plain_globref) is false ok 31 - is_blessed_formatref(plain_globref) is false ok 32 - is_blessed_refref(plain_globref) is false ok 33 - is_blessed_ref(plain_hashref) is false ok 34 - is_blessed_scalarref(plain_hashref) is false ok 35 - is_blessed_arrayref(plain_hashref) is false ok 36 - is_blessed_hashref(plain_hashref) is false ok 37 - is_blessed_coderef(plain_hashref) is false ok 38 - is_blessed_coderef(plain_hashref) is false ok 39 - is_blessed_formatref(plain_hashref) is false ok 40 - is_blessed_refref(plain_hashref) is false ok 41 - is_blessed_ref(plain_refref) is false ok 42 - is_blessed_scalarref(plain_refref) is false ok 43 - is_blessed_arrayref(plain_refref) is false ok 44 - is_blessed_hashref(plain_refref) is false ok 45 - is_blessed_coderef(plain_refref) is false ok 46 - is_blessed_coderef(plain_refref) is false ok 47 - is_blessed_formatref(plain_refref) is false ok 48 - is_blessed_refref(plain_refref) is false ok 49 - is_blessed_ref(plain_scalarref) is false ok 50 - is_blessed_scalarref(plain_scalarref) is false ok 51 - is_blessed_arrayref(plain_scalarref) is false ok 52 - is_blessed_hashref(plain_scalarref) is false ok 53 - is_blessed_coderef(plain_scalarref) is false ok 54 - is_blessed_coderef(plain_scalarref) is false ok 55 - is_blessed_formatref(plain_scalarref) is false ok 56 - is_blessed_refref(plain_scalarref) is false ok 57 - is_plain_ref(plain_arrayref) is true ok 58 - is_plain_ref(plain_coderef) is true ok 59 - is_plain_ref(plain_formatref) is true ok 60 - is_plain_ref(plain_globref) is true ok 61 - is_plain_ref(plain_hashref) is true ok 62 - is_plain_ref(plain_refref) is true ok 63 - is_plain_ref(plain_scalarref) is true ok 64 - is_plain_scalarref(plain_arrayref) is false ok 65 - is_plain_scalarref(plain_coderef) is false ok 66 - is_plain_scalarref(plain_formatref) is false ok 67 - is_plain_scalarref(plain_globref) is false ok 68 - is_plain_scalarref(plain_hashref) is false ok 69 - is_plain_scalarref(plain_refref) is false ok 70 - is_plain_scalarref(plain_scalarref) is true ok 71 - is_plain_scalarref(plain_arrayref) is false ok 72 - is_plain_scalarref(plain_coderef) is false ok 73 - is_plain_scalarref(plain_formatref) is false ok 74 - is_plain_scalarref(plain_globref) is false ok 75 - is_plain_scalarref(plain_hashref) is false ok 76 - is_plain_scalarref(plain_refref) is false ok 77 - is_plain_scalarref(plain_scalarref) is true ok 78 - is_plain_arrayref(plain_arrayref) is true ok 79 - is_plain_arrayref(plain_coderef) is false ok 80 - is_plain_arrayref(plain_formatref) is false ok 81 - is_plain_arrayref(plain_globref) is false ok 82 - is_plain_arrayref(plain_hashref) is false ok 83 - is_plain_arrayref(plain_refref) is false ok 84 - is_plain_arrayref(plain_scalarref) is false ok 85 - is_plain_hashref(plain_arrayref) is false ok 86 - is_plain_hashref(plain_coderef) is false ok 87 - is_plain_hashref(plain_formatref) is false ok 88 - is_plain_hashref(plain_globref) is false ok 89 - is_plain_hashref(plain_hashref) is true ok 90 - is_plain_hashref(plain_refref) is false ok 91 - is_plain_hashref(plain_scalarref) is false ok 92 - is_plain_coderef(plain_arrayref) is false ok 93 - is_plain_coderef(plain_coderef) is true ok 94 - is_plain_coderef(plain_formatref) is false ok 95 - is_plain_coderef(plain_globref) is false ok 96 - is_plain_coderef(plain_hashref) is false ok 97 - is_plain_coderef(plain_refref) is false ok 98 - is_plain_coderef(plain_scalarref) is false ok 99 - is_plain_globref(plain_arrayref) is false ok 100 - is_plain_globref(plain_coderef) is false ok 101 - is_plain_globref(plain_formatref) is false ok 102 - is_plain_globref(plain_globref) is true ok 103 - is_plain_globref(plain_hashref) is false ok 104 - is_plain_globref(plain_refref) is false ok 105 - is_plain_globref(plain_scalarref) is false ok 106 - is_plain_formatref(plain_arrayref) is false ok 107 - is_plain_formatref(plain_coderef) is false ok 108 - is_plain_formatref(plain_formatref) is true ok 109 - is_plain_formatref(plain_globref) is false ok 110 - is_plain_formatref(plain_hashref) is false ok 111 - is_plain_formatref(plain_refref) is false ok 112 - is_plain_formatref(plain_scalarref) is false ok 113 - is_plain_globref(plain_arrayref) is false ok 114 - is_plain_globref(plain_coderef) is false ok 115 - is_plain_globref(plain_formatref) is false ok 116 - is_plain_globref(plain_globref) is true ok 117 - is_plain_globref(plain_hashref) is false ok 118 - is_plain_globref(plain_refref) is false ok 119 - is_plain_globref(plain_scalarref) is false ok 2 - plain references # Subtest: blessed references 1..119 ok 1 - is_plain_ref(blessed_arrayref) is false ok 2 - is_plain_scalarref(blessed_arrayref) is false ok 3 - is_plain_arrayref(blessed_arrayref) is false ok 4 - is_plain_hashref(blessed_arrayref) is false ok 5 - is_plain_coderef(blessed_arrayref) is false ok 6 - is_plain_coderef(blessed_arrayref) is false ok 7 - is_plain_formatref(blessed_arrayref) is false ok 8 - is_plain_refref(blessed_arrayref) is false ok 9 - is_plain_ref(blessed_coderef) is false ok 10 - is_plain_scalarref(blessed_coderef) is false ok 11 - is_plain_arrayref(blessed_coderef) is false ok 12 - is_plain_hashref(blessed_coderef) is false ok 13 - is_plain_coderef(blessed_coderef) is false ok 14 - is_plain_coderef(blessed_coderef) is false ok 15 - is_plain_formatref(blessed_coderef) is false ok 16 - is_plain_refref(blessed_coderef) is false ok 17 - is_plain_ref(blessed_formatref) is false ok 18 - is_plain_scalarref(blessed_formatref) is false ok 19 - is_plain_arrayref(blessed_formatref) is false ok 20 - is_plain_hashref(blessed_formatref) is false ok 21 - is_plain_coderef(blessed_formatref) is false ok 22 - is_plain_coderef(blessed_formatref) is false ok 23 - is_plain_formatref(blessed_formatref) is false ok 24 - is_plain_refref(blessed_formatref) is false ok 25 - is_plain_ref(blessed_globref) is false ok 26 - is_plain_scalarref(blessed_globref) is false ok 27 - is_plain_arrayref(blessed_globref) is false ok 28 - is_plain_hashref(blessed_globref) is false ok 29 - is_plain_coderef(blessed_globref) is false ok 30 - is_plain_coderef(blessed_globref) is false ok 31 - is_plain_formatref(blessed_globref) is false ok 32 - is_plain_refref(blessed_globref) is false ok 33 - is_plain_ref(blessed_hashref) is false ok 34 - is_plain_scalarref(blessed_hashref) is false ok 35 - is_plain_arrayref(blessed_hashref) is false ok 36 - is_plain_hashref(blessed_hashref) is false ok 37 - is_plain_coderef(blessed_hashref) is false ok 38 - is_plain_coderef(blessed_hashref) is false ok 39 - is_plain_formatref(blessed_hashref) is false ok 40 - is_plain_refref(blessed_hashref) is false ok 41 - is_plain_ref(blessed_refref) is false ok 42 - is_plain_scalarref(blessed_refref) is false ok 43 - is_plain_arrayref(blessed_refref) is false ok 44 - is_plain_hashref(blessed_refref) is false ok 45 - is_plain_coderef(blessed_refref) is false ok 46 - is_plain_coderef(blessed_refref) is false ok 47 - is_plain_formatref(blessed_refref) is false ok 48 - is_plain_refref(blessed_refref) is false ok 49 - is_plain_ref(blessed_scalarref) is false ok 50 - is_plain_scalarref(blessed_scalarref) is false ok 51 - is_plain_arrayref(blessed_scalarref) is false ok 52 - is_plain_hashref(blessed_scalarref) is false ok 53 - is_plain_coderef(blessed_scalarref) is false ok 54 - is_plain_coderef(blessed_scalarref) is false ok 55 - is_plain_formatref(blessed_scalarref) is false ok 56 - is_plain_refref(blessed_scalarref) is false ok 57 - is_blessed_ref(blessed_arrayref) is true ok 58 - is_blessed_ref(blessed_coderef) is true ok 59 - is_blessed_ref(blessed_formatref) is true ok 60 - is_blessed_ref(blessed_globref) is true ok 61 - is_blessed_ref(blessed_hashref) is true ok 62 - is_blessed_ref(blessed_refref) is true ok 63 - is_blessed_ref(blessed_scalarref) is true ok 64 - is_blessed_scalarref(blessed_arrayref) is false ok 65 - is_blessed_scalarref(blessed_coderef) is false ok 66 - is_blessed_scalarref(blessed_formatref) is false ok 67 - is_blessed_scalarref(blessed_globref) is false ok 68 - is_blessed_scalarref(blessed_hashref) is false ok 69 - is_blessed_scalarref(blessed_refref) is false ok 70 - is_blessed_scalarref(blessed_scalarref) is true ok 71 - is_blessed_scalarref(blessed_arrayref) is false ok 72 - is_blessed_scalarref(blessed_coderef) is false ok 73 - is_blessed_scalarref(blessed_formatref) is false ok 74 - is_blessed_scalarref(blessed_globref) is false ok 75 - is_blessed_scalarref(blessed_hashref) is false ok 76 - is_blessed_scalarref(blessed_refref) is false ok 77 - is_blessed_scalarref(blessed_scalarref) is true ok 78 - is_blessed_arrayref(blessed_arrayref) is true ok 79 - is_blessed_arrayref(blessed_coderef) is false ok 80 - is_blessed_arrayref(blessed_formatref) is false ok 81 - is_blessed_arrayref(blessed_globref) is false ok 82 - is_blessed_arrayref(blessed_hashref) is false ok 83 - is_blessed_arrayref(blessed_refref) is false ok 84 - is_blessed_arrayref(blessed_scalarref) is false ok 85 - is_blessed_hashref(blessed_arrayref) is false ok 86 - is_blessed_hashref(blessed_coderef) is false ok 87 - is_blessed_hashref(blessed_formatref) is false ok 88 - is_blessed_hashref(blessed_globref) is false ok 89 - is_blessed_hashref(blessed_hashref) is true ok 90 - is_blessed_hashref(blessed_refref) is false ok 91 - is_blessed_hashref(blessed_scalarref) is false ok 92 - is_blessed_coderef(blessed_arrayref) is false ok 93 - is_blessed_coderef(blessed_coderef) is true ok 94 - is_blessed_coderef(blessed_formatref) is false ok 95 - is_blessed_coderef(blessed_globref) is false ok 96 - is_blessed_coderef(blessed_hashref) is false ok 97 - is_blessed_coderef(blessed_refref) is false ok 98 - is_blessed_coderef(blessed_scalarref) is false ok 99 - is_blessed_globref(blessed_arrayref) is false ok 100 - is_blessed_globref(blessed_coderef) is false ok 101 - is_blessed_globref(blessed_formatref) is false ok 102 - is_blessed_globref(blessed_globref) is true ok 103 - is_blessed_globref(blessed_hashref) is false ok 104 - is_blessed_globref(blessed_refref) is false ok 105 - is_blessed_globref(blessed_scalarref) is false ok 106 - is_blessed_formatref(blessed_arrayref) is false ok 107 - is_blessed_formatref(blessed_coderef) is false ok 108 - is_blessed_formatref(blessed_formatref) is true ok 109 - is_blessed_formatref(blessed_globref) is false ok 110 - is_blessed_formatref(blessed_hashref) is false ok 111 - is_blessed_formatref(blessed_refref) is false ok 112 - is_blessed_formatref(blessed_scalarref) is false ok 113 - is_blessed_globref(blessed_arrayref) is false ok 114 - is_blessed_globref(blessed_coderef) is false ok 115 - is_blessed_globref(blessed_formatref) is false ok 116 - is_blessed_globref(blessed_globref) is true ok 117 - is_blessed_globref(blessed_hashref) is false ok 118 - is_blessed_globref(blessed_refref) is false ok 119 - is_blessed_globref(blessed_scalarref) is false ok 3 - blessed references ```
xsawyerx commented 7 years ago

This is not complete yet. I'm adding more things.

I want to have these tests so I could add star the move of Ref::Util to Ref::Util::XS with default pure-Perl implementation.

xsawyerx commented 7 years ago

Improved the tests. Ready to be merged, IMHO.

xsawyerx commented 7 years ago

Merged!