blob: bc56c7d44d41045c7176bea7ec349c57b516443b [file] [log] [blame]
// Copyright 2018 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 <limits.h>
#include <stddef.h>
#include <fbl/auto_call.h>
#include <fbl/unique_ptr.h>
#include <unittest/unittest.h>
#include <zircon/types.h>
#include "utils.h"
namespace blkctl {
namespace testing {
namespace {
bool TestBadCommand(void) {
BEGIN_TEST;
BlkCtlTest blkctl;
// Missing everything!
EXPECT_EQ(ZX_ERR_INVALID_ARGS, BlkCtl::Execute(0, nullptr));
// Missing command
char* argv0 = strdup("blkctl");
auto cleanup = fbl::MakeAutoCall([argv0]() { free(argv0); });
EXPECT_EQ(ZX_ERR_INVALID_ARGS, BlkCtl::Execute(1, &argv0));
// Gibberish
EXPECT_TRUE(blkctl.Run(ZX_ERR_INVALID_ARGS, "booplesnoot"));
END_TEST;
}
// blkctl ls
bool TestList(void) {
BEGIN_TEST;
BlkCtlTest blkctl;
ScopedRamdisk ramdisk;
ASSERT_TRUE(ramdisk.Init());
// Too many args
EXPECT_TRUE(blkctl.Run(ZX_ERR_INVALID_ARGS, "ls foo"));
// Valid
EXPECT_TRUE(blkctl.Run(ZX_OK, "ls"));
END_TEST;
}
// blkctl -d <dev> dump
bool TestDump(void) {
BEGIN_TEST;
BlkCtlTest blkctl;
ScopedRamdisk ramdisk;
ASSERT_TRUE(ramdisk.Init());
// Missing device
EXPECT_TRUE(blkctl.Run(ZX_ERR_INVALID_ARGS, "dump"));
// Too many args
EXPECT_TRUE(blkctl.Run(ZX_ERR_INVALID_ARGS, "dump %s foo", ramdisk.path()));
// Valid
EXPECT_TRUE(blkctl.Run(ZX_OK, "dump %s", ramdisk.path()));
END_TEST;
}
BEGIN_TEST_CASE(CommandTest)
RUN_TEST(TestBadCommand)
RUN_TEST(TestList)
RUN_TEST(TestDump)
END_TEST_CASE(CommandTest)
} // namespace
} // namespace testing
} // namespace blkctl