summaryrefslogtreecommitdiff
path: root/misc/cgo/test/basic.go
diff options
context:
space:
mode:
Diffstat (limited to 'misc/cgo/test/basic.go')
-rw-r--r--misc/cgo/test/basic.go47
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)
+ }
+}