@@ -265,51 +265,152 @@ public function testInvalidBinaryLengths($length): void
265265 }
266266 }
267267
268- public function testBasetypes (): void
268+ public function basetypeProvider (): Generator
269269 {
270+ yield Snowflake::TYPE_INT => [
271+ new Snowflake (Snowflake::TYPE_INT , $ this ->getTypeDefaultOptions (Snowflake::TYPE_INT )),
272+ 'INTEGER ' ,
273+ ];
274+ yield Snowflake::TYPE_INTEGER => [
275+ new Snowflake (Snowflake::TYPE_INTEGER , $ this ->getTypeDefaultOptions (Snowflake::TYPE_INTEGER )),
276+ 'INTEGER ' ,
277+ ];
278+ yield Snowflake::TYPE_BIGINT => [
279+ new Snowflake (Snowflake::TYPE_BIGINT , $ this ->getTypeDefaultOptions (Snowflake::TYPE_BIGINT )),
280+ 'INTEGER ' ,
281+ ];
282+ yield Snowflake::TYPE_SMALLINT => [
283+ new Snowflake (Snowflake::TYPE_SMALLINT , $ this ->getTypeDefaultOptions (Snowflake::TYPE_SMALLINT )),
284+ 'INTEGER ' ,
285+ ];
286+ yield Snowflake::TYPE_TINYINT => [
287+ new Snowflake (Snowflake::TYPE_TINYINT , $ this ->getTypeDefaultOptions (Snowflake::TYPE_TINYINT )),
288+ 'INTEGER ' ,
289+ ];
290+ yield Snowflake::TYPE_BYTEINT => [
291+ new Snowflake (Snowflake::TYPE_BYTEINT , $ this ->getTypeDefaultOptions (Snowflake::TYPE_BYTEINT )),
292+ 'INTEGER ' ,
293+ ];
294+ yield Snowflake::TYPE_NUMBER => [
295+ new Snowflake (Snowflake::TYPE_NUMBER , $ this ->getTypeDefaultOptions (Snowflake::TYPE_NUMBER )),
296+ 'NUMERIC ' ,
297+ ];
298+ yield Snowflake::TYPE_DECIMAL => [
299+ new Snowflake (Snowflake::TYPE_DECIMAL , $ this ->getTypeDefaultOptions (Snowflake::TYPE_DECIMAL )),
300+ 'NUMERIC ' ,
301+ ];
302+ yield Snowflake::TYPE_DEC => [
303+ new Snowflake (Snowflake::TYPE_DEC , $ this ->getTypeDefaultOptions (Snowflake::TYPE_DEC )),
304+ 'NUMERIC ' ,
305+ ];
306+ yield Snowflake::TYPE_NUMERIC => [
307+ new Snowflake (Snowflake::TYPE_NUMERIC , $ this ->getTypeDefaultOptions (Snowflake::TYPE_NUMERIC )),
308+ 'NUMERIC ' ,
309+ ];
310+ yield Snowflake::TYPE_FLOAT => [
311+ new Snowflake (Snowflake::TYPE_FLOAT , $ this ->getTypeDefaultOptions (Snowflake::TYPE_FLOAT )),
312+ 'FLOAT ' ,
313+ ];
314+ yield Snowflake::TYPE_FLOAT4 => [
315+ new Snowflake (Snowflake::TYPE_FLOAT4 , $ this ->getTypeDefaultOptions (Snowflake::TYPE_FLOAT4 )),
316+ 'FLOAT ' ,
317+ ];
318+ yield Snowflake::TYPE_FLOAT8 => [
319+ new Snowflake (Snowflake::TYPE_FLOAT8 , $ this ->getTypeDefaultOptions (Snowflake::TYPE_FLOAT8 )),
320+ 'FLOAT ' ,
321+ ];
322+ yield Snowflake::TYPE_DOUBLE => [
323+ new Snowflake (Snowflake::TYPE_DOUBLE , $ this ->getTypeDefaultOptions (Snowflake::TYPE_DOUBLE )),
324+ 'FLOAT ' ,
325+ ];
326+ yield Snowflake::TYPE_DOUBLE_PRECISION => [
327+ new Snowflake (
328+ Snowflake::TYPE_DOUBLE_PRECISION ,
329+ $ this ->getTypeDefaultOptions (Snowflake::TYPE_DOUBLE_PRECISION ),
330+ ),
331+ 'FLOAT ' ,
332+ ];
333+ yield Snowflake::TYPE_REAL => [
334+ new Snowflake (Snowflake::TYPE_REAL , $ this ->getTypeDefaultOptions (Snowflake::TYPE_REAL )),
335+ 'FLOAT ' ,
336+ ];
337+ yield Snowflake::TYPE_BOOLEAN => [
338+ new Snowflake (Snowflake::TYPE_BOOLEAN , $ this ->getTypeDefaultOptions (Snowflake::TYPE_BOOLEAN )),
339+ 'BOOLEAN ' ,
340+ ];
341+ yield Snowflake::TYPE_DATE => [
342+ new Snowflake (Snowflake::TYPE_DATE , $ this ->getTypeDefaultOptions (Snowflake::TYPE_DATE )),
343+ 'DATE ' ,
344+ ];
345+ yield Snowflake::TYPE_DATETIME => [
346+ new Snowflake (Snowflake::TYPE_DATETIME , $ this ->getTypeDefaultOptions (Snowflake::TYPE_DATETIME )),
347+ 'TIMESTAMP ' ,
348+ ];
349+ yield Snowflake::TYPE_TIMESTAMP => [
350+ new Snowflake (Snowflake::TYPE_TIMESTAMP , $ this ->getTypeDefaultOptions (Snowflake::TYPE_TIMESTAMP )),
351+ 'TIMESTAMP ' ,
352+ ];
353+ yield Snowflake::TYPE_TIMESTAMP_NTZ => [
354+ new Snowflake (Snowflake::TYPE_TIMESTAMP_NTZ , $ this ->getTypeDefaultOptions (Snowflake::TYPE_TIMESTAMP_NTZ )),
355+ 'TIMESTAMP ' ,
356+ ];
357+ yield Snowflake::TYPE_TIMESTAMP_LTZ => [
358+ new Snowflake (Snowflake::TYPE_TIMESTAMP_LTZ , $ this ->getTypeDefaultOptions (Snowflake::TYPE_TIMESTAMP_LTZ )),
359+ 'TIMESTAMP ' ,
360+ ];
361+ yield Snowflake::TYPE_TIMESTAMP_TZ => [
362+ new Snowflake (Snowflake::TYPE_TIMESTAMP_TZ , $ this ->getTypeDefaultOptions (Snowflake::TYPE_TIMESTAMP_TZ )),
363+ 'TIMESTAMP ' ,
364+ ];
365+
366+ $ testedTypes = [
367+ Snowflake::TYPE_INT ,
368+ Snowflake::TYPE_INTEGER ,
369+ Snowflake::TYPE_BIGINT ,
370+ Snowflake::TYPE_SMALLINT ,
371+ Snowflake::TYPE_TINYINT ,
372+ Snowflake::TYPE_BYTEINT ,
373+ Snowflake::TYPE_NUMBER ,
374+ Snowflake::TYPE_DECIMAL ,
375+ Snowflake::TYPE_DEC ,
376+ Snowflake::TYPE_NUMERIC ,
377+ Snowflake::TYPE_FLOAT ,
378+ Snowflake::TYPE_FLOAT4 ,
379+ Snowflake::TYPE_FLOAT8 ,
380+ Snowflake::TYPE_DOUBLE ,
381+ Snowflake::TYPE_DOUBLE_PRECISION ,
382+ Snowflake::TYPE_REAL ,
383+ Snowflake::TYPE_BOOLEAN ,
384+ Snowflake::TYPE_DATE ,
385+ Snowflake::TYPE_DATETIME ,
386+ Snowflake::TYPE_TIMESTAMP ,
387+ Snowflake::TYPE_TIMESTAMP_NTZ ,
388+ Snowflake::TYPE_TIMESTAMP_LTZ ,
389+ Snowflake::TYPE_TIMESTAMP_TZ ,
390+ ];
270391 foreach (Snowflake::TYPES as $ type ) {
271- $ basetype = (new Snowflake ($ type , $ this ->getTypeDefaultOptions ($ type )))->getBasetype ();
272- switch ($ type ) {
273- case 'INT ' :
274- case 'INTEGER ' :
275- case 'BIGINT ' :
276- case 'SMALLINT ' :
277- case 'TINYINT ' :
278- case 'BYTEINT ' :
279- $ this ->assertEquals ('INTEGER ' , $ basetype );
280- break ;
281- case 'NUMBER ' :
282- case 'DECIMAL ' :
283- case 'DEC ' :
284- case 'NUMERIC ' :
285- $ this ->assertEquals ('NUMERIC ' , $ basetype );
286- break ;
287- case 'FLOAT ' :
288- case 'FLOAT4 ' :
289- case 'FLOAT8 ' :
290- case 'DOUBLE ' :
291- case 'DOUBLE PRECISION ' :
292- case 'REAL ' :
293- $ this ->assertEquals ('FLOAT ' , $ basetype );
294- break ;
295- case 'BOOLEAN ' :
296- $ this ->assertEquals ('BOOLEAN ' , $ basetype );
297- break ;
298- case 'DATE ' :
299- $ this ->assertEquals ('DATE ' , $ basetype );
300- break ;
301- case 'DATETIME ' :
302- case 'TIMESTAMP ' :
303- case 'TIMESTAMP_NTZ ' :
304- case 'TIMESTAMP_LTZ ' :
305- case 'TIMESTAMP_TZ ' :
306- $ this ->assertEquals ('TIMESTAMP ' , $ basetype );
307- break ;
308- default :
309- $ this ->assertEquals ('STRING ' , $ basetype );
310- break ;
392+ if (!in_array ($ type , $ testedTypes , true )) {
393+ yield $ type => [
394+ new Snowflake ($ type , $ this ->getTypeDefaultOptions ($ type )),
395+ 'STRING ' ,
396+ ];
311397 }
312398 }
399+
400+ yield Snowflake::TYPE_NUMBER .' with 38,0 length ' => [
401+ new Snowflake (Snowflake::TYPE_NUMBER , ['length ' => '38,0 ' ]),
402+ 'INTEGER ' ,
403+ ];
404+ }
405+
406+ /**
407+ * @dataProvider basetypeProvider
408+ */
409+ public function testBasetypes (
410+ Snowflake $ type ,
411+ string $ expectedBasetype ,
412+ ): void {
413+ $ this ->assertEquals ($ expectedBasetype , $ type ->getBasetype ());
313414 }
314415
315416 public function testVariant (): void
0 commit comments