annotate test/call_suite/mk-cases.lua @ 506:ed7d1f5e7973

- test cases: cosmetics for consistency
author Tassilo Philipp
date Sat, 09 Apr 2022 13:57:27 +0200
parents f263eb7a206e
children a0c51f34023a
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
1 require"math"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
2 local max = math.max
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
3 local maxargs = 0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
4
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
5 function trim(l) return l:gsub("^%s+",""):gsub("%s+$","") end
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
6 function mkcase(id,sig)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
7 local sig = trim(sig)
496
da5232da6270 - test code: rand-sig now spitting out dyncallish sigs (with ')' end delim and rettype at end), purely for consistency
Tassilo Philipp
parents: 430
diff changeset
8 local h = { "/* ",id,":",sig," */ ",sig:sub(-1), " f", id,"(","" }
430
8e22b70d3ee4 - simplified test/call_suite further
Tassilo Philipp
parents: 0
diff changeset
9 local t = { "" }
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
10 local pos = 0
496
da5232da6270 - test code: rand-sig now spitting out dyncallish sigs (with ')' end delim and rettype at end), purely for consistency
Tassilo Philipp
parents: 430
diff changeset
11 maxargs = max(maxargs, #sig-2)
da5232da6270 - test code: rand-sig now spitting out dyncallish sigs (with ')' end delim and rettype at end), purely for consistency
Tassilo Philipp
parents: 430
diff changeset
12 for i = 1, #sig-2 do
da5232da6270 - test code: rand-sig now spitting out dyncallish sigs (with ')' end delim and rettype at end), purely for consistency
Tassilo Philipp
parents: 430
diff changeset
13 pos = tostring(i)
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
14 local name = "a"..pos
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
15 local ch = sig:sub(i,i)
430
8e22b70d3ee4 - simplified test/call_suite further
Tassilo Philipp
parents: 0
diff changeset
16 h[#h+1] = ch.." "..name
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
17 h[#h+1] = ","
430
8e22b70d3ee4 - simplified test/call_suite further
Tassilo Philipp
parents: 0
diff changeset
18 t[#t+1] = "V_"..ch.."["..pos.."]="..name..";"
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
19 end
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
20 h[#h] = "){"
496
da5232da6270 - test code: rand-sig now spitting out dyncallish sigs (with ')' end delim and rettype at end), purely for consistency
Tassilo Philipp
parents: 430
diff changeset
21 t[#t+1] = "ret_"..sig:sub(-1).."("..pos..")}\n"
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
22 return table.concat(h,"")..table.concat(t,"")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
23 end
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
24
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
25 function mkfuntab(n)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
26 local s = { "funptr G_funtab[] = {\n"}
430
8e22b70d3ee4 - simplified test/call_suite further
Tassilo Philipp
parents: 0
diff changeset
27 for i = 0, n-1 do
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
28 s[#s+1] = "\t(funptr)&f"..i..",\n"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
29 end
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
30 s[#s+1] = "};\n"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
31 return table.concat(s,"")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
32 end
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
33
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
34 function mksigtab(sigs)
506
ed7d1f5e7973 - test cases: cosmetics for consistency
Tassilo Philipp
parents: 504
diff changeset
35 local s = { "const char * G_sigtab[] = {\n"}
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
36 for k,v in pairs(sigs) do
504
f263eb7a206e - call_suite: made output more consistent with dyncall sig style
Tassilo Philipp
parents: 496
diff changeset
37 s[#s+1] = '\t"'..v..'",\n'
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
38 end
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
39 s[#s+1] = "};\n"
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
40 return table.concat(s,"")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
41 end
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
42
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
43 function mkall()
430
8e22b70d3ee4 - simplified test/call_suite further
Tassilo Philipp
parents: 0
diff changeset
44 local lineno = 0
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
45 local sigtab = { }
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
46 for line in io.lines() do
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
47 local sig = trim(line)
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
48 io.write(mkcase(lineno,sig))
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
49 sigtab[#sigtab+1] = sig
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
50 lineno = lineno + 1
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
51 end
430
8e22b70d3ee4 - simplified test/call_suite further
Tassilo Philipp
parents: 0
diff changeset
52 io.write(mkfuntab(lineno))
0
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
53 io.write(mksigtab(sigtab))
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
54 io.write("int G_maxargs = "..maxargs..";\n")
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
55 end
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
56
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
57 mkall()
3e629dc19168 initial from svn dyncall-1745
Daniel Adler
parents:
diff changeset
58