summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/array.lua15
-rw-r--r--test/dump37
-rw-r--r--test/loop.lua6
-rw-r--r--test/save.lua46
-rw-r--r--test/sort.lua54
-rw-r--r--test/sort/q.lua51
-rw-r--r--test/sort/sort.lua51
-rw-r--r--test/split.lua18
-rw-r--r--test/teste.lua22
-rw-r--r--test/type.lua37
10 files changed, 337 insertions, 0 deletions
diff --git a/test/array.lua b/test/array.lua
new file mode 100644
index 00000000..349fb818
--- /dev/null
+++ b/test/array.lua
@@ -0,0 +1,15 @@
+$debug
+
+a = @()
+
+i=0
+while i<10 do
+ a[i] = i*i
+ i=i+1
+end
+
+r,v = next(a,nil)
+while r ~= nil do
+ print ("array["..r.."] = "..v)
+ r,v = next(a,r)
+end
diff --git a/test/dump b/test/dump
new file mode 100644
index 00000000..d5feb2b4
--- /dev/null
+++ b/test/dump
@@ -0,0 +1,37 @@
+
+
+function savevar (n,v)
+ if v = nil then return end;
+ if type(v) = "number" then print(n.."="..v) return end
+ if type(v) = "string" then print(n.."='"..v.."'") return end
+ if type(v) = "table" then
+ if v.__visited__ ~= nil then
+ print(n .. "=" .. v.__visited__);
+ else
+ print(n.."=@()")
+ v.__visited__ = n;
+ local r,f;
+ r,f = next(v,nil);
+ while r ~= nil do
+ if r ~= "__visited__" then
+ if type(r) = 'string' then
+ savevar(n.."."..r,f)
+ else
+ savevar(n.."["..r.."]",f)
+ end
+ end
+ r,f = next(v,r)
+ end
+ end
+ end
+end
+
+function save ()
+ local n,v = nextvar(nil)
+ while n ~= nil do
+ savevar(n,v);
+ n,v = nextvar(n)
+ end
+end
+
+save()
diff --git a/test/loop.lua b/test/loop.lua
new file mode 100644
index 00000000..b464d09e
--- /dev/null
+++ b/test/loop.lua
@@ -0,0 +1,6 @@
+$debug
+i=0
+repeat
+ print(i)
+ i=i+1
+until i>10
diff --git a/test/save.lua b/test/save.lua
new file mode 100644
index 00000000..3eb91086
--- /dev/null
+++ b/test/save.lua
@@ -0,0 +1,46 @@
+
+
+function savevar (n,v)
+ if v = nil then return end;
+ if type(v) = "number" then print(n.."="..v) return end
+ if type(v) = "string" then print(n.."='"..v.."'") return end
+ if type(v) = "table" then
+ if v.__visited__ ~= nil then
+ print(n .. "=" .. v.__visited__);
+ else
+ print(n.."=@()")
+ v.__visited__ = n;
+ local r,f;
+ r,f = next(v,nil);
+ while r ~= nil do
+ if r ~= "__visited__" then
+ if type(r) = 'string' then
+ savevar(n.."['"..r.."']",f)
+ else
+ savevar(n.."["..r.."]",f)
+ end
+ end
+ r,f = next(v,r)
+ end
+ end
+ end
+end
+
+function save ()
+local n,v
+ n,v = nextvar(nil)
+ while n ~= nil do
+ savevar(n,v);
+ n,v = nextvar(n)
+ end
+end
+
+a = 3
+x = @{a = 4, b = "name", l=@[4,5,67]}
+
+b = @{t=5}
+x.next = b
+
+
+save()
+
diff --git a/test/sort.lua b/test/sort.lua
new file mode 100644
index 00000000..6d0d9a0d
--- /dev/null
+++ b/test/sort.lua
@@ -0,0 +1,54 @@
+$debug
+
+function quicksort(r,s)
+ if s<=r then return end -- caso basico da recursao
+ local v, i, j = x[r], r, s+1
+ i=i+1; while x[i]<v do i=i+1 end
+ j=j-1; while x[j]>v do j=j-1 end
+ x[i],x[j]=x[j],x[i]
+ while j>i do -- separacao
+ i=i+1; while x[i]<v do i=i+1 end
+ j=j-1; while x[j]>v do j=j-1 end
+ x[i],x[j]=x[j],x[i]
+ end
+ x[i],x[j]=x[j],x[i] -- undo last swap
+ x[j],x[r]=x[r],x[j]
+ quicksort(r,j-1) -- recursao
+ quicksort(j+1,s)
+end
+
+function sort(a,n) -- selection sort
+ local i=1
+ while i<=n do
+ local m, j = i, i+1
+ while j<=n do
+ if a[j]<a[m] then m=j end
+ j=j+1
+ end
+ a[i],a[m]=a[m],a[i] -- swap a[i] and a[m]
+ i=i+1
+ end
+end
+
+function main()
+ x=@()
+ n=-1
+ n=n+1; x[n]="a"
+ n=n+1; x[n]="waldemar"
+ n=n+1; x[n]="luiz"
+ n=n+1; x[n]="lula"
+ n=n+1; x[n]="peter"
+ n=n+1; x[n]="raquel"
+ n=n+1; x[n]="camilo"
+ n=n+1; x[n]="andre"
+ n=n+1; x[n]="marcelo"
+ n=n+1; x[n]="sedrez"
+ n=n+1; x[n]="z"
+ print(x[0]..","..x[1]..","..x[2]..","..x[3]..","..x[4]..","..x[5]..","..x[6]..","..x[7]..","..x[8]..","..x[9]..","..x[10])
+ quicksort(1,n-1)
+ print(x[0]..","..x[1]..","..x[2]..","..x[3]..","..x[4]..","..x[5]..","..x[6]..","..x[7]..","..x[8]..","..x[9]..","..x[10])
+ sort (x, n-1)
+ print(x[0]..","..x[1]..","..x[2]..","..x[3]..","..x[4]..","..x[5]..","..x[6]..","..x[7]..","..x[8]..","..x[9]..","..x[10])
+end
+
+main()
diff --git a/test/sort/q.lua b/test/sort/q.lua
new file mode 100644
index 00000000..8d9a20d4
--- /dev/null
+++ b/test/sort/q.lua
@@ -0,0 +1,51 @@
+function quicksort(r,s)
+ if s<=r then return end -- caso basico da recursao
+ local v=x[r]
+ local i=r
+ local j=s+1
+ repeat
+ repeat i=i+1 until x[i]>=v
+ repeat j=j-1 until x[j]<=v
+ x[i],x[j]=x[j],x[i]
+ until j<=i -- separacao
+ x[i],x[j]=x[j],x[i] -- undo last swap
+ x[j],x[r]=x[r],x[j]
+ quicksort(r,j-1) -- recursao
+ quicksort(j+1,s)
+end
+
+function main()
+ x=@()
+ n=-1
+ n=n+1; x[n]="a"
+ n=n+1; x[n]="waldemar"
+ n=n+1; x[n]="luiz"
+ n=n+1; x[n]="lula"
+ n=n+1; x[n]="peter"
+ n=n+1; x[n]="raquel"
+ n=n+1; x[n]="camilo"
+ n=n+1; x[n]="andre"
+ n=n+1; x[n]="marcelo"
+ n=n+1; x[n]="sedrez"
+ n=n+1; x[n]="z"
+-- sort(x,n)
+ quicksort(1,n-1)
+print(x[0]..","..x[1]..","..x[2]..","..x[3]..","..x[4]..","..x[5]..","..x[6]..","..x[7]..","..x[8]..","..x[9]..","..x[10])
+end
+
+function sort(a,n) -- selection sort
+ local i=1
+ while i<=n do
+ local m=i
+ local j=i+1
+ while j<=n do
+ if a[j]<a[m] then m=j end
+ j=j+1
+ end
+ a[i],a[m]=a[m],a[i] -- swap a[i] and a[m]
+ print (i, a[i])
+ i=i+1
+ end
+end
+
+main()
diff --git a/test/sort/sort.lua b/test/sort/sort.lua
new file mode 100644
index 00000000..ba2e273c
--- /dev/null
+++ b/test/sort/sort.lua
@@ -0,0 +1,51 @@
+$debug
+function quicksort(r,s)
+ if s<=r then return end -- caso basico da recursao
+ local v=x[r]
+ local i=r
+ local j=s+1
+ i=i+1; while x[i]<v do i=i+1 end
+ j=j-1; while x[j]>v do j=j-1 end
+ x[i],x[j]=x[j],x[i]
+ while j>i do -- separacao
+ i=i+1; while x[i]<v do i=i+1 end
+ j=j+1; while x[j]>v do j=j-1 end
+ x[i],x[j]=x[j],x[i]
+ end
+ x[i],x[j]=x[j],x[i] -- undo last swap
+ x[j],x[r]=x[r],x[j]
+ quicksort(r,j-1) -- recursao
+ quicksort(j+1,s)
+end
+
+function sort(a,n) -- selection sort
+ local i=1
+ while i<=n do
+ local m=i
+ local j=i+1
+ while j<=n do
+ if a[j]<a[m] then m=j end
+ j=j+1
+ end
+ a[i],a[m]=a[m],a[i] -- swap a[i] and a[m]
+ print (i, a[i])
+ i=i+1
+ end
+end
+
+x=@(20)
+n=-1
+n=n+1; x[n]="a"
+n=n+1; x[n]="waldemar"
+n=n+1; x[n]="luiz"
+n=n+1; x[n]="lula"
+n=n+1; x[n]="peter"
+n=n+1; x[n]="raquel"
+n=n+1; x[n]="camilo"
+n=n+1; x[n]="andre"
+n=n+1; x[n]="marcelo"
+n=n+1; x[n]="sedrez"
+n=n+1; x[n]="z"
+-- sort(x,n)
+quicksort(1,n-1)
+print(x[0]..","..x[1]..","..x[2]..","..x[3]..","..x[4]..","..x[5]..","..x[6]..","..x[7]..","..x[8]..","..x[9]..","..x[10])
diff --git a/test/split.lua b/test/split.lua
new file mode 100644
index 00000000..0f64c508
--- /dev/null
+++ b/test/split.lua
@@ -0,0 +1,18 @@
+function split (s)
+ local n = 1
+ local f = strfind(s,"/")
+ while f do
+ n = n+f
+ f = strfind(strsub(s,n),"/")
+ end
+ return strsub(s,1,n-1), strsub(s,n)
+end
+
+
+function test(s)
+ local path, filename = split(s)
+ print(s .. "=[".. path.."]+["..filename.."]")
+end
+
+test("a:/lua/obj/lua.c")
+test("lua.lib")
diff --git a/test/teste.lua b/test/teste.lua
new file mode 100644
index 00000000..467ce122
--- /dev/null
+++ b/test/teste.lua
@@ -0,0 +1,22 @@
+function sort(a,n) -- selection sort
+ local i=1
+ while i<=n do
+ local m, j = i, i+1
+ while j<=n do
+ if a[j]<a[m] then m=j end
+ j=j+1
+ end
+ a[i],a[m]=a[m],a[i] -- swap a[i] and a[m]
+ i=i+1
+ end
+end
+
+
+v = @(5000)
+
+i=1
+while i <= 5000 do v[i] = 5000-i i=i+1 end
+
+sort(v,5000)
+
+print("v512 = ".. v[512])
diff --git a/test/type.lua b/test/type.lua
new file mode 100644
index 00000000..5078920b
--- /dev/null
+++ b/test/type.lua
@@ -0,0 +1,37 @@
+$debug
+
+function check (object, class)
+ local v = next(object,nil);
+ while v ~= nil do
+ if class[v] = nil then
+ print("unknown field: " .. v)
+ elseif type(object[v]) ~= class[v].type then
+ print("wrong type for field " .. v)
+ end
+ v = next(object,v);
+ end
+ v = next(class,nil);
+ while v ~= nil do
+ if object[v] = nil then
+ if class[v].default ~= nil then
+ object[v] = class[v].default
+ else
+ print("field "..v.." not initialized")
+ end
+ end
+ v = next(class,v);
+ end
+end
+
+typeblock = @{x = @{default = 0, type = "number"},
+ y = @{default = 0, type = "number"},
+ name = @{type = "string"}
+ }
+
+function block(t) check(t,typeblock) end
+
+@block{ x = 7, name = "3"}
+@block{ x = "7", name = "3"}
+@block{ x = 7, name = 3}
+@block{ x = 7}
+@block{ x = 7, name = "3", bogus=3.14}