1c5f01b2fSopenharmony_ci// __ _____ _____ _____ 2c5f01b2fSopenharmony_ci// __| | __| | | | JSON for Modern C++ (supporting code) 3c5f01b2fSopenharmony_ci// | | |__ | | | | | | version 3.11.2 4c5f01b2fSopenharmony_ci// |_____|_____|_____|_|___| https://github.com/nlohmann/json 5c5f01b2fSopenharmony_ci// 6c5f01b2fSopenharmony_ci// Copyright (c) 2013-2022 Niels Lohmann <http://nlohmann.me>. 7c5f01b2fSopenharmony_ci// SPDX-FileCopyrightText: 2013-2022 Niels Lohmann <https://nlohmann.me> 8c5f01b2fSopenharmony_ci// SPDX-License-Identifier: MIT 9c5f01b2fSopenharmony_ci 10c5f01b2fSopenharmony_ci#include "doctest_compatibility.h" 11c5f01b2fSopenharmony_ci 12c5f01b2fSopenharmony_ci#include <nlohmann/json.hpp> 13c5f01b2fSopenharmony_ciusing nlohmann::json; 14c5f01b2fSopenharmony_ci 15c5f01b2fSopenharmony_ciTEST_CASE("capacity") 16c5f01b2fSopenharmony_ci{ 17c5f01b2fSopenharmony_ci SECTION("empty()") 18c5f01b2fSopenharmony_ci { 19c5f01b2fSopenharmony_ci SECTION("boolean") 20c5f01b2fSopenharmony_ci { 21c5f01b2fSopenharmony_ci json j = true; 22c5f01b2fSopenharmony_ci const json j_const(j); 23c5f01b2fSopenharmony_ci 24c5f01b2fSopenharmony_ci SECTION("result of empty") 25c5f01b2fSopenharmony_ci { 26c5f01b2fSopenharmony_ci CHECK(j.empty() == false); 27c5f01b2fSopenharmony_ci CHECK(j_const.empty() == false); 28c5f01b2fSopenharmony_ci } 29c5f01b2fSopenharmony_ci 30c5f01b2fSopenharmony_ci SECTION("definition of empty") 31c5f01b2fSopenharmony_ci { 32c5f01b2fSopenharmony_ci CHECK(j.empty() == (j.begin() == j.end())); 33c5f01b2fSopenharmony_ci CHECK(j_const.empty() == (j_const.begin() == j_const.end())); 34c5f01b2fSopenharmony_ci } 35c5f01b2fSopenharmony_ci } 36c5f01b2fSopenharmony_ci 37c5f01b2fSopenharmony_ci SECTION("string") 38c5f01b2fSopenharmony_ci { 39c5f01b2fSopenharmony_ci json j = "hello world"; 40c5f01b2fSopenharmony_ci const json j_const(j); 41c5f01b2fSopenharmony_ci 42c5f01b2fSopenharmony_ci SECTION("result of empty") 43c5f01b2fSopenharmony_ci { 44c5f01b2fSopenharmony_ci CHECK(j.empty() == false); 45c5f01b2fSopenharmony_ci CHECK(j_const.empty() == false); 46c5f01b2fSopenharmony_ci } 47c5f01b2fSopenharmony_ci 48c5f01b2fSopenharmony_ci SECTION("definition of empty") 49c5f01b2fSopenharmony_ci { 50c5f01b2fSopenharmony_ci CHECK(j.empty() == (j.begin() == j.end())); 51c5f01b2fSopenharmony_ci CHECK(j_const.empty() == (j_const.begin() == j_const.end())); 52c5f01b2fSopenharmony_ci } 53c5f01b2fSopenharmony_ci } 54c5f01b2fSopenharmony_ci 55c5f01b2fSopenharmony_ci SECTION("array") 56c5f01b2fSopenharmony_ci { 57c5f01b2fSopenharmony_ci SECTION("empty array") 58c5f01b2fSopenharmony_ci { 59c5f01b2fSopenharmony_ci json j = json::array(); 60c5f01b2fSopenharmony_ci const json j_const(j); 61c5f01b2fSopenharmony_ci 62c5f01b2fSopenharmony_ci SECTION("result of empty") 63c5f01b2fSopenharmony_ci { 64c5f01b2fSopenharmony_ci CHECK(j.empty() == true); 65c5f01b2fSopenharmony_ci CHECK(j_const.empty() == true); 66c5f01b2fSopenharmony_ci } 67c5f01b2fSopenharmony_ci 68c5f01b2fSopenharmony_ci SECTION("definition of empty") 69c5f01b2fSopenharmony_ci { 70c5f01b2fSopenharmony_ci CHECK(j.empty() == (j.begin() == j.end())); 71c5f01b2fSopenharmony_ci CHECK(j_const.empty() == (j_const.begin() == j_const.end())); 72c5f01b2fSopenharmony_ci } 73c5f01b2fSopenharmony_ci } 74c5f01b2fSopenharmony_ci 75c5f01b2fSopenharmony_ci SECTION("filled array") 76c5f01b2fSopenharmony_ci { 77c5f01b2fSopenharmony_ci json j = {1, 2, 3}; 78c5f01b2fSopenharmony_ci const json j_const(j); 79c5f01b2fSopenharmony_ci 80c5f01b2fSopenharmony_ci SECTION("result of empty") 81c5f01b2fSopenharmony_ci { 82c5f01b2fSopenharmony_ci CHECK(j.empty() == false); 83c5f01b2fSopenharmony_ci CHECK(j_const.empty() == false); 84c5f01b2fSopenharmony_ci } 85c5f01b2fSopenharmony_ci 86c5f01b2fSopenharmony_ci SECTION("definition of empty") 87c5f01b2fSopenharmony_ci { 88c5f01b2fSopenharmony_ci CHECK(j.empty() == (j.begin() == j.end())); 89c5f01b2fSopenharmony_ci CHECK(j_const.empty() == (j_const.begin() == j_const.end())); 90c5f01b2fSopenharmony_ci } 91c5f01b2fSopenharmony_ci } 92c5f01b2fSopenharmony_ci } 93c5f01b2fSopenharmony_ci 94c5f01b2fSopenharmony_ci SECTION("object") 95c5f01b2fSopenharmony_ci { 96c5f01b2fSopenharmony_ci SECTION("empty object") 97c5f01b2fSopenharmony_ci { 98c5f01b2fSopenharmony_ci json j = json::object(); 99c5f01b2fSopenharmony_ci const json j_const(j); 100c5f01b2fSopenharmony_ci 101c5f01b2fSopenharmony_ci SECTION("result of empty") 102c5f01b2fSopenharmony_ci { 103c5f01b2fSopenharmony_ci CHECK(j.empty() == true); 104c5f01b2fSopenharmony_ci CHECK(j_const.empty() == true); 105c5f01b2fSopenharmony_ci } 106c5f01b2fSopenharmony_ci 107c5f01b2fSopenharmony_ci SECTION("definition of empty") 108c5f01b2fSopenharmony_ci { 109c5f01b2fSopenharmony_ci CHECK(j.empty() == (j.begin() == j.end())); 110c5f01b2fSopenharmony_ci CHECK(j_const.empty() == (j_const.begin() == j_const.end())); 111c5f01b2fSopenharmony_ci } 112c5f01b2fSopenharmony_ci } 113c5f01b2fSopenharmony_ci 114c5f01b2fSopenharmony_ci SECTION("filled object") 115c5f01b2fSopenharmony_ci { 116c5f01b2fSopenharmony_ci json j = {{"one", 1}, {"two", 2}, {"three", 3}}; 117c5f01b2fSopenharmony_ci const json j_const(j); 118c5f01b2fSopenharmony_ci 119c5f01b2fSopenharmony_ci SECTION("result of empty") 120c5f01b2fSopenharmony_ci { 121c5f01b2fSopenharmony_ci CHECK(j.empty() == false); 122c5f01b2fSopenharmony_ci CHECK(j_const.empty() == false); 123c5f01b2fSopenharmony_ci } 124c5f01b2fSopenharmony_ci 125c5f01b2fSopenharmony_ci SECTION("definition of empty") 126c5f01b2fSopenharmony_ci { 127c5f01b2fSopenharmony_ci CHECK(j.empty() == (j.begin() == j.end())); 128c5f01b2fSopenharmony_ci CHECK(j_const.empty() == (j_const.begin() == j_const.end())); 129c5f01b2fSopenharmony_ci } 130c5f01b2fSopenharmony_ci } 131c5f01b2fSopenharmony_ci } 132c5f01b2fSopenharmony_ci 133c5f01b2fSopenharmony_ci SECTION("number (integer)") 134c5f01b2fSopenharmony_ci { 135c5f01b2fSopenharmony_ci json j = -23; 136c5f01b2fSopenharmony_ci const json j_const(j); 137c5f01b2fSopenharmony_ci 138c5f01b2fSopenharmony_ci SECTION("result of empty") 139c5f01b2fSopenharmony_ci { 140c5f01b2fSopenharmony_ci CHECK(j.empty() == false); 141c5f01b2fSopenharmony_ci CHECK(j_const.empty() == false); 142c5f01b2fSopenharmony_ci } 143c5f01b2fSopenharmony_ci 144c5f01b2fSopenharmony_ci SECTION("definition of empty") 145c5f01b2fSopenharmony_ci { 146c5f01b2fSopenharmony_ci CHECK(j.empty() == (j.begin() == j.end())); 147c5f01b2fSopenharmony_ci CHECK(j_const.empty() == (j_const.begin() == j_const.end())); 148c5f01b2fSopenharmony_ci } 149c5f01b2fSopenharmony_ci } 150c5f01b2fSopenharmony_ci 151c5f01b2fSopenharmony_ci SECTION("number (unsigned)") 152c5f01b2fSopenharmony_ci { 153c5f01b2fSopenharmony_ci json j = 23u; 154c5f01b2fSopenharmony_ci const json j_const(j); 155c5f01b2fSopenharmony_ci 156c5f01b2fSopenharmony_ci SECTION("result of empty") 157c5f01b2fSopenharmony_ci { 158c5f01b2fSopenharmony_ci CHECK(j.empty() == false); 159c5f01b2fSopenharmony_ci CHECK(j_const.empty() == false); 160c5f01b2fSopenharmony_ci } 161c5f01b2fSopenharmony_ci 162c5f01b2fSopenharmony_ci SECTION("definition of empty") 163c5f01b2fSopenharmony_ci { 164c5f01b2fSopenharmony_ci CHECK(j.empty() == (j.begin() == j.end())); 165c5f01b2fSopenharmony_ci CHECK(j_const.empty() == (j_const.begin() == j_const.end())); 166c5f01b2fSopenharmony_ci } 167c5f01b2fSopenharmony_ci } 168c5f01b2fSopenharmony_ci 169c5f01b2fSopenharmony_ci SECTION("number (float)") 170c5f01b2fSopenharmony_ci { 171c5f01b2fSopenharmony_ci json j = 23.42; 172c5f01b2fSopenharmony_ci const json j_const(j); 173c5f01b2fSopenharmony_ci 174c5f01b2fSopenharmony_ci SECTION("result of empty") 175c5f01b2fSopenharmony_ci { 176c5f01b2fSopenharmony_ci CHECK(j.empty() == false); 177c5f01b2fSopenharmony_ci CHECK(j_const.empty() == false); 178c5f01b2fSopenharmony_ci } 179c5f01b2fSopenharmony_ci 180c5f01b2fSopenharmony_ci SECTION("definition of empty") 181c5f01b2fSopenharmony_ci { 182c5f01b2fSopenharmony_ci CHECK(j.empty() == (j.begin() == j.end())); 183c5f01b2fSopenharmony_ci CHECK(j_const.empty() == (j_const.begin() == j_const.end())); 184c5f01b2fSopenharmony_ci } 185c5f01b2fSopenharmony_ci } 186c5f01b2fSopenharmony_ci 187c5f01b2fSopenharmony_ci SECTION("null") 188c5f01b2fSopenharmony_ci { 189c5f01b2fSopenharmony_ci json j = nullptr; 190c5f01b2fSopenharmony_ci const json j_const(j); 191c5f01b2fSopenharmony_ci 192c5f01b2fSopenharmony_ci SECTION("result of empty") 193c5f01b2fSopenharmony_ci { 194c5f01b2fSopenharmony_ci CHECK(j.empty() == true); 195c5f01b2fSopenharmony_ci CHECK(j_const.empty() == true); 196c5f01b2fSopenharmony_ci } 197c5f01b2fSopenharmony_ci 198c5f01b2fSopenharmony_ci SECTION("definition of empty") 199c5f01b2fSopenharmony_ci { 200c5f01b2fSopenharmony_ci CHECK(j.empty() == (j.begin() == j.end())); 201c5f01b2fSopenharmony_ci CHECK(j_const.empty() == (j_const.begin() == j_const.end())); 202c5f01b2fSopenharmony_ci } 203c5f01b2fSopenharmony_ci } 204c5f01b2fSopenharmony_ci } 205c5f01b2fSopenharmony_ci 206c5f01b2fSopenharmony_ci SECTION("size()") 207c5f01b2fSopenharmony_ci { 208c5f01b2fSopenharmony_ci SECTION("boolean") 209c5f01b2fSopenharmony_ci { 210c5f01b2fSopenharmony_ci json j = true; 211c5f01b2fSopenharmony_ci const json j_const(j); 212c5f01b2fSopenharmony_ci 213c5f01b2fSopenharmony_ci SECTION("result of size") 214c5f01b2fSopenharmony_ci { 215c5f01b2fSopenharmony_ci CHECK(j.size() == 1); 216c5f01b2fSopenharmony_ci CHECK(j_const.size() == 1); 217c5f01b2fSopenharmony_ci } 218c5f01b2fSopenharmony_ci 219c5f01b2fSopenharmony_ci SECTION("definition of size") 220c5f01b2fSopenharmony_ci { 221c5f01b2fSopenharmony_ci CHECK(std::distance(j.begin(), j.end()) == j.size()); 222c5f01b2fSopenharmony_ci CHECK(std::distance(j_const.begin(), j_const.end()) == j_const.size()); 223c5f01b2fSopenharmony_ci CHECK(std::distance(j.rbegin(), j.rend()) == j.size()); 224c5f01b2fSopenharmony_ci CHECK(std::distance(j_const.crbegin(), j_const.crend()) == j_const.size()); 225c5f01b2fSopenharmony_ci } 226c5f01b2fSopenharmony_ci } 227c5f01b2fSopenharmony_ci 228c5f01b2fSopenharmony_ci SECTION("string") 229c5f01b2fSopenharmony_ci { 230c5f01b2fSopenharmony_ci json j = "hello world"; 231c5f01b2fSopenharmony_ci const json j_const(j); 232c5f01b2fSopenharmony_ci 233c5f01b2fSopenharmony_ci SECTION("result of size") 234c5f01b2fSopenharmony_ci { 235c5f01b2fSopenharmony_ci CHECK(j.size() == 1); 236c5f01b2fSopenharmony_ci CHECK(j_const.size() == 1); 237c5f01b2fSopenharmony_ci } 238c5f01b2fSopenharmony_ci 239c5f01b2fSopenharmony_ci SECTION("definition of size") 240c5f01b2fSopenharmony_ci { 241c5f01b2fSopenharmony_ci CHECK(std::distance(j.begin(), j.end()) == j.size()); 242c5f01b2fSopenharmony_ci CHECK(std::distance(j_const.begin(), j_const.end()) == j_const.size()); 243c5f01b2fSopenharmony_ci CHECK(std::distance(j.rbegin(), j.rend()) == j.size()); 244c5f01b2fSopenharmony_ci CHECK(std::distance(j_const.crbegin(), j_const.crend()) == j_const.size()); 245c5f01b2fSopenharmony_ci } 246c5f01b2fSopenharmony_ci } 247c5f01b2fSopenharmony_ci 248c5f01b2fSopenharmony_ci SECTION("array") 249c5f01b2fSopenharmony_ci { 250c5f01b2fSopenharmony_ci SECTION("empty array") 251c5f01b2fSopenharmony_ci { 252c5f01b2fSopenharmony_ci json j = json::array(); 253c5f01b2fSopenharmony_ci const json j_const(j); 254c5f01b2fSopenharmony_ci 255c5f01b2fSopenharmony_ci SECTION("result of size") 256c5f01b2fSopenharmony_ci { 257c5f01b2fSopenharmony_ci CHECK(j.size() == 0); 258c5f01b2fSopenharmony_ci CHECK(j_const.size() == 0); 259c5f01b2fSopenharmony_ci } 260c5f01b2fSopenharmony_ci 261c5f01b2fSopenharmony_ci SECTION("definition of size") 262c5f01b2fSopenharmony_ci { 263c5f01b2fSopenharmony_ci CHECK(std::distance(j.begin(), j.end()) == j.size()); 264c5f01b2fSopenharmony_ci CHECK(std::distance(j_const.begin(), j_const.end()) == j_const.size()); 265c5f01b2fSopenharmony_ci CHECK(std::distance(j.rbegin(), j.rend()) == j.size()); 266c5f01b2fSopenharmony_ci CHECK(std::distance(j_const.crbegin(), j_const.crend()) == j_const.size()); 267c5f01b2fSopenharmony_ci } 268c5f01b2fSopenharmony_ci } 269c5f01b2fSopenharmony_ci 270c5f01b2fSopenharmony_ci SECTION("filled array") 271c5f01b2fSopenharmony_ci { 272c5f01b2fSopenharmony_ci json j = {1, 2, 3}; 273c5f01b2fSopenharmony_ci const json j_const(j); 274c5f01b2fSopenharmony_ci 275c5f01b2fSopenharmony_ci SECTION("result of size") 276c5f01b2fSopenharmony_ci { 277c5f01b2fSopenharmony_ci CHECK(j.size() == 3); 278c5f01b2fSopenharmony_ci CHECK(j_const.size() == 3); 279c5f01b2fSopenharmony_ci } 280c5f01b2fSopenharmony_ci 281c5f01b2fSopenharmony_ci SECTION("definition of size") 282c5f01b2fSopenharmony_ci { 283c5f01b2fSopenharmony_ci CHECK(std::distance(j.begin(), j.end()) == j.size()); 284c5f01b2fSopenharmony_ci CHECK(std::distance(j_const.begin(), j_const.end()) == j_const.size()); 285c5f01b2fSopenharmony_ci CHECK(std::distance(j.rbegin(), j.rend()) == j.size()); 286c5f01b2fSopenharmony_ci CHECK(std::distance(j_const.crbegin(), j_const.crend()) == j_const.size()); 287c5f01b2fSopenharmony_ci } 288c5f01b2fSopenharmony_ci } 289c5f01b2fSopenharmony_ci } 290c5f01b2fSopenharmony_ci 291c5f01b2fSopenharmony_ci SECTION("object") 292c5f01b2fSopenharmony_ci { 293c5f01b2fSopenharmony_ci SECTION("empty object") 294c5f01b2fSopenharmony_ci { 295c5f01b2fSopenharmony_ci json j = json::object(); 296c5f01b2fSopenharmony_ci const json j_const(j); 297c5f01b2fSopenharmony_ci 298c5f01b2fSopenharmony_ci SECTION("result of size") 299c5f01b2fSopenharmony_ci { 300c5f01b2fSopenharmony_ci CHECK(j.size() == 0); 301c5f01b2fSopenharmony_ci CHECK(j_const.size() == 0); 302c5f01b2fSopenharmony_ci } 303c5f01b2fSopenharmony_ci 304c5f01b2fSopenharmony_ci SECTION("definition of size") 305c5f01b2fSopenharmony_ci { 306c5f01b2fSopenharmony_ci CHECK(std::distance(j.begin(), j.end()) == j.size()); 307c5f01b2fSopenharmony_ci CHECK(std::distance(j_const.begin(), j_const.end()) == j_const.size()); 308c5f01b2fSopenharmony_ci CHECK(std::distance(j.rbegin(), j.rend()) == j.size()); 309c5f01b2fSopenharmony_ci CHECK(std::distance(j_const.crbegin(), j_const.crend()) == j_const.size()); 310c5f01b2fSopenharmony_ci } 311c5f01b2fSopenharmony_ci } 312c5f01b2fSopenharmony_ci 313c5f01b2fSopenharmony_ci SECTION("filled object") 314c5f01b2fSopenharmony_ci { 315c5f01b2fSopenharmony_ci json j = {{"one", 1}, {"two", 2}, {"three", 3}}; 316c5f01b2fSopenharmony_ci const json j_const(j); 317c5f01b2fSopenharmony_ci 318c5f01b2fSopenharmony_ci SECTION("result of size") 319c5f01b2fSopenharmony_ci { 320c5f01b2fSopenharmony_ci CHECK(j.size() == 3); 321c5f01b2fSopenharmony_ci CHECK(j_const.size() == 3); 322c5f01b2fSopenharmony_ci } 323c5f01b2fSopenharmony_ci 324c5f01b2fSopenharmony_ci SECTION("definition of size") 325c5f01b2fSopenharmony_ci { 326c5f01b2fSopenharmony_ci CHECK(std::distance(j.begin(), j.end()) == j.size()); 327c5f01b2fSopenharmony_ci CHECK(std::distance(j_const.begin(), j_const.end()) == j_const.size()); 328c5f01b2fSopenharmony_ci CHECK(std::distance(j.rbegin(), j.rend()) == j.size()); 329c5f01b2fSopenharmony_ci CHECK(std::distance(j_const.crbegin(), j_const.crend()) == j_const.size()); 330c5f01b2fSopenharmony_ci } 331c5f01b2fSopenharmony_ci } 332c5f01b2fSopenharmony_ci } 333c5f01b2fSopenharmony_ci 334c5f01b2fSopenharmony_ci SECTION("number (integer)") 335c5f01b2fSopenharmony_ci { 336c5f01b2fSopenharmony_ci json j = -23; 337c5f01b2fSopenharmony_ci const json j_const(j); 338c5f01b2fSopenharmony_ci 339c5f01b2fSopenharmony_ci SECTION("result of size") 340c5f01b2fSopenharmony_ci { 341c5f01b2fSopenharmony_ci CHECK(j.size() == 1); 342c5f01b2fSopenharmony_ci CHECK(j_const.size() == 1); 343c5f01b2fSopenharmony_ci } 344c5f01b2fSopenharmony_ci 345c5f01b2fSopenharmony_ci SECTION("definition of size") 346c5f01b2fSopenharmony_ci { 347c5f01b2fSopenharmony_ci CHECK(std::distance(j.begin(), j.end()) == j.size()); 348c5f01b2fSopenharmony_ci CHECK(std::distance(j_const.begin(), j_const.end()) == j_const.size()); 349c5f01b2fSopenharmony_ci CHECK(std::distance(j.rbegin(), j.rend()) == j.size()); 350c5f01b2fSopenharmony_ci CHECK(std::distance(j_const.crbegin(), j_const.crend()) == j_const.size()); 351c5f01b2fSopenharmony_ci } 352c5f01b2fSopenharmony_ci } 353c5f01b2fSopenharmony_ci 354c5f01b2fSopenharmony_ci SECTION("number (unsigned)") 355c5f01b2fSopenharmony_ci { 356c5f01b2fSopenharmony_ci json j = 23u; 357c5f01b2fSopenharmony_ci const json j_const(j); 358c5f01b2fSopenharmony_ci 359c5f01b2fSopenharmony_ci SECTION("result of size") 360c5f01b2fSopenharmony_ci { 361c5f01b2fSopenharmony_ci CHECK(j.size() == 1); 362c5f01b2fSopenharmony_ci CHECK(j_const.size() == 1); 363c5f01b2fSopenharmony_ci } 364c5f01b2fSopenharmony_ci 365c5f01b2fSopenharmony_ci SECTION("definition of size") 366c5f01b2fSopenharmony_ci { 367c5f01b2fSopenharmony_ci CHECK(std::distance(j.begin(), j.end()) == j.size()); 368c5f01b2fSopenharmony_ci CHECK(std::distance(j_const.begin(), j_const.end()) == j_const.size()); 369c5f01b2fSopenharmony_ci CHECK(std::distance(j.rbegin(), j.rend()) == j.size()); 370c5f01b2fSopenharmony_ci CHECK(std::distance(j_const.crbegin(), j_const.crend()) == j_const.size()); 371c5f01b2fSopenharmony_ci } 372c5f01b2fSopenharmony_ci } 373c5f01b2fSopenharmony_ci 374c5f01b2fSopenharmony_ci SECTION("number (float)") 375c5f01b2fSopenharmony_ci { 376c5f01b2fSopenharmony_ci json j = 23.42; 377c5f01b2fSopenharmony_ci const json j_const(j); 378c5f01b2fSopenharmony_ci 379c5f01b2fSopenharmony_ci SECTION("result of size") 380c5f01b2fSopenharmony_ci { 381c5f01b2fSopenharmony_ci CHECK(j.size() == 1); 382c5f01b2fSopenharmony_ci CHECK(j_const.size() == 1); 383c5f01b2fSopenharmony_ci } 384c5f01b2fSopenharmony_ci 385c5f01b2fSopenharmony_ci SECTION("definition of size") 386c5f01b2fSopenharmony_ci { 387c5f01b2fSopenharmony_ci CHECK(std::distance(j.begin(), j.end()) == j.size()); 388c5f01b2fSopenharmony_ci CHECK(std::distance(j_const.begin(), j_const.end()) == j_const.size()); 389c5f01b2fSopenharmony_ci CHECK(std::distance(j.rbegin(), j.rend()) == j.size()); 390c5f01b2fSopenharmony_ci CHECK(std::distance(j_const.crbegin(), j_const.crend()) == j_const.size()); 391c5f01b2fSopenharmony_ci } 392c5f01b2fSopenharmony_ci } 393c5f01b2fSopenharmony_ci 394c5f01b2fSopenharmony_ci SECTION("null") 395c5f01b2fSopenharmony_ci { 396c5f01b2fSopenharmony_ci json j = nullptr; 397c5f01b2fSopenharmony_ci const json j_const(j); 398c5f01b2fSopenharmony_ci 399c5f01b2fSopenharmony_ci SECTION("result of size") 400c5f01b2fSopenharmony_ci { 401c5f01b2fSopenharmony_ci CHECK(j.size() == 0); 402c5f01b2fSopenharmony_ci CHECK(j_const.size() == 0); 403c5f01b2fSopenharmony_ci } 404c5f01b2fSopenharmony_ci 405c5f01b2fSopenharmony_ci SECTION("definition of size") 406c5f01b2fSopenharmony_ci { 407c5f01b2fSopenharmony_ci CHECK(std::distance(j.begin(), j.end()) == j.size()); 408c5f01b2fSopenharmony_ci CHECK(std::distance(j_const.begin(), j_const.end()) == j_const.size()); 409c5f01b2fSopenharmony_ci CHECK(std::distance(j.rbegin(), j.rend()) == j.size()); 410c5f01b2fSopenharmony_ci CHECK(std::distance(j_const.crbegin(), j_const.crend()) == j_const.size()); 411c5f01b2fSopenharmony_ci } 412c5f01b2fSopenharmony_ci } 413c5f01b2fSopenharmony_ci } 414c5f01b2fSopenharmony_ci 415c5f01b2fSopenharmony_ci SECTION("max_size()") 416c5f01b2fSopenharmony_ci { 417c5f01b2fSopenharmony_ci SECTION("boolean") 418c5f01b2fSopenharmony_ci { 419c5f01b2fSopenharmony_ci json j = true; 420c5f01b2fSopenharmony_ci const json j_const = true; 421c5f01b2fSopenharmony_ci 422c5f01b2fSopenharmony_ci SECTION("result of max_size") 423c5f01b2fSopenharmony_ci { 424c5f01b2fSopenharmony_ci CHECK(j.max_size() == 1); 425c5f01b2fSopenharmony_ci CHECK(j_const.max_size() == 1); 426c5f01b2fSopenharmony_ci } 427c5f01b2fSopenharmony_ci } 428c5f01b2fSopenharmony_ci 429c5f01b2fSopenharmony_ci SECTION("string") 430c5f01b2fSopenharmony_ci { 431c5f01b2fSopenharmony_ci json j = "hello world"; 432c5f01b2fSopenharmony_ci const json j_const = "hello world"; 433c5f01b2fSopenharmony_ci 434c5f01b2fSopenharmony_ci SECTION("result of max_size") 435c5f01b2fSopenharmony_ci { 436c5f01b2fSopenharmony_ci CHECK(j.max_size() == 1); 437c5f01b2fSopenharmony_ci CHECK(j_const.max_size() == 1); 438c5f01b2fSopenharmony_ci } 439c5f01b2fSopenharmony_ci } 440c5f01b2fSopenharmony_ci 441c5f01b2fSopenharmony_ci SECTION("array") 442c5f01b2fSopenharmony_ci { 443c5f01b2fSopenharmony_ci SECTION("empty array") 444c5f01b2fSopenharmony_ci { 445c5f01b2fSopenharmony_ci json j = json::array(); 446c5f01b2fSopenharmony_ci const json j_const = json::array(); 447c5f01b2fSopenharmony_ci 448c5f01b2fSopenharmony_ci SECTION("result of max_size") 449c5f01b2fSopenharmony_ci { 450c5f01b2fSopenharmony_ci CHECK(j.max_size() >= j.size()); 451c5f01b2fSopenharmony_ci CHECK(j_const.max_size() >= j_const.size()); 452c5f01b2fSopenharmony_ci } 453c5f01b2fSopenharmony_ci } 454c5f01b2fSopenharmony_ci 455c5f01b2fSopenharmony_ci SECTION("filled array") 456c5f01b2fSopenharmony_ci { 457c5f01b2fSopenharmony_ci json j = {1, 2, 3}; 458c5f01b2fSopenharmony_ci const json j_const = {1, 2, 3}; 459c5f01b2fSopenharmony_ci 460c5f01b2fSopenharmony_ci SECTION("result of max_size") 461c5f01b2fSopenharmony_ci { 462c5f01b2fSopenharmony_ci CHECK(j.max_size() >= j.size()); 463c5f01b2fSopenharmony_ci CHECK(j_const.max_size() >= j_const.size()); 464c5f01b2fSopenharmony_ci } 465c5f01b2fSopenharmony_ci } 466c5f01b2fSopenharmony_ci } 467c5f01b2fSopenharmony_ci 468c5f01b2fSopenharmony_ci SECTION("object") 469c5f01b2fSopenharmony_ci { 470c5f01b2fSopenharmony_ci SECTION("empty object") 471c5f01b2fSopenharmony_ci { 472c5f01b2fSopenharmony_ci json j = json::object(); 473c5f01b2fSopenharmony_ci const json j_const = json::object(); 474c5f01b2fSopenharmony_ci 475c5f01b2fSopenharmony_ci SECTION("result of max_size") 476c5f01b2fSopenharmony_ci { 477c5f01b2fSopenharmony_ci CHECK(j.max_size() >= j.size()); 478c5f01b2fSopenharmony_ci CHECK(j_const.max_size() >= j_const.size()); 479c5f01b2fSopenharmony_ci } 480c5f01b2fSopenharmony_ci } 481c5f01b2fSopenharmony_ci 482c5f01b2fSopenharmony_ci SECTION("filled object") 483c5f01b2fSopenharmony_ci { 484c5f01b2fSopenharmony_ci json j = {{"one", 1}, {"two", 2}, {"three", 3}}; 485c5f01b2fSopenharmony_ci const json j_const = {{"one", 1}, {"two", 2}, {"three", 3}}; 486c5f01b2fSopenharmony_ci 487c5f01b2fSopenharmony_ci SECTION("result of max_size") 488c5f01b2fSopenharmony_ci { 489c5f01b2fSopenharmony_ci CHECK(j.max_size() >= j.size()); 490c5f01b2fSopenharmony_ci CHECK(j_const.max_size() >= j_const.size()); 491c5f01b2fSopenharmony_ci } 492c5f01b2fSopenharmony_ci } 493c5f01b2fSopenharmony_ci } 494c5f01b2fSopenharmony_ci 495c5f01b2fSopenharmony_ci SECTION("number (integer)") 496c5f01b2fSopenharmony_ci { 497c5f01b2fSopenharmony_ci json j = -23; 498c5f01b2fSopenharmony_ci const json j_const = -23; 499c5f01b2fSopenharmony_ci 500c5f01b2fSopenharmony_ci SECTION("result of max_size") 501c5f01b2fSopenharmony_ci { 502c5f01b2fSopenharmony_ci CHECK(j.max_size() == 1); 503c5f01b2fSopenharmony_ci CHECK(j_const.max_size() == 1); 504c5f01b2fSopenharmony_ci } 505c5f01b2fSopenharmony_ci } 506c5f01b2fSopenharmony_ci 507c5f01b2fSopenharmony_ci SECTION("number (unsigned)") 508c5f01b2fSopenharmony_ci { 509c5f01b2fSopenharmony_ci json j = 23u; 510c5f01b2fSopenharmony_ci const json j_const = 23u; 511c5f01b2fSopenharmony_ci 512c5f01b2fSopenharmony_ci SECTION("result of max_size") 513c5f01b2fSopenharmony_ci { 514c5f01b2fSopenharmony_ci CHECK(j.max_size() == 1); 515c5f01b2fSopenharmony_ci CHECK(j_const.max_size() == 1); 516c5f01b2fSopenharmony_ci } 517c5f01b2fSopenharmony_ci } 518c5f01b2fSopenharmony_ci 519c5f01b2fSopenharmony_ci SECTION("number (float)") 520c5f01b2fSopenharmony_ci { 521c5f01b2fSopenharmony_ci json j = 23.42; 522c5f01b2fSopenharmony_ci const json j_const = 23.42; 523c5f01b2fSopenharmony_ci 524c5f01b2fSopenharmony_ci SECTION("result of max_size") 525c5f01b2fSopenharmony_ci { 526c5f01b2fSopenharmony_ci CHECK(j.max_size() == 1); 527c5f01b2fSopenharmony_ci CHECK(j_const.max_size() == 1); 528c5f01b2fSopenharmony_ci } 529c5f01b2fSopenharmony_ci } 530c5f01b2fSopenharmony_ci 531c5f01b2fSopenharmony_ci SECTION("null") 532c5f01b2fSopenharmony_ci { 533c5f01b2fSopenharmony_ci json j = nullptr; 534c5f01b2fSopenharmony_ci const json j_const = nullptr; 535c5f01b2fSopenharmony_ci 536c5f01b2fSopenharmony_ci SECTION("result of max_size") 537c5f01b2fSopenharmony_ci { 538c5f01b2fSopenharmony_ci CHECK(j.max_size() == 0); 539c5f01b2fSopenharmony_ci CHECK(j_const.max_size() == 0); 540c5f01b2fSopenharmony_ci } 541c5f01b2fSopenharmony_ci } 542c5f01b2fSopenharmony_ci } 543c5f01b2fSopenharmony_ci} 544