blob: 9851b3996d9c07c58af1d04d33a97e0443115314 [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 fidlgen_cpp
import (
"testing"
"go.fuchsia.dev/fuchsia/tools/fidl/lib/fidlgentest"
)
func TestCompileTypeNames(t *testing.T) {
root := compile(fidlgentest.EndToEndTest{T: t}.Single(`
library foo.bar;
union U {
1: uint32 a;
};
protocol P {
M(array<U?>:3 a, vector<P?> b);
};
`), HeaderOptions{})
p := onlyProtocol(t, root)
assertEqual(t, len(p.Methods), 1)
m := p.Methods[0]
assertEqual(t, len(m.RequestArgs), 2)
ty := m.RequestArgs[0].Type
expectEqual(t, ty.Natural.String(), "::std::array<::std::unique_ptr<::foo::bar::U>, 3>")
expectEqual(t, ty.Wire.String(), "::fidl::Array<::foo_bar::wire::U, 3>")
expectEqual(t, ty.Unified.String(), "::std::array<::std::unique_ptr<::foo_bar::U>, 3>")
ty = m.RequestArgs[1].Type
expectEqual(t, ty.Natural.String(), "::std::vector<::fidl::InterfaceHandle<::foo::bar::P>>")
expectEqual(t, ty.Wire.String(), "::fidl::VectorView<::fidl::ClientEnd<::foo_bar::P>>")
// TODO(fxbug.dev/72980): Switch to ClientEnd/ServerEnd and underscore namespace when
// corresponding endpoint types can easily convert into each other.
expectEqual(t, ty.Unified.String(), "::std::vector<::fidl::InterfaceHandle<::foo::bar::P>>")
}