changeset 517:f8856e29b512

- tests: made "ordered" signature generation code shareable, and added possibility to specify return types, separately (mainly to include 'void')
author Tassilo Philipp
date Mon, 11 Apr 2022 14:50:35 +0200
parents 1a813b706de4
children a0ff5dff090b
files test/callback_suite/make-signatures.lua test/common/ordered-sig.lua
diffstat 2 files changed, 41 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/test/callback_suite/make-signatures.lua	Sun Apr 10 22:03:16 2022 +0200
+++ b/test/callback_suite/make-signatures.lua	Mon Apr 11 14:50:35 2022 +0200
@@ -9,26 +9,9 @@
 end
 
 
-function orderedSignature(x)
-  local signature = ""
-  local typeindex
-  local nargtypes = #types
-  while x >= nargtypes do
-    typeindex = 1 + (x % nargtypes)
-    signature = signature .. string.sub(types, typeindex, typeindex)
-    x = math.floor( x / nargtypes )
-  end
-  typeindex = 1 + x
-  signature = signature .. ")" .. string.sub(types, typeindex, typeindex)
-  return signature
-end
-
-
 function orderedSignatures()
-  local i 
-  for i = 0, ncases-1 do
-    io.write( orderedSignature(offset+i*step) .. "\n" )
-  end
+  package.path = '../common/?.lua;' .. package.path
+  require"ordered-sig"
 end
 
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/test/common/ordered-sig.lua	Mon Apr 11 14:50:35 2022 +0200
@@ -0,0 +1,39 @@
+-- !does not generates sigs with aggregates!
+
+-- following knobs control generation:
+
+-- required to be defined by who is using this:
+-- ncases
+-- types
+
+-- optional:
+-- rtypes (if not set, it'll be 'v'..types)
+
+
+--------------------------------
+
+if rtypes == nil then
+  rtypes = "v"..types
+end
+
+local i
+for i = 0, ncases-1 do
+  local s = ""
+  local typeindex
+  local ntypes = #types
+  local nrtypes = #rtypes
+  local x = offset+i*step
+  if x >= nrtypes then
+    local y =  math.floor(x / nrtypes) - 1
+    while y >= ntypes do
+      typeindex = 1 + (y % ntypes)
+      s = s .. string.sub(types, typeindex, typeindex)
+      y = math.floor(y / ntypes) - 1
+    end
+    typeindex = 1 + (y % ntypes)
+    s = s .. string.sub(types, typeindex, typeindex)
+  end
+  typeindex = 1 + (x % nrtypes)
+  io.write(s .. ")" .. string.sub(rtypes, typeindex, typeindex) .. "\n")
+end
+