aboutsummaryrefslogtreecommitdiff
path: root/externals/gridflow/tests
diff options
context:
space:
mode:
Diffstat (limited to 'externals/gridflow/tests')
-rw-r--r--externals/gridflow/tests/#print-test.pd30
-rw-r--r--externals/gridflow/tests/Makefile7
-rw-r--r--externals/gridflow/tests/args-2-test.pd17
-rw-r--r--externals/gridflow/tests/args-test.pd23
-rw-r--r--externals/gridflow/tests/cv.SVD-test.pd37
-rw-r--r--externals/gridflow/tests/foreach-test.pd8
-rw-r--r--externals/gridflow/tests/fps-test.pd75
-rw-r--r--externals/gridflow/tests/gf.error-2-test.pd6
-rw-r--r--externals/gridflow/tests/gf.error-test.pd4
-rw-r--r--externals/gridflow/tests/malloc-test.c36
-rw-r--r--externals/gridflow/tests/opencv-test1.pd72
-rw-r--r--externals/gridflow/tests/opencv-test2.pd49
-rw-r--r--externals/gridflow/tests/plotter_control-test.pd51
-rw-r--r--externals/gridflow/tests/plotter_parser-test.pd67
-rw-r--r--externals/gridflow/tests/range-test.pd35
-rw-r--r--externals/gridflow/tests/suppressions.valg3201
16 files changed, 718 insertions, 0 deletions
diff --git a/externals/gridflow/tests/#print-test.pd b/externals/gridflow/tests/#print-test.pd
new file mode 100644
index 00000000..c1625618
--- /dev/null
+++ b/externals/gridflow/tests/#print-test.pd
@@ -0,0 +1,30 @@
+#N canvas 770 206 450 483 10;
+#X msg 32 29 0 #;
+#X msg 48 67 2 3 5;
+#X msg 56 86 2 2 # 2 3 5 7;
+#X msg 63 105 2 2 2 # 2 3 5 7 11 13 17 19;
+#X msg 40 48 list # 2;
+#X msg 211 222 base 8;
+#X msg 228 281 trunc 10;
+#X msg 236 300 maxrows 0;
+#X msg 202 203 base 2;
+#X msg 221 241 base 16;
+#X msg 73 125 2 2 2 # 2 -3 5 -7 -11 13 -17 19;
+#X msg 83 145 2 2 2 s # 2 -3 5 -7 -11 13 -17 19;
+#X msg 93 165 2 2 2 f # 2 -3 5 -7 -11 13 -17 19;
+#X obj 32 379 #print;
+#X obj 32 360 t a;
+#X connect 0 0 14 0;
+#X connect 1 0 14 0;
+#X connect 2 0 14 0;
+#X connect 3 0 14 0;
+#X connect 4 0 14 0;
+#X connect 5 0 14 0;
+#X connect 6 0 14 0;
+#X connect 7 0 14 0;
+#X connect 8 0 14 0;
+#X connect 9 0 14 0;
+#X connect 10 0 14 0;
+#X connect 11 0 14 0;
+#X connect 12 0 14 0;
+#X connect 14 0 13 0;
diff --git a/externals/gridflow/tests/Makefile b/externals/gridflow/tests/Makefile
new file mode 100644
index 00000000..6f81ac9f
--- /dev/null
+++ b/externals/gridflow/tests/Makefile
@@ -0,0 +1,7 @@
+all:: malloc-test
+
+COMMON = Makefile
+
+malloc-test: malloc-test.c $(COMMON)
+ g++ -xc++ -O3 malloc-test.c -o malloc-test
+
diff --git a/externals/gridflow/tests/args-2-test.pd b/externals/gridflow/tests/args-2-test.pd
new file mode 100644
index 00000000..66bada4c
--- /dev/null
+++ b/externals/gridflow/tests/args-2-test.pd
@@ -0,0 +1,17 @@
+#N canvas 460 0 760 300 10;
+#X obj 36 19 loadbang;
+#X obj 36 38 args (first s foo) (second f 42) (third s bar) (fourth
+f 23) *;
+#X obj 36 87 print o1;
+#X obj 113 87 print o2;
+#X obj 190 87 print o3;
+#X obj 268 88 print o4;
+#X obj 345 87 print o5;
+#X obj 423 87 print o6;
+#X connect 0 0 1 0;
+#X connect 1 0 2 0;
+#X connect 1 1 3 0;
+#X connect 1 2 4 0;
+#X connect 1 3 5 0;
+#X connect 1 4 6 0;
+#X connect 1 5 7 0;
diff --git a/externals/gridflow/tests/args-test.pd b/externals/gridflow/tests/args-test.pd
new file mode 100644
index 00000000..8fd716ba
--- /dev/null
+++ b/externals/gridflow/tests/args-test.pd
@@ -0,0 +1,23 @@
+#N canvas 128 60 450 464 10;
+#X obj 14 36 args-2-test a 1 b 2 c 3 d 4 \, canadiens 5 \, nordiques
+2;
+#X text 12 257 o5: bang;
+#X text 12 270 o4: 23;
+#X text 12 101 o5: list c 3 d 4;
+#X text 12 114 o4: 2;
+#X text 12 127 o3: symbol b;
+#X text 12 140 o2: 1;
+#X text 12 153 o1: symbol a;
+#X text 12 166 o6: canadiens 5;
+#X text 12 179 o6: nordiques 2;
+#X text 12 192 o5: bang;
+#X text 12 205 o4: 23;
+#X text 12 231 o2: 1;
+#X text 12 244 o1: symbol a;
+#X text 12 283 o3: symbol bar;
+#X text 12 296 o2: 42;
+#X text 12 309 o1: symbol foo;
+#X obj 14 56 args-2-test a 1 (a b c);
+#X obj 14 76 args-2-test;
+#X text 15 14 order of those 3 objects is important;
+#X text 12 218 o3: list a b c;
diff --git a/externals/gridflow/tests/cv.SVD-test.pd b/externals/gridflow/tests/cv.SVD-test.pd
new file mode 100644
index 00000000..9d1c1ddd
--- /dev/null
+++ b/externals/gridflow/tests/cv.SVD-test.pd
@@ -0,0 +1,37 @@
+#N canvas 770 0 450 464 10;
+#X obj 48 105 cv.SVD;
+#X obj 49 320 display;
+#X floatatom 49 27 5 0 0 0 - - -;
+#X floatatom 88 27 5 0 0 0 - - -;
+#X floatatom 49 43 5 0 0 0 - - -;
+#X floatatom 88 43 5 0 0 0 - - -;
+#X obj 48 86 #redim (2 2);
+#X msg 160 33 4 f # 2 3 5 7;
+#X obj 48 67 #pack 4 f;
+#X obj 161 191 display;
+#X obj 12 185 display;
+#X obj 48 280 #inner \, seed (f #);
+#X obj 178 280 #inner \, seed (f #);
+#X obj 48 261 #store;
+#X obj 48 238 #finished;
+#X obj 48 145 t a a;
+#X obj 307 189 display;
+#X connect 0 0 10 0;
+#X connect 0 0 15 0;
+#X connect 0 1 9 0;
+#X connect 0 1 13 1;
+#X connect 0 2 16 0;
+#X connect 0 2 12 1;
+#X connect 2 0 8 0;
+#X connect 3 0 8 1;
+#X connect 4 0 8 2;
+#X connect 5 0 8 3;
+#X connect 6 0 0 0;
+#X connect 7 0 6 0;
+#X connect 8 0 6 0;
+#X connect 11 0 1 0;
+#X connect 12 0 11 1;
+#X connect 13 0 11 0;
+#X connect 14 0 13 0;
+#X connect 15 0 14 0;
+#X connect 15 1 12 0;
diff --git a/externals/gridflow/tests/foreach-test.pd b/externals/gridflow/tests/foreach-test.pd
new file mode 100644
index 00000000..e5ad35d3
--- /dev/null
+++ b/externals/gridflow/tests/foreach-test.pd
@@ -0,0 +1,8 @@
+#N canvas 496 228 450 300 10;
+#X obj 51 64 foreach;
+#X msg 51 45 2 3 5 7;
+#X obj 51 83 print;
+#X msg 86 22 2 foo bar 7 11 foo;
+#X connect 0 0 2 0;
+#X connect 1 0 0 0;
+#X connect 3 0 0 0;
diff --git a/externals/gridflow/tests/fps-test.pd b/externals/gridflow/tests/fps-test.pd
new file mode 100644
index 00000000..c92b5940
--- /dev/null
+++ b/externals/gridflow/tests/fps-test.pd
@@ -0,0 +1,75 @@
+#N canvas 750 206 450 427 10;
+#X obj 32 13 metro;
+#X obj 32 -4 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0 1
+;
+#X obj 32 125 t b b;
+#X obj 32 212 print a;
+#X obj 71 193 print b;
+#X obj 32 38 random 400;
+#X msg 148 5 mode real;
+#X msg 148 25 mode user;
+#X msg 148 45 mode system;
+#X msg 148 65 mode cpu;
+#X obj 80 99 t a;
+#X msg 148 85 mode logical;
+#X msg 148 105 mode process;
+#X obj 319 105 print user;
+#X obj 319 151 print system;
+#X obj 327 46 t b b;
+#X obj 327 20 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 319 86 usertime;
+#X obj 162 239 #out window;
+#X obj 162 184 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 0
+1;
+#X msg 162 220 240 320 3 # 255 0 0;
+#X obj 319 132 systemtime;
+#X obj 319 181 tsctime;
+#X obj 319 200 print tsc;
+#X obj 319 223 timer;
+#X obj 319 242 print logical;
+#X obj 319 263 realtime;
+#X obj 319 303 cputime;
+#X obj 319 322 print process;
+#X obj 319 282 print real;
+#X obj 162 201 metro 10;
+#X obj 71 125 fps_ruby detailed;
+#X obj 32 144 fps detailed;
+#X connect 0 0 5 0;
+#X connect 1 0 0 0;
+#X connect 2 0 32 0;
+#X connect 2 1 31 0;
+#X connect 5 0 0 1;
+#X connect 5 0 2 0;
+#X connect 6 0 10 0;
+#X connect 7 0 10 0;
+#X connect 8 0 10 0;
+#X connect 9 0 10 0;
+#X connect 10 0 31 0;
+#X connect 10 0 32 0;
+#X connect 11 0 10 0;
+#X connect 12 0 10 0;
+#X connect 15 0 17 0;
+#X connect 15 0 21 0;
+#X connect 15 0 22 0;
+#X connect 15 0 24 0;
+#X connect 15 0 26 0;
+#X connect 15 0 27 0;
+#X connect 15 1 17 1;
+#X connect 15 1 21 1;
+#X connect 15 1 22 1;
+#X connect 15 1 24 1;
+#X connect 15 1 26 1;
+#X connect 15 1 27 1;
+#X connect 16 0 15 0;
+#X connect 17 0 13 0;
+#X connect 19 0 30 0;
+#X connect 20 0 18 0;
+#X connect 21 0 14 0;
+#X connect 22 0 23 0;
+#X connect 24 0 25 0;
+#X connect 26 0 29 0;
+#X connect 27 0 28 0;
+#X connect 30 0 20 0;
+#X connect 31 0 4 0;
+#X connect 32 0 3 0;
diff --git a/externals/gridflow/tests/gf.error-2-test.pd b/externals/gridflow/tests/gf.error-2-test.pd
new file mode 100644
index 00000000..644b92c3
--- /dev/null
+++ b/externals/gridflow/tests/gf.error-2-test.pd
@@ -0,0 +1,6 @@
+#N canvas 145 95 450 300 10;
+#X obj 47 65 gf.error file not open;
+#X msg 47 46 bang;
+#X obj 47 27 inlet;
+#X connect 1 0 0 0;
+#X connect 2 0 1 0;
diff --git a/externals/gridflow/tests/gf.error-test.pd b/externals/gridflow/tests/gf.error-test.pd
new file mode 100644
index 00000000..7c7ef395
--- /dev/null
+++ b/externals/gridflow/tests/gf.error-test.pd
@@ -0,0 +1,4 @@
+#N canvas 630 126 450 300 10;
+#X obj 17 37 gf.error-2-test;
+#X msg 17 18 bang;
+#X connect 1 0 0 0;
diff --git a/externals/gridflow/tests/malloc-test.c b/externals/gridflow/tests/malloc-test.c
new file mode 100644
index 00000000..d5445dcc
--- /dev/null
+++ b/externals/gridflow/tests/malloc-test.c
@@ -0,0 +1,36 @@
+#include <stdlib.h>
+#include <time.h>
+#include <sys/time.h>
+#include <stdio.h>
+
+typedef long long uint64;
+
+uint64 gf_timeofday () {
+ timeval t;
+ gettimeofday(&t,0);
+ return t.tv_sec*1000000+t.tv_usec;
+}
+static void test1 (size_t n) {
+ uint64 t = gf_timeofday();
+ for (int i=0; i<10000; i++) free(malloc(n));
+ t = gf_timeofday() - t;
+ printf("10000 mallocs of %7ld bytes takes %7ld us (%f us/malloc)\n",n,(long)t,t/(float)10000);
+}
+static void test2 (size_t n) {
+ uint64 t = gf_timeofday();
+ // the real calloc is lazy, let's try a manual (strict) calloc
+ //for (int i=0; i<10000; i++) free(calloc(1,n));
+ for (int i=0; i<10000; i++) {
+ long *p = (long *)malloc(n);
+ size_t nn=n/sizeof(long);
+ for (size_t j=0; j<nn; j++) p[j] = 0;
+ free(p);
+ }
+ t = gf_timeofday() - t;
+ printf("10000 callocs of %7ld bytes takes %7ld us (%f us/calloc)\n",n,(long)t,t/(float)10000);
+}
+int main () {
+ for (int i=0; i<20; i++) {test1(4<<i); test2(4<<i);}
+ //for (int i=0; i<20; i++) test1(4096*(32+i));
+ return 0;
+}
diff --git a/externals/gridflow/tests/opencv-test1.pd b/externals/gridflow/tests/opencv-test1.pd
new file mode 100644
index 00000000..7bc67a57
--- /dev/null
+++ b/externals/gridflow/tests/opencv-test1.pd
@@ -0,0 +1,72 @@
+#N canvas 435 74 620 429 10;
+#X obj 332 41 #in g001.jpg;
+#X obj 275 316 #out window;
+#X obj 105 7 t b b;
+#X obj 105 -10 bng 15 250 50 0 empty empty empty 0 -6 0 8 -262144 -1
+-1;
+#X obj 190 339 #out window \, title cv;
+#X obj 399 277 # -;
+#X obj 399 296 # * 16;
+#X obj 399 315 # + 128;
+#X obj 399 334 #clip;
+#X obj 399 353 #out window;
+#X obj 105 31 #in b001.jpg;
+#X obj 190 301 spigot;
+#X obj 275 236 spigot;
+#X obj 415 238 spigot;
+#X obj 354 234 spigot;
+#X obj 451 182 tgl 15 0 empty empty empty 0 -6 0 8 -262144 -1 -1 1
+1;
+#X obj 118 143 realtime;
+#X obj 178 142 #finished;
+#X obj 332 60 t a a;
+#X obj 118 162 nbx 8 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 9
+-262144 -1 -1 26.297 256;
+#X obj 154 117 t a a b;
+#X obj 13 121 realtime;
+#X obj 73 120 #finished;
+#X obj 13 140 nbx 8 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 9
+-262144 -1 -1 26.084 256;
+#X obj 49 95 t a a b;
+#X obj 105 50 t a a;
+#X obj 206 208 cv.Mul;
+#X obj 305 188 # *;
+#X obj 190 320 # >> 8;
+#X obj 275 296 # >> 8;
+#X connect 0 0 18 0;
+#X connect 2 0 10 0;
+#X connect 2 1 0 0;
+#X connect 3 0 2 0;
+#X connect 5 0 6 0;
+#X connect 6 0 7 0;
+#X connect 7 0 8 0;
+#X connect 8 0 9 0;
+#X connect 10 0 25 0;
+#X connect 11 0 28 0;
+#X connect 12 0 29 0;
+#X connect 13 0 5 1;
+#X connect 14 0 5 0;
+#X connect 15 0 13 1;
+#X connect 15 0 14 1;
+#X connect 15 0 12 1;
+#X connect 15 0 11 1;
+#X connect 16 0 19 0;
+#X connect 17 0 16 1;
+#X connect 18 0 26 1;
+#X connect 18 1 27 1;
+#X connect 20 0 17 0;
+#X connect 20 1 27 0;
+#X connect 20 2 16 0;
+#X connect 21 0 23 0;
+#X connect 22 0 21 1;
+#X connect 24 0 22 0;
+#X connect 24 1 26 0;
+#X connect 24 2 21 0;
+#X connect 25 0 24 0;
+#X connect 25 1 20 0;
+#X connect 26 0 11 0;
+#X connect 26 0 14 0;
+#X connect 27 0 12 0;
+#X connect 27 0 13 0;
+#X connect 28 0 4 0;
+#X connect 29 0 1 0;
diff --git a/externals/gridflow/tests/opencv-test2.pd b/externals/gridflow/tests/opencv-test2.pd
new file mode 100644
index 00000000..f1b67fd3
--- /dev/null
+++ b/externals/gridflow/tests/opencv-test2.pd
@@ -0,0 +1,49 @@
+#N canvas 532 160 585 459 10;
+#X obj 401 173 cv.Add (240 320 3 #);
+#X obj 414 212 cv.Sub (240 320 3 #);
+#X msg 412 145 3 3 3 #;
+#X obj 338 135 display;
+#X obj 337 91 #redim (1 1);
+#X obj 337 56 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
+-262144 -1 -1 0 256;
+#X obj 337 72 #pack 1;
+#X floatatom 351 238 5 0 0 0 - - -;
+#X obj 351 274 display;
+#X obj 350 254 # / 3;
+#X obj 337 110 cv.Div (1 1 6 # 3);
+#X obj 22 211 cv.HaarDetectObjects;
+#X obj 22 20 tgl 15 0 empty empty empty 17 7 0 10 -262144 -1 -1 1 1
+;
+#X obj 120 83 #in images/sewing.jpg;
+#X obj 179 189 #out window;
+#X obj 120 121 #cast b;
+#X obj 22 405 fps detailed;
+#X obj 22 424 print;
+#X obj 120 64 loadbang;
+#X obj 192 62 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 22 386 bang;
+#X obj 120 102 #downscale_by 2 smoothly;
+#X obj 22 37 metro 100;
+#X obj 23 245 display;
+#X obj 22 102 #camera;
+#X obj 21 150 #cast b;
+#X connect 2 0 0 0;
+#X connect 4 0 10 0;
+#X connect 5 0 6 0;
+#X connect 6 0 4 0;
+#X connect 7 0 9 0;
+#X connect 9 0 8 0;
+#X connect 10 0 3 0;
+#X connect 11 0 23 0;
+#X connect 12 0 22 0;
+#X connect 13 0 21 0;
+#X connect 16 0 17 0;
+#X connect 18 0 13 0;
+#X connect 19 0 13 0;
+#X connect 20 0 16 0;
+#X connect 21 0 15 0;
+#X connect 22 0 24 0;
+#X connect 24 0 25 0;
+#X connect 25 0 11 0;
+#X connect 25 0 14 0;
diff --git a/externals/gridflow/tests/plotter_control-test.pd b/externals/gridflow/tests/plotter_control-test.pd
new file mode 100644
index 00000000..bff1e2ca
--- /dev/null
+++ b/externals/gridflow/tests/plotter_control-test.pd
@@ -0,0 +1,51 @@
+#N canvas 598 366 622 323 10;
+#X obj 34 101 plotter_control;
+#X obj 122 120 t a;
+#X msg 469 54 42 \, 100 \, -30;
+#X text 439 167 52 50 49 48 48 45 51 48;
+#X obj 34 120 list prepend;
+#X obj 12 12 loadbang;
+#X msg 12 31 bang;
+#X obj 469 73 ascii;
+#X obj 440 148 display;
+#X obj 499 128 list prepend;
+#X obj 439 35 t b b;
+#X obj 439 18 bng 15 250 50 0 empty empty empty 17 7 0 10 -262144 -1
+-1;
+#X obj 439 128 seq_fold;
+#X obj 483 235 #to_symbol;
+#X obj 483 254 #import;
+#X obj 484 274 display;
+#X msg 483 216 65 13 10 66;
+#X msg 34 69 PU \, pd \, pa 200 300 \, SP 3 \, ip 1 2 3 \, other foo
+50 70 \, print hello world \, print_from_ascii 29 29 13 10;
+#X obj 12 158 expect 80 85 59 10 80 68 59 10 80 65 50 48 48 44 51 48
+48 59 10 83 80 51 59 10 73 80 49 44 50 44 51 59 10 70 79 79 53 48 44
+55 48 59 10 76 66 104 101 108 108 111 32 119 111 114 108 100 3 59 10
+76 66 29 29 13 10 3 59 10;
+#X obj 12 50 t b a b;
+#X obj 12 139 list;
+#X obj 13 217 display;
+#X connect 0 0 4 0;
+#X connect 1 0 4 1;
+#X connect 2 0 7 0;
+#X connect 4 0 1 0;
+#X connect 4 0 20 1;
+#X connect 5 0 6 0;
+#X connect 6 0 19 0;
+#X connect 7 0 12 1;
+#X connect 9 0 12 3;
+#X connect 10 1 2 0;
+#X connect 11 0 10 0;
+#X connect 12 0 8 0;
+#X connect 12 1 9 0;
+#X connect 12 2 9 1;
+#X connect 13 0 14 0;
+#X connect 14 0 15 0;
+#X connect 16 0 13 0;
+#X connect 17 0 0 0;
+#X connect 18 0 21 0;
+#X connect 19 0 20 0;
+#X connect 19 1 17 0;
+#X connect 19 2 4 1;
+#X connect 20 0 18 0;
diff --git a/externals/gridflow/tests/plotter_parser-test.pd b/externals/gridflow/tests/plotter_parser-test.pd
new file mode 100644
index 00000000..dd333c1b
--- /dev/null
+++ b/externals/gridflow/tests/plotter_parser-test.pd
@@ -0,0 +1,67 @@
+#N canvas 770 0 450 350 10;
+#X obj 75 101 plotter_parser;
+#X obj 267 102 display;
+#X obj 75 82 #in grid pd.hpgl \, headerless;
+#X obj 75 33 until;
+#X obj 75 16 bng 15 250 50 0 empty empty empty 17 7 0 10 -24198 -1
+-1;
+#X obj 8 16 tgl 15 0 empty empty empty 17 7 0 10 -24198 -1 -1 1 1;
+#X msg 82 60 rewind;
+#X obj 177 101 print bogus;
+#X obj 9 255 #draw_hpgl;
+#X obj 9 280 #out window;
+#X obj 255 238 listread ( 480 640 3 #);
+#X floatatom 255 222 5 0 0 0 - - -;
+#X obj 255 257 listflatten;
+#X obj 256 316 display;
+#X obj 311 282 print;
+#X msg 282 191 2 (3 5 (7) ()) 11;
+#X obj 313 306 list length;
+#X floatatom 313 328 5 0 0 0 - - -;
+#X msg 41 236 255 255 255;
+#X obj 41 217 loadbang;
+#X obj 86 144 print command;
+#X obj 8 33 metro 1;
+#X msg 55 192 480 640 3 #;
+#X obj 9 192 #store;
+#X obj 55 173 loadbang;
+#X obj 86 125 spigot;
+#X obj 132 126 tgl 15 0 empty empty empty 17 7 0 10 -241291 -1 -1 0
+1;
+#X obj 9 299 fps;
+#X floatatom 9 320 5 0 0 0 - - -;
+#X obj 166 18 bng 15 250 50 0 empty empty empty 17 7 0 10 -258699 -1
+-1;
+#X connect 0 0 8 2;
+#X connect 0 0 25 0;
+#X connect 0 1 7 0;
+#X connect 2 0 0 0;
+#X connect 2 1 1 0;
+#X connect 2 1 3 1;
+#X connect 2 1 5 0;
+#X connect 3 0 2 0;
+#X connect 4 0 3 0;
+#X connect 5 0 21 0;
+#X connect 6 0 2 0;
+#X connect 8 0 9 0;
+#X connect 8 0 23 1;
+#X connect 8 1 23 0;
+#X connect 9 0 27 0;
+#X connect 10 0 12 0;
+#X connect 11 0 10 0;
+#X connect 12 0 14 0;
+#X connect 12 0 16 0;
+#X connect 12 0 13 0;
+#X connect 15 0 12 0;
+#X connect 16 0 17 0;
+#X connect 18 0 8 1;
+#X connect 19 0 18 0;
+#X connect 21 0 2 0;
+#X connect 22 0 23 1;
+#X connect 23 0 8 0;
+#X connect 24 0 22 0;
+#X connect 25 0 20 0;
+#X connect 26 0 25 1;
+#X connect 27 0 28 0;
+#X connect 29 0 6 0;
+#X connect 29 0 22 0;
diff --git a/externals/gridflow/tests/range-test.pd b/externals/gridflow/tests/range-test.pd
new file mode 100644
index 00000000..f647b576
--- /dev/null
+++ b/externals/gridflow/tests/range-test.pd
@@ -0,0 +1,35 @@
+#N canvas 425 235 452 370 10;
+#X obj 136 103 range 20 50 100;
+#X obj 83 25 vsl 15 128 0 127 0 0 empty empty empty -2 -6 0 8 -262144
+-1 -1 0 1;
+#X obj 157 71 nbx 5 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 10
+-262144 -1 -1 0 256;
+#X floatatom 138 48 5 0 0 0 - - -;
+#X obj 236 129 print d;
+#X obj 202 149 print c;
+#X obj 169 170 print b;
+#X obj 136 190 print a;
+#X msg 125 27 -1000 \, -1 \, 0 \, 19 \, 20 \, 49 \, 50 \, 99 \, 100
+\, 1000;
+#X obj 125 8 loadbang;
+#X text 17 186 a: -1000;
+#X text 17 199 a: -1;
+#X text 17 212 a: 0;
+#X text 17 224 a: 19;
+#X text 17 236 b: 20;
+#X text 17 249 b: 49;
+#X text 17 262 c: 50;
+#X text 17 276 c: 99;
+#X text 17 290 d: 100;
+#X text 17 303 d: 1000;
+#X msg 236 72 500;
+#X connect 0 0 7 0;
+#X connect 0 1 6 0;
+#X connect 0 2 5 0;
+#X connect 0 3 4 0;
+#X connect 1 0 0 0;
+#X connect 2 0 0 0;
+#X connect 3 0 0 0;
+#X connect 8 0 0 0;
+#X connect 9 0 8 0;
+#X connect 20 0 0 3;
diff --git a/externals/gridflow/tests/suppressions.valg3 b/externals/gridflow/tests/suppressions.valg3
new file mode 100644
index 00000000..3a425765
--- /dev/null
+++ b/externals/gridflow/tests/suppressions.valg3
@@ -0,0 +1,201 @@
+{
+ dl1
+ Memcheck:Addr8
+ obj:/lib/ld-2.3.5.so
+ obj:/lib/ld-2.3.5.so
+ obj:/lib/ld-2.3.5.so
+}
+{
+ unknown1
+ Memcheck:Cond
+ obj:/lib/ld-2.3.5.so
+ obj:/lib/ld-2.3.5.so
+ obj:/lib/ld-2.3.5.so
+ obj:/lib/ld-2.3.5.so
+ obj:/lib/ld-2.3.5.so
+}
+{
+ unknown2
+ Memcheck:Cond
+ obj:/lib/ld-2.3.5.so
+ obj:/lib/tls/i686/cmov/libc-2.3.5.so
+ obj:/lib/ld-2.3.5.so
+ fun:_dl_open
+ obj:/lib/tls/i686/cmov/libdl-2.3.5.so
+}
+{
+ unknown3
+ Memcheck:Cond
+ obj:/lib/ld-2.3.5.so
+ obj:/lib/ld-2.3.5.so
+ obj:/lib/tls/i686/cmov/libc-2.3.5.so
+ obj:/lib/ld-2.3.5.so
+ fun:_dl_open
+}
+{
+ libX11
+ Memcheck:Param
+ write(buf)
+ obj:/lib/ld-2.3.5.so
+ fun:__write_nocancel
+ obj:/usr/lib/libX11.so.6.2.0
+ fun:_X11TransWrite
+}
+{
+ alsa1
+ Memcheck:Addr1
+ fun:strlen
+ fun:vfprintf
+ fun:vsprintf
+ fun:sprintf
+ fun:alsa_getdevs
+}
+{
+ alsa2
+ Memcheck:Addr1
+ fun:_IO_default_xsputn
+ fun:vfprintf
+ fun:vsprintf
+ fun:sprintf
+ fun:alsa_getdevs
+}
+{
+ alsa3
+ Memcheck:Addr2
+ fun:mempcpy
+ fun:vfprintf
+ fun:vsprintf
+ fun:sprintf
+ fun:alsa_getdevs
+}
+{
+ alsa4
+ Memcheck:Param
+ ioctl(arg)
+ obj:/lib/ld-2.3.6.so
+ fun:snd_pcm_prepare
+ fun:snd_pcm_hw_params
+ fun:alsaio_setup
+ fun:alsa_open_audio
+ obj:*
+}
+{
+ alsa5
+ Memcheck:Param
+ ioctl(generic)
+ obj:/lib/ld-2.3.6.so
+ fun:snd_pcm_link
+ fun:alsa_open_audio
+ obj:*
+}
+{
+ alsa6
+ Memcheck:Param
+ ioctl(arg)
+ obj:/lib/ld-2.3.6.so
+ fun:snd_pcm_prepare
+ fun:alsa_send_dacs
+}
+{
+ alsa7
+ Memcheck:Addr4
+ fun:mempcpy
+ fun:vfprintf
+ fun:vsprintf
+ fun:sprintf
+ fun:alsa_getdevs
+}
+{
+ alsa8
+ Memcheck:Param
+ ioctl(arg)
+ obj:/lib/ld-2.3.6.so
+ fun:snd_pcm_prepare
+ fun:alsa_open_audio
+ obj:*
+}
+{
+ alsa9
+ Memcheck:Leak
+ fun:malloc
+ fun:snd_dlobj_cache_add
+ obj:/usr/lib/libasound.so.2.0.0
+ fun:alsa_getdevs
+}
+{
+ alsa10
+ Memcheck:Leak
+ fun:calloc
+ fun:snd_ctl_new
+ fun:snd_ctl_hw_open
+ fun:_snd_ctl_hw_open
+ obj:/usr/lib/libasound.so.2.0.0
+ fun:alsa_getdevs
+}
+{
+ alsa11
+ Memcheck:Leak
+ fun:calloc
+ obj:/usr/lib/libasound.so.2.0.0
+ obj:/usr/lib/libasound.so.2.0.0
+ obj:/usr/lib/libasound.so.2.0.0
+ obj:/usr/lib/libasound.so.2.0.0
+ obj:/usr/lib/libasound.so.2.0.0
+ obj:/usr/lib/libasound.so.2.0.0
+ obj:/usr/lib/libasound.so.2.0.0
+ fun:snd_config_update_r
+ fun:snd_config_update
+ fun:snd_ctl_open
+ fun:alsa_getdevs
+}
+{
+ dlopen1
+ Memcheck:Cond
+ obj:/lib/ld-2.3.6.so
+ obj:/lib/tls/i686/cmov/libc-2.3.6.so
+ obj:/lib/ld-2.3.6.so
+ fun:_dl_open
+}
+{
+ dlopen2
+ Memcheck:Cond
+ obj:/lib/ld-2.3.6.so
+ obj:/lib/ld-2.3.6.so
+ obj:/lib/ld-2.3.6.so
+ obj:/lib/tls/i686/cmov/libc-2.3.6.so
+ obj:/lib/ld-2.3.6.so
+ fun:_dl_open
+}
+{
+ fclass1
+ Memcheck:Leak
+ fun:*
+ fun:*
+ fun:_Z14fclass_installP6FClassS0_j
+}
+{
+ fclass2
+ Memcheck:Leak
+ fun:malloc
+ fun:strdup
+ fun:_Z12suffixes_arePKcS0_
+ fun:_Z17FormatX11_startupP6FClass
+ fun:_Z14fclass_installP6FClassS0_j
+ fun:_Z11startup_x11v
+}
+{
+ cv1
+ Memcheck:Leak
+ fun:malloc
+ obj:/lib/ld-2.3.6.so
+ fun:_dl_open
+ obj:/lib/tls/i686/cmov/libdl-2.3.6.so
+ obj:/lib/ld-2.3.6.so
+ obj:/lib/tls/i686/cmov/libdl-2.3.6.so
+ fun:dlopen
+ fun:cvUseOptimized
+ fun:cvRegisterModule
+ fun:_ZN8CvModuleC1EP12CvModuleInfo
+ obj:/home/matju/lib/libcxcore.so.2.0.0
+ obj:/lib/ld-2.3.6.so
+}