blob: e61a58f71220aca9eba8ba6064c904750d0416d4 [file] [log] [blame]
// Copyright 2017 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 "src/lib/fsl/vmo/file.h"
#include <fcntl.h>
#include <lib/zx/vmo.h>
#include <string>
#include <string_view>
#include <fbl/unique_fd.h>
#include <gtest/gtest.h>
#include "src/lib/files/scoped_temp_dir.h"
#include "src/lib/fsl/vmo/sized_vmo.h"
#include "src/lib/fsl/vmo/strings.h"
namespace fsl {
namespace {
TEST(VMOAndFile, VmoFromFd) {
files::ScopedTempDir temp_dir;
std::string path;
EXPECT_TRUE(temp_dir.NewTempFile(&path));
fbl::unique_fd fd(open(path.c_str(), O_RDWR));
EXPECT_TRUE(fd.is_valid());
constexpr std::string_view payload = "Payload";
EXPECT_EQ(static_cast<ssize_t>(payload.size()), write(fd.get(), payload.data(), payload.size()));
fsl::SizedVmo vmo;
EXPECT_TRUE(VmoFromFd(std::move(fd), &vmo));
std::string data;
EXPECT_TRUE(StringFromVmo(vmo, &data));
EXPECT_EQ(payload, data);
}
TEST(VMOAndFile, VmoFromFilename) {
files::ScopedTempDir temp_dir;
std::string path;
EXPECT_TRUE(temp_dir.NewTempFile(&path));
fbl::unique_fd fd(open(path.c_str(), O_RDWR));
EXPECT_TRUE(fd.is_valid());
constexpr std::string_view payload = "Another playload";
EXPECT_EQ(static_cast<ssize_t>(payload.size()), write(fd.get(), payload.data(), payload.size()));
fd.reset();
fsl::SizedVmo vmo;
EXPECT_TRUE(VmoFromFilename(path.c_str(), &vmo));
std::string data;
EXPECT_TRUE(StringFromVmo(vmo, &data));
EXPECT_EQ("Another playload", data);
}
} // namespace
} // namespace fsl