blob: b366cf8b976289d5a2da4a70de751070754d96b3 [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 Granata064a25c2019-07-15 15:48:03 -070020base::Optional<std::string> FakeIioChannel::ReadStringAttribute(
21 const std::string& name) const {
22 auto k = text_attributes_.find(name);
23 if (k == text_attributes_.end())
24 return base::nullopt;
25 return k->second;
26}
27base::Optional<int64_t> FakeIioChannel::ReadNumberAttribute(
28 const std::string& name) const {
29 auto k = numeric_attributes_.find(name);
30 if (k == numeric_attributes_.end())
31 return base::nullopt;
32 return k->second;
33}
34
35void FakeIioChannel::WriteStringAttribute(const std::string& name,
36 const std::string& value) {
37 text_attributes_[name] = value;
38}
39void FakeIioChannel::WriteNumberAttribute(const std::string& name,
40 int64_t value) {
41 numeric_attributes_[name] = value;
42}
43
Enrico Granata9bb17522019-06-28 17:22:42 -070044FakeIioDevice::FakeIioDevice(FakeIioContext* ctx,
Enrico Granata51cdb942019-06-18 16:40:17 -070045 const std::string& name,
46 const std::string& id)
47 : IioDevice(), context_(ctx), name_(name), id_(id) {}
48
Enrico Granata9bb17522019-06-28 17:22:42 -070049base::Optional<std::string> FakeIioDevice::ReadStringAttribute(
Enrico Granata51cdb942019-06-18 16:40:17 -070050 const std::string& name) const {
51 auto k = text_attributes_.find(name);
52 if (k == text_attributes_.end())
53 return base::nullopt;
54 return k->second;
55}
Enrico Granata9bb17522019-06-28 17:22:42 -070056base::Optional<int64_t> FakeIioDevice::ReadNumberAttribute(
Enrico Granata51cdb942019-06-18 16:40:17 -070057 const std::string& name) const {
58 auto k = numeric_attributes_.find(name);
59 if (k == numeric_attributes_.end())
60 return base::nullopt;
61 return k->second;
62}
63
Enrico Granata9bb17522019-06-28 17:22:42 -070064bool FakeIioDevice::WriteStringAttribute(const std::string& name,
Enrico Granata51cdb942019-06-18 16:40:17 -070065 const std::string& value) {
66 text_attributes_[name] = value;
67 return true;
68}
Enrico Granata9bb17522019-06-28 17:22:42 -070069bool FakeIioDevice::WriteNumberAttribute(const std::string& name,
Enrico Granata51cdb942019-06-18 16:40:17 -070070 int64_t value) {
71 numeric_attributes_[name] = value;
72 return true;
73}
74
Enrico Granata9bb17522019-06-28 17:22:42 -070075bool FakeIioDevice::SetTrigger(IioDevice* trigger) {
Enrico Granata51cdb942019-06-18 16:40:17 -070076 trigger_ = trigger;
77 return true;
78}
79
Enrico Granata9bb17522019-06-28 17:22:42 -070080IioChannel* FakeIioDevice::GetChannel(const std::string& id) {
Enrico Granata51cdb942019-06-18 16:40:17 -070081 auto k = channels_.find(id);
82 if (k == channels_.end())
83 return nullptr;
84 return k->second;
85}
86
Enrico Granata9bb17522019-06-28 17:22:42 -070087bool FakeIioDevice::EnableBuffer(size_t n) {
Enrico Granata51cdb942019-06-18 16:40:17 -070088 buffer_length_ = n;
89 buffer_enabled_ = true;
90 return true;
91}
Enrico Granata9bb17522019-06-28 17:22:42 -070092bool FakeIioDevice::DisableBuffer() {
Enrico Granata51cdb942019-06-18 16:40:17 -070093 buffer_enabled_ = false;
94 return true;
95}
Enrico Granata9bb17522019-06-28 17:22:42 -070096bool FakeIioDevice::IsBufferEnabled(size_t* n) const {
Enrico Granata51cdb942019-06-18 16:40:17 -070097 if (n && buffer_enabled_)
98 *n = buffer_length_;
99 return buffer_enabled_;
100}
101
Enrico Granata9bb17522019-06-28 17:22:42 -0700102void FakeIioContext::AddDevice(FakeIioDevice* device) {
Enrico Granata51cdb942019-06-18 16:40:17 -0700103 CHECK(device);
104 devices_.emplace(device->GetName(), device);
105 devices_.emplace(device->GetId(), device);
106}
107
Enrico Granata9bb17522019-06-28 17:22:42 -0700108IioDevice* FakeIioContext::GetDevice(const std::string& name) {
Enrico Granata51cdb942019-06-18 16:40:17 -0700109 auto k = devices_.find(name);
110 return (k == devices_.end()) ? nullptr : k->second;
111}
112
Enrico Granata9bb17522019-06-28 17:22:42 -0700113} // namespace fakes
Enrico Granata51cdb942019-06-18 16:40:17 -0700114} // namespace libmems