]>
Commit | Line | Data |
---|---|---|
20effc67 TL |
1 | // |
2 | // Copyright (c) 2019 Vinnie Falco (vinnie.falco@gmail.com) | |
3 | // | |
4 | // Distributed under the Boost Software License, Version 1.0. (See accompanying | |
5 | // file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | |
6 | // | |
7 | // Official repository: https://github.com/boostorg/json | |
8 | // | |
9 | ||
10 | #include <boost/json/value.hpp> | |
11 | ||
12 | #include <boost/json/monotonic_resource.hpp> | |
13 | #include <boost/json/static_resource.hpp> | |
14 | ||
15 | #include "test_suite.hpp" | |
16 | ||
17 | BOOST_JSON_NS_BEGIN | |
18 | ||
19 | class natvis_test | |
20 | { | |
21 | public: | |
22 | static | |
23 | value | |
24 | make_key(string_view s) | |
25 | { | |
26 | value jv; | |
27 | detail::access::construct_value( | |
28 | &jv, s, storage_ptr()); | |
29 | return jv; | |
30 | } | |
31 | ||
32 | void | |
33 | run() | |
34 | { | |
35 | // These variables may be inspected in the | |
36 | // Visual Studio IDE to verify that the .natvis | |
37 | // file is working correctly | |
38 | ||
39 | value jv0 = nullptr; | |
40 | value jv1 = true; | |
41 | value jv2 = -1; | |
42 | value jv3 = 42u; | |
43 | value jv4 = 3.141; | |
44 | value jv5 = "string"; | |
45 | value jv6 = make_key("key"); | |
46 | value jv7 = "dynamically-allocated-string"; | |
47 | value jv8 = { 1, 2, 3 }; | |
48 | value jv9 = { {"a",1}, {"b",2}, {"c",3} }; | |
49 | ||
50 | string& x0 = jv5.get_string(); (void)x0; | |
51 | string& x1 = jv6.get_string(); (void)x1; | |
52 | string& x2 = jv7.get_string(); (void)x2; | |
53 | array& x3 = jv8.get_array(); (void)x3; | |
54 | object& x4 = jv9.get_object(); (void)x4; | |
55 | ||
56 | array y0; | |
57 | y0.emplace_back(jv0); | |
58 | y0.emplace_back(jv1); | |
59 | y0.emplace_back(jv2); | |
60 | y0.emplace_back(jv4); | |
61 | y0.emplace_back(jv5); | |
62 | y0.emplace_back(jv6); | |
63 | y0.emplace_back(jv7); | |
64 | y0.emplace_back(jv8); | |
65 | y0.emplace_back(jv9); | |
66 | ||
67 | object y1; | |
68 | y1.emplace("a", jv0); | |
69 | y1.emplace("b", jv1); | |
70 | y1.emplace("c", jv2); | |
71 | y1.emplace("d", jv4); | |
72 | y1.emplace("f", jv5); | |
73 | y1.emplace("g", jv6); | |
74 | y1.emplace("h", jv7); | |
75 | y1.emplace("i", jv8); | |
76 | y1.emplace("j", jv9); | |
77 | ||
78 | key_value_pair& z0 = y1.begin()[0]; (void)z0; | |
79 | key_value_pair& z1 = y1.begin()[1]; (void)z1; | |
80 | key_value_pair& z2 = y1.begin()[2]; (void)z2; | |
81 | key_value_pair& z3 = y1.begin()[3]; (void)z3; | |
82 | key_value_pair& z4 = y1.begin()[4]; (void)z4; | |
83 | key_value_pair& z5 = y1.begin()[5]; (void)z5; | |
84 | key_value_pair& z6 = y1.begin()[6]; (void)z6; | |
85 | key_value_pair& z7 = y1.begin()[7]; (void)z7; | |
86 | key_value_pair& z8 = y1.begin()[8]; (void)z8; | |
87 | ||
88 | { | |
89 | auto sp = y1.storage(); | |
90 | } | |
91 | { | |
92 | unsigned char buf[1024]; | |
93 | storage_ptr sp; | |
94 | sp = make_shared_resource< | |
95 | monotonic_resource>(); | |
96 | sp = make_shared_resource< | |
97 | static_resource>(buf); | |
98 | sp = {}; | |
99 | } | |
100 | { | |
101 | unsigned char buf[1024]; | |
102 | monotonic_resource mr1; | |
103 | static_resource mr2(buf); | |
104 | storage_ptr sp; | |
1e59de90 | 105 | |
20effc67 TL |
106 | sp = &mr1; |
107 | sp = &mr2; | |
108 | sp = {}; | |
109 | } | |
110 | } | |
111 | }; | |
112 | ||
113 | TEST_SUITE(natvis_test, "json.natvis"); | |
114 | ||
115 | BOOST_JSON_NS_END |