1111use Era269 \Normalizable \Object \IntegerObject ;
1212use Era269 \Normalizable \Object \StringObject ;
1313use Era269 \Normalizable \Traits \SimpleNormalizableTrait ;
14+ use Exception ;
1415use LogicException ;
1516use PHPUnit \Framework \TestCase ;
1617
@@ -19,14 +20,21 @@ class SimpleNormalizableTraitTest extends TestCase
1920 public function testNormalize (): void
2021 {
2122 $ dateTime = new DateTimeRfc3339Normalizable ();
22- $ normalizable = $ this ->createAutoNormalizable ($ dateTime );
23+ $ stringable = new Exception ('message ' , 269 );
24+ $ normalizable = $ this ->createAutoNormalizable ($ dateTime , $ stringable );
2325 self ::assertEquals (
24- $ this ->getExpectedNormalized ($ normalizable , $ dateTime , 1 ),
26+ $ this ->getExpectedNormalized ($ normalizable , $ dateTime , $ stringable , 1 ),
2527 $ normalizable ->normalize ()
2628 );
2729 }
2830
29- private function createAutoNormalizable (DateTimeRfc3339Normalizable $ dateTimeRfc3339Normalizable ): NormalizableInterface
31+ /**
32+ * @param object $stringable
33+ */
34+ private function createAutoNormalizable (
35+ DateTimeRfc3339Normalizable $ dateTimeRfc3339Normalizable ,
36+ $ stringable
37+ ): NormalizableInterface
3038 {
3139 return new class (
3240 1 ,
@@ -39,7 +47,8 @@ private function createAutoNormalizable(DateTimeRfc3339Normalizable $dateTimeRfc
3947 [1 , '1 ' , false , null ],
4048 new IntegerObject (5 ),
4149 new StringObject ('10 ' ),
42- $ dateTimeRfc3339Normalizable
50+ $ dateTimeRfc3339Normalizable ,
51+ $ stringable
4352 ) implements NormalizableInterface {
4453 use SimpleNormalizableTrait;
4554
@@ -87,8 +96,13 @@ private function createAutoNormalizable(DateTimeRfc3339Normalizable $dateTimeRfc
8796 * @var DateTimeInterface
8897 */
8998 private $ dateTimeRfc3339Normalizable ;
99+ /**
100+ * @var object
101+ */
102+ private $ stringable ;
90103
91104 /**
105+ * @param object $stringable
92106 * @param array<int, mixed> $privateArray
93107 */
94108 public function __construct (
@@ -102,7 +116,8 @@ public function __construct(
102116 array $ privateArray ,
103117 IntegerObject $ integerObject ,
104118 StringObject $ stringObject ,
105- DateTimeInterface $ dateTimeRfc3339Normalizable
119+ DateTimeInterface $ dateTimeRfc3339Normalizable ,
120+ $ stringable
106121 )
107122 {
108123 $ this ->publicInt = $ publicInt ;
@@ -116,16 +131,20 @@ public function __construct(
116131 $ this ->integerObject = $ integerObject ;
117132 $ this ->stringObject = $ stringObject ;
118133 $ this ->dateTimeRfc3339Normalizable = $ dateTimeRfc3339Normalizable ;
134+ $ this ->stringable = $ stringable ;
119135 }
120136 };
121137 }
122138
123139 /**
140+ * @param object $stringable
141+ *
124142 * @return array<string, mixed>
125143 */
126144 private function getExpectedNormalized (
127145 NormalizableInterface $ normalizable ,
128146 DateTimeRfc3339Normalizable $ dateTime ,
147+ $ stringable ,
129148 int $ publicIntManuallyNormalized
130149 ): array
131150 {
@@ -142,20 +161,25 @@ private function getExpectedNormalized(
142161 'integerObject ' => 5 ,
143162 'stringObject ' => '10 ' ,
144163 'dateTimeRfc3339Normalizable ' => $ dateTime ->normalize (),
164+ 'stringable ' => (string ) $ stringable ,
145165 ];
146166 }
147167
148168 public function testAutoNormalize (): void
149169 {
150170 $ dateTime = new DateTimeRfc3339Normalizable ();
151- $ normalizable = $ this ->createNormalizable ($ dateTime );
171+ $ stringable = new Exception ('message ' , 269 );
172+ $ normalizable = $ this ->createNormalizable ($ dateTime , $ stringable );
152173 self ::assertEquals (
153- $ this ->getExpectedNormalized ($ normalizable , $ dateTime , 2 ),
174+ $ this ->getExpectedNormalized ($ normalizable , $ dateTime , $ stringable , 2 ),
154175 $ normalizable ->normalize ()
155176 );
156177 }
157178
158- private function createNormalizable (DateTimeRfc3339Normalizable $ dateTimeRfc3339Normalizable ): NormalizableInterface
179+ /**
180+ * @param object $stringable
181+ */
182+ private function createNormalizable (DateTimeRfc3339Normalizable $ dateTimeRfc3339Normalizable , $ stringable ): NormalizableInterface
159183 {
160184 return new class (
161185 1 ,
@@ -168,7 +192,8 @@ private function createNormalizable(DateTimeRfc3339Normalizable $dateTimeRfc3339
168192 [1 , '1 ' , false , null ],
169193 new IntegerObject (5 ),
170194 new StringObject ('10 ' ),
171- $ dateTimeRfc3339Normalizable
195+ $ dateTimeRfc3339Normalizable ,
196+ $ stringable
172197 ) implements NormalizableInterface {
173198 use SimpleNormalizableTrait;
174199
@@ -216,6 +241,10 @@ private function createNormalizable(DateTimeRfc3339Normalizable $dateTimeRfc3339
216241 * @var DateTimeInterface
217242 */
218243 private $ dateTimeRfc3339Normalizable ;
244+ /**
245+ * @var object
246+ */
247+ private $ stringable ;
219248
220249 /**
221250 * @param array<int, mixed> $privateArray
@@ -231,7 +260,8 @@ public function __construct(
231260 array $ privateArray ,
232261 IntegerObject $ integerObject ,
233262 StringObject $ stringObject ,
234- DateTimeInterface $ dateTimeRfc3339Normalizable
263+ DateTimeInterface $ dateTimeRfc3339Normalizable ,
264+ $ stringable
235265 )
236266 {
237267 $ this ->publicInt = $ publicInt ;
@@ -245,6 +275,7 @@ public function __construct(
245275 $ this ->integerObject = $ integerObject ;
246276 $ this ->stringObject = $ stringObject ;
247277 $ this ->dateTimeRfc3339Normalizable = $ dateTimeRfc3339Normalizable ;
278+ $ this ->stringable = $ stringable ;
248279 }
249280
250281 /**
0 commit comments