// Copyright 2020 The Chromium OS 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 <gtest/gtest.h>

#include "dlcservice/boot/boot_slot.h"
#include "dlcservice/system_state.h"
#include "dlcservice/test_utils.h"

namespace dlcservice {

class SystemStateTest : public BaseTest {};

TEST_F(SystemStateTest, GettersTest) {
  auto system_state = SystemState::Get();
  const auto temp_path = scoped_temp_dir_.GetPath();

  EXPECT_EQ(system_state->manifest_dir(), temp_path.Append("rootfs"));
  EXPECT_EQ(system_state->preloaded_content_dir(),
            temp_path.Append("preloaded_stateful"));
  EXPECT_EQ(system_state->content_dir(), temp_path.Append("stateful"));
  EXPECT_EQ(system_state->prefs_dir(), temp_path.Append("var_lib_dlcservice"));
  EXPECT_EQ(system_state->dlc_prefs_dir(),
            temp_path.Append("var_lib_dlcservice").Append("dlc"));
  EXPECT_EQ(system_state->active_boot_slot(), BootSlot::Slot::B);
  EXPECT_EQ(system_state->inactive_boot_slot(), BootSlot::Slot::A);
  EXPECT_EQ(system_state->users_dir(), temp_path.Append("users"));
  EXPECT_FALSE(system_state->IsDeviceRemovable());

  EXPECT_EQ(system_state->clock(), &clock_);

  update_engine::StatusResult status;
  status.set_current_operation(update_engine::Operation::DOWNLOADING);
  system_state->set_update_engine_status(status);
  EXPECT_EQ(system_state->update_engine_status().current_operation(),
            update_engine::Operation::DOWNLOADING);
}

}  // namespace dlcservice
