diff --git a/spec/fuzzgen.lua b/spec/fuzzgen.lua new file mode 100644 index 0000000..69f079b --- /dev/null +++ b/spec/fuzzgen.lua @@ -0,0 +1,44 @@ +local rng = {} +function rng.markup() return math.random() > 0.5 and "plain" or "imageboard" end +function rng.generate_str(length,characters) + return function() + local t = {} + local rnglength = math.random(2,length) + for i = 1,rnglength do + local rngpos = math.random(#characters) + local rngchar = string.sub(characters,rngpos,rngpos) + table.insert(t,rngchar) + end + local ret = table.concat(t) + return ret + end +end +function rng.characters(mask) + local t = {} + for i = 1,255 do + if string.match(string.char(i), mask) then + table.insert(t,string.char(i)) + end + end + return table.concat(t) +end +function rng.maybe(input,chance) + chance = chance or 0.5 + if math.random() < chance then + return input + end +end +rng.any = rng.generate_str(1024,rng.characters(".")) +rng.subdomain = rng.generate_str(30,rng.characters("[0-9a-z]")) +rng.storyname = rng.generate_str(10,"[a-zA-Z0-9$+!*'(),-]") +rng.storyid = function() return tostring(math.random(1,10)) end +rng.tags = function() + local tag_gen = rng.generate_str(10,"[%w%d ]") + local t = {} + for i = 1,10 do + table.insert(t,tag_gen()) + end + return table.concat(t,";") +end + +return rng