Home | History | Annotate | Download | only in test
      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 }
     38