Skip to content

Commit

Permalink
Complete ArgumentList tests
Browse files Browse the repository at this point in the history
  • Loading branch information
g105b committed Nov 22, 2018
1 parent 18725c7 commit 5d71180
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 8 deletions.
9 changes: 8 additions & 1 deletion src/Argument/ShortOptionArgument.php
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,13 @@

class ShortOptionArgument extends Argument {
protected function processRawKey(string $rawKey):string {
return substr($rawKey, 1);
$key = substr($rawKey, 1);
$equalsPos = strpos($key, "=");

if($equalsPos !== false) {
$key = substr($key, 0, $equalsPos);
}

return $key;
}
}
74 changes: 67 additions & 7 deletions test/unit/ArgumentListTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -191,7 +191,7 @@ public function testNotContains(string...$args) {
}
}

/** @dataProvider data_randomEqualsArgs */
/** @dataProvider data_randomLongEqualsArgs */
public function testKeyValueSetWithLongOptionEqualsSign(string...$args) {
$argumentList = new ArgumentList(
array_shift($args),
Expand Down Expand Up @@ -236,13 +236,73 @@ public function testKeyValueSetWithShortOptionEqualsSign(string...$args) {
$param->method("getShortOption")
->willReturn($key);

$paramValue = $argumentList->getValueForParameter($param);

if($paramValue != $value) {

var_dump($args);die();
}

self::assertEquals(
$value,
$argumentList->getValueForParameter($param)
$paramValue
);
}
}

/** @dataProvider data_randomShortEqualsArgs */
public function testGetValueForParameterNotExists(string...$args) {
$argumentList = new ArgumentList(
array_shift($args),
...$args
);

foreach($args as $i => $arg) {
if($i === 0) {
continue;
}

$arg = substr($arg, 1);
list($key, $value) = explode("=", $arg);

$param = self::createMock(Parameter::class);
$param->method("getShortOption")
->willReturn("Z");

self::assertNull($argumentList->getValueForParameter($param));
}
}

/** @dataProvider data_randomLongArgs */
public function testGetValueForParameterWithLongOption(string...$args) {
$argumentList = new ArgumentList(
array_Shift($args),
...$args
);

$param = self::createMock(Parameter::class);
$param->method("getLongOption")
->willReturn(substr($args[1], 2));
$value = $argumentList->getValueForParameter($param);

self::assertEquals($args[2], $value);
}

/** @dataProvider data_randomShortArgs */
public function testGetValueParameterWithShortOption(string...$args) {
$argumentList = new ArgumentList(
array_shift($args),
...$args
);

$param = self::createMock(Parameter::class);
$param->method("getShortOption")
->willReturn(substr($args[1], 1));
$value = $argumentList->getValueForParameter($param);

self::assertEquals($args[2], $value);
}

public function data_randomNamedArgs():array {
$dataSet = [];

Expand Down Expand Up @@ -313,7 +373,7 @@ public function data_randomShortArgs():array {
return $dataSet;
}

public function data_randomEqualsArgs():array {
public function data_randomLongEqualsArgs():array {
$dataSet = [];

for($i = 0; $i < 10; $i++) {
Expand All @@ -337,18 +397,18 @@ public function data_randomShortEqualsArgs():array {
$dataSet = [];

for($i = 0; $i < 10; $i++) {
$charArray = ["a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"];
$params = [];

$params []= uniqid("script-");
$params []= uniqid("command-");

$numParams = rand(1, 10);
for($j = 0; $j < $numParams; $j++) {
$char = array_shift($charArray);

$params []= "-"
. substr(
md5(microtime()),
rand(0,26),
1)
. $char
. "="
. uniqid();
}
Expand Down

0 comments on commit 5d71180

Please sign in to comment.