annotate test/common/mk-cases.lua @ 521:a2de1d0a73f3

- more test code generator code sharing/abstraction/simplifications
author Tassilo Philipp
date Wed, 13 Apr 2022 10:06:40 +0200
parents 99819b874bac
children f7fec6699e21
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
514
01f928eb9584 - more test code generator code sharing
Tassilo Philipp
parents: 512
diff changeset
1 function trim(s)
01f928eb9584 - more test code generator code sharing
Tassilo Philipp
parents: 512
diff changeset
2 return s:gsub("^%s+",""):gsub("%s+$","")
01f928eb9584 - more test code generator code sharing
Tassilo Philipp
parents: 512
diff changeset
3 end
01f928eb9584 - more test code generator code sharing
Tassilo Philipp
parents: 512
diff changeset
4
521
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
5
519
99819b874bac test/call_suite_aggrs:
Tassilo Philipp
parents: 514
diff changeset
6 -- parse array notation, e.g. returns "a", 4 for "a[4]"
99819b874bac test/call_suite_aggrs:
Tassilo Philipp
parents: 514
diff changeset
7 function split_array_decl(s)
99819b874bac test/call_suite_aggrs:
Tassilo Philipp
parents: 514
diff changeset
8 local name = s
99819b874bac test/call_suite_aggrs:
Tassilo Philipp
parents: 514
diff changeset
9 local n = nil -- not an array
99819b874bac test/call_suite_aggrs:
Tassilo Philipp
parents: 514
diff changeset
10 local i = s:find('%[')
99819b874bac test/call_suite_aggrs:
Tassilo Philipp
parents: 514
diff changeset
11 if i ~= nil then
99819b874bac test/call_suite_aggrs:
Tassilo Philipp
parents: 514
diff changeset
12 name = name:sub(1, i-1)
99819b874bac test/call_suite_aggrs:
Tassilo Philipp
parents: 514
diff changeset
13 n = tonumber(s:sub(i):match('[0123456789]+'))
99819b874bac test/call_suite_aggrs:
Tassilo Philipp
parents: 514
diff changeset
14 end
99819b874bac test/call_suite_aggrs:
Tassilo Philipp
parents: 514
diff changeset
15 return name, n
99819b874bac test/call_suite_aggrs:
Tassilo Philipp
parents: 514
diff changeset
16 end
99819b874bac test/call_suite_aggrs:
Tassilo Philipp
parents: 514
diff changeset
17
521
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
18
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
19 -- returns sig with return type first, and no ')' separator, e.g.:
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
20 -- 'ijf)v' -> 'vijf'
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
21 -- '){ii}' -> '{ii}'
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
22 function put_sig_rtype_first(sig)
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
23 return sig:sub(sig:find(')')+1,-1)..sig:sub(1,sig:find(')')-1)
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
24 end
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
25
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
26
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
27 -- aggrs: (sequential) idx => aggr-sig
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
28 -- seen_aggrs: aggr-sig => {{type0, name0, ...}, aggr_name}
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
29 -- packing: 0=off, pos values set fixed packing, neg values set a random
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
30 -- power-of-2 packing per aggregate, within [1,abs(aggrpacking)]
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
31 -- packing_seed: seed for random packing (if used)
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
32 function mkaggrdefs(aggrs, seen_aggrs, packing, packingseed)
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
33 local agg_defs = { }
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
34 local agg_sizes = { }
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
35 local agg_sigs = { }
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
36 local agg_names = { }
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
37
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
38 math.randomseed(packingseed)
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
39
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
40 for a = 1, #aggrs do
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
41 local k = aggrs[a]
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
42 local v = seen_aggrs[k]
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
43 local am = v[1] -- aggregate members
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
44 local at = v[2] -- aggregate type
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
45 local an = at:match('A.*') -- aggregate name (w/o struct or union)
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
46
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
47 -- aggregate def
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
48 aggr_def = '/* '..k..' */\n'
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
49 if packing ~= 0 then
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
50 local pack = packing
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
51 if pack < 0 then
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
52 pack = math.floor(math.pow(2,math.floor(math.log(math.random(math.abs(pack)),2))))
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
53 end
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
54 aggr_def = aggr_def..'#pragma pack(push,'..pack..')\n'
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
55 end
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
56
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
57 aggr_def = aggr_def..at..' { '
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
58 for i = 1, #am, 2 do
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
59 aggr_def = aggr_def..am[i]..' '..am[i+1]..'; '
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
60 end
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
61 aggr_def = aggr_def..'};\n'
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
62
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
63 if packing ~= 0 then
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
64 aggr_def = aggr_def..'#pragma pack(pop)\n'
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
65 end
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
66
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
67 -- aggregate cp and cmp funcs
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
68 s = {
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
69 'void f_cp'..an..'('..at..' *x, const '..at..' *y) { ',
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
70 'int f_cmp'..an..'(const '..at..' *x, const '..at..' *y) { return '
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
71 }
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
72 o = { '=', '==', 'f_cp', 'f_cmp', '; ', ' && ', '', '1' }
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
73 for t = 1, 2 do
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
74 if t ~= 1 or aggrcpsimple == false then
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
75 aggr_def = aggr_def..s[t]
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
76 local b = {}
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
77 for i = 1, #am, 2 do
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
78 local mn, mc = split_array_decl(am[i+1]) -- aggr member name and (array) count
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
79 local fmt = ''
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
80 if mc ~= nil then -- need array suffixes?
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
81 fmt = '[%d]'
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
82 else
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
83 mc = 1
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
84 end
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
85
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
86 for j = 1, mc do
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
87 name = mn..fmt:format(j-1)
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
88 amn = am[i]:match('A.*')
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
89 if amn then -- is aggr?
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
90 b[#b+1] = o[t+2]..amn..'(&x->'..name..', &y->'..name..')'
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
91 else
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
92 b[#b+1] = 'x->'..name..' '..o[t]..' y->'..name
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
93 end
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
94 end
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
95 end
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
96 if #b == 0 then -- to handle empty aggregates
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
97 b[1] = o[t+6]
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
98 end
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
99 aggr_def = aggr_def..table.concat(b,o[t+4])..'; };\n'
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
100 end
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
101 end
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
102
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
103 -- write convenient dcNewAggr() helper/wrapper funcs
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
104 aggr_def = aggr_def..'DCaggr* f_touch'..an..'() {\n\tstatic DCaggr* a = NULL;\n\tif(!a) {\n\t\ta = dcNewAggr('..(#am>>1)..', sizeof('..at..'));\n\t\t'
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
105 for i = 1, #am, 2 do
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
106 local mn, mc = split_array_decl(am[i+1])
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
107 if mc == nil then
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
108 mc = 1
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
109 end
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
110 amn = am[i]:match('A.*')
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
111 if amn then -- is aggr?
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
112 --aggr_def = aggr_def..'dcAggrField(at, DC_SIGCHAR_AGGREGATE, offsetof('..at..', '..mn..'), '..mc..', f_touch'..amn..'());\n\t\t'
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
113 aggr_def = aggr_def.."AFa("..at..','..mn..','..mc..','..amn..')\n\t\t'
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
114 else
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
115 --aggr_def = aggr_def.."dcAggrField(at, '"..am[i].."', offsetof("..at..', '..mn..'), '..mc..');\n\t\t'
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
116 aggr_def = aggr_def.."AF('"..am[i].."',"..at..','..mn..','..mc..')\n\t\t'
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
117 end
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
118 end
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
119
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
120 agg_defs [#agg_defs + 1] = aggr_def..'dcCloseAggr(a);\n\t}\n\treturn a;\n};'
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
121 agg_sizes[#agg_sizes + 1] = 'sizeof('..at..')'
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
122 agg_sigs [#agg_sigs + 1] = k
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
123 agg_names[#agg_names + 1] = an
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
124 end
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
125
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
126 return agg_defs, agg_sizes, agg_sigs, agg_names
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
127 end
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
128
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
129
512
4d0541bf9b38 - sharing some test case gen code
Tassilo Philipp
parents:
diff changeset
130 function mkfuntab(n, prefix, t, array_name, with_cast)
4d0541bf9b38 - sharing some test case gen code
Tassilo Philipp
parents:
diff changeset
131 local s = { t.." "..array_name.."[] = {\n"}
4d0541bf9b38 - sharing some test case gen code
Tassilo Philipp
parents:
diff changeset
132 local cast = ''
4d0541bf9b38 - sharing some test case gen code
Tassilo Philipp
parents:
diff changeset
133 if with_cast == true then
4d0541bf9b38 - sharing some test case gen code
Tassilo Philipp
parents:
diff changeset
134 cast = '('..t..')'
4d0541bf9b38 - sharing some test case gen code
Tassilo Philipp
parents:
diff changeset
135 end
4d0541bf9b38 - sharing some test case gen code
Tassilo Philipp
parents:
diff changeset
136 for i = 0, n-1 do
4d0541bf9b38 - sharing some test case gen code
Tassilo Philipp
parents:
diff changeset
137 s[#s+1] = "\t"..cast.."&"..prefix..i..",\n"
4d0541bf9b38 - sharing some test case gen code
Tassilo Philipp
parents:
diff changeset
138 end
4d0541bf9b38 - sharing some test case gen code
Tassilo Philipp
parents:
diff changeset
139 s[#s+1] = "};\n"
4d0541bf9b38 - sharing some test case gen code
Tassilo Philipp
parents:
diff changeset
140 return table.concat(s,"")
4d0541bf9b38 - sharing some test case gen code
Tassilo Philipp
parents:
diff changeset
141 end
4d0541bf9b38 - sharing some test case gen code
Tassilo Philipp
parents:
diff changeset
142
521
a2de1d0a73f3 - more test code generator code sharing/abstraction/simplifications
Tassilo Philipp
parents: 519
diff changeset
143
512
4d0541bf9b38 - sharing some test case gen code
Tassilo Philipp
parents:
diff changeset
144 -- @@@ sigprefix should be added by generators, not here
4d0541bf9b38 - sharing some test case gen code
Tassilo Philipp
parents:
diff changeset
145 function mksigtab(sigs, sigprefix, array_name)
4d0541bf9b38 - sharing some test case gen code
Tassilo Philipp
parents:
diff changeset
146 local s = { "const char * "..array_name.."[] = {\n"}
4d0541bf9b38 - sharing some test case gen code
Tassilo Philipp
parents:
diff changeset
147 for k,v in pairs(sigs) do
4d0541bf9b38 - sharing some test case gen code
Tassilo Philipp
parents:
diff changeset
148 s[#s+1] = '\t"'..sigprefix..v..'",\n'
4d0541bf9b38 - sharing some test case gen code
Tassilo Philipp
parents:
diff changeset
149 end
4d0541bf9b38 - sharing some test case gen code
Tassilo Philipp
parents:
diff changeset
150 s[#s+1] = "};\n"
4d0541bf9b38 - sharing some test case gen code
Tassilo Philipp
parents:
diff changeset
151 return table.concat(s,"")
4d0541bf9b38 - sharing some test case gen code
Tassilo Philipp
parents:
diff changeset
152 end
4d0541bf9b38 - sharing some test case gen code
Tassilo Philipp
parents:
diff changeset
153