| {{/* |
| // 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 }} |