blob: 344080dd1fa50e127926afb65378293eb917caf2 [file] [log] [blame]
// Copyright (c) 2012 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.
#ifndef SHILL_PROPERTY_STORE_UNITTEST_H_
#define SHILL_PROPERTY_STORE_UNITTEST_H_
#include <map>
#include <string>
#include <vector>
#include <base/memory/scoped_ptr.h>
#include <base/files/scoped_temp_dir.h>
#include <dbus-c++/dbus.h>
#include <gmock/gmock.h>
#include <gtest/gtest.h>
#include "shill/dbus_adaptor.h"
#include "shill/error.h"
#include "shill/event_dispatcher.h"
#include "shill/manager.h"
#include "shill/mock_control.h"
#include "shill/mock_glib.h"
#include "shill/mock_metrics.h"
#include "shill/property_store.h"
namespace shill {
class PropertyStoreTest : public testing::TestWithParam< ::DBus::Variant > {
public:
// In real code, it's frowned upon to have non-POD static members, as there
// can be ordering issues if your constructors have side effects.
// These constructors don't, and declaring these as static lets me
// autogenerate a bunch of unit test code that I would otherwise need to
// copypaste. So I think it's safe and worth it.
static const ::DBus::Variant kBoolV;
static const ::DBus::Variant kByteV;
static const ::DBus::Variant kInt16V;
static const ::DBus::Variant kInt32V;
static const ::DBus::Variant kKeyValueStoreV;
static const ::DBus::Variant kStringV;
static const ::DBus::Variant kStringmapV;
static const ::DBus::Variant kStringmapsV;
static const ::DBus::Variant kStringsV;
static const ::DBus::Variant kUint16V;
static const ::DBus::Variant kUint32V;
static const ::DBus::Variant kUint64V;
PropertyStoreTest();
virtual ~PropertyStoreTest();
virtual void SetUp();
protected:
Manager *manager() { return &manager_; }
MockControl *control_interface() { return &control_interface_; }
EventDispatcher *dispatcher() { return &dispatcher_; }
MockGLib *glib() { return &glib_; }
MockMetrics *metrics() { return &metrics_; }
const std::string &run_path() const { return path_; }
const std::string &storage_path() const { return path_; }
const std::string &internal_error() const { return internal_error_; }
const std::string &invalid_args() const { return invalid_args_; }
const std::string &invalid_prop() const { return invalid_prop_; }
private:
const std::string internal_error_;
const std::string invalid_args_;
const std::string invalid_prop_;
base::ScopedTempDir dir_;
const std::string path_;
MockControl control_interface_;
EventDispatcher dispatcher_;
testing::NiceMock<MockMetrics> metrics_;
MockGLib glib_;
Manager manager_;
};
} // namespace shill
#endif // SHILL_PROPERTY_STORE_UNITTEST_H_