diff options
Diffstat (limited to 'misc/cgo/test/basic.go')
-rw-r--r-- | misc/cgo/test/basic.go | 47 |
1 files changed, 28 insertions, 19 deletions
diff --git a/misc/cgo/test/basic.go b/misc/cgo/test/basic.go index b9d0953bd..70ec5e43a 100644 --- a/misc/cgo/test/basic.go +++ b/misc/cgo/test/basic.go @@ -48,10 +48,14 @@ struct ibv_async_event { struct ibv_context { xxpthread_mutex_t mutex; }; + +int add(int x, int y) { + return x+y; +}; */ import "C" import ( - "os" + "syscall" "testing" "unsafe" ) @@ -65,18 +69,7 @@ func uuidgen() { C.uuid_generate(&uuid[0]) } -func Size(name string) (int64, os.Error) { - var st C.struct_stat - p := C.CString(name) - _, err := C.stat(p, &st) - C.free(unsafe.Pointer(p)) - if err != nil { - return 0, err - } - return int64(C.ulong(st.st_size)), nil -} - -func Strtol(s string, base int) (int, os.Error) { +func Strtol(s string, base int) (int, error) { p := C.CString(s) n, err := C.strtol(p, nil, C.int(base)) C.free(unsafe.Pointer(p)) @@ -108,9 +101,17 @@ func testAtol(t *testing.T) { } func testErrno(t *testing.T) { - n, err := Strtol("asdf", 123) - if n != 0 || err != os.EINVAL { - t.Error("Strtol: ", n, err) + p := C.CString("no-such-file") + m := C.CString("r") + f, err := C.fopen(p, m) + C.free(unsafe.Pointer(p)) + C.free(unsafe.Pointer(m)) + if err == nil { + C.fclose(f) + t.Fatalf("C.fopen: should fail") + } + if err != syscall.ENOENT { + t.Fatalf("C.fopen: unexpected error: %v", err) } } @@ -124,11 +125,19 @@ func testMultipleAssign(t *testing.T) { } var ( - uint = (C.uint)(0) - ulong C.ulong - char C.char + cuint = (C.uint)(0) + culong C.ulong + cchar C.char ) type Context struct { ctx *C.struct_ibv_context } + +func benchCgoCall(b *testing.B) { + const x = C.int(2) + const y = C.int(3) + for i := 0; i < b.N; i++ { + C.add(x, y) + } +} |