]> Cypherpunks.ru repositories - gostls13.git/blob - misc/cgo/test/issue14838.go
e6e1a4245729db97f26ed0dc5769c4891bf0d1ff
[gostls13.git] / misc / cgo / test / issue14838.go
1 // Copyright 2016 The Go Authors.  All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
4
5 // Issue 14838. add CBytes function
6
7 package cgotest
8
9 /*
10 #include <stdlib.h>
11
12 int check_cbytes(char *b, size_t l) {
13         int i;
14         for (i = 0; i < l; i++) {
15                 if (b[i] != i) {
16                         return 0;
17                 }
18         }
19         return 1;
20 }
21 */
22 import "C"
23
24 import (
25         "testing"
26         "unsafe"
27 )
28
29 func test14838(t *testing.T) {
30         data := []byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
31         cData := C.CBytes(data)
32         defer C.free(cData)
33
34         if C.check_cbytes((*C.char)(cData), C.size_t(len(data))) == 0 {
35                 t.Fatalf("mismatched data: expected %v, got %v", data, (*(*[10]byte)(unsafe.Pointer(cData)))[:])
36         }
37 }