blob: 26efbcdfbc20c14218751c0876a774d1f267514f [file] [log] [blame]
{{/*
// Copyright 2022 The Fuchsia 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 fidl_test
import (
"math"
"reflect"
"runtime"
"testing"
"fidl/test/conformance"
"syscall/zx"
"syscall/zx/fidl"
)
// Avoid unused import warnings if certain tests are disabled.
var _ = math.Float32frombits
var _ = reflect.Copy
var _ = runtime.GOOS
type _ = testing.T
type _ = conformance.MyByte
var _ = zx.HandleInvalid
type _ = fidl.Context
{{ if .EncodeSuccessCases }}
func TestAllEncodeSuccessCases(t *testing.T) {
{{ range .EncodeSuccessCases }}
{
{{- if .HandleDefs }}
handleDefs := {{ .HandleDefs }}
handles := createHandlesFromHandleDef(handleDefs)
{{- end }}
encodeSuccessCase{
name: {{ .Name }},
context: {{ .Context }},
input: &{{ .Value }},
bytes: {{ .Bytes }},
{{- if .HandleDefs }}
handleDispositions: {{ .Handles }},
{{- end }}
checkRights: {{ .CheckRights }},
}.check(t)
}
{{ end }}
}
{{ end }}
{{ if .DecodeSuccessCases }}
func TestAllDecodeSuccessCases(t *testing.T) {
{{ range .DecodeSuccessCases }}
{
{{- if .HandleDefs }}
handleDefs := {{ .HandleDefs }}
handles := createHandlesFromHandleDef(handleDefs)
var {{ .EqualityCheckKoidArrayVar }} []uint64
if runtime.GOOS == "fuchsia" {
for _, h := range handles {
info, err := handleGetBasicInfo(&h)
if err != nil {
t.Fatal(err)
}
{{ .EqualityCheckKoidArrayVar }} = append({{ .EqualityCheckKoidArrayVar }}, info.Koid)
}
}
{{- end }}
decodeSuccessCase{
name: {{ .Name }},
context: {{ .Context }},
typ: reflect.TypeOf((*{{ .Type }})(nil)),
bytes: {{ .Bytes }},
{{- if .HandleDefs }}
handleInfos: {{ .Handles }},
{{- end }}
equalsExpected: func(t *testing.T, input interface{}) {
ignore_unused_warning := func(interface{}) {}
{{ .EqualityCheckInputVar }} := input.(*{{ .Type }})
{{ .EqualityCheck }}
},
}.check(t)
}
{{ end }}
}
{{ end }}
{{ if .EncodeFailureCases }}
func TestAllEncodeFailureCases(t *testing.T) {
{{ range .EncodeFailureCases }}
{
{{- if .HandleDefs }}
handles := createHandlesFromHandleDef({{ .HandleDefs }})
{{- end }}
encodeFailureCase{
name: {{ .Name }},
context: {{ .Context }},
input: &{{ .Value }},
code: {{ .ErrorCode }},
{{- if .HandleDefs }}
handles: handles,
{{- end }}
}.check(t)
}
{{ end }}
}
{{ end }}
{{ if .DecodeFailureCases }}
func TestAllDecodeFailureCases(t *testing.T) {
{{ range .DecodeFailureCases }}
{
{{- if .HandleDefs }}
handleDefs := {{ .HandleDefs }}
handles := createHandlesFromHandleDef(handleDefs)
{{- end }}
decodeFailureCase{
name: {{ .Name }},
context: {{ .Context }},
valTyp: reflect.TypeOf((*{{ .ValueType }})(nil)),
bytes: {{ .Bytes }},
code: {{ .ErrorCode }},
{{- if .HandleDefs }}
handleInfos: {{ .Handles }},
{{- end }}
}.check(t)
}
{{ end }}
}
{{ end }}