aboutsummaryrefslogtreecommitdiff
path: root/externals/gridflow/base/test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'externals/gridflow/base/test.rb')
-rw-r--r--externals/gridflow/base/test.rb1074
1 files changed, 0 insertions, 1074 deletions
diff --git a/externals/gridflow/base/test.rb b/externals/gridflow/base/test.rb
deleted file mode 100644
index 86c17af3..00000000
--- a/externals/gridflow/base/test.rb
+++ /dev/null
@@ -1,1074 +0,0 @@
-# $Id: test.rb,v 1.2 2006-03-15 04:37:28 matju Exp $
-
-$:.delete_if {|x| x=='.' }
-require "gridflow"
-
-include GridFlow
-GridFlow.verbose=true
-
-$imdir = "./images"
-$animdir = "./images/movies"
-srand Time.new.to_i
-$port = 4200+rand(100)
-
-def pressakey; puts "press return to continue."; readline; end
-
-FO = FObject # shortcut
-
-class Expect < FO
- def praise(*a)
- #raise(*a)
- puts a
- end
- def expect(*v)
- @count=0
- @v=v
- @expecting=true
- yield
- @expecting=false
- praise "wrong number of messages (#{@count}), expecting #{@v.inspect}" if @count!=@v.length
- end
- def _0_list(*l)
- return if not @expecting
- praise "wrong number of messages (#{@count})" if @count==@v.length
- praise "got #{l.inspect} expecting #{@v.inspect}" if @v[@count]!=l
- @count+=1
- end
- def method_missing(s,*a)
- praise "stray message: #{s}: #{a.inspect}"
- end
- install "expect", 1, 0
-end
-
-def cast value, type
- case type
- when :b, :u8,:uint8; value & 0xff
- when :s,:i16,:int16; (value & 0x7fff) - (value & 0x8000)
- when :i,:i32,:int32; value
- when :l,:i64,:int64; value
- when :f,:f32,:float32; value.to_f
- when :d,:f64,:float64; value.to_f
- when :r,:ruby; value
- else raise "hell"
- end
-end
-
-def test_bitpacking
- #!@#$ WRITE ME
-end
-
-def test_numops
- #!@#$ WRITE ME
-end
-
-#def tnt() for nt in [:b,:s,:i,:l,:f,:d,:r] do yield end end
-def _(o,s,i,d) o.connect(s,i,d) end
-def chain(*a)
- (a.length-1).times {|i| a[i].connect 0,a[i+1],a }
- a[-1]
-end
-
-def test_math
-for nt in [:b,:s,:i,:l,:f,:d,:r] do
- hm = "#".intern
- #GridFlow.verbose = false
-
- (e=FO["#export_list"])
- (x=Expect.new)
- _ e,0,x,0
-
- x.expect([1,2,3,11,12,13,21,22,23]) {
- e.send_in 0, 3,3,nt,hm,1,2,3,11,12,13,21,22,23 }
-
- (a=FO["fork"])
- (b=FO["@ +"])
- _ a,0,b,0
- _ a,1,b,1
- _ b,0,e,0
- x.expect([4]) { a.send_in 0, 2 }
-
- x.expect([2,3,5,7]) { e.send_in 0,:list,nt,2,3,5,7 }
- a = FO["#fold + , seed {#{nt} # 0}"]
- _ a,0,e,0
- x.expect([cast(420000,nt)]) { a.send_in 0,"10000 #{nt} # 42" }
-
- a = FO["# + {#{nt} 0 10}"]
- _ a,0,e,0
- x.expect([1,12,4,18,16,42,64]) {
- a.send_in 0,:list,nt, 1,2,4,8,16,32,64 }
-
- a = FO["# + {#{nt} 2 3 5}"]
- b = FO["#fold + , seed {#{nt} # 0}"]
- _ a,0,b,0
- _ b,0,e,0
- x.expect([cast(45332,nt)]) { a.send_in 0, 1000,nt,hm,42 }
-
- a = FO["@ + {#{nt} # 42}"]
- _ a,0,e,0
- x.expect((43..169).to_a) {
- a.send_in 0,:list,nt, *(1..127).to_a }
-
- x.expect([3,5,9,15]) {
- a.send_in 1,:list,4,nt,hm, 2,3,5,7
- a.send_in 0,:list,4,nt,hm, 1,2,4,8 }
- x.expect([11,12,14,18]) {
- a.send_in 1, "list #{nt} # 10"
- a.send_in 0,:list,nt, 1,2,4,8 }
-
-if nt!=:b and nt!=:f and nt!=:d
- a=FO["# / {#{nt} # 3}" ]; _ a,0,e,0; x.expect([-2,-1,-1,-1,0,0,0,0,0,1,1,1,2]) { a.send_in(0,:list,nt, *(-6..6).to_a) }
- a=FO["# div {#{nt} # 3}"]; _ a,0,e,0; x.expect([-2,-2,-2,-1,-1,-1,0,0,0,1,1,1,2]) { a.send_in(0, :list, nt, *(-6..6).to_a) }
-end
-
- (a = FO["# ignore {#{nt} # 42}"]).connect 0,e,0
- x.expect((42..52).to_a) { a.send_in(0, :list, nt, *(42..52).to_a) }
-
- (a = FO["# put {#{nt} # 42}"]).connect 0,e,0
- x.expect([42]*13) { a.send_in(0, :list, nt, *(-6..6).to_a) }
-
-if nt!=:b
- (a = FO["# abs-"]).connect 0,e,0
- x.expect([2,3,5,7]) {
- a.send_in 0,:list,nt, -2,3,-5,7 }
-end
-
- (a = FO["#fold *, seed {#{nt} # 1}"]).connect 0,e,0
- x.expect([210]) { a.send_in 0,:list,nt, 2,3,5,7 }
- x.expect([128]) { a.send_in 0,:list,nt, 1,1,2,1,2,2,2,1,1,2,1,2,2 }
-
- (a = FO["#fold +, seed {#{nt} 0 0}"]).connect 0,e,0
- x.expect([18,23]) { a.send_in 0, 3,2,nt,hm,2,3,5,7,11,13 }
-
- (a = FO["#scan +, seed {#{nt} 0 0}"]).connect 0,e,0
- x.expect([2,3,7,10,18,23]) { a.send_in 0, 3,2,nt,hm,2,3,5,7,11,13 }
-
- (a = FO["#scan *, seed {#{nt} # 1}"]).connect 0,e,0
- x.expect([2,6,30,210]) { a.send_in 0,:list,nt, 2,3,5,7 }
- x.expect([1,1,2,2,4,8,16,16,16,32,32,64,128]) {
- a.send_in 0,:list,nt, 1,1,2,1,2,2,2,1,1,2,1,2,2 }
-
- (a = FO["#scan +, seed {#{nt} 0 0 0}"]).connect 0,e,0
- x.expect([1,2,3,5,7,9,12,15,18]) {
- a.send_in 0,:list,3,3,nt,hm,*(1..9).to_a }
-
- (a = FO["#scan +, seed {#{nt} # 0}"]).connect 0,e,0
- x.expect([1,3,6, 4,9,15, 7,15,24]) {
- a.send_in 0,:list,3,3,nt,hm,*(1..9).to_a }
-
- (a = FO["#outer +"]).connect 0,e,0
- x.expect([9,10,12,17,18,20,33,34,36]) {
- a.send_in 1,:list,nt, 1,2,4
- a.send_in 0,:list,nt, 8,16,32 }
-
- x.expect((0...100).to_a) {
- a.send_in 1,(0...10).to_a
- a.send_in 0,(0...10).map{|i| 10*i }}
-
-if nt!=:b and nt!=:f and nt!=:d
- (a = FO["#outer",:%,[nt,3,-3]]).connect 0,e,0
- x.expect([0,0,1,-2,2,-1,0,0,1,-2,2,-1,0,0]) {
- a.send_in 0,:list,nt, -30,-20,-10,0,+10,+20,+30 }
-
- (a = FO["#outer","swap%".intern,[nt,3,-3]]).connect 0,e,0
- x.expect([-27,-3,-17,-3,-7,-3,0,0,3,7,3,17,3,27]) {
- a.send_in 0,:list,nt, -30,-20,-10,0,+10,+20,+30 }
-end
-
- (a = FO["#import {3}"]).connect 0,e,0; x.expect([2,3,5]) { [2,3,5].each {|v| a.send_in 0,:list,nt,hm,v }}
- (a = FO["#import {3}"]).connect 0,e,0; x.expect([2,3,5]) { [2,3,5].each {|v| a.send_in 0,:list,nt,v }}
- (a = FO["#redim {5}"]).connect 0,e,0; x.expect([2,3,5,2,3]) { a.send_in 0,:list,2,3,5 }
- (a = FO["#redim {5}"]).connect 0,e,0; x.expect([0,0,0,0,0]) { a.send_in 0,:list }
- (a = FO["#redim {0}"]).connect 0,e,0; x.expect([]) { a.send_in 0,:list,42,37,69 }
-
- (a = FO["#inner {2 2 #{nt} # 2 3 5 7}, seed {#{nt} # 0}"]).connect 0,e,0
- (i0 = FO["@redim {2 2}"]).connect 0,a,0
- x.expect([12,17,48,68]) { i0.send_in 0,:list,nt, 1,2,4,8 }
-
- (a = FO["#outer * {3 2 #{nt} # 1 2 3}"]).connect 0,e,0
- b = FO["#dim"]
- c = FO["#export_list"]
- a.connect 0,b,0
- y = Expect.new
- b.connect 0,c,0
- c.connect 0,y,0
-
- y.expect([2,3,2]) {
- x.expect([1,2,3,1,2,3,10,20,30,10,20,30]) {
- a.send_in 0,:list,nt, 1, 10 }}
-
- #pr=GridPrint.new
- (b = FO["#redim {5 5}"]).connect 0,e,0
- (a = FO["#convolve, seed {#{nt} # 0}"]).connect 0,b,0
- (i0 = FO["#redim {5 5 1}"]).connect 0,a,0
- (i1 = FO["#redim {3 1}"]).connect 0,a,1
- i1.send_in 1, 3,3
- x.expect([5,6,5,4,4,4,6,7,6,4,3,3,6,7,5,4,2,3,6,6,5,4,3,4,5]) {
- a.send_in 1,:list,3,3,nt,hm, 1,1,1,1,1,1,1,1,1
- i0.send_in 0,:list,nt, 1,1,1,0,0,0 }
-
- (a = FO["#convolve, seed {#{nt} # 0}"]).connect 0,e,0
- x.expect([1,3,6,4,0]) {
- a.send_in 1, 1,2,nt,hm, 1,1
- a.send_in 0, 1,5,nt,hm, 0,1,2,4,0 }
-
- (a = FO["#import {4}"]).connect 0,e,0
- x.expect([2,3,5,7]) {
- [2,3,5,7].each {|v| a.send_in 0,v }}
- x.expect([1,2,3],[4,5,6],[7,8,9]) {
- a.send_in 1, :list, 3
- a.send_in 0, :list, *(1..9).to_a}
-
- for o in ["#store"]
- (a = FO[o]).connect 0,e,0
- a.send_in 1, 5, 4, nt, hm, 1,2,3,4,5
- x.expect([1,2,3,4,4,5,1,2,2,3,4,5]) {
- a.send_in 0, 3,1, hm, 0,2,4 }
- x.expect([1,2,3,4,5]*24) { a.send_in 0, 2,3,0,hm }
- x.expect([1,2,3,4,5]*4) { a.send_in 0, 0,hm }
- x.expect([1,2,3,4,5]*4) { a.send_in 0 }
- x.expect([1,2,3,4]) { a.send_in 0,[0] }
- a.send_in 1,:put_at,[0,0]
- a.send_in 1,2,2,nt,hm,6,7,8,9
- x.expect([6,7,3,4, 8,9,2,3, 4,5,1,2, 3,4,5,1, 2,3,4,5]) { a.send_in 0 }
- x.expect([6,7,3,4]) { a.send_in 0,[0] }
- x.expect([8,9,2,3]) { a.send_in 0,[1] }
- a.send_in 1,:put_at,[1,1]
- a.send_in 1,2,2,nt,hm,11,13,17,19
- x.expect([6,7,3,4, 8,11,13,3, 4,17,19,2, 3,4,5,1, 2,3,4,5]) { a.send_in 0 }
- end
-
- b = FO["#dim"]
- c = FO["#export_list"]
- a.connect 0,b,0
- y = Expect.new
- b.connect 0,c,0
- c.connect 0,y,0
-
-if nt!=:b and nt!=:f and nt!=:d and nt!=:l
- (a = FO["#for {#{nt} # 0} {#{nt} # 10} {#{nt} # 1}"]).connect 0,e,0
- a.connect 0,b,0
- y.expect([10]) {
- x.expect((0...10).to_a) {
- a.send_in 0 } }
-
- (a = FO["#for {#{nt} # 0} {#{nt} # -10} {#{nt} # 1}"]).connect 0,e,0
- a.connect 0,b,0
- y.expect([0]) { x.expect([]) { a.send_in 0 } }
-
- (a = FO["#for {#{nt} # 0} {#{nt} # -10} {#{nt} # -1}"]).connect 0,e,0
- a.connect 0,b,0
- y.expect([10]) { x.expect([0,-1,-2,-3,-4,-5,-6,-7,-8,-9]) { a.send_in 0 } }
-
- (a = FO["#for {#{nt} 0} {#{nt} 10} {#{nt} 1}"]).connect 0,e,0
- a.connect 0,b,0
- y.expect([10,1]) {
- x.expect((0...10).to_a) {
- a.send_in 0 } }
-
- (a = FO["#for {#{nt} 2 3} {#{nt} 5 7} {#{nt} 1 1}"]).connect 0,e,0
- a.connect 0,b,0
- y.expect([3,4,2]) {
- x.expect([2,3,2,4,2,5,2,6,3,3,3,4,3,5,3,6,4,3,4,4,4,5,4,6]) {
- a.send_in 0 } }
-end
-
- (a = FO["@complex_sq"]).connect 0,e,0
- x.expect([8,0]) { a.send_in 0, 2, 2 }
- x.expect([0,9]) { a.send_in 0, 0, 3 }
-
- (a = FO["#rotate 3000 {1 2 5}"]).connect 0,e,0
- a.send_in 0, "5 5 # 1000 0 0 0 0 0"
-
-#if nt==:f or nt==:d
-# (a = FO["@matrix_solve"]).connect 0,e,0
-# x.expect([1,0,0,0,1,0,0,0,1]) { a.send_in 0, 3, 3, nt, hm, 1,0,0,0,1,0,0,0,1 }
-#end
- GridFlow.gfpost "ending test for #{nt}"
-end # for nt
-
- (a = FO["#pack 2"]).connect 0,e,0
- x.expect([42,0]) { a.send_in 0,42 }
- x.expect([42,28]) { a.send_in 1,28 }
- x.expect([1313,28]) { a.send_in 0,1313 }
-
- (a = FO["#pack 3"]).connect 0,e,0
- x.expect([42,0,0]) { a.send_in 0,42 }
- x.expect([42,28,0]) { a.send_in 1,28 }
- x.expect([42,28,-1]) { a.send_in 2,-1 }
-
- (a = FO["#pack 4"]).connect 0,e,0
- x.expect([42,0,0,0]) { a.send_in 0,42 }
- x.expect([42,0,0,-42]) { a.send_in 3,-42 }
-
- (a = FO["#pack 5"]).connect 0,e,0
- x.expect([3.5,0,0,0]) { a.send_in 0,3.5 }
- x.expect([3.5,0,0,-3.5]) { a.send_in 3,-3.5 }
-
- e = FO["#export_list"]
- e.connect 0,x,0
-
- a = FO["#import per_message"]
- a.connect 0,e,0
- x.expect([1,2,3]) { a.send_in 0,1,2,3 }
- x.expect([102,111,111]) { a.send_in 0,:symbol,:foo }
- x.expect([ 70, 79, 79]) { a.send_in 0,:symbol,:FOO }
-
- a = FO["@join 1"]
- a.connect 0,e,0
- a.send_in 1,2,2,nt,hm,11,13,17,19
- x.expect([2,3,11,13,5,7,17,19]) { a.send_in 0,2,2,nt,hm,2,3,5,7 }
-
-if nt!=:d
- a.send_in 1, 5,1,nt,hm,42
- y.expect([5,4]) {
- x.expect([2,3,5,42,7,11,13,42,17,19,23,42,29,31,37,42,41,43,47,42]) {
- a.send_in 0, 5,3,nt,hm,2,3,5,7,11,13,17,19,23,29,31,37,41,43,47 }}
-end
- a = FO["@join 0"]
- a.connect 0,e,0
- a.send_in 1,2,2,nt,hm,11,13,17,19
- x.expect([2,3,5,7,11,13,17,19]) { a.send_in 0,2,2,nt,hm,2,3,5,7 }
-
- a = FO["@join 0 {2 2 2 #{nt} # 1 2 3}"]
- a.connect 0,e,0
- a.connect 0,b,0
- y.expect([2,2,2]) { x.expect([1,2,3,1,2,3,1,2]) { a.send_in 0,0,2,2,nt,hm }}
-
- a = FO["#ravel"]
- b = FO["#dim"]
- be = FO["#export_list"]
- bx = Expect.new
- a.connect 0,e,0
- a.connect 0,b,0
- b.connect 0,be,0
- be.connect 0,bx,0
- bx.expect([9]) {
- x.expect([1,2,3,2,4,6,3,6,9]) {
- o = FO["#outer *"]
- o.connect 0,a,0
- o.send_in 1,1,2,3
- o.send_in 0,1,2,3
- }
- }
-
- a = FO["#grade"]
- a.connect 0,e,0
- x.expect([0,2,4,6,8,9,7,5,3,1]) { a.send_in 0, 0,9,1,8,2,7,3,6,4,5 }
- x.expect([0,9,1,8,2,7,3,6,4,5]) { a.send_in 0, 0,2,4,6,8,9,7,5,3,1 }
- x.expect([7,6,5,4,3,2,1,0]) { a.send_in 0, 7,6,5,4,3,2,1,0 }
-
- a = FO["#grade"]
- b = FO["#fold +"]
- a.connect 0,b,0
- b.connect 0,e,0
- x.expect([100*99/2]) { a.send_in 0, (0...100).map { (rand*0x10000).to_i }}
- x.expect([100*99/2]) { a.send_in 0, (0...100).map { (rand*0x10).to_i }}
- x.expect([100*99/2]) { a.send_in 0, (0...100).map { 0 }}
-
- a = FO["#perspective"]
- a.connect 0,e,0
- c = []
- 8.times {|v|
- 3.times {|i|
- c << (v[i] * 1000 - 500) + (if i==2 then 2000 else 0 end)
- }
- }
- x.expect([
- -85,-85,85,-85,-85,85,85,85,
- -51,-51,51,-51,-51,51,51,51]) {
- a.send_in 0, 8,3,hm,*c }
-
-# regressiontests for past bugs
- a = FO["#inner"] # that's it.
-end
-
-def test_rtmetro
- rt = FO["rtmetro 1000"]
- pr = FO["rubyprint"]
- rt.connect 0,pr,0
- GridFlow.post "trying to start the rtmetro"
- rt.send_in 0,1
- $mainloop.timers.after(10.0) {
- GridFlow.post "trying to stop the rtmetro (after 10 sec delay)"
- rt.send_in 0,0
- }
- $mainloop.loop
-end
-
-def test_print
- i = FO["#redim {3}"]
- pr = FO["#print"]
-# pr = GridFlow::RubyPrint.new
- i.connect 0,pr,0
- i.send_in 0, 85, 170, 255
- i.send_in 1, 3, 3
- i.send_in 0, 1, 0, 0, 0
- i.send_in 1, 2, 2, 2
- i.send_in 0, 2, 3, 5, 7, 11, 13, 17, 19
-end
-
-class Barf < GridObject
- def _0_rgrid_begin
- raise "barf"
- end
- install_rgrid 0
- install "barf", 1, 0
-end
-
-def test_nonsense
-# (a = FO["@! abs"]).connect 0,e,0
-# x.expect_error {
-# a.send_in 1, 42,42 }
-
- a = FO["#import {3}"]
- b = Barf.new
- a.connect 0,b,0
- begin
- a.send_in 0, 1, 2, 3
- rescue StandardError
- nil
- else
- raise "Expected StandardError"
- end
- p b.inlet_dim(0)
-end
-
-def test_store
- a = FO["#in file #{$imdir}/teapot.png"]
- b = FO["#store"]
- c = FO["#out x11"]
- a.connect 0,b,1
- a.send_in 0,"cast uint8"
- a.send_in 0
- b.connect 0,c,0
- d = FO["#for {0 0} {256 256} {1 1}"]
- e = FO["# ^ 85"]
- d.connect 0,e,0
- e.connect 0,b,0
- f = FO["fps detailed"]
- c.connect 0,f,0
- pr = FO["rubyprint"]
- f.connect 0,pr,0
- GridFlow.verbose = false
- 256.times {|t|
- e.send_in 1,t
- d.send_in 0
- }
-end
-
-# generates recursive checkerboard pattern (munchies) in bluish colours.
-class Munchies < FPatcher
- @FOs = ["fork","fork","#for 0 64 1","#for 0 64 1","#for 2 5 1",
- "#outer ^","#outer *"]
- @wires = [-1,0,0,0, 0,0,1,0, 1,1,4,0, 4,0,6,1,
- 1,0,3,0, 3,0,5,1, 0,0,2,0, 2,0,5,0, 5,0,6,0, 6,0,-1,0 ]
- def initialize() super end
- install "munchies",1,1
-end
-
-def test_munchies
- m=Munchies.new
- gout = FO["#out window"]
- m.connect 0,gout,0
- m.send_in 0
- $mainloop.loop
-end
-
-def test_image command
- gin = FO["#in"]
- gout = FO["#out window"]
- gin.connect 0,gout,0
-# 31.times {
- 3.times {
- gin.send_in 0,"open #{command}"
- gout.send_in 0,"timelog 1"
- gin.send_in 0
- }
- FO["#global"].send_in 0, "profiler_dump"
- $mainloop.loop
-end
-
-def test_ppm2
- gin = FO["#in"]
- store = FO["#store"]
- pa = FO["#convolve << + 0"]
- pb = FO["# / 9"]
- ra = FO["#redim {3 3}"]
- gout = FO["#out window"]
- gin.connect 0,store,1
- store.connect 0,pa,0
- pa.connect 0,pb,0
- pb.connect 0,gout,0
- ra.connect 0,pa,1
- ra.send_in 0,"0 0"
- gout.send_in 0,"timelog 1"
- gin.send_in 0,"open file #{$imdir}/teapot.png"
-# gin.send_in 0,"open file #{$imdir}/g001.jpg"
- gin.send_in 0
-# 40.times { store.send_in 0 }
- loop { store.send_in 0 }
- v4j = FO["#global"]
- v4j.send_in 0,"profiler_dump"
-# $mainloop.loop
-end
-
-def test_foo
- foo = FO["#for {0 0} {64 64} {1 1}"]
- che = FO["#checkers"]
- sca = FO["#scale_by {5 3}"]
- out = FO["#out window"]
- foo.connect 0,che,0
- che.connect 0,sca,0
- sca.connect 0,out,0
- foo.send_in 0
- $mainloop.loop
-end
-
-def test_anim(*msgs)
- GridFlow.verbose = false
- gin = FO["#in"]
- gout1 = FO["#out window"]
- #gout1 = FO["@out quicktime file test.mov"]
- #gout1.send_in 0, :codec, :jpeg
- fps = FO["fps detailed"]
- rpr = FO["rubyprint"]
- gout1.connect 0,fps,0
- #fps.connect 0,rpr,0
-=begin
- gout1 = FO["#downscale_by {3 2}"]
- gout2 = FO["#rgb_to_greyscale"]
- gout3 = FO["#out aalib X11 -height 60 -width 132"]
- gout1.connect 0,gout2,0
- gout2.connect 0,gout3,0
-=end
-
- rpr = FO["rubyprint"]
-# gin.connect 1,rpr,0
-
- gin.connect 0,gout1,0
-=begin
- layer=FO["@layer"]
- gin.connect 0,layer,0
- layer.connect 0,gout1,0
- check=FO["@checkers"]
- phor=FO["@for {0 0} {256 256} {1 1}"]
- phor.connect 0,check,0
- check.connect 0,layer,1
- phor.send_in 0
-=end
-
-# scale = FO["@scale_by 3"]
-# gin.connect 0,scale,0
-# scale.connect 0,gout1,0
-
-# pr = FO["rubyprint time"]; gout.connect 0,pr,0
- msgs.each {|m| gin.send_in 0,m }
- gin.send_in 0, "cast uint8"
-# gout.send_in 0,"timelog 1"
- d=Time.new
- frames=2000
- frames.times {|n|
- #GridFlow.post "%d", n
- gin.send_in 0
- #gin.send_in 0, rand(1000)
- }
-# loop { gin.send_in 0 }
-# metro = FO["rtmetro 80"]
-# metro.connect 0,gin,0
-# metro.send_in 0,1
-# $mainloop.loop
-
- d=Time.new-d
- printf "%d frames in %.6f seconds (avg %.6f ms, %.6f fps)\n",
- frames, d, 1000*d/frames, frames/d
-# global.send_in 0,"dfgdfgdkfjgl"
- gout1.send_in 0, :close
- global = FO["@global"]
- global.send_in 0,"profiler_dump"
-end
-
-class TestTCP < FO
- attr_accessor :idle
- def initialize
- @idle = true
- end
- def _0_bang
- # GridFlow.gfpost "tick"
- # avoid recursion
- $mainloop.timers.after(0) {
- ($in_client.send_in 0; @idle=false) if @idle
- }
- end
- install "tcptest",1,1
-end
-
-def test_tcp
- if fork
- # client (is receiving)
- GridFlow.post_header = "[client] "
- $in_client = in1 = FO["@in"]
- out = FO["@out x11"]
- in1.connect 0,out,0
- out.send_in 0,"timelog 1"
- out.send_in 0,"autodraw 2"
- GridFlow.post "test: waiting 1 second"
- sleep 1
- p "HI"
- #in1.send_in 0,"open grid tcp localhost #{$port}"
- in1.send_in 0,"open grid tcp 127.0.0.1 #{$port}"
- p "HI"
-
- test_tcp = TestTCP.new
-
- out.connect 0,test_tcp,0
- test_tcp.connect 0,in1,0
-
- GridFlow.post "entering mainloop..."
- $mainloop.loop
- else
- # server (is sending)
- GridFlow.post_header = "[server] "
- $in1_server = in1 = FO["@in"]
- $in2_server = in2 = FO["@in"]
- $out = out = FO["@out"]
- toggle = 0
- in1.connect 0,out,0
- in2.connect 0,out,0
- in1.send_in 0,"open #{$imdir}/r001.jpg"
- in2.send_in 0,"open #{$imdir}/b001.jpg"
- out.send_in 0,"open grid tcpserver #{$port}"
- out.send_in 0,"type uint8"
- test_tcp = GridFlow::FO.new
- def test_tcp._0_bang
- # GridFlow.post "tick"
- @toggle ||= 0
- # avoid recursion
- $mainloop.timers.after(0.01) {
- if $out.format.stream
- if @toggle==0; $in1_server else $in2_server end.send_in 0
- @toggle ^= 1
- end
- _0_bang
- }
- end
- out.connect 0,test_tcp,0
- test_tcp.send_in 0
- GridFlow.post "entering mainloop..."
- $mainloop.loop
- end
-end
-
-def test_layer
-
- gin = FO["@in png file ShaunaKennedy/atmosphere-bleu.png"]
-# gin1 = FO["@in file #{$imdir}/r001.jpg"]
-# gin = FO["@join 2 {240 320 1 # 128}"]
-# gin1.connect 0,gin,0
-
-# gfor = FO["@for {0 0} {120 160} {1 1}"]
-# gfor = FO["@for {0 0} {240 320} {1 1}"]
- gfor = FO["@for {0 0} {480 640} {1 1}"]
- gche = FO["@checkers"]
-
- gove = FO["@layer"]
-# gove = FO["@fold + {0 0 0 0}"]
-# gout = FO["@print"]
-# gove = FO["@inner2 * + 0 {3 4 # 1 0 0 0 0}"]
-# gout = FO["@out sdl"]
- gout = FO["@out x11"]
-
- gin.connect 0,gove,0
- gfor.connect 0,gche,0
- gche.connect 0,gove,1
- gove.connect 0,gout,0
-
- gfor.send_in 0
-
- fps = FO["fps detailed"]
- pr = FO["rubyprint"]
- gout.connect 0,fps,0
- fps.connect 0,pr,0
-
- loop{gin.send_in 0}
-# gin.send_in 0
-# gin1.send_in 0
- $mainloop.loop
-end
-
-Images = [
- "png file opensource.png",
- "#{$imdir}/ruby0216.jpg",
- "#{$imdir}/g001.jpg",
-# "#{$imdir}/teapot.tga",
- "grid gzfile #{$imdir}/foo.grid.gz",
- "grid gzfile #{$imdir}/foo2.grid.gz",
-# "videodev /dev/video0",
-]
-
-def test_formats_speed
- gin = FO["@in"]
- gout = FO["@out x11"]
- gin.connect 0,gout,0
- GridFlow.verbose=false
- t1=[]
- Images.each {|command|
- gin.send_in 0,"open #{command}"
- t0 = Time.new
- 10.times {gin.send_in 0}
- t1 << (Time.new - t0)
- sleep 1
- }
- p t1
-end
-
-def test_formats
- gin = FO["@in"]
- gout = FO["@out window"]
- gs = FO["@ + {int16 # 0}"]
- gin.connect 0,gs,0
- gs.connect 0,gout,0
-# GridFlow.verbose=false
- t1=[]
- Images.each {|command|
- GridFlow.post "SENDING open %s", command
- gin.send_in 0,"open #{command}"
- gin.send_in 0,"cast int16"
- # test for load, rewind, load
- 5.times {|x| gs.send_in 1, [:int16, '#'.intern, x*128]; gin.send_in 0}
- # test for filehandle leak
- #1000.times { gin.send_in 0,"open #{command}" }
- sleep 1
- }
- p t1
-end
-
-def test_rewind
- gin = FO["@in videodev /dev/video1 noinit"]
- gin.send_in 0, "transfer read"
- gout = FO["@out ppm file /tmp/foo.ppm"]
-# gout = FO["@out x11"]
- gin.connect 0,gout,0
- loop {
- gin.send_in 0
- gout.send_in 0, "rewind"
- }
-end
-
-def test_formats_write
- # read files, store and save them, reload, compare, expect identical
- a = FO["@in"]
- b = FO["@out"]; a.connect 0,b,0
- c = FO["@ -"]; a.connect 0,c,1
- d = FO["@in"]; d.connect 0,c,0
- e = FO["@fold +"]; c.connect 0,e,0
- f = FO["@fold +"]; e.connect 0,f,0
- g = FO["@fold +"]; f.connect 0,g,0
- h = FO["@ / 15000"]; g.connect 0,h,0
- i = FO["@export_list"]; h.connect 0,i,0
- x = Expect.new; i.connect 0,x,0
- [
- ["ppm file", "#{$imdir}/g001.jpg"],
- ["targa file", "#{$imdir}/teapot.tga"],
- ["targa file", "#{$imdir}/tux.tga"],
- ["jpeg file", "#{$imdir}/ruby0216.jpg"],
- ["grid gzfile", "#{$imdir}/foo.grid.gz", "endian little"],
- ["grid gzfile", "#{$imdir}/foo.grid.gz", "endian big"],
- ].each {|type,file,*rest|
- a.send_in 0, "open #{type} #{file}"
- b.send_in 0, "open #{type} /tmp/patate"
- rest.each {|r| b.send_in 0,r }
- a.send_in 0
- b.send_in 0, "close"
- raise "written file does not exist" if not File.exist? "/tmp/patate"
- d.send_in 0, "open #{type} /tmp/patate"
- x.expect([0]) { d.send_in 0 }
-# d.send_in 0
- }
-end
-
-def test_mpeg_write
- a = FO["@in ppm file /opt/mex/r.ppm.cat"]
- b = FO["@out x11"]
- a.connect 0,b,0
- loop{a.send_in 0}
-end
-
-def test_headerless
- gout = FO["@out"]
- gout.send_in 0, "open grid file #{$imdir}/hello.txt"
- gout.send_in 0, "headerless"
- gout.send_in 0, "type uint8"
- gout.send_in 0, "104 101 108 108 111 32 119 111 114 108 100 33 10"
- gout.send_in 0, "close"
- gin = FO["@in"]
- pr = FO["@print"]
- gin.connect 0,pr,0
- gin.send_in 0, "open grid file #{$imdir}/hello.txt"
- gin.send_in 0, "headerless 13"
- gin.send_in 0, "type uint8"
- gin.send_in 0
-end
-
-
-def test_sound
-# o2 = FO["@ * 359"] # @ 439.775 Hz
-# o1 = FO["@for 0 44100 1"] # 1 sec @ 1.225 Hz ?
- o1 = FO["@for 0 4500 1"]
- o2 = FO["@ * 1600"] # @ 439.775 Hz
- o3 = FO["@ sin* 255"]
- o4 = FO["@ gamma 400"]
- o5 = FO["@ << 7"]
- out = FO["@out"]
- o1.connect 0,o2,0
- o2.connect 0,o3,0
- o3.connect 0,o4,0
- o4.connect 0,o5,0
- o5.connect 0,out,0
-# out.send_in 0,"open raw file /dev/dsp"
- out.send_in 0,"open grid file /dev/dsp"
- out.send_in 0,"type int16"
- x=0
- loop {
- o4.send_in 1, x
- o1.send_in 0
- x+=10
- }
-end
-
-include Math
-def test_polygon
- o1 = FO["@for 0 5 1"]
- o2 = FO["@ * 14400"]
- o3 = FO["@outer + {0 9000}"]
- o4 = FO["@ +"]
- o5 = FO["@ cos* 112"]
- o6 = FO["@ + {120 160}"]
- poly = FO["@draw_polygon + {3 uint8 # 255}"]
-if false
- out1 = FO["@cast int32"]
- out2 = FO["@solarize"]
-# out1 = FO["@downscale_by 2 smoothly"]
- out3 = FO["@out x11"]
- out1.connect 0,out2,0
- out2.connect 0,out3,0
-else
- out1 = FO["@out x11"]
- fps = FO["fps detailed cpu"]
- out1.connect 0,fps,0
- pr = FO["rubyprint"]
- fps.connect 0,pr,0
-end
- store = FO["@store"]; store.send_in 1, "240 320 3 uint8 # 0"
-# store2 = FO["@store"]
- store.connect 0,poly,0
- poly.connect 0,store,1
-# store2.connect 0,store,1
- o1.connect 0,o2,0
- o2.connect 0,o3,0
- o3.connect 0,o4,0
- o4.connect 0,o5,0
- o5.connect 0,o6,0
- o6.connect 0,poly,2
-# cast = FO["@cast int32"]
-# poly.connect 0,cast,0
-# cast.connect 0,out1,0
- poly.connect 0,out1,0
- x=0
- GridFlow.verbose=false
- task=proc {
- o4.send_in 1, 5000*x
- o5.send_in 1, 200+200*sin(x)
- poly.send_in 1,:list,:uint8, *(0..2).map{|i| 4+4*cos(0.2*x+i*PI*2/3) }
- o1.send_in 0
- store.send_in 0
-# store2.send_in 0
- x+=1
- if x<1000 then $mainloop.timers.after(0.0) {task[]}
- else GridGlobal.new.send_in 0,"profiler_dump"; exit end
- }
- task[]
- $mainloop.loop
-end
-
-class FRoute2 < FO
- def initialize(selector)
- @selector = selector.to_s
- end
- def method_missing(sym,*a)
- sym=sym.to_s
- if sym =~ /^_0_(.*)/
- send_out((if $1==@selector then 0 else 1 end), $1.intern, *a)
- else super end
- end
- install "route2", 1, 2
-end
-
-def test_aalib
-# gin = FO["@in ppm file #{$imdir}/r001.jpg"]
- gin = FO["@in ppm file #{$animdir}/b.jpg.cat"]
- grey = FO["@rgb_to_greyscale"]
- cont = FO["@ << 1"]
- clip = FO["@ min 255"]
- gout = FO["@out aalib X11"]
- sto = FO["@store"]
- op = FO["aa_fill_with_text {localhost 4242}"]
- filt = FO["route2 grid"]
- gin.connect 0,grey,0
- grey.connect 0,cont,0
- cont.connect 0,clip,0
- clip.connect 0,gout,0
- gout.connect 0,filt,0
- filt.connect 0,sto,1
- sto.connect 0,op,0
- op.connect 0,gout,0
- gout.send_in 0, :autodraw, 0
- GridFlow.verbose = false
- task=proc{
- gin.send_in 0
- gout.send_in 0, :dump
- sto.send_in 0
- gout.send_in 0, :draw
- $mainloop.timers.after(0.1,&task)
- }
- task[]
- $mainloop.loop
-end
-
-def test_store2
- o = [
- FO["@for {0 0} {240 320} {1 1}"],
- FO["@ / 2"],
- FO["@ + 0"],
- FO["@ + 0"],
- FO["@store"],
- FO["@out x11"]]
- (0..4).each {|x| o[x].connect 0,o[x+1],0 }
- q = FO["@in ppm file images/r001.jpg"]
- q.connect 0,o[4],1
- q.send_in 0
- o[0].send_in 0
- $mainloop.loop
-end
-
-def test_remap
- rem = FO["@remap_image"]
- rot = FO["@rotate 4000"]
- rem.connect 1,rot,0
- rot.connect 0,rem,1
- gin = FO["@in ppm file #{$imdir}/teapot.png"]
- gout = FO["@out x11"]
- gin.connect 0,rem,0
- rem.connect 0,gout,0
- gin.send_in 0
- $mainloop.loop
-end
-
-def test_asm
- GridFlow.verbose=false
- a = FO["@in ppm file images/r001.jpg"]
- aa = FO["@cast uint8"]
- b = FO["@store"]
- d = FO["@store"]
- a.connect 0,aa,0
- aa.connect 0,b,1
- aa.connect 0,d,1
- a.send_in 0
- c = FO["@ + {uint8 # 0}"]
- t0 = Time.new; 1000.times {b.send_in 0}; t1 = Time.new-t0
- t1 *= 1
- b.connect 0,c,0
- stuff=proc{
- 3.times{
- t0 = Time.new; 1000.times {b.send_in 0}; t2 = Time.new-t0
- t2 *= 1
- GridFlow.post " %f %f %f", t1, t2, t2-t1
- }
- }
- puts "map:"
- stuff[]
- d.connect 0,c,1 # for zip
- d.send_in 0
- puts "zip:"
- stuff[]
-end
-
-def test_metro
- o1 = RtMetro.new(1000,:geiger)
- o2 = RubyPrint.new(:time)
- o1.connect 0,o2,0
- o1.send_in 0,1
- $mainloop.loop
-end
-
-def test_outer
- o = FO["@outer + {0}"]
- o.send_in 0, 25, 240, 320, 3, "#".intern, 42
- g = FO["@global"]
- g.send_in 0, :profiler_dump
-end
-
-def test_jmax_to_pd filename
- require "gridflow/extra/jmax_format.rb"
- require "gridflow/extra/puredata_format.rb"
- jfr = JMaxFileReader.new(File.open(filename),FO)
- FO.broken_ok = true
- my_patcher = jfr.parse
-# my_patcher.subobjects.each {|x,| x.trigger if LoadBang===x }
-# $mainloop.loop
-# $p=my_patcher; ARGV.clear; load "/home/matju/bin/iruby"
- filename = File.basename filename
- filename[File.extname(filename)]=".pd"
- filename[0,0]="pd_examples/"
- pfw = PureDataFileWriter.new(filename)
- pfw.write_patcher my_patcher
- pfw.close
-end
-
-def test_error
- x = FO["@store"]
- x.send_in 0
-end
-
-if ARGV[0] then
- name = ARGV.shift
- send "test_#{name}", *ARGV
-# ARGV.each {|a| send "test_#{a}" }
- exit 0
-end
-
-#test_polygon
-#test_math
-#test_munchies
-#test_image "grid file #{$imdir}/foo.grid"
-#test_image "grid gzfile #{$imdir}/foo.grid.gz"
-#test_print
-#test_nonsense
-#test_ppm2
-#test_anim "open file #{$imdir}/g001.jpg"#,"loop 0"
-#test_anim "open ppm file #{$animdir}/b.ppm.cat"
-#test_anim "open jpeg file #{$imdir}/rgb.jpeg.cat"
-#test_anim "open quicktime file BLAH"
-#test_anim "open quicktime file #{$imdir}/rgb_uncompressed.mov"
-#test_anim "open quicktime file #{$imdir}/test_mjpega.mov"
-#test_anim "open ppm gzfile motion_tracking.ppm.cat.gz"
-#test_anim "open videodev /dev/video","channel 1","size 480 640"
-#test_anim "open videodev /dev/video1 noinit","transfer read"
-#test_anim "open videodev /dev/video","channel 1","size 120 160"
-#test_anim "open mpeg file /home/matju/net/Animations/washington_zoom_in.mpeg"
-#test_anim "open quicktime file /home/matju/Shauna/part_1.mov"
-#test_anim "open quicktime file #{$imdir}/gt.mov"
-#test_anim "open quicktime file /home/matju/pics/domopers_hi.mov"
-#test_anim "open quicktime file /home/matju/net/c.mov"
-#test_formats
-#test_tcp
-#test_sound
-#test_metro
-#$mainloop.loop
-
-=begin
-a = FO["@print"]
-a.send_in 0, "3 3 #{nt} # 1 0 0 0"
-a.send_in 0, "3 3 3 #{nt} # 1 2 3 4"
-a.send_in 0, "base 16"
-a.send_in 0, "3 3 3 #{nt} # 255 0 0 0"
-=end