#include "bmc/proto_reader.h"

#include <cstdio>
#include <string>

#include "gtest/gtest.h"
#include "absl/status/status.h"


namespace {
TEST(ProtoReaderTest, ReadWriteBinary) {
  std::string file_name = std::tmpnam(nullptr);
  std::string test_data = "0123456789ABCDEF";
  EXPECT_EQ(proto_reader::WriteFileToString(file_name, test_data),
            absl::OkStatus());
  auto val = proto_reader::ReadFileToString(file_name);
  EXPECT_EQ(val.value(), test_data);
}

TEST(ProtoReaderTest, ReadBinaryFailOpen) {
  std::string file_name = std::tmpnam(nullptr);
  std::string test_data = "0123456789ABCDEF";
  auto val = proto_reader::ReadFileToString(file_name);
  EXPECT_FALSE(val.ok());
}

TEST(ProtoReaderTest, ReadBinaryFailRead) {
  std::string file_name = "";
  auto val = proto_reader::ReadFileToString(file_name);
  EXPECT_FALSE(val.ok());
}

TEST(ProtoReaderTest, WriteBinaryFailOpen) {
  std::string file_name = "";
  std::string test_data = "0123456789ABCDEF";
  EXPECT_FALSE(proto_reader::WriteFileToString(file_name, test_data).ok());
}

}  // namespace
