Mercurial > MadButterfly
diff nodejs/examples/simple/testleak.js @ 939:a74b4d986a91
Move examples for nodejs into nodejs/examples/ sub-directories.
See INSTALL.txt. Use nodejs/examples/run.sh to run examples.
For example,
cd nodejs/examples; ./run.sh examples/testsvg/testsvg.js
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Fri, 12 Nov 2010 17:39:04 +0800 |
parents | nodejs/testleak.js@586e50f82c1f |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/nodejs/examples/simple/testleak.js Fri Nov 12 17:39:04 2010 +0800 @@ -0,0 +1,217 @@ +// -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 4; -*- +// vim: sw=4:ts=8:sts=4 +var mbfly = require("mbfly"); +var sys = require("sys"); +var cproc = require("child_process"); + +function testcase1() { + var mbrt = new mbfly.mb_rt(":32.0", 300, 200); + var root = mbrt.root; + var coords = []; + var coord; + var i; + + while(true) { + for(i = 0; i < 200; i++) { + coords.push(mbrt.coord_new(root)); + } + mbrt.redraw_changed(); + mbrt.flush(); + + while(coords.length > 0) { + coord = coords.pop(); + coord.remove(); + } + } +} + +function testcase2() { + var mbrt = new mbfly.mb_rt(":32.0", 300, 200); + var root = mbrt.root; + var coords = []; + var coord; + var i, j; + + while(true) { + for(i = 0; i < 200; i++) { + coords.push(mbrt.coord_new(root)); + for(j = 0; j < 10; j++) + coord = mbrt.coord_new(coords[i]); + } + mbrt.redraw_changed(); + mbrt.flush(); + + while(coords.length > 0) { + coord = coords.pop(); + coord.remove(); + } + } +} + +function testcase3() { + var mbrt = new mbfly.mb_rt(":32.0", 300, 200); + var root = mbrt.root; + var coords = []; + var coord; + var shape; + var i, j; + + while(true) { + for(i = 0; i < 200; i++) { + coords.push(mbrt.coord_new(root)); + for(j = 0; j < 10; j++) { + coord = mbrt.coord_new(coords[i]); + shape = mbrt.rect_new(15, 15, 20, 20, 0, 0); + coord.add_shape(shape); + } + } + mbrt.redraw_changed(); + mbrt.flush(); + + while(coords.length > 0) { + coord = coords.pop(); + coord.remove(); + } + } +} + +function testcase4() { + var mbrt = new mbfly.mb_rt(":32.0", 300, 200); + var root = mbrt.root; + var coords = []; + var coord; + var shape; + var i, j; + + while(true) { + for(i = 0; i < 200; i++) { + coords.push(mbrt.coord_new(root)); + for(j = 0; j < 10; j++) { + coord = mbrt.coord_new(coords[i]); + shape = mbrt.path_new("m 10,10 l 55,27 l -30,-3 z"); + coord.add_shape(shape); + } + } + mbrt.redraw_changed(); + mbrt.flush(); + + while(coords.length > 0) { + coord = coords.pop(); + coord.remove(); + } + } +} + +function testcase5() { + var mbrt = new mbfly.mb_rt(":32.0", 300, 200); + var root = mbrt.root; + var paint; + + while(true) { + paint = mbrt.paint_color_new(0.5, 0.5, 0.5, 1); + } +} + +function testcase6() { + var mbrt = new mbfly.mb_rt(":32.0", 300, 200); + var root = mbrt.root; + var coords = []; + var coord; + var shape; + var paint; + var i, j; + + while(true) { + for(i = 0; i < 200; i++) { + coords.push(mbrt.coord_new(root)); + /* Paint is free, but rdman is dirty */ + paint = mbrt.paint_color_new(0.5, 0.5, 0.5, 1); + for(j = 0; j < 10; j++) { + coord = mbrt.coord_new(coords[i]); + shape = mbrt.rect_new(5, 5, 20, 20, 0, 0); + coord.add_shape(shape); + } + } + mbrt.redraw_changed(); + mbrt.flush(); + + while(coords.length > 0) { + coord = coords.pop(); + coord.remove(); + } + } +} + +function testcase7() { + var mbrt = new mbfly.mb_rt(":32.0", 300, 200); + var root = mbrt.root; + var coords = []; + var coord; + var shape; + var paint; + var i, j; + + while(true) { + for(i = 0; i < 200; i++) { + coords.push(mbrt.coord_new(root)); + for(j = 0; j < 10; j++) { + /* paint is not free, and rdman is dirty */ + paint = mbrt.paint_color_new(0.5, 0.5, 0.5, 1); + coord = mbrt.coord_new(coords[i]); + shape = mbrt.path_new("M 100,100 L 30,30 L 0,30 z"); + coord.add_shape(shape); + paint.stroke(shape); + } + } + mbrt.redraw_changed(); + mbrt.flush(); + + while(coords.length > 0) { + coord = coords.pop(); + coord.remove(); + } + } +} + +cproc.exec("killall -9 Xvfb; Xvfb :32 -screen 0 800x600x24"); +setTimeout(function() { + if(process.argv.length == 1) + testcase1(); + else if(process.argv.length == 3) { + sys.puts("testcase " + process.argv[2]); + switch(process.argv[2]) { + case "1": + testcase1(); + break; + + case "2": + testcase2(); + break; + + case "3": + testcase3(); + break; + + case "4": + testcase4(); + break; + + case "5": + testcase5(); + break; + + case "6": + testcase6(); + break; + + case "7": + testcase7(); + break; + + default: + sys.puts("Usage: node testleak.js [1|2|3...7]"); + } + } else + sys.puts("Usage: node testleak.js [1|2|3...7]"); + cproc.exec("killall -9 Xvfb"); + }, 1500);