// Copyright 2019 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/test/misc/cpp/fidl.h>
#include <gtest/gtest.h>

#include "lib/fidl/cpp/builder.h"

namespace fidl {
namespace test {
namespace misc {
namespace {

TEST(Defaults, Various) {
  VariousDefaults value;
  EXPECT_EQ(value.int64_with_default, static_cast<int64_t>(5));
  EXPECT_STREQ(value.string_with_default.c_str(), "stuff");
  EXPECT_EQ(value.enum_with_default, SampleEnum::MEMBER_B);
  EXPECT_TRUE(value.bool_with_default);
}

}  // namespace
}  // namespace misc
}  // namespace test
}  // namespace fidl
