blob: 022d6f0bcea1a34364267e55a0ab1adcf92c30b0 [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.
#include <fidl/fuchsia.component.decl/cpp/type_conversions.h>
#include <lib/driver/component/cpp/node_add_args.h>
#include <gtest/gtest.h>
namespace {
namespace fcd = fuchsia_component_decl;
constexpr const char kServiceName[] = "Service";
constexpr const char kInstanceName[] = "Instance";
void CheckOffer(fcd::Offer offer) {
ASSERT_EQ(offer.Which(), fcd::Offer::Tag::kService);
ASSERT_TRUE(offer.service()->source_name().has_value());
ASSERT_EQ(offer.service()->source_name().value(), kServiceName);
ASSERT_TRUE(offer.service()->target_name().has_value());
ASSERT_EQ(offer.service()->source_name().value(), kServiceName);
ASSERT_TRUE(offer.service()->renamed_instances().has_value());
auto& mapping = offer.service()->renamed_instances().value();
ASSERT_EQ(mapping.size(), 1ul);
ASSERT_EQ(mapping[0].source_name(), kInstanceName);
ASSERT_EQ(mapping[0].target_name(), "default");
ASSERT_TRUE(offer.service()->source_instance_filter().has_value());
auto& filter = offer.service()->source_instance_filter().value();
ASSERT_EQ(filter.size(), 1ul);
ASSERT_EQ(filter[0], "default");
}
TEST(NodeAddArgsTest, MakeOfferNatural) {
auto offer = fdf::MakeOffer(kServiceName, kInstanceName);
CheckOffer(offer);
}
TEST(NodeAddArgsTest, MakeOfferWire) {
fidl::Arena arena;
auto offer = fidl::ToNatural(fdf::MakeOffer(arena, kServiceName, kInstanceName));
CheckOffer(offer);
}
} // namespace