ipfs-chromium
Loading...
Searching...
No Matches
mock_dag_cbor_value.h
1#pragma once
2
3#include <ipfs_client/dag_cbor_value.h>
4
5#include <gtest/gtest.h>
6
7#include <vector>
8
9namespace {
10struct MockCborVal : public ipfs::DagCborValue {
11 std::vector<MockCborVal> list;
12 std::optional<std::int64_t> number;
13 std::optional<double> flt;
14 std::optional<std::string> str;
15 std::optional<bool> bol;
16 std::map<std::string,MockCborVal> dict;
17 std::unique_ptr<ipfs::DagCborValue> at(std::string_view k) const {
18 auto i = dict.find(std::string{k});
19 if (i == dict.end()) {
20 return {};
21 }
22 return std::make_unique<MockCborVal>(i->second);
23 }
24 std::optional<std::uint64_t> as_unsigned() const {
25 return std::nullopt;
26 }
27 std::optional<double> as_float() const {
28 return flt;
29 }
30 std::optional<std::int64_t> as_signed() const {
31 return number;
32 }
33 std::optional<std::string> as_string() const {return str;}
34 std::optional<std::vector<std::uint8_t>> as_bytes() const {return std::nullopt;}
35 std::optional<bool> as_bool() const {
36 return bol;
37 }
38 std::optional<ipfs::Cid> as_link() const {
39 return {};
40 }
41 bool is_map() const {
42 return ! dict.empty();
43 }
44 bool is_array() const {return!list.empty();}
45 void iterate_map(MapElementCallback f) const {
46 for (auto& [k,v] : dict) {
47 f(k,v);
48 }
49 }
50 void iterate_array(ArrayElementCallback f) const {
51 for (auto& v : list) {
52 f(v);
53 }
54 }
55 ~MockCborVal() noexcept = default;
56};
57}
Definition dag_cbor_value.h:15