Skip to content

Commit cc5a673

Browse files
committed
Add array tests
1 parent 21318b3 commit cc5a673

File tree

1 file changed

+187
-0
lines changed

1 file changed

+187
-0
lines changed

tests/Feature/Type/array.feature

Lines changed: 187 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,187 @@
1+
Feature: Checking the "array" (TypeLang\Mapper\Type\ArrayType) type behavior
2+
3+
Background:
4+
Given type "TypeLang\Mapper\Type\ArrayType"
5+
6+
Scenario Outline: Matching "<value>"
7+
When normalize
8+
Then match of "<value>" must return <is_matched>
9+
When denormalize
10+
Then match of "<value>" must return <is_matched>
11+
Examples:
12+
| value | is_matched |
13+
# default checks
14+
## int
15+
| 42 | false |
16+
| 1 | false |
17+
| 0 | false |
18+
| -1 | false |
19+
| -42 | false |
20+
## numeric int string
21+
| "42" | false |
22+
| "1" | false |
23+
| "0" | false |
24+
| "-1" | false |
25+
| "-42" | false |
26+
## float
27+
| 42.5 | false |
28+
| 42.0 | false |
29+
| 1.0 | false |
30+
| 0.0 | false |
31+
| -1.0 | false |
32+
| -42.0 | false |
33+
| -42.5 | false |
34+
## numeric float string
35+
| "42.5" | false |
36+
| "42.0" | false |
37+
| "1.0" | false |
38+
| "0.0" | false |
39+
| "-1.0" | false |
40+
| "-42.0" | false |
41+
| "-42.5" | false |
42+
## extra float
43+
| INF | false |
44+
| -INF | false |
45+
| NAN | false |
46+
## null
47+
| null | false |
48+
## bool
49+
| true | false |
50+
| false | false |
51+
## bool string
52+
| "true" | false |
53+
| "false" | false |
54+
## string
55+
| "non empty" | false |
56+
| "" | false |
57+
## array
58+
| [] | true |
59+
| [0 => 23] | true |
60+
| ['key' => 42] | true |
61+
## object
62+
| (object)[] | false |
63+
## enum
64+
| TypeLang\Mapper\Tests\Stub\IntBackedEnumStub::CASE | false |
65+
| TypeLang\Mapper\Tests\Stub\StringBackedEnumStub::CASE | false |
66+
| TypeLang\Mapper\Tests\Stub\UnitEnumStub::CASE | false |
67+
68+
69+
Scenario Outline: Normalize "<value>"
70+
When normalize
71+
Then cast of "<value>" must return <result>
72+
Examples:
73+
| value | result |
74+
# default checks
75+
## int
76+
| 42 | <error: Passed value 42 is invalid> |
77+
| 1 | <error: Passed value 1 is invalid> |
78+
| 0 | <error: Passed value 0 is invalid> |
79+
| -1 | <error: Passed value -1 is invalid> |
80+
| -42 | <error: Passed value -42 is invalid> |
81+
## numeric int string
82+
| "42" | <error: Passed value "42" is invalid> |
83+
| "1" | <error: Passed value "1" is invalid> |
84+
| "0" | <error: Passed value "0" is invalid> |
85+
| "-1" | <error: Passed value "-1" is invalid> |
86+
| "-42" | <error: Passed value "-42" is invalid> |
87+
## float
88+
| 42.5 | <error: Passed value 42.5 is invalid> |
89+
| 42.0 | <error: Passed value 42 is invalid> |
90+
| 1.0 | <error: Passed value 1 is invalid> |
91+
| 0.0 | <error: Passed value 0 is invalid> |
92+
| -1.0 | <error: Passed value -1 is invalid> |
93+
| -42.0 | <error: Passed value -42 is invalid> |
94+
| -42.5 | <error: Passed value -42.5 is invalid> |
95+
## numeric float string
96+
| "42.5" | <error: Passed value "42.5" is invalid> |
97+
| "42.0" | <error: Passed value "42.0" is invalid> |
98+
| "1.0" | <error: Passed value "1.0" is invalid> |
99+
| "0.0" | <error: Passed value "0.0" is invalid> |
100+
| "-1.0" | <error: Passed value "-1.0" is invalid> |
101+
| "-42.0" | <error: Passed value "-42.0" is invalid> |
102+
| "-42.5" | <error: Passed value "-42.5" is invalid> |
103+
## extra float
104+
| INF | <error: Passed value INF is invalid> |
105+
| -INF | <error: Passed value -INF is invalid> |
106+
| NAN | <error: Passed value NAN is invalid> |
107+
## null
108+
| null | <error: Passed value null is invalid> |
109+
## bool
110+
| true | <error: Passed value true is invalid> |
111+
| false | <error: Passed value false is invalid> |
112+
## bool string
113+
| "true" | <error: Passed value "true" is invalid> |
114+
| "false" | <error: Passed value "false" is invalid> |
115+
## string
116+
| "non empty" | <error: Passed value "non empty" is invalid> |
117+
| "" | <error: Passed value "" is invalid> |
118+
## array
119+
| [] | [] |
120+
| [0 => 23] | [0 => 23] |
121+
| ['key' => 42] | ['key' => 42] |
122+
## object
123+
| (object)[] | <error: Passed value {} is invalid> |
124+
## enum
125+
| TypeLang\Mapper\Tests\Stub\IntBackedEnumStub::CASE | <error: Passed value {"name": "CASE", "value": 3735928559} is invalid> |
126+
| TypeLang\Mapper\Tests\Stub\StringBackedEnumStub::CASE | <error: Passed value {"name": "CASE", "value": "case"} is invalid> |
127+
| TypeLang\Mapper\Tests\Stub\UnitEnumStub::CASE | <error: Passed value {"name": "CASE"} is invalid> |
128+
129+
Scenario Outline: Denormalize "<value>"
130+
When denormalize
131+
Then cast of "<value>" must return <result>
132+
Examples:
133+
| value | result |
134+
# default checks
135+
## int
136+
| 42 | <error: Passed value 42 is invalid> |
137+
| 1 | <error: Passed value 1 is invalid> |
138+
| 0 | <error: Passed value 0 is invalid> |
139+
| -1 | <error: Passed value -1 is invalid> |
140+
| -42 | <error: Passed value -42 is invalid> |
141+
## numeric int string
142+
| "42" | <error: Passed value "42" is invalid> |
143+
| "1" | <error: Passed value "1" is invalid> |
144+
| "0" | <error: Passed value "0" is invalid> |
145+
| "-1" | <error: Passed value "-1" is invalid> |
146+
| "-42" | <error: Passed value "-42" is invalid> |
147+
## float
148+
| 42.5 | <error: Passed value 42.5 is invalid> |
149+
| 42.0 | <error: Passed value 42 is invalid> |
150+
| 1.0 | <error: Passed value 1 is invalid> |
151+
| 0.0 | <error: Passed value 0 is invalid> |
152+
| -1.0 | <error: Passed value -1 is invalid> |
153+
| -42.0 | <error: Passed value -42 is invalid> |
154+
| -42.5 | <error: Passed value -42.5 is invalid> |
155+
## numeric float string
156+
| "42.5" | <error: Passed value "42.5" is invalid> |
157+
| "42.0" | <error: Passed value "42.0" is invalid> |
158+
| "1.0" | <error: Passed value "1.0" is invalid> |
159+
| "0.0" | <error: Passed value "0.0" is invalid> |
160+
| "-1.0" | <error: Passed value "-1.0" is invalid> |
161+
| "-42.0" | <error: Passed value "-42.0" is invalid> |
162+
| "-42.5" | <error: Passed value "-42.5" is invalid> |
163+
## extra float
164+
| INF | <error: Passed value INF is invalid> |
165+
| -INF | <error: Passed value -INF is invalid> |
166+
| NAN | <error: Passed value NAN is invalid> |
167+
## null
168+
| null | <error: Passed value null is invalid> |
169+
## bool
170+
| true | <error: Passed value true is invalid> |
171+
| false | <error: Passed value false is invalid> |
172+
## bool string
173+
| "true" | <error: Passed value "true" is invalid> |
174+
| "false" | <error: Passed value "false" is invalid> |
175+
## string
176+
| "non empty" | <error: Passed value "non empty" is invalid> |
177+
| "" | <error: Passed value "" is invalid> |
178+
## array
179+
| [] | [] |
180+
| [0 => 23] | [0 => 23] |
181+
| ['key' => 42] | ['key' => 42] |
182+
## object
183+
| (object)[] | <error: Passed value {} is invalid> |
184+
## enum
185+
| TypeLang\Mapper\Tests\Stub\IntBackedEnumStub::CASE | <error: Passed value {"name": "CASE", "value": 3735928559} is invalid> |
186+
| TypeLang\Mapper\Tests\Stub\StringBackedEnumStub::CASE | <error: Passed value {"name": "CASE", "value": "case"} is invalid> |
187+
| TypeLang\Mapper\Tests\Stub\UnitEnumStub::CASE | <error: Passed value {"name": "CASE"} is invalid> |

0 commit comments

Comments
 (0)