blob: c20466d4a14b9ace62dd5d31789b1d4f283ee1f5 [file] [edit]
// Copyright 2026 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
package windows_test
import (
"internal/syscall/windows"
"strings"
"testing"
"unicode/utf16"
)
func TestUTF16PtrToStringAllocs(t *testing.T) {
msg := "Hello, world 🐻"
testUTF16PtrToStringAllocs(t, msg)
testUTF16PtrToStringAllocs(t, strings.Repeat(msg, 10))
}
func testUTF16PtrToStringAllocs(t *testing.T, msg string) {
in := utf16.Encode([]rune(msg + "\x00"))
var out string
alloccnt := testing.AllocsPerRun(1000, func() {
out = windows.UTF16PtrToString(&in[0])
})
if out != msg {
t.Errorf("windows.UTF16PtrToString(%v) returned %q; want %q", in, out, msg)
}
if alloccnt > 1.01 {
t.Errorf("windows.UTF16PtrToString(%v) made %v allocs per call; want 1", in, alloccnt)
}
}