From 87cb705fcb2a0736b79c5a6d9d13998156328e93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?C=C3=A9dric=20Pasteur?= Date: Fri, 9 Jul 2010 10:35:54 +0200 Subject: [PATCH] Added some tests file - Arrays, parametrized nodes - hierarchie.ept is a node with nested automaton (generated a lot of variables, good test for performance) --- test/good/array1.ept | 39 ++++++++++++++++++++++++++++++ test/good/array2.ept | 19 +++++++++++++++ test/good/array_iterators.ept | 45 +++++++++++++++++++++++++++++++++++ test/good/hierarchie.ept | 43 +++++++++++++++++++++++++++++++++ test/good/parametrize.ept | 30 +++++++++++++++++++++++ 5 files changed, 176 insertions(+) create mode 100644 test/good/array1.ept create mode 100644 test/good/array2.ept create mode 100644 test/good/array_iterators.ept create mode 100644 test/good/hierarchie.ept create mode 100644 test/good/parametrize.ept diff --git a/test/good/array1.ept b/test/good/array1.ept new file mode 100644 index 0000000..09867e6 --- /dev/null +++ b/test/good/array1.ept @@ -0,0 +1,39 @@ +const n:int = 42 +const m:int = 52 + +node concatenate(a:int^n; b:int^m) returns (o1, o2: int^(n+m)) +let + o1 = a @ b; + o2 = b @ a; +tel +(* +node slicing (a:int^n) returns (u1,u2 : int^3) +let + u1 = a[0 .. 2]; + u2 = a[3 .. 5]; +tel + +node elt (a:int^m) returns (o:int^m) +var x : int; +let + x = a[2] + 1; + o = [ a with [1] = x ]; +tel + +node elt_dyn (a:int^m; i:int) returns (o:int^m) +var x : int; +let + x = a.[i] default 3; + o = [ a with [1] = x ]; +tel + +node ten (i: int) returns (o:int^m) +let + o = i^m; +tel + +node constant(a,b:int) returns (o:int^4) +let + o = [a,b,a,b]; +tel +*) \ No newline at end of file diff --git a/test/good/array2.ept b/test/good/array2.ept new file mode 100644 index 0000000..6cbff71 --- /dev/null +++ b/test/good/array2.ept @@ -0,0 +1,19 @@ +const n:int = 43 + +node f(a:int^n; i:int) returns (o:int^n; m:int) +let + m = a.[i] default 0; + o = i^n; +tel + +node sumdup (a, acc_in:int) returns (o:int; acc_out:int) +let + acc_out = acc_in + a; + o = acc_out; +tel + +node p(a:int^n) returns (o:int^n) +var acc:int; +let + (o, acc) = mapfold sumdup <>(a, 0); +tel diff --git a/test/good/array_iterators.ept b/test/good/array_iterators.ept new file mode 100644 index 0000000..56d5c1d --- /dev/null +++ b/test/good/array_iterators.ept @@ -0,0 +1,45 @@ +const n:int = 42 + +node plusone(a:int) returns (o:int) +let + o = a+1; +tel + +node g(a:int^n) returns (o:int^n) +let + o = map plusone <>(a); +tel + +node sum_acc (a, acc_in:int) returns (acc_out:int) +let + acc_out = acc_in + a; +tel + +node h(a:int^n) returns (m:int) +let + m = fold sum_acc <>(a, 0); +tel + +node sum_dup (a, acc_in:int) returns (o:int; acc_out:int) +let + acc_out = acc_in + a; + o = acc_out; +tel + +node p(a:int^n) returns (o:int^n) +var acc:int; +let + (o, acc) = mapfold sum_dup <>(a, 0); +tel + +node k(a,b:int^n) returns (o:int^n) +let + o = map (+) <>(a,b); +tel + +node iter_reset(a:int^n; r:bool) returns (o:int^n) +let + reset + o = map plusone <>(a); + every r +tel \ No newline at end of file diff --git a/test/good/hierarchie.ept b/test/good/hierarchie.ept new file mode 100644 index 0000000..53bdd9d --- /dev/null +++ b/test/good/hierarchie.ept @@ -0,0 +1,43 @@ +node ssm(i1: bool; i2: bool; i3: bool; i4: bool) + returns (o1: bool; o2: bool; o3: bool; o4: bool) +let + automaton + state State1 + do o1 = false; o2 = false; o3 = false; o4 = false + until i1 then TMP12 + unless i2 then TMP11 + state TMP11 + do o1 = false; o2 = true; o3 = false; o4 = false; + until true then State3 + state TMP12 + do o1 = true; o2 = true; o3 = false; o4 = false; + until true then State2 + + state State3 + var last end1: bool = false; last end2: bool = false; + do o1 = false; o2 = false; o3 = false; o4 = false; + automaton + state State1_1 + do until i3 then State2_1 + state State2_1 + do end1 = true; + end; + automaton + state State1_2 + do unless i4 then State2_2 + state State2_2 + do end2 = true + end + until end1 & end2 then State1 + unless i1 then State4 + | i2 then State2 + state State2 + var l1: bool; + do o1 = false; o2 = false; o3 = false; o4 = l1; l1 = true; + until i4 then State4 + state State4 + var l2: bool; + do o1 = false; o2 = false; o3 = l2; o4 = false; l2 = true; + until i4 then State4 + end +tel diff --git a/test/good/parametrize.ept b/test/good/parametrize.ept new file mode 100644 index 0000000..26baebc --- /dev/null +++ b/test/good/parametrize.ept @@ -0,0 +1,30 @@ +const n:int = 42 +const l:int = 2 +const z:int = n + 3 + +node f(a:int^z) returns (m:int) +let + m = a[1] +tel + +node g<>(a:int^m) returns (o:int) +let + o = a[12 - l] + m; +tel + +node h(a:int^n; b:int^z) returns (o,m:int) +let + o = g<>(a); + m = g<>(b); +tel + +node l<>(a:int^m) returns (o:int^m) +let + o = [ a with [11] = 0 ]; +tel + +node p(a:int^n^n) returns (o:int^n^n) +let + o = map (l<>) <>(a); +tel +