ipfs-chromium
Loading...
Searching...
No Matches
mock_cbor.h
1#ifndef IPFS_MOCK_BOR_H_
2#define IPFS_MOCK_BOR_H_
3
4#include "ipfs_client/client.h"
5
6#include <gtest/gtest.h>
7
8namespace i = ipfs;
9using namespace std::literals;
10
11namespace {
12struct MockCbor final : public i::DagCborValue {
13 std::optional<std::string> sval = std::nullopt;
14 std::optional<std::uint64_t> uval = std::nullopt;
15 std::map<std::string, MockCbor> children;
16 std::unique_ptr<DagCborValue> at(std::string_view key) const {
17 std::string k{key};
18 auto i = children.find(k);
19 if (children.end() == i) {
20 return {};
21 }
22 return std::make_unique<MockCbor>(i->second);
23 }
24 std::optional<std::uint64_t> as_unsigned() const { return uval; }
25 std::optional<std::string> as_string() const { return sval; }
26 std::optional<i::Cid> as_link() const { return {};
27 }
28 std::optional<bool> as_bool() const { return {}; }
29 std::optional<std::int64_t> as_signed() const { return {}; }
30 std::optional<double> as_float() const { return {}; }
31 std::optional<std::vector<std::uint8_t>> as_bytes() const {
32 if (sval.has_value()) {
33 auto b = reinterpret_cast<std::uint8_t const*>(sval.value().data());
34 auto e = b + sval.value().size();
35 return std::vector<std::uint8_t>(b, e);
36 }
37 return std::nullopt;
38 }
39 void set(std::string k, MockCbor v) { children[k] = v; }
40 MockCbor(std::string s) : sval{s} {}
41 MockCbor(std::uint64_t u) : uval{u} {}
42 MockCbor() = default;
43 MockCbor(MockCbor const&) = default;
44 std::string html() const { return "<p>no</p>"; }
45 bool is_map() const { return false; }
46 bool is_array() const { return false; }
47 void iterate_map(MapElementCallback) const {}
48 void iterate_array(ArrayElementCallback) const {}
49};
50} // namespace
51
52#endif // IPFS_MOCK_BOR_H_
Definition dag_cbor_value.h:15