blob: e3af5a457d356dd5d633cd671dd00d43b5aa72af [file] [log] [blame]
Enrico Granata51cdb942019-06-18 16:40:17 -07001// Copyright 2019 The Chromium OS Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Enrico Granata9bb17522019-06-28 17:22:42 -07005#include "libmems/test_fakes.h"
Enrico Granata51cdb942019-06-18 16:40:17 -07006
7#include <base/logging.h>
8
9namespace libmems {
Enrico Granata9bb17522019-06-28 17:22:42 -070010namespace fakes {
Enrico Granata51cdb942019-06-18 16:40:17 -070011
Enrico Granata9bb17522019-06-28 17:22:42 -070012FakeIioChannel::FakeIioChannel(const std::string& id, bool enabled)
Enrico Granata51cdb942019-06-18 16:40:17 -070013 : id_(id), enabled_(enabled) {}
14
Enrico Granata9bb17522019-06-28 17:22:42 -070015bool FakeIioChannel::SetEnabled(bool en) {
Enrico Granata51cdb942019-06-18 16:40:17 -070016 enabled_ = en;
17 return true;
18}
19
Enrico Granata9bb17522019-06-28 17:22:42 -070020FakeIioDevice::FakeIioDevice(FakeIioContext* ctx,
Enrico Granata51cdb942019-06-18 16:40:17 -070021 const std::string& name,
22 const std::string& id)
23 : IioDevice(), context_(ctx), name_(name), id_(id) {}
24
Enrico Granata9bb17522019-06-28 17:22:42 -070025base::Optional<std::string> FakeIioDevice::ReadStringAttribute(
Enrico Granata51cdb942019-06-18 16:40:17 -070026 const std::string& name) const {
27 auto k = text_attributes_.find(name);
28 if (k == text_attributes_.end())
29 return base::nullopt;
30 return k->second;
31}
Enrico Granata9bb17522019-06-28 17:22:42 -070032base::Optional<int64_t> FakeIioDevice::ReadNumberAttribute(
Enrico Granata51cdb942019-06-18 16:40:17 -070033 const std::string& name) const {
34 auto k = numeric_attributes_.find(name);
35 if (k == numeric_attributes_.end())
36 return base::nullopt;
37 return k->second;
38}
39
Enrico Granata9bb17522019-06-28 17:22:42 -070040bool FakeIioDevice::WriteStringAttribute(const std::string& name,
Enrico Granata51cdb942019-06-18 16:40:17 -070041 const std::string& value) {
42 text_attributes_[name] = value;
43 return true;
44}
Enrico Granata9bb17522019-06-28 17:22:42 -070045bool FakeIioDevice::WriteNumberAttribute(const std::string& name,
Enrico Granata51cdb942019-06-18 16:40:17 -070046 int64_t value) {
47 numeric_attributes_[name] = value;
48 return true;
49}
50
Enrico Granata9bb17522019-06-28 17:22:42 -070051bool FakeIioDevice::SetTrigger(IioDevice* trigger) {
Enrico Granata51cdb942019-06-18 16:40:17 -070052 trigger_ = trigger;
53 return true;
54}
55
Enrico Granata9bb17522019-06-28 17:22:42 -070056IioChannel* FakeIioDevice::GetChannel(const std::string& id) {
Enrico Granata51cdb942019-06-18 16:40:17 -070057 auto k = channels_.find(id);
58 if (k == channels_.end())
59 return nullptr;
60 return k->second;
61}
62
Enrico Granata9bb17522019-06-28 17:22:42 -070063bool FakeIioDevice::EnableBuffer(size_t n) {
Enrico Granata51cdb942019-06-18 16:40:17 -070064 buffer_length_ = n;
65 buffer_enabled_ = true;
66 return true;
67}
Enrico Granata9bb17522019-06-28 17:22:42 -070068bool FakeIioDevice::DisableBuffer() {
Enrico Granata51cdb942019-06-18 16:40:17 -070069 buffer_enabled_ = false;
70 return true;
71}
Enrico Granata9bb17522019-06-28 17:22:42 -070072bool FakeIioDevice::IsBufferEnabled(size_t* n) const {
Enrico Granata51cdb942019-06-18 16:40:17 -070073 if (n && buffer_enabled_)
74 *n = buffer_length_;
75 return buffer_enabled_;
76}
77
Enrico Granata9bb17522019-06-28 17:22:42 -070078void FakeIioContext::AddDevice(FakeIioDevice* device) {
Enrico Granata51cdb942019-06-18 16:40:17 -070079 CHECK(device);
80 devices_.emplace(device->GetName(), device);
81 devices_.emplace(device->GetId(), device);
82}
83
Enrico Granata9bb17522019-06-28 17:22:42 -070084IioDevice* FakeIioContext::GetDevice(const std::string& name) {
Enrico Granata51cdb942019-06-18 16:40:17 -070085 auto k = devices_.find(name);
86 return (k == devices_.end()) ? nullptr : k->second;
87}
88
Enrico Granata9bb17522019-06-28 17:22:42 -070089} // namespace fakes
Enrico Granata51cdb942019-06-18 16:40:17 -070090} // namespace libmems