diff options
author | Lua Team <team@lua.org> | 1994-07-08 12:00:00 +0000 |
---|---|---|
committer | repogen <> | 1994-07-08 12:00:00 +0000 |
commit | 944fc7d7d95575f2b8023c1f3d4ac19e1369fc76 (patch) | |
tree | eabf0822f2058229cd0d49c7928683b8cf0ed88e /test | |
parent | 8b5979a7e8b9732aa2883d2384f853d87b594770 (diff) | |
download | lua-github-1.1.tar.gz |
Lua 1.11.1
Diffstat (limited to 'test')
-rw-r--r-- | test/array.lua | 15 | ||||
-rw-r--r-- | test/dump | 37 | ||||
-rw-r--r-- | test/loop.lua | 6 | ||||
-rw-r--r-- | test/save.lua | 46 | ||||
-rw-r--r-- | test/sort.lua | 54 | ||||
-rw-r--r-- | test/sort/q.lua | 51 | ||||
-rw-r--r-- | test/sort/sort.lua | 51 | ||||
-rw-r--r-- | test/split.lua | 18 | ||||
-rw-r--r-- | test/teste.lua | 22 | ||||
-rw-r--r-- | test/type.lua | 37 |
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} |