1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69
|
// Copyright 2018 Tobias Klauser. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
//go:build darwin || dragonfly || freebsd || linux || netbsd || openbsd || solaris
// +build darwin dragonfly freebsd linux netbsd openbsd solaris
package sysconf_cgotest
/*
#include <unistd.h>
*/
import "C"
import (
"testing"
"github.com/tklauser/go-sysconf"
)
type testCase struct {
goVar int
cVar C.int
name string
}
func testSysconfGoCgo(t *testing.T, tc testCase) {
t.Helper()
if tc.goVar != int(tc.cVar) {
t.Errorf("SC_* parameter value for %v is %v, want %v", tc.name, tc.goVar, tc.cVar)
}
goVal, goErr := sysconf.Sysconf(tc.goVar)
if goErr != nil {
t.Errorf("Sysconf(%s/%d): %v", tc.name, tc.goVar, goErr)
return
}
t.Logf("%s = %v", tc.name, goVal)
cVal, cErr := C.sysconf(tc.cVar)
if cErr != nil {
t.Errorf("C.sysconf(%s/%d): %v", tc.name, tc.cVar, cErr)
return
}
if goVal != int64(cVal) {
t.Errorf("Sysconf(%v/%d) returned %v, want %v", tc.name, tc.goVar, goVal, cVal)
}
}
func testSysconfGoCgoInvalid(t *testing.T, tc testCase) {
t.Helper()
if tc.goVar != int(tc.cVar) {
t.Errorf("SC_* parameter value for %v is %v, want %v", tc.name, tc.goVar, tc.cVar)
}
_, goErr := sysconf.Sysconf(tc.goVar)
if goErr == nil {
t.Errorf("Sysconf(%s/%d) unexpectedly returned without error", tc.name, tc.goVar)
return
}
_, cErr := C.sysconf(tc.cVar)
if cErr == nil {
t.Errorf("C.sysconf(%s/%d) unexpectedly returned without error", tc.name, tc.goVar)
}
}
|