<?php
/**
* Test methods for the P4 Validate SpecName class.
*
* @copyright 2011 Perforce Software. All rights reserved.
* @license Please see LICENSE.txt in top-level folder of this distribution.
* @version <release>/<patch>
*/
class P4_Validate_PortTest extends TestCase
{
/**
* Test instantiation.
*/
public function testInstantiation()
{
$validator = new P4_Validate_Port;
$this->assertTrue($validator instanceof P4_Validate_Port, 'Expected class');
}
/**
* Test isValid.
*/
public function testIsValid()
{
$invalidPortError = 'does not appear to contain a valid numeric port.';
$invalidHostError = 'appears to have a invalid hostname component.';
$tests = array(
array(
'label' => __LINE__ .': null',
'value' => null,
'valid' => false,
'error' => array(
'invalidPort' => "'' $invalidPortError",
),
),
array(
'label' => __LINE__ .': empty',
'value' => '',
'valid' => false,
'error' => array(
'invalidPort' => "'' $invalidPortError",
),
),
array(
'label' => __LINE__ .': numeric',
'value' => 123,
'valid' => true,
'error' => array(),
),
array(
'label' => __LINE__ .': number',
'value' => '123',
'valid' => true,
'error' => array(),
),
array(
'label' => __LINE__ .': ssl with host/port',
'value' => 'ssl:perforce:1666',
'valid' => true,
'error' => array(),
),
array(
'label' => __LINE__ .': ssl with port',
'value' => 'ssl:1666',
'valid' => true,
'error' => array(),
),
array(
'label' => __LINE__ .': alpha',
'value' => 'abc',
'valid' => false,
'error' => array(
'invalidPort' => "'abc' $invalidPortError",
),
),
array(
'label' => __LINE__ .': alphanumeric',
'value' => 'abc123',
'valid' => false,
'error' => array(
'invalidPort' => "'abc123' $invalidPortError",
),
),
array(
'label' => __LINE__ .': numericalpha',
'value' => '123abc',
'valid' => false,
'error' => array(
'invalidPort' => "'123abc' $invalidPortError",
),
),
array(
'label' => __LINE__ .': empty host, good port',
'value' => ':123',
'valid' => false,
'error' => array(
'invalidHost' => "':123' $invalidHostError"
),
),
array(
'label' => __LINE__ .': localhost, bad port',
'value' => 'localhost:abc',
'valid' => false,
'error' => array(
'invalidPort' => "'localhost:abc' $invalidPortError",
),
),
);
foreach ($tests as $test) {
$label = $test['label'];
$validator = new P4_Validate_Port;
$this->assertSame(
$test['valid'],
$validator->isValid($test['value']),
"$label - Expected validation result."
);
$this->assertSame(
$test['error'],
$validator->getMessages(),
"$label - Expected error message(s)"
);
}
}
}