@@ -342,6 +342,117 @@ public function testCreateCollectionWithSchema()
342342 static ::getDatabase ()->deleteCollection ('withSchema ' );
343343 }
344344
345+ public function testCreateCollectionValidator ()
346+ {
347+ $ collections = [
348+ "validatorTest " ,
349+ "validator-test " ,
350+ "validator_test " ,
351+ "validator.test " ,
352+ ];
353+
354+ $ attributes = [
355+ new Document ([
356+ '$id ' => 'attribute1 ' ,
357+ 'type ' => Database::VAR_STRING ,
358+ 'size ' => 256 ,
359+ 'required ' => false ,
360+ 'signed ' => true ,
361+ 'array ' => false ,
362+ 'filters ' => [],
363+ ]),
364+ new Document ([
365+ '$id ' => 'attribute-2 ' ,
366+ 'type ' => Database::VAR_INTEGER ,
367+ 'size ' => 0 ,
368+ 'required ' => false ,
369+ 'signed ' => true ,
370+ 'array ' => false ,
371+ 'filters ' => [],
372+ ]),
373+ new Document ([
374+ '$id ' => 'attribute_3 ' ,
375+ 'type ' => Database::VAR_BOOLEAN ,
376+ 'size ' => 0 ,
377+ 'required ' => false ,
378+ 'signed ' => true ,
379+ 'array ' => false ,
380+ 'filters ' => [],
381+ ]),
382+ new Document ([
383+ '$id ' => 'attribute.4 ' ,
384+ 'type ' => Database::VAR_BOOLEAN ,
385+ 'size ' => 0 ,
386+ 'required ' => false ,
387+ 'signed ' => true ,
388+ 'array ' => false ,
389+ 'filters ' => [],
390+ ]),
391+ ];
392+
393+ $ indexes = [
394+ new Document ([
395+ '$id ' => 'index1 ' ,
396+ 'type ' => Database::INDEX_KEY ,
397+ 'attributes ' => ['attribute1 ' ],
398+ 'lengths ' => [256 ],
399+ 'orders ' => ['ASC ' ],
400+ ]),
401+ new Document ([
402+ '$id ' => 'index-2 ' ,
403+ 'type ' => Database::INDEX_KEY ,
404+ 'attributes ' => ['attribute-2 ' ],
405+ 'lengths ' => [],
406+ 'orders ' => ['ASC ' ],
407+ ]),
408+ new Document ([
409+ '$id ' => 'index_3 ' ,
410+ 'type ' => Database::INDEX_KEY ,
411+ 'attributes ' => ['attribute_3 ' ],
412+ 'lengths ' => [],
413+ 'orders ' => ['ASC ' ],
414+ ]),
415+ new Document ([
416+ '$id ' => 'index.4 ' ,
417+ 'type ' => Database::INDEX_KEY ,
418+ 'attributes ' => ['attribute.4 ' ],
419+ 'lengths ' => [],
420+ 'orders ' => ['ASC ' ],
421+ ]),
422+ ];
423+
424+ foreach ($ collections as $ id ) {
425+ $ collection = static ::getDatabase ()->createCollection ($ id , $ attributes , $ indexes );
426+
427+ $ this ->assertEquals (false , $ collection ->isEmpty ());
428+ $ this ->assertEquals ($ id , $ collection ->getId ());
429+
430+ $ this ->assertIsArray ($ collection ->getAttribute ('attributes ' ));
431+ $ this ->assertCount (4 , $ collection ->getAttribute ('attributes ' ));
432+ $ this ->assertEquals ('attribute1 ' , $ collection ->getAttribute ('attributes ' )[0 ]['$id ' ]);
433+ $ this ->assertEquals (Database::VAR_STRING , $ collection ->getAttribute ('attributes ' )[0 ]['type ' ]);
434+ $ this ->assertEquals ('attribute-2 ' , $ collection ->getAttribute ('attributes ' )[1 ]['$id ' ]);
435+ $ this ->assertEquals (Database::VAR_INTEGER , $ collection ->getAttribute ('attributes ' )[1 ]['type ' ]);
436+ $ this ->assertEquals ('attribute_3 ' , $ collection ->getAttribute ('attributes ' )[2 ]['$id ' ]);
437+ $ this ->assertEquals (Database::VAR_BOOLEAN , $ collection ->getAttribute ('attributes ' )[2 ]['type ' ]);
438+ $ this ->assertEquals ('attribute.4 ' , $ collection ->getAttribute ('attributes ' )[3 ]['$id ' ]);
439+ $ this ->assertEquals (Database::VAR_BOOLEAN , $ collection ->getAttribute ('attributes ' )[3 ]['type ' ]);
440+
441+ $ this ->assertIsArray ($ collection ->getAttribute ('indexes ' ));
442+ $ this ->assertCount (4 , $ collection ->getAttribute ('indexes ' ));
443+ $ this ->assertEquals ('index1 ' , $ collection ->getAttribute ('indexes ' )[0 ]['$id ' ]);
444+ $ this ->assertEquals (Database::INDEX_KEY , $ collection ->getAttribute ('indexes ' )[0 ]['type ' ]);
445+ $ this ->assertEquals ('index-2 ' , $ collection ->getAttribute ('indexes ' )[1 ]['$id ' ]);
446+ $ this ->assertEquals (Database::INDEX_KEY , $ collection ->getAttribute ('indexes ' )[1 ]['type ' ]);
447+ $ this ->assertEquals ('index_3 ' , $ collection ->getAttribute ('indexes ' )[2 ]['$id ' ]);
448+ $ this ->assertEquals (Database::INDEX_KEY , $ collection ->getAttribute ('indexes ' )[2 ]['type ' ]);
449+ $ this ->assertEquals ('index.4 ' , $ collection ->getAttribute ('indexes ' )[3 ]['$id ' ]);
450+ $ this ->assertEquals (Database::INDEX_KEY , $ collection ->getAttribute ('indexes ' )[3 ]['type ' ]);
451+
452+ static ::getDatabase ()->deleteCollection ($ id );
453+ }
454+ }
455+
345456 public function testCreateDocument ()
346457 {
347458 static ::getDatabase ()->createCollection ('documents ' );
0 commit comments