// Copyright 2018 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 "shill/shill_test_config.h"

#include <string>

#include "shill/logging.h"

namespace shill {

TestConfig::TestConfig() {
  CHECK(dir_.CreateUniqueTempDir());
}

TestConfig::~TestConfig() = default;

std::string TestConfig::GetRunDirectory() const {
  return dir_.GetPath().value();
}

std::string TestConfig::GetStorageDirectory() const {
  return dir_.GetPath().value();
}

std::string TestConfig::GetUserStorageDirectory() const {
  return dir_.GetPath().value();
}

}  // namespace shill
