1 // Copyright 2018 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.
16 func TestConvertFromDirent11(t
*testing
.T
) {
20 fixedHdrSize
= int(unsafe
.Offsetof(syscall
.Dirent_freebsd11
{}.Name
))
23 namlen
:= len(fmt
.Sprintf(filenameFmt
, 0))
24 reclen
:= syscall
.Roundup(fixedHdrSize
+namlen
+1, 4)
25 old
:= make([]byte, numFiles
*reclen
)
26 for i
:= 0; i
< numFiles
; i
++ {
27 dent
:= syscall
.Dirent_freebsd11
{
28 Fileno
: uint32(i
+ 1),
29 Reclen
: uint16(reclen
),
31 Namlen
: uint8(namlen
),
33 rec
:= make([]byte, reclen
)
34 copy(rec
, (*[fixedHdrSize
]byte)(unsafe
.Pointer(&dent
))[:])
35 copy(rec
[fixedHdrSize
:], fmt
.Sprintf(filenameFmt
, i
+1))
36 copy(old
[i
*reclen
:], rec
)
39 buf
:= make([]byte, 2*len(old
))
40 n
:= syscall
.ConvertFromDirents11(buf
, old
)
42 names
:= make([]string, 0, numFiles
)
43 _
, _
, names
= syscall
.ParseDirent(buf
[:n
], -1, names
)
45 if len(names
) != numFiles
{
46 t
.Errorf("expected %d files, have %d; names: %q", numFiles
, len(names
), names
)
49 for i
, name
:= range names
{
50 if expected
:= fmt
.Sprintf(filenameFmt
, i
+1); name
!= expected
{
51 t
.Errorf("expected names[%d] to be %q; got %q", i
, expected
, name
)