blob: c2e4e779c2cfd3da75a9dc7150c0212fe9de7b91 [file] [log] [blame]
// 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 "tools/kazoo/syscall_library.h"
#include "gtest/gtest.h"
#include "tools/kazoo/test_ir_test_no_methods.test.h"
#include "tools/kazoo/test_ir_test_one_protocol_one_method.test.h"
namespace {
TEST(SyscallLibrary, LoaderSimpleEmpty) {
SyscallLibrary library;
ASSERT_TRUE(SyscallLibraryLoader::FromJson(k_test_no_methods, &library));
EXPECT_EQ(library.name(), "zz");
EXPECT_TRUE(library.syscalls().empty());
}
TEST(SyscallLibrary, LoaderSingleMethod) {
SyscallLibrary library;
ASSERT_TRUE(SyscallLibraryLoader::FromJson(k_test_one_protocol_one_method, &library));
EXPECT_EQ(library.name(), "zz");
ASSERT_EQ(library.syscalls().size(), 1u);
const auto& sc = library.syscalls()[0];
EXPECT_EQ(sc->original_interface(), "zz/Single");
EXPECT_EQ(sc->original_name(), "DoThing");
EXPECT_EQ(sc->category(), "single");
EXPECT_EQ(sc->name(), "single_do_thing");
EXPECT_EQ(sc->short_description(), "This does a single thing.");
EXPECT_EQ(sc->attributes().size(), 1u); // Doc is an attribute.
EXPECT_TRUE(sc->HasAttribute("Doc"));
EXPECT_FALSE(sc->is_noreturn());
const Struct& req = sc->request();
EXPECT_EQ(req.members().size(), 1u);
EXPECT_EQ(req.members()[0].name(), "an_input");
const Struct& resp = sc->response();
EXPECT_EQ(resp.members().size(), 1u);
EXPECT_EQ(resp.members()[0].name(), "status");
}
} // namespace