}); context("with defaults arguments", function () { it("allows boolean casting", function () { $args = new Args(['argument1' => ['type' => 'boolean', 'default' => true], 'argument2' => ['type' => 'boolean', 'default' => false], 'argument3' => ['type' => 'boolean', 'default' => true], 'argument4' => ['type' => 'boolean', 'default' => false]]); $actual = $args->parse(['command', '--argument1', '--argument2']); expect($actual)->toEqual(['argument1' => true, 'argument2' => true, 'argument3' => true, 'argument4' => false]); }); }); context("with override set to `false`", function () { it("doesn't override existing arguments when the override params is set to `false`", function () { $args = new Args(); $args->set('argument1', 'value1'); $actual = $args->parse(['--argument1=valueX']); expect($actual)->toBe(['argument1' => 'valueX']); $args = new Args(); $args->set('argument1', 'value1'); $actual = $args->parse(['--argument1=valueX'], false); expect($actual)->toBe(['argument1' => 'value1']); }); }); }); describe("->get()", function () { it("ignores argument value if the value option is set", function () { $args = new Args(['argument1' => ['type' => 'string', 'value' => 'config_value']]); $actual = $args->parse(['command']); expect($args->get('argument1'))->toEqual('config_value'); $actual = $args->parse(['command', '--argument1']); expect($args->get('argument1'))->toEqual('config_value'); $actual = $args->parse(['command', '--argument1="some_value"']); expect($args->get('argument1'))->toEqual('config_value'); });