diff --git a/tests/ncc/Utilities/ValidateTest.php b/tests/ncc/Utilities/ValidateTest.php new file mode 100644 index 0000000..4bc5de7 --- /dev/null +++ b/tests/ncc/Utilities/ValidateTest.php @@ -0,0 +1,136 @@ +assertTrue(Validate::version('1.2.0')); + $this->assertTrue(Validate::version('0.1.0-beta')); + $this->assertTrue(Validate::version('1.0.0-alpha.1')); + $this->assertTrue(Validate::version('1.2')); + + // Composer Version Format + $this->assertTrue(Validate::version('1.2.0-beta1')); + $this->assertTrue(Validate::version('2.0.0-RC2')); + $this->assertTrue(Validate::version('2.0')); + + // Python Version Format + $this->assertTrue(Validate::version('2.7.14')); + $this->assertTrue(Validate::version('3.6.3')); + $this->assertTrue(Validate::version('2.7')); + + // Invalid Versions + $this->assertFalse(Validate::version('bob')); + $this->assertFalse(Validate::version('a.b.c')); + $this->assertFalse(Validate::version('foo.bar')); + } + + /** + * This test validates the package name with the packageName method from + * the Validate class. + * The method checks the input against a set of regular expressions + * for package name format. + */ + public function testPackageName() + { + // Valid package names + $this->assertTrue(Validate::packageName('com.user.project')); + $this->assertTrue(Validate::packageName('org.opensource.projectname')); + $this->assertTrue(Validate::packageName('net.domainname.product')); + + // Invalid package names + $this->assertFalse(Validate::packageName('com')); + $this->assertFalse(Validate::packageName('com..user')); + $this->assertFalse(Validate::packageName('.user.project')); + } + + /** + * This test validates the constant name with the constantName method from + * the Validate class. + * The method checks the input against a set of regular expressions + * for constant name format. + */ + public function testConstantName() + { + // Valid constant names + $this->assertTrue(Validate::constantName('CONSTANT_NAME')); + $this->assertTrue(Validate::constantName('Another_Constant456')); + $this->assertTrue(Validate::constantName('THIRD_CONSTANT')); + + // Invalid constant names + $this->assertFalse(Validate::constantName('Invalid Constant Name')); + $this->assertFalse(Validate::constantName('Another-Invalid-Name')); + } + + /** + * This test validates the path name with the pathName method from + * the Validate class. + * The method checks the input against a set of regular expressions + * for path name format. + */ + public function testNameFriendly() + { + // Valid name friendly formats + $this->assertTrue(Validate::nameFriendly('ValidName')); + $this->assertTrue(Validate::nameFriendly('Another_Valid_Name123')); + $this->assertTrue(Validate::nameFriendly('A_VALID_NAME')); + $this->assertTrue(Validate::nameFriendly('_StartingWithUnderscoreName')); + + // Invalid name friendly formats + $this->assertFalse(Validate::nameFriendly('Invalid Name')); + $this->assertFalse(Validate::nameFriendly('Another-Invalid-Name')); + $this->assertFalse(Validate::nameFriendly('123InvalidStartingWithNumber')); + $this->assertFalse(Validate::nameFriendly('')); + } + + /** + * This test validates the path name with the pathName method from + * the Validate class. + * The method checks the input against a set of regular expressions + * for path name format. + */ + public function testPathName() + { + // Valid path names + $this->assertTrue(Validate::pathName('/path/to/some/file')); + $this->assertTrue(Validate::pathName('another/valid/path')); + $this->assertTrue(Validate::pathName('valid_path-name')); + + // Invalid path names + $this->assertFalse(Validate::pathName('invalid path name')); + $this->assertFalse(Validate::pathName('invalid/path\name')); + $this->assertFalse(Validate::pathName('invalid:path:name')); + $this->assertFalse(Validate::pathName('')); + } +}