blob: 398ab0321177f39ae1442f428ded23ec7be96232 [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.
*/}}
import fuchsia_controller_py
from fuchsia_controller_py import BaseHandle, Channel, Event, Handle, Socket
import fidl_test_conformance as test_conformance
import struct
import unittest
from fidl import construct_response_object
from fidl_codec import decode_standalone
class EncodeConformanceTests(unittest.TestCase):
{{ range .EncodeSuccessCases }}
def test_{{ .Name }}_encode(self) -> None:
{{- if .HandleDefs }}
handle_defs: list[BaseHandle] = {{ .HandleDefs }}
{{- end }}
value = {{ .Value }}
encoded_bytes, hdls = value.encode()
self.assertEqual(encoded_bytes, {{ .ExpectedBytes }})
{{- if .Handles }}
handles = [handle_defs[i].as_int() for i in {{ .Handles }}]
self.assertEqual([hdl[1] for hdl in hdls], handles)
{{- else if .HandleDispositions }}
self.assertEqual(hdls, {{ .HandleDispositions }})
{{- else }}
self.assertEqual(hdls, [])
{{- end }}
{{ end }}
class DecodeConformanceTests(unittest.TestCase):
{{ range .DecodeSuccessCases }}
def test_{{ .Name }}_decode(self) -> None:
{{- if .HandleDefs }}
handle_defs: list[BaseHandle] = {{ .HandleDefs }}
handles = [handle_defs[i].as_int() for i in {{ .Handles }}]
handle_koids = [h.koid() for h in handle_defs]
{{- else }}
handles: list[int] = []
{{- end }}
encoded_bytes = {{ .Bytes }}
type_name = "{{ .ValueType }}"
value = decode_standalone(type_name=type_name, bytes=encoded_bytes, handles=handles)
value = construct_response_object(type_name, value)
{{ .EqualityCheck }}
{{ end }}
if __name__ == "__main__":
unittest.main()