diff options
author | Ronan Collobert <ronan@collobert.com> | 2015-03-07 04:36:32 +0300 |
---|---|---|
committer | Ronan Collobert <ronan@collobert.com> | 2015-03-07 04:37:31 +0300 |
commit | 2084481d9bedc48e8ac91825a3ccf2bf0bbf4806 (patch) | |
tree | 045295c54e423b6ab8feb580acc9780b5c1b7ccd | |
parent | 2ad2b6cb121f791f6aca84cd3037991c4689f1be (diff) |
variable with default can be nil (and returns the default) + test case added
-rw-r--r-- | graph.lua | 3 | ||||
-rw-r--r-- | init.lua | 4 | ||||
-rw-r--r-- | test/test.lua | 2 |
3 files changed, 7 insertions, 2 deletions
@@ -60,6 +60,9 @@ local function rules2defaultrules(rules, rulesmask, rulestype) elseif rulemask == '2' then table.insert(defaultrules, rule) elseif rulemask == '3' then + if rule.default or rule.defaulta or rule.defaultf then + table.insert(defaultrules, rule) + end end end return defaultrules @@ -23,7 +23,7 @@ local function generaterules(rules) local optperrule = {} for ridx, rule in ipairs(rules) do if rule.default ~= nil or rule.defaulta or rule.defaultf then - optperrule[ridx] = 2 -- here or not here + optperrule[ridx] = 3 -- here, nil or not here elseif rule.opt then optperrule[ridx] = 3 -- here, nil or not here else @@ -42,7 +42,7 @@ local function generaterules(rules) -- hence, the mask. for variant=nvariant,1,-1 do local r = variant - local rulemask = {} -- 1/2/3 means present/not present/opt + local rulemask = {} -- 1/2/3 means present [ordered]/not present [ordered]/ nil [named or ordered] for ridx=1,#rules do table.insert(rulemask, math.floor((r-1)/optperrulestride[ridx]) + 1) r = (r-1) % optperrulestride[ridx] + 1 diff --git a/test/test.lua b/test/test.lua index 385b374..17478be 100644 --- a/test/test.lua +++ b/test/test.lua @@ -272,8 +272,10 @@ foobar.addfive = argcheck{ assert(foobar:addfive() == '5.000000 + 5 = 10.000000 [msg = wassup] [self.checksum=1234567]') assert(foobar:addfive('paf') == '5.000000 + 5 = 10.000000 [msg = paf] [self.checksum=1234567]') +assert(foobar:addfive(nil, 'paf') == '5.000000 + 5 = 10.000000 [msg = paf] [self.checksum=1234567]') assert(foobar:addfive(6, 'paf') == '6.000000 + 5 = 11.000000 [msg = paf] [self.checksum=1234567]') assert(foobar:addfive(6) == '6.000000 + 5 = 11.000000 [msg = wassup] [self.checksum=1234567]') +assert(foobar:addfive(6, nil) == '6.000000 + 5 = 11.000000 [msg = wassup] [self.checksum=1234567]') assert(foobar:addfive{} == '5.000000 + 5 = 10.000000 [msg = wassup] [self.checksum=1234567]') assert(foobar:addfive{msg='paf'} == '5.000000 + 5 = 10.000000 [msg = paf] [self.checksum=1234567]') |