def test_param_defs_cmdline(): pd = ParameterDefinitions((p1, p2)) # there's a required parameter, and here we don't pass it assert_raises(CallerError, pd.make_cmdline, ('cmd',)) # now we do assert_equal(pd.make_cmdline(('cmd',), ('a1',)), ('cmd', 'a1')) assert_equal(pd.make_cmdline(('cmd',), ('a1','a2')), ('cmd', 'a1', 'a2')) # with some options pd = ParameterDefinitions((p1, p2),(o1, o2, f1)) assert_equal(pd.make_cmdline(('cmd',), ('a1',)), ('cmd', 'a1')) assert_equal(pd.make_cmdline(('cmd',), ('a1','a2')), ('cmd', 'a1', 'a2')) assert_equal( pd.make_cmdline(('cmd',), ('arg1',), {'o1':'3'}), ('cmd', '--option1=3', 'arg1')) assert_equal( pd.make_cmdline(('cmd',), ('arg1',), {'o2': True}), ('cmd', '--option2=True', 'arg1')) assert_equal( pd.make_cmdline(('cmd',), ('arg1',), {'o3': True}), ('cmd', '--option3', 'arg1'))
def test_param_defs_chkvals(): pd = ParameterDefinitions((p1, p2), (o1, o2)) pvals, ovals = pd.checked_values(('1','2')) assert_equal(pvals, ('1', '2')) assert_equal(ovals, {}) pvals, ovals = pd.checked_values(('1','2'),{'option1':'Yo'}) assert_equal(pvals, ('1', '2')) assert_equal(ovals, {'option1':'Yo'}) # aliases in options recognized, and names made canonical pvals, ovals = pd.checked_values((),{'o1':'Yo'}) assert_equal(pvals, ()) assert_equal(ovals, {'option1':'Yo'}) # we check the keys in the mapping for unexpectedness assert_raises(CallerError, pd.checked_values, (),{'crazy':'Yo'}) # named parameters shift into positionals after checking pvals, ovals = pd.checked_values(('1',),{'param2':'Yo'}) assert_equal(pvals, ('1', 'Yo')) assert_equal(ovals, {}) # the named parameter overwrites corresponding positional parameter pvals, ovals = pd.checked_values(('1',),{'param1':'Yo'}) assert_equal(pvals, ('Yo',)) assert_equal(ovals, {}) # if the named positional parameter is more than one off the end of # the unnamed positional parameters, there's an error assert_raises(CallerError, pd.checked_values, (), {'param2':'Yo'}) assert_equal(pvals, ('Yo',)) assert_equal(ovals, {}) # but we'll append happily to the end of the list pvals, ovals = pd.checked_values((),{'param1':'Yo'}) assert_equal(pvals, ('Yo',)) assert_equal(ovals, {}) # too many positionals will cause trouble assert_raises(CallerError, pd.checked_values, ('1','2','3')) # but not if we turn on last_repeat pd = ParameterDefinitions((p1, p2), (o1, o2), pos_last_repeat=True) pvals, ovals = pd.checked_values(('1','2','3')) assert_equal(pvals, ('1', '2', '3')) assert_equal(ovals, {})