summaryrefslogtreecommitdiff
path: root/test/ken
diff options
context:
space:
mode:
Diffstat (limited to 'test/ken')
-rw-r--r--test/ken/array.go163
-rw-r--r--test/ken/chan.go342
-rw-r--r--test/ken/string.go102
3 files changed, 301 insertions, 306 deletions
diff --git a/test/ken/array.go b/test/ken/array.go
index 9600e8a1a..7785cdf8f 100644
--- a/test/ken/array.go
+++ b/test/ken/array.go
@@ -4,141 +4,130 @@
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
-package main
+package main
-func
-setpd(a []int) {
-// print("setpd a=", a, " len=", len(a), " cap=", cap(a), "\n");
- for i:=0; i<len(a); i++ {
- a[i] = i;
+func setpd(a []int) {
+ // print("setpd a=", a, " len=", len(a), " cap=", cap(a), "\n");
+ for i := 0; i < len(a); i++ {
+ a[i] = i
}
}
-func
-sumpd(a []int) int {
-// print("sumpd a=", a, " len=", len(a), " cap=", cap(a), "\n");
- t := 0;
- for i:=0; i<len(a); i++ {
- t += a[i];
+func sumpd(a []int) int {
+ // print("sumpd a=", a, " len=", len(a), " cap=", cap(a), "\n");
+ t := 0
+ for i := 0; i < len(a); i++ {
+ t += a[i]
}
-// print("sumpd t=", t, "\n");
- return t;
+ // print("sumpd t=", t, "\n");
+ return t
}
-func
-setpf(a *[20]int) {
-// print("setpf a=", a, " len=", len(a), " cap=", cap(a), "\n");
- for i:=0; i<len(a); i++ {
- a[i] = i;
+func setpf(a *[20]int) {
+ // print("setpf a=", a, " len=", len(a), " cap=", cap(a), "\n");
+ for i := 0; i < len(a); i++ {
+ a[i] = i
}
}
-func
-sumpf(a *[20]int) int {
-// print("sumpf a=", a, " len=", len(a), " cap=", cap(a), "\n");
- t := 0;
- for i:=0; i<len(a); i++ {
- t += a[i];
+func sumpf(a *[20]int) int {
+ // print("sumpf a=", a, " len=", len(a), " cap=", cap(a), "\n");
+ t := 0
+ for i := 0; i < len(a); i++ {
+ t += a[i]
}
-// print("sumpf t=", t, "\n");
- return t;
+ // print("sumpf t=", t, "\n");
+ return t
}
-func
-res(t int, lb, hb int) {
- sb := (hb-lb)*(hb+lb-1)/2;
+func res(t int, lb, hb int) {
+ sb := (hb - lb) * (hb + lb - 1) / 2
if t != sb {
- print( "lb=", lb,
+ print("lb=", lb,
"; hb=", hb,
"; t=", t,
"; sb=", sb,
- "\n");
+ "\n")
panic("res")
}
}
// call ptr dynamic with ptr dynamic
-func
-testpdpd() {
- a := make([]int, 10, 100);
+func testpdpd() {
+ a := make([]int, 10, 100)
if len(a) != 10 && cap(a) != 100 {
- panic("len and cap from new: ", len(a), " ", cap(a), "\n");
+ print("len and cap from new: ", len(a), " ", cap(a), "\n")
+ panic("fail")
}
- a = a[0:100];
- setpd(a);
+ a = a[0:100]
+ setpd(a)
- a = a[0:10];
- res(sumpd(a), 0, 10);
+ a = a[0:10]
+ res(sumpd(a), 0, 10)
- a = a[5:25];
- res(sumpd(a), 5, 25);
+ a = a[5:25]
+ res(sumpd(a), 5, 25)
}
// call ptr fixed with ptr fixed
-func
-testpfpf() {
- var a [20]int;
+func testpfpf() {
+ var a [20]int
- setpf(&a);
- res(sumpf(&a), 0, 20);
+ setpf(&a)
+ res(sumpf(&a), 0, 20)
}
// call ptr dynamic with ptr fixed from new
-func
-testpdpf1() {
- a := new([40]int);
- setpd(a);
- res(sumpd(a), 0, 40);
-
- b := (*a)[5:30];
- res(sumpd(b), 5, 30);
+func testpdpf1() {
+ a := new([40]int)
+ setpd(a)
+ res(sumpd(a), 0, 40)
+
+ b := (*a)[5:30]
+ res(sumpd(b), 5, 30)
}
// call ptr dynamic with ptr fixed from var
-func
-testpdpf2() {
- var a [80]int;
+func testpdpf2() {
+ var a [80]int
- setpd(&a);
- res(sumpd(&a), 0, 80);
+ setpd(&a)
+ res(sumpd(&a), 0, 80)
}
// generate bounds error with ptr dynamic
-func
-testpdfault() {
- a := make([]int, 100);
+func testpdfault() {
+ a := make([]int, 100)
- print("good\n");
- for i:=0; i<100; i++ {
- a[i] = 0;
+ print("good\n")
+ for i := 0; i < 100; i++ {
+ a[i] = 0
}
- print("should fault\n");
- a[100] = 0;
- print("bad\n");
+ print("should fault\n")
+ a[100] = 0
+ print("bad\n")
}
// generate bounds error with ptr fixed
-func
-testfdfault() {
- var a [80]int;
+func testfdfault() {
+ var a [80]int
- print("good\n");
- for i:=0; i<80; i++ {
- a[i] = 0;
+ print("good\n")
+ for i := 0; i < 80; i++ {
+ a[i] = 0
}
- print("should fault\n");
- x := 80;
- a[x] = 0;
- print("bad\n");
+ print("should fault\n")
+ x := 80
+ a[x] = 0
+ print("bad\n")
}
-func
-main() {
- testpdpd();
- testpfpf();
- testpdpf1();
- testpdpf2();
-// print("testpdfault\n"); testpdfault();
-// print("testfdfault\n"); testfdfault();
+func main() {
+ testpdpd()
+ testpfpf()
+ testpdpf1()
+ testpdpf2()
+ // print("testpdfault\n"); testpdfault();
+ // print("testfdfault\n"); testfdfault();
}
diff --git a/test/ken/chan.go b/test/ken/chan.go
index 7504b4968..ef75b044d 100644
--- a/test/ken/chan.go
+++ b/test/ken/chan.go
@@ -10,36 +10,33 @@ import "os"
import "runtime"
import "sync"
-var randx int;
+var randx int
-func
-nrand(n int) int {
- randx += 10007;
+func nrand(n int) int {
+ randx += 10007
if randx >= 1000000 {
- randx -= 1000000;
+ randx -= 1000000
}
- return randx%n;
+ return randx % n
}
-type Chan struct {
- sc,rc chan int; // send and recv chan
- sv,rv int; // send and recv seq
+type Chan struct {
+ sc, rc chan int // send and recv chan
+ sv, rv int // send and recv seq
}
-var
-(
- nproc int;
- nprocLock sync.Mutex;
- cval int;
- end int = 10000;
- totr,tots int;
- totLock sync.Mutex;
- nc *Chan;
+var (
+ nproc int
+ nprocLock sync.Mutex
+ cval int
+ end int = 10000
+ totr, tots int
+ totLock sync.Mutex
+ nc *Chan
)
-func
-init() {
- nc = new(Chan);
+func init() {
+ nc = new(Chan)
}
func changeNproc(adjust int) int {
@@ -50,280 +47,283 @@ func changeNproc(adjust int) int {
return ret
}
-func
-mkchan(c,n int) []*Chan {
- ca := make([]*Chan, n);
- for i:=0; i<n; i++ {
- cval = cval+100;
- ch := new(Chan);
- ch.sc = make(chan int, c);
- ch.rc = ch.sc;
- ch.sv = cval;
- ch.rv = cval;
- ca[i] = ch;
+func mkchan(c, n int) []*Chan {
+ ca := make([]*Chan, n)
+ for i := 0; i < n; i++ {
+ cval = cval + 100
+ ch := new(Chan)
+ ch.sc = make(chan int, c)
+ ch.rc = ch.sc
+ ch.sv = cval
+ ch.rv = cval
+ ca[i] = ch
}
- return ca;
+ return ca
}
-func
-expect(v, v0 int) (newv int) {
+func expect(v, v0 int) (newv int) {
if v == v0 {
if v%100 == 75 {
- return end;
+ return end
}
- return v+1;
+ return v + 1
}
- panic("got ", v, " expected ", v0+1, "\n");
+ print("got ", v, " expected ", v0+1, "\n")
+ panic("fail")
}
func (c *Chan) send() bool {
-// print("send ", c.sv, "\n");
- totLock.Lock();
- tots++;
- totLock.Unlock();
- c.sv = expect(c.sv, c.sv);
+ // print("send ", c.sv, "\n");
+ totLock.Lock()
+ tots++
+ totLock.Unlock()
+ c.sv = expect(c.sv, c.sv)
if c.sv == end {
- c.sc = nil;
- return true;
+ c.sc = nil
+ return true
}
- return false;
+ return false
}
-func
-send(c *Chan) {
+func send(c *Chan) {
for {
- for r:=nrand(10); r>=0; r-- {
- runtime.Gosched();
+ for r := nrand(10); r >= 0; r-- {
+ runtime.Gosched()
}
- c.sc <- c.sv;
+ c.sc <- c.sv
if c.send() {
- break;
+ break
}
}
changeNproc(-1)
}
func (c *Chan) recv(v int) bool {
-// print("recv ", v, "\n");
- totLock.Lock();
- totr++;
- totLock.Unlock();
- c.rv = expect(c.rv, v);
+ // print("recv ", v, "\n");
+ totLock.Lock()
+ totr++
+ totLock.Unlock()
+ c.rv = expect(c.rv, v)
if c.rv == end {
- c.rc = nil;
- return true;
+ c.rc = nil
+ return true
}
- return false;
+ return false
}
-func
-recv(c *Chan) {
- var v int;
+func recv(c *Chan) {
+ var v int
for {
- for r:=nrand(10); r>=0; r-- {
- runtime.Gosched();
+ for r := nrand(10); r >= 0; r-- {
+ runtime.Gosched()
}
- v = <-c.rc;
+ v = <-c.rc
if c.recv(v) {
- break;
+ break
}
}
- changeNproc(-1);
+ changeNproc(-1)
}
-func
-sel(r0,r1,r2,r3, s0,s1,s2,s3 *Chan) {
- var v int;
+func sel(r0, r1, r2, r3, s0, s1, s2, s3 *Chan) {
+ var v int
- a := 0; // local chans running
+ a := 0 // local chans running
- if r0.rc != nil { a++ }
- if r1.rc != nil { a++ }
- if r2.rc != nil { a++ }
- if r3.rc != nil { a++ }
- if s0.sc != nil { a++ }
- if s1.sc != nil { a++ }
- if s2.sc != nil { a++ }
- if s3.sc != nil { a++ }
+ if r0.rc != nil {
+ a++
+ }
+ if r1.rc != nil {
+ a++
+ }
+ if r2.rc != nil {
+ a++
+ }
+ if r3.rc != nil {
+ a++
+ }
+ if s0.sc != nil {
+ a++
+ }
+ if s1.sc != nil {
+ a++
+ }
+ if s2.sc != nil {
+ a++
+ }
+ if s3.sc != nil {
+ a++
+ }
for {
- for r:=nrand(5); r>=0; r-- {
- runtime.Gosched();
+ for r := nrand(5); r >= 0; r-- {
+ runtime.Gosched()
}
select {
case v = <-r0.rc:
if r0.recv(v) {
- a--;
+ a--
}
case v = <-r1.rc:
if r1.recv(v) {
- a--;
+ a--
}
case v = <-r2.rc:
if r2.recv(v) {
- a--;
+ a--
}
case v = <-r3.rc:
if r3.recv(v) {
- a--;
+ a--
}
case s0.sc <- s0.sv:
if s0.send() {
- a--;
+ a--
}
case s1.sc <- s1.sv:
if s1.send() {
- a--;
+ a--
}
case s2.sc <- s2.sv:
if s2.send() {
- a--;
+ a--
}
case s3.sc <- s3.sv:
if s3.send() {
- a--;
+ a--
}
}
if a == 0 {
- break;
+ break
}
}
- changeNproc(-1);
+ changeNproc(-1)
}
// direct send to direct recv
-func
-test1(c *Chan) {
+func test1(c *Chan) {
changeNproc(2)
- go send(c);
- go recv(c);
+ go send(c)
+ go recv(c)
}
// direct send to select recv
-func
-test2(c int) {
- ca := mkchan(c,4);
+func test2(c int) {
+ ca := mkchan(c, 4)
changeNproc(4)
- go send(ca[0]);
- go send(ca[1]);
- go send(ca[2]);
- go send(ca[3]);
+ go send(ca[0])
+ go send(ca[1])
+ go send(ca[2])
+ go send(ca[3])
changeNproc(1)
- go sel(ca[0],ca[1],ca[2],ca[3], nc,nc,nc,nc);
+ go sel(ca[0], ca[1], ca[2], ca[3], nc, nc, nc, nc)
}
// select send to direct recv
-func
-test3(c int) {
- ca := mkchan(c,4);
+func test3(c int) {
+ ca := mkchan(c, 4)
changeNproc(4)
- go recv(ca[0]);
- go recv(ca[1]);
- go recv(ca[2]);
- go recv(ca[3]);
+ go recv(ca[0])
+ go recv(ca[1])
+ go recv(ca[2])
+ go recv(ca[3])
changeNproc(1)
- go sel(nc,nc,nc,nc, ca[0],ca[1],ca[2],ca[3]);
+ go sel(nc, nc, nc, nc, ca[0], ca[1], ca[2], ca[3])
}
// select send to select recv
-func
-test4(c int) {
- ca := mkchan(c,4);
+func test4(c int) {
+ ca := mkchan(c, 4)
changeNproc(2)
- go sel(nc,nc,nc,nc, ca[0],ca[1],ca[2],ca[3]);
- go sel(ca[0],ca[1],ca[2],ca[3], nc,nc,nc,nc);
+ go sel(nc, nc, nc, nc, ca[0], ca[1], ca[2], ca[3])
+ go sel(ca[0], ca[1], ca[2], ca[3], nc, nc, nc, nc)
}
-func
-test5(c int) {
- ca := mkchan(c,8);
+func test5(c int) {
+ ca := mkchan(c, 8)
changeNproc(2)
- go sel(ca[4],ca[5],ca[6],ca[7], ca[0],ca[1],ca[2],ca[3]);
- go sel(ca[0],ca[1],ca[2],ca[3], ca[4],ca[5],ca[6],ca[7]);
+ go sel(ca[4], ca[5], ca[6], ca[7], ca[0], ca[1], ca[2], ca[3])
+ go sel(ca[0], ca[1], ca[2], ca[3], ca[4], ca[5], ca[6], ca[7])
}
-func
-test6(c int) {
- ca := mkchan(c,12);
+func test6(c int) {
+ ca := mkchan(c, 12)
changeNproc(4)
- go send(ca[4]);
- go send(ca[5]);
- go send(ca[6]);
- go send(ca[7]);
+ go send(ca[4])
+ go send(ca[5])
+ go send(ca[6])
+ go send(ca[7])
changeNproc(4)
- go recv(ca[8]);
- go recv(ca[9]);
- go recv(ca[10]);
- go recv(ca[11]);
+ go recv(ca[8])
+ go recv(ca[9])
+ go recv(ca[10])
+ go recv(ca[11])
changeNproc(2)
- go sel(ca[4],ca[5],ca[6],ca[7], ca[0],ca[1],ca[2],ca[3]);
- go sel(ca[0],ca[1],ca[2],ca[3], ca[8],ca[9],ca[10],ca[11]);
+ go sel(ca[4], ca[5], ca[6], ca[7], ca[0], ca[1], ca[2], ca[3])
+ go sel(ca[0], ca[1], ca[2], ca[3], ca[8], ca[9], ca[10], ca[11])
}
// wait for outstanding tests to finish
-func
-wait() {
- runtime.Gosched();
+func wait() {
+ runtime.Gosched()
for changeNproc(0) != 0 {
- runtime.Gosched();
+ runtime.Gosched()
}
}
// run all tests with specified buffer size
-func
-tests(c int) {
- ca := mkchan(c,4);
- test1(ca[0]);
- test1(ca[1]);
- test1(ca[2]);
- test1(ca[3]);
- wait();
+func tests(c int) {
+ ca := mkchan(c, 4)
+ test1(ca[0])
+ test1(ca[1])
+ test1(ca[2])
+ test1(ca[3])
+ wait()
- test2(c);
- wait();
+ test2(c)
+ wait()
- test3(c);
- wait();
+ test3(c)
+ wait()
- test4(c);
- wait();
+ test4(c)
+ wait()
- test5(c);
- wait();
+ test5(c)
+ wait()
- test6(c);
- wait();
+ test6(c)
+ wait()
}
// run all test with 4 buffser sizes
-func
-main() {
+func main() {
- tests(0);
- tests(1);
- tests(10);
- tests(100);
+ tests(0)
+ tests(1)
+ tests(10)
+ tests(100)
- t := 4 * // buffer sizes
- ( 4*4 + // tests 1,2,3,4 channels
- 8 + // test 5 channels
- 12 ) * // test 6 channels
- 76; // sends/recvs on a channel
+ t := 4 * // buffer sizes
+ (4*4 + // tests 1,2,3,4 channels
+ 8 + // test 5 channels
+ 12) * // test 6 channels
+ 76 // sends/recvs on a channel
if tots != t || totr != t {
- print("tots=", tots, " totr=", totr, " sb=", t, "\n");
- os.Exit(1);
+ print("tots=", tots, " totr=", totr, " sb=", t, "\n")
+ os.Exit(1)
}
- os.Exit(0);
+ os.Exit(0)
}
diff --git a/test/ken/string.go b/test/ken/string.go
index 14617de9c..6c15b1616 100644
--- a/test/ken/string.go
+++ b/test/ken/string.go
@@ -7,106 +7,112 @@
package main
-func
-main() {
- var c string;
+func main() {
+ var c string
- a := `abc`;
- b := `xyz`;
+ a := `abc`
+ b := `xyz`
/* print a literal */
- print(`abc`);
+ print(`abc`)
/* print a variable */
- print(b, "-");
+ print(b, "-")
/* catenate literals */
- print(`abc` + `xyz`, "-");
+ print(`abc`+`xyz`, "-")
/* catenate variables */
- print(a+b, "-");
+ print(a+b, "-")
/* compare literals */
if `abc` == `xyz` || `abc` != "abc" || `abc` > `xyz` {
- panic("compare literals");
+ panic("compare literals")
}
/* compare variables */
if a == b || a != a || a > b {
- panic("compare variables");
+ panic("compare variables")
}
/* cat */
- c = a+b;
- print(c, "-");
+ c = a + b
+ print(c, "-")
/* catequal */
- c = a;
- c += b;
- print(c, "-");
+ c = a
+ c += b
+ print(c, "-")
/* clumsy evaluation */
- c = b;
- c = a + c;
- print(c, "-");
+ c = b
+ c = a + c
+ print(c, "-")
/* len */
if len(c) != 6 {
- panic("len ", len(c));
+ print("len ", len(c))
+ panic("fail")
}
/* index strings */
- for i:=0; i<len(c); i=i+1 {
- if c[i] != (a+b)[i] {
- panic("index ", i, " ", c[i], " ", (a+b)[i]);
+ for i := 0; i < len(c); i = i + 1 {
+ if c[i] != (a + b)[i] {
+ print("index ", i, " ", c[i], " ", (a + b)[i])
+ panic("fail")
}
}
/* slice strings */
- print(c[0:3], c[3:]);
+ print(c[0:3], c[3:])
- print("\n");
+ print("\n")
/* create string with integer constant */
- c = string('x');
+ c = string('x')
if c != "x" {
- panic("create int ", c);
+ print("create int ", c)
+ panic("fail")
}
/* create string with integer variable */
- v := 'x';
- c = string(v);
+ v := 'x'
+ c = string(v)
if c != "x" {
- panic("create int ", c);
+ print("create int ", c)
+ panic("fail")
}
/* create string with byte array */
- var z1 [3]byte;
- z1[0] = 'a';
- z1[1] = 'b';
- z1[2] = 'c';
- c = string(&z1);
+ var z1 [3]byte
+ z1[0] = 'a'
+ z1[1] = 'b'
+ z1[2] = 'c'
+ c = string(&z1)
if c != "abc" {
- panic("create byte array ", c);
+ print("create byte array ", c)
+ panic("fail")
}
/* create string with int array */
- var z2 [3]int;
- z2[0] = 'a';
- z2[1] = '\u1234';
- z2[2] = 'c';
- c = string(&z2);
+ var z2 [3]int
+ z2[0] = 'a'
+ z2[1] = '\u1234'
+ z2[2] = 'c'
+ c = string(&z2)
if c != "a\u1234c" {
- panic("create int array ", c);
+ print("create int array ", c)
+ panic("fail")
}
/* create string with byte array pointer */
- z3 := new([3]byte);
- z3[0] = 'a';
- z3[1] = 'b';
- z3[2] = 'c';
- c = string(z3);
+ z3 := new([3]byte)
+ z3[0] = 'a'
+ z3[1] = 'b'
+ z3[2] = 'c'
+ c = string(z3)
if c != "abc" {
- panic("create array pointer ", c);
+ print("create array pointer ", c)
+ panic("fail")
}
}