blob: 3dc0498832aea0746cb870aede276aa6adb6e33d [file] [log] [blame]
// Copyright 2021 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 go_bindings_test
import (
"fmt"
"testing"
"fidl/fidl/go/types"
)
type stringTestCase struct {
val fmt.Stringer
expected string
}
func (ex *stringTestCase) check(t *testing.T) {
if actual := ex.val.String(); actual != ex.expected {
t.Errorf("%+v: actual='%s', expected='%s'", ex.val, actual, ex.expected)
}
}
func TestEnumString(t *testing.T) {
cases := []stringTestCase{
{types.StrictEnumMemberA, "MemberA"},
{types.StrictEnumMemberB, "MemberB"},
{types.StrictEnumMemberC, "MemberC"},
{types.FlexibleEnumMemberA, "MemberA"},
{types.FlexibleEnumMemberB, "MemberB"},
{types.FlexibleEnumMemberC, "MemberC"},
{types.FlexibleEnumMemberCustomUnknown, "MemberCustomUnknown"},
{types.FlexibleEnum_Unknown, "MemberCustomUnknown"},
{types.EmptyFlexibleEnum_Unknown, "Unknown"},
}
for _, ex := range cases {
ex.check(t)
}
}
func TestBitsString(t *testing.T) {
cases := []stringTestCase{
{types.StrictBits(0), "<empty bits>"},
{types.StrictBitsMemberA, "MemberA"},
{types.StrictBitsMemberB, "MemberB"},
{types.StrictBitsMemberC, "MemberC"},
{types.StrictBitsMemberA | types.StrictBitsMemberC, "MemberA|MemberC"},
{types.FlexibleBits(0), "<empty bits>"},
{types.FlexibleBitsMemberA, "MemberA"},
{types.FlexibleBitsMemberB, "MemberB"},
{types.FlexibleBitsMemberC, "MemberC"},
{types.FlexibleBitsMemberA | types.FlexibleBitsMemberC, "MemberA|MemberC"},
}
for _, ex := range cases {
ex.check(t)
}
}