1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149
|
use strict;
use warnings;
use Test::More;
use Test::Differences;
use Test::Exception;
use autobox::Core;
use lib "lib";
use autobox::Transform;
subtest key_value => sub {
eq_or_diff(
[ { present => "value", other => "other value" }->key_value("present") ],
[
present => "value",
],
"Present key gives only that key",
);
eq_or_diff(
[ scalar { present => "value", other => "other value" }->key_value("present") ],
[
{ present => "value" },
],
"Scalar context returns hashref",
);
eq_or_diff(
[ {}->key_value("missing") ],
[
missing => undef,
],
"Missing key gives original key with undef",
);
eq_or_diff(
[ {}->key_value("missing", "new_name") ],
[
new_name => undef,
],
"Missing key with new_name gives new_name key with undef",
);
};
subtest key_value_exists => sub {
eq_or_diff(
[ { present => "value", other => undef }->key_value_if_exists("missing" ) ],
[
],
"Doesn't exist, not returned",
);
eq_or_diff(
[ { present => "value", other => undef }->key_value_if_exists("other") ],
[
other => undef,
],
"present and undefined value found",
);
eq_or_diff(
[ { present => "value", other => undef }->key_value_if_exists("present") ],
[
present => "value",
],
"present and defined value found",
);
eq_or_diff(
[ { present => "value", other => undef }->key_value_if_exists("present", "alias") ],
[
alias => "value",
],
"returned with new_key",
);
};
subtest key_value_defined => sub {
eq_or_diff(
[ { present => "value", other => undef }->key_value_if_defined("missing" ) ],
[
],
"Doesn't exist, not returned",
);
eq_or_diff(
[ { present => "value", other => undef }->key_value_if_defined("other") ],
[
],
"present and undefined value not returned",
);
eq_or_diff(
[ { present => "value", other => undef }->key_value_if_defined("present") ],
[
present => "value",
],
"present and defined value found",
);
eq_or_diff(
[ { present => "value", other => undef }->key_value_if_defined("present", "alias") ],
[
alias => "value",
],
"returned with new_key",
);
};
subtest key_value_true => sub {
eq_or_diff(
[ { present => "value", other => undef }->key_value_if_true("missing" ) ],
[
],
"Doesn't exist, not returned",
);
eq_or_diff(
[ { present => "value", other => undef }->key_value_if_true("other") ],
[
],
"present and undefined value not returned",
);
eq_or_diff(
[ { present => "value", other => undef, is_false => 0 }->key_value_if_true("is_false") ],
[
],
"present and false value not returned",
);
eq_or_diff(
[ { present => "value", other => undef }->key_value_if_true("present") ],
[
present => "value",
],
"present and defined value found",
);
eq_or_diff(
[ { present => "value", other => undef }->key_value_if_true("present", "alias") ],
[
alias => "value",
],
"returned with new_key",
);
};
done_testing();
|