From d524e23204e8151b0d3346259c3bb009d574b9c2 Mon Sep 17 00:00:00 2001 From: Niels Date: Sun, 22 Feb 2015 17:52:27 +0100 Subject: [PATCH] overworked iterators --- README.md | 8 + json.gif | Bin 0 -> 351849 bytes src/json.hpp | 814 ++++++++--- src/json.hpp.re2c | 814 ++++++++--- test/unit.cpp | 3289 +++++++++++++++++++++++++++------------------ 5 files changed, 3277 insertions(+), 1648 deletions(-) create mode 100644 json.gif diff --git a/README.md b/README.md index 9b1c6f07..28d2dc3d 100644 --- a/README.md +++ b/README.md @@ -214,6 +214,14 @@ j.empty(); // false j.type(); // json::value_t::array j.clear(); // the array is empty again +// convenience type checkers +j.is_null(); +j.is_boolean(); +j.is_number(); +j.is_object(); +j.is_array(); +j.is_string(); + // comparison j == "[\"foo\", 1, true]"_json; // true diff --git a/json.gif b/json.gif new file mode 100644 index 0000000000000000000000000000000000000000..7e52693cd346c6d0b45b1f07ca253880188379a6 GIT binary patch literal 351849 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 G#$0z5g zV;iU-JpezptrmU0Knv}+?YBJZ4SxTyRKw1?Gf3*+X=6vR4K;EpUi$<7JT6wAk#hX1 zAB5Gpd&RvtKxR>{%hmu6c`pxOybZ~VP1H}B3OkX}+XVe<+|^a%^YiuEXo?ICOVvT^ z@!!TBuq3d7M5Rrfzn%5V=YHCUH)%%}lH@QV3w_1K5Z^E5v@L3W*-^LFDO5B>_gpSa znv;q@@}+7H3kfe++$s8`mrs3nexf5VSpgX--1`xwdd=6*QqqYPu=!Uo7-iO!8IcnH zZpz2Wc(T+=S1Dd4uZpIjXt@;Sq3pbl1(-1`ouX61HvKjP&MT5@&#az~3iu*8q}XvR z5;RX|Re|0?-4hz#8@iY|fRQ*{t5B{q510t>9#jf9zKsZ!LJ8w)_fTpB&lUs`8(eLO9=^0;kUP%2Pn1XofIX^ z-ha%N<-$LMs7FdiSbun%uI;5!3%vK7ozS~1685e+ir8m#y z%#I&C+5LFr5WNxkQ?aDgdwe9_wcyGDZ4~ClX8n!yE1;3k;?b9D9FGUKT_4VsCd6+R z8M|LM(4^Pd#+f&dd{ED*=fkUl`z>EihTW7-uF5I-usJIFd^35t-=TQC z$fx*~L&l@viOBsV?ejCmAEsV~>HXZ@sn&h;f<64hp_Wu@p1J44=Qm$2^X@?)qCA+Y?SC8)ns9`+MoZ6pGL@Tn>cz*!gI8O4%4reE2LpKjPD# zxVwM)p3|C+(^c&DY?a8m&9=2g>r+oF_3H!QuD!qa@6%A4NJIGj{M(zWJx4Fsyc|Su zdsVK; z_56n&T;6@x?mN6~*QowCUtQUqqC-9CKj(_T$Dc#MKNn3ZA0*+Z+w{-;;6F^(%1(Xk zzImr=ZH$K6Mwx@;y2VxoF80QzjBBxS>S=wl)!JcF&7PYc>YuqM|7DwgLACs*%TFQ@ zQC=UVpEl?2t@5q&e~)S_xta0XB=AvsEK1c9Jp|e2g@#yIuD_gF)4l~YcI9|wZF*eF z_MU$}@+?)pUTB91#uNCaj&tGuDqAi0b#Jfg{jJysS=nDmxPJHYZ^yzVMCmPDPuxTMTV8OZSWa(ndZ z@Is?^*T9g+BYCfq(ku`rXiW#_5L?m17J<^*(*F34nJzo$avfTP4Ur^@$CrWf(-iZ{h_^g#HSg13pLGBDB^X#@#4nhw>bgHWb!>3aX}Gy?%Ua*$o-MlhcAfLNJqp|V zUh9(Ac+4l}T;8Lsc?sVgb_~DH?7kZTTL7;ZuZ3iiZux<=Up9dMD+)m4u9Sqaw^dh!BPHM;b~>r zd;u5513Ybk=fm)@{9eaU|9`FacRkF_Wu@Z9C}HWooi#v2=6<3jDS>bM8Cj}V=o7}?x-;Os!nsnK7RBVqzXg%zm$U>J3fQ{NQYtPz~I zuM4*`6v*bQoGV$gip7UKe4(DP5&nf^>7$NkGlTTT8nqlwThBF2-2h@^jDun~xQ}Vp z{Bo`dQNyn}98NWwC&q8$g+0KSRnCRloNSEcC}Uy6goT&^RfnZu;L`x0^TMc=tt^R8 z__D42NDy#?Ykf?0-{9ZE+$ zvy(@Tu+JQKKmFE3A)D$Q$#0hn|l1^Kk zKPN@9{Y%4cqN*pjYFU4=N=P@VTWUr#0U6#}jS-Zbn1$L5k3R&Y#6UDF{nZ@G_tz%P zuYl=`Rn)=&E=m9>-v)HwIz^Js>;2ZGn4XteIwyL8f{voJ{al^>T%&~mRx

Jn?S! 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 /*! +@brief namespace for Niels Lohmann @see https://github.com/nlohmann */ namespace nlohmann @@ -75,30 +96,76 @@ class basic_json class iterator; class const_iterator; - /// the type of elements in a basic_json container + /*! + @brief the type of elements in a basic_json container + @ingroup container + */ using value_type = basic_json; - /// the type of an element reference + + /*! + @brief the type of an element reference + @ingroup container + */ using reference = basic_json&; - /// the type of an element const reference + + /*! + @brief the type of an element const reference + @ingroup container + */ using const_reference = const basic_json&; + + /*! + @brief a type to represent differences between iterators + @ingroup container + */ + using difference_type = std::ptrdiff_t; + + /*! + @brief a type to represent container sizes + @ingroup container + */ + using size_type = std::size_t; + + /// the allocator type + using allocator_type = Allocator; + /// the type of an element pointer using pointer = basic_json*; /// the type of an element const pointer using const_pointer = const basic_json*; - /// a type to represent differences between iterators - using difference_type = std::ptrdiff_t; - /// a type to represent container sizes - using size_type = std::size_t; - /// an iterator for a basic_json container + + /*! + @brief an iterator for a basic_json container + @ingroup container + */ using iterator = basic_json::iterator; - /// a const iterator for a basic_json container + + /*! + @brief a const iterator for a basic_json container + @ingroup container + */ using const_iterator = basic_json::const_iterator; - /// a reverse iterator for a basic_json container + + /*! + @brief a reverse iterator for a basic_json container + @ingroup reversiblecontainer + */ using reverse_iterator = std::reverse_iterator; - /// a const reverse iterator for a basic_json container + + /*! + @brief a const reverse iterator for a basic_json container + @ingroup reversiblecontainer + */ using const_reverse_iterator = std::reverse_iterator; + /// returns the allocator associated with the container + inline allocator_type get_allocator() const + { + return allocator_type(); + } + + /////////////////////////// // JSON value data types // /////////////////////////// @@ -166,6 +233,85 @@ class basic_json number_float ///< number value (floating-point) }; + /*! + @brief comparison operator for JSON value types + + Returns an ordering that is similar to Python: + - order: null < boolean < number < object < array < string + - furthermore, each type is not smaller than itself + */ + friend bool operator<(const value_t lhs, const value_t rhs) + { + // no type is smaller than itself + if (lhs == rhs) + { + return false; + } + + switch (lhs) + { + case (value_t::null): + { + // nulls are smaller than all other types + return true; + } + + case (value_t::boolean): + { + // only nulls are smaller than booleans + return (rhs != value_t::null); + } + + case (value_t::number_float): + case (value_t::number_integer): + { + switch (rhs) + { + // numbers are smaller than objects, arrays, and string + case (value_t::object): + case (value_t::array): + case (value_t::string): + { + return true; + } + default: + { + return false; + } + } + } + + case (value_t::object): + { + switch (rhs) + { + // objects are smaller than arrays and string + case (value_t::array): + case (value_t::string): + { + return true; + } + default: + { + return false; + } + } + } + + case (value_t::array): + { + // arrays are smaller than strings + return (rhs == value_t::string); + } + + default: + { + // a string is not smaller than any other types + return false; + } + } + } + ////////////////// // constructors // @@ -226,10 +372,11 @@ class basic_json } } - /// create a null object (implicitly) - inline basic_json() noexcept - : m_type(value_t::null) - {} + /*! + @brief create a null object (implicitly) + @ingroup container + */ + inline basic_json() noexcept = default; /// create a null object (explicitly) inline basic_json(std::nullptr_t) noexcept @@ -424,11 +571,15 @@ class basic_json return basic_json(l, false, value_t::object); } + /////////////////////////////////////// // other constructors and destructor // /////////////////////////////////////// - /// copy constructor + /*! + @brief copy constructor + @ingroup container + */ inline basic_json(const basic_json& other) : m_type(other.m_type) { @@ -487,7 +638,10 @@ class basic_json other.m_value = {}; } - /// copy assignment + /*! + @brief copy assignment + @ingroup container + */ inline reference& operator=(basic_json other) noexcept ( std::is_nothrow_move_constructible::value and std::is_nothrow_move_assignable::value and @@ -500,7 +654,10 @@ class basic_json return *this; } - /// destructor + /*! + @brief destructor + @ingroup container + */ inline ~basic_json() noexcept { switch (m_type) @@ -577,6 +734,42 @@ class basic_json return m_type; } + // return whether value is null + inline bool is_null() const noexcept + { + return m_type == value_t::null; + } + + // return whether value is boolean + inline bool is_boolean() const noexcept + { + return m_type == value_t::boolean; + } + + // return whether value is number + inline bool is_number() const noexcept + { + return (m_type == value_t::number_integer) or (m_type == value_t::number_float); + } + + // return whether value is object + inline bool is_object() const noexcept + { + return m_type == value_t::object; + } + + // return whether value is array + inline bool is_array() const noexcept + { + return m_type == value_t::array; + } + + // return whether value is string + inline bool is_string() const noexcept + { + return m_type == value_t::string; + } + /// return the type of the object (implicit) operator value_t() const noexcept { @@ -871,7 +1064,10 @@ class basic_json // iterators // /////////////// - /// returns an iterator to the beginning of the container + /*! + @brief returns an iterator to the first element + @ingroup container + */ inline iterator begin() noexcept { iterator result(this); @@ -879,7 +1075,10 @@ class basic_json return result; } - /// returns a const iterator to the beginning of the container + /*! + @brief returns a const iterator to the first element + @ingroup container + */ inline const_iterator begin() const noexcept { const_iterator result(this); @@ -887,7 +1086,10 @@ class basic_json return result; } - /// returns a const iterator to the beginning of the container + /*! + @brief returns a const iterator to the first element + @ingroup container + */ inline const_iterator cbegin() const noexcept { const_iterator result(this); @@ -895,7 +1097,10 @@ class basic_json return result; } - /// returns an iterator to the end of the container + /*! + @brief returns an iterator to one past the last element + @ingroup container + */ inline iterator end() noexcept { iterator result(this); @@ -903,7 +1108,10 @@ class basic_json return result; } - /// returns a const iterator to the end of the container + /*! + @brief returns a const iterator to one past the last element + @ingroup container + */ inline const_iterator end() const noexcept { const_iterator result(this); @@ -911,7 +1119,10 @@ class basic_json return result; } - /// returns a const iterator to the end of the container + /*! + @brief returns a const iterator to one past the last element + @ingroup container + */ inline const_iterator cend() const noexcept { const_iterator result(this); @@ -919,37 +1130,55 @@ class basic_json return result; } - /// returns a reverse iterator to the beginning + /*! + @brief returns a reverse iterator to the first element + @ingroup reversiblecontainer + */ inline reverse_iterator rbegin() noexcept { return reverse_iterator(end()); } - /// returns a reverse iterator to the beginning + /*! + @brief returns a const reverse iterator to the first element + @ingroup reversiblecontainer + */ inline const_reverse_iterator rbegin() const noexcept { return const_reverse_iterator(end()); } - /// returns a reverse iterator to the end + /*! + @brief returns a reverse iterator to one past the last element + @ingroup reversiblecontainer + */ inline reverse_iterator rend() noexcept { return reverse_iterator(begin()); } - /// returns a reverse iterator to the end + /*! + @brief returns a const reverse iterator to one past the last element + @ingroup reversiblecontainer + */ inline const_reverse_iterator rend() const noexcept { return const_reverse_iterator(begin()); } - /// returns a reverse iterator to the beginning + /*! + @brief returns a const reverse iterator to the first element + @ingroup reversiblecontainer + */ inline const_reverse_iterator crbegin() const noexcept { return const_reverse_iterator(cend()); } - /// returns a reverse iterator to the end + /*! + @brief returns a const reverse iterator to one past the last element + @ingroup reversiblecontainer + */ inline const_reverse_iterator crend() const noexcept { return const_reverse_iterator(cbegin()); @@ -960,7 +1189,10 @@ class basic_json // capacity // ////////////// - /// checks whether the container is empty + /*! + @brief checks whether the container is empty + @ingroup container + */ inline bool empty() const noexcept { switch (m_type) @@ -988,7 +1220,10 @@ class basic_json } } - /// returns the number of elements + /*! + @brief returns the number of elements + @ingroup container + */ inline size_type size() const noexcept { switch (m_type) @@ -1016,7 +1251,10 @@ class basic_json } } - /// returns the maximum possible number of elements + /*! + @brief returns the maximum possible number of elements + @ingroup container + */ inline size_type max_size() const noexcept { switch (m_type) @@ -1186,7 +1424,10 @@ class basic_json return operator[](value.first); } - /// swaps the contents + /*! + @brief exchanges the values + @ingroup container + */ inline void swap(reference other) noexcept ( std::is_nothrow_move_constructible::value and std::is_nothrow_move_assignable::value and @@ -1242,7 +1483,10 @@ class basic_json // lexicographical comparison operators // ////////////////////////////////////////// - /// comparison: equal + /*! + @brief comparison: equal + @ingroup container + */ friend bool operator==(const_reference lhs, const_reference rhs) { switch (lhs.type()) @@ -1316,7 +1560,10 @@ class basic_json return false; } - /// comparison: not equal + /*! + @brief comparison: not equal + @ingroup container + */ friend bool operator!=(const_reference lhs, const_reference rhs) { return not (lhs == rhs); @@ -1393,7 +1640,9 @@ class basic_json } } - return false; + // We only reach this line if we cannot compare values. In that case, + // we compare types. + return lhs.type() < rhs.type(); } /// comparison: less than or equal @@ -1743,19 +1992,6 @@ class basic_json // iterators // /////////////// - /// values of a generic iterator type of non-container JSON values - enum class generic_iterator_value - { - /// the iterator was not initialized - uninitialized, - /// the iterator points to the only value - begin, - /// the iterator points past the only value - end, - /// the iterator points to an invalid value - invalid - }; - /// an iterator value template union internal_iterator @@ -1765,21 +2001,15 @@ class basic_json /// iterator for JSON arrays array_iterator_t array_iterator; /// generic iteraotr for all other value types - generic_iterator_value generic_iterator; + difference_type generic_iterator; /// default constructor - internal_iterator() : generic_iterator(generic_iterator_value::uninitialized) {} - /// constructor for object iterators - internal_iterator(object_iterator_t v) : object_iterator(v) {} - /// constructor for array iterators - internal_iterator(array_iterator_t v) : array_iterator(v) {} - /// constructor for generic iterators - internal_iterator(generic_iterator_value v) : generic_iterator(v) {} + internal_iterator() : generic_iterator(-1) {} }; public: - /// a bidirectional iterator for the basic_json class - class iterator : public std::iterator + /// a random access iterator for the basic_json class + class iterator : public std::iterator { public: /// the type of the values when the iterator is dereferenced @@ -1813,7 +2043,7 @@ class basic_json } default: { - m_it.generic_iterator = generic_iterator_value::uninitialized; + m_it.generic_iterator = -1; break; } } @@ -1847,13 +2077,13 @@ class basic_json case (basic_json::value_t::null): { // set to end so begin()==end() is true: null is empty - m_it.generic_iterator = generic_iterator_value::end; + m_it.generic_iterator = 1; break; } default: { - m_it.generic_iterator = generic_iterator_value::begin; + m_it.generic_iterator = 0; break; } } @@ -1878,14 +2108,14 @@ class basic_json default: { - m_it.generic_iterator = generic_iterator_value::end; + m_it.generic_iterator = 1; break; } } } /// return a reference to the value pointed to by the iterator - inline reference operator*() const + inline reference operator*() { switch (m_object->m_type) { @@ -1906,7 +2136,7 @@ class basic_json default: { - if (m_it.generic_iterator == generic_iterator_value::begin) + if (m_it.generic_iterator == 0) { return *m_object; } @@ -1919,7 +2149,7 @@ class basic_json } /// dereference the iterator - inline pointer operator->() const + inline pointer operator->() { switch (m_object->m_type) { @@ -1933,9 +2163,14 @@ class basic_json return &*m_it.array_iterator; } + case (basic_json::value_t::null): + { + throw std::out_of_range("cannot get value"); + } + default: { - if (m_it.generic_iterator == generic_iterator_value::begin) + if (m_it.generic_iterator == 0) { return m_object; } @@ -1950,7 +2185,7 @@ class basic_json /// post-increment (it++) inline iterator operator++(int) { - iterator result = *this; + auto result = *this; switch (m_object->m_type) { @@ -1968,14 +2203,7 @@ class basic_json default: { - if (m_it.generic_iterator == generic_iterator_value::begin) - { - m_it.generic_iterator = generic_iterator_value::end; - } - else - { - m_it.generic_iterator = generic_iterator_value::invalid; - } + m_it.generic_iterator++; break; } } @@ -2002,14 +2230,7 @@ class basic_json default: { - if (m_it.generic_iterator == generic_iterator_value::begin) - { - m_it.generic_iterator = generic_iterator_value::end; - } - else - { - m_it.generic_iterator = generic_iterator_value::invalid; - } + ++m_it.generic_iterator; break; } } @@ -2020,7 +2241,7 @@ class basic_json /// post-decrement (it--) inline iterator operator--(int) { - iterator result = *this; + auto result = *this; switch (m_object->m_type) { @@ -2036,22 +2257,9 @@ class basic_json break; } - case (basic_json::value_t::null): - { - m_it.generic_iterator = generic_iterator_value::invalid; - break; - } - default: { - if (m_it.generic_iterator == generic_iterator_value::end) - { - m_it.generic_iterator = generic_iterator_value::begin; - } - else - { - m_it.generic_iterator = generic_iterator_value::invalid; - } + m_it.generic_iterator--; break; } } @@ -2076,22 +2284,9 @@ class basic_json break; } - case (basic_json::value_t::null): - { - m_it.generic_iterator = generic_iterator_value::invalid; - break; - } - default: { - if (m_it.generic_iterator == generic_iterator_value::end) - { - m_it.generic_iterator = generic_iterator_value::begin; - } - else - { - m_it.generic_iterator = generic_iterator_value::invalid; - } + --m_it.generic_iterator; break; } } @@ -2102,9 +2297,10 @@ class basic_json /// comparison: equal inline bool operator==(const iterator& other) const { - if (m_object != other.m_object or m_object->m_type != other.m_object->m_type) + // if objects are not the same, the comparison is undefined + if (m_object != other.m_object) { - return false; + throw std::domain_error("cannot compare iterators of different containers"); } switch (m_object->m_type) @@ -2132,6 +2328,157 @@ class basic_json return not operator==(other); } + /// comparison: smaller + inline bool operator<(const iterator& other) const + { + // if objects are not the same, the comparison is undefined + if (m_object != other.m_object) + { + throw std::domain_error("cannot compare iterators of different containers"); + } + + switch (m_object->m_type) + { + case (basic_json::value_t::object): + { + throw std::domain_error("cannot use operator< for object iterators"); + } + + case (basic_json::value_t::array): + { + return (m_it.array_iterator < other.m_it.array_iterator); + } + + default: + { + return (m_it.generic_iterator < other.m_it.generic_iterator); + } + } + } + + /// comparison: less than or equal + inline bool operator<=(const iterator& other) const + { + return not other.operator < (*this); + } + + /// comparison: greater than + inline bool operator>(const iterator& other) const + { + return not operator<=(other); + } + + /// comparison: greater than or equal + inline bool operator>=(const iterator& other) const + { + return not operator<(other); + } + + /// add to iterator + inline iterator& operator+=(difference_type i) + { + switch (m_object->m_type) + { + case (basic_json::value_t::object): + { + throw std::domain_error("cannot use operator+= for object iterators"); + } + + case (basic_json::value_t::array): + { + m_it.array_iterator += i; + break; + } + + default: + { + m_it.generic_iterator += i; + break; + } + } + + return *this; + } + + /// subtract from iterator + inline iterator& operator-=(difference_type i) + { + return operator+=(-i); + } + + /// add to iterator + inline iterator operator+(difference_type i) + { + auto result = *this; + result += i; + return result; + } + + /// subtract from iterator + inline iterator operator-(difference_type i) + { + auto result = *this; + result -= i; + return result; + } + + /// return difference + inline difference_type operator-(const iterator& other) const + { + switch (m_object->m_type) + { + case (basic_json::value_t::object): + { + throw std::domain_error("cannot use operator- for object iterators"); + return 0; + } + + case (basic_json::value_t::array): + { + return m_it.array_iterator - other.m_it.array_iterator; + } + + default: + { + return m_it.generic_iterator - other.m_it.generic_iterator; + } + } + } + + /// access to successor + inline reference operator[](difference_type n) + { + switch (m_object->m_type) + { + case (basic_json::value_t::object): + { + throw std::domain_error("cannot use operator[] for object iterators"); + } + + case (basic_json::value_t::array): + { + return *(m_it.array_iterator + n); + } + + case (basic_json::value_t::null): + { + throw std::out_of_range("cannot get value"); + } + + default: + { + if (m_it.generic_iterator == -n) + { + return *m_object; + } + else + { + throw std::out_of_range("cannot get value"); + } + } + } + } + private: /// associated JSON instance pointer m_object = nullptr; @@ -2139,8 +2486,8 @@ class basic_json internal_iterator m_it; }; - /// a const bidirectional iterator for the basic_json class - class const_iterator : public std::iterator + /// a const random access iterator for the basic_json class + class const_iterator : public std::iterator { public: /// the type of the values when the iterator is dereferenced @@ -2174,7 +2521,7 @@ class basic_json } default: { - m_it.generic_iterator = generic_iterator_value::uninitialized; + m_it.generic_iterator = -1; break; } } @@ -2233,13 +2580,13 @@ class basic_json case (basic_json::value_t::null): { // set to end so begin()==end() is true: null is empty - m_it.generic_iterator = generic_iterator_value::end; + m_it.generic_iterator = 1; break; } default: { - m_it.generic_iterator = generic_iterator_value::begin; + m_it.generic_iterator = 0; break; } } @@ -2264,7 +2611,7 @@ class basic_json default: { - m_it.generic_iterator = generic_iterator_value::end; + m_it.generic_iterator = 1; break; } } @@ -2292,7 +2639,7 @@ class basic_json default: { - if (m_it.generic_iterator == generic_iterator_value::begin) + if (m_it.generic_iterator == 0) { return *m_object; } @@ -2321,7 +2668,7 @@ class basic_json default: { - if (m_it.generic_iterator == generic_iterator_value::begin) + if (m_it.generic_iterator == 0) { return m_object; } @@ -2336,7 +2683,7 @@ class basic_json /// post-increment (it++) inline const_iterator operator++(int) { - const_iterator result = *this; + auto result = *this; switch (m_object->m_type) { @@ -2354,14 +2701,7 @@ class basic_json default: { - if (m_it.generic_iterator == generic_iterator_value::begin) - { - m_it.generic_iterator = generic_iterator_value::end; - } - else - { - m_it.generic_iterator = generic_iterator_value::invalid; - } + m_it.generic_iterator++; break; } } @@ -2388,14 +2728,7 @@ class basic_json default: { - if (m_it.generic_iterator == generic_iterator_value::begin) - { - m_it.generic_iterator = generic_iterator_value::end; - } - else - { - m_it.generic_iterator = generic_iterator_value::invalid; - } + ++m_it.generic_iterator; break; } } @@ -2406,7 +2739,7 @@ class basic_json /// post-decrement (it--) inline const_iterator operator--(int) { - const_iterator result = *this; + auto result = *this; switch (m_object->m_type) { @@ -2422,22 +2755,9 @@ class basic_json break; } - case (basic_json::value_t::null): - { - m_it.generic_iterator = generic_iterator_value::invalid; - break; - } - default: { - if (m_it.generic_iterator == generic_iterator_value::end) - { - m_it.generic_iterator = generic_iterator_value::begin; - } - else - { - m_it.generic_iterator = generic_iterator_value::invalid; - } + m_it.generic_iterator--; break; } } @@ -2462,22 +2782,9 @@ class basic_json break; } - case (basic_json::value_t::null): - { - m_it.generic_iterator = generic_iterator_value::invalid; - break; - } - default: { - if (m_it.generic_iterator == generic_iterator_value::end) - { - m_it.generic_iterator = generic_iterator_value::begin; - } - else - { - m_it.generic_iterator = generic_iterator_value::invalid; - } + --m_it.generic_iterator; break; } } @@ -2488,9 +2795,10 @@ class basic_json /// comparison: equal inline bool operator==(const const_iterator& other) const { - if (m_object != other.m_object or m_object->m_type != other.m_object->m_type) + // if objects are not the same, the comparison is undefined + if (m_object != other.m_object) { - return false; + throw std::domain_error("cannot compare iterators of different containers"); } switch (m_object->m_type) @@ -2518,6 +2826,157 @@ class basic_json return not operator==(other); } + /// comparison: smaller + inline bool operator<(const const_iterator& other) const + { + // if objects are not the same, the comparison is undefined + if (m_object != other.m_object) + { + throw std::domain_error("cannot compare iterators of different containers"); + } + + switch (m_object->m_type) + { + case (basic_json::value_t::object): + { + throw std::domain_error("cannot use operator< for object iterators"); + } + + case (basic_json::value_t::array): + { + return (m_it.array_iterator < other.m_it.array_iterator); + } + + default: + { + return (m_it.generic_iterator < other.m_it.generic_iterator); + } + } + } + + /// comparison: less than or equal + inline bool operator<=(const const_iterator& other) const + { + return not other.operator < (*this); + } + + /// comparison: greater than + inline bool operator>(const const_iterator& other) const + { + return not operator<=(other); + } + + /// comparison: greater than or equal + inline bool operator>=(const const_iterator& other) const + { + return not operator<(other); + } + + /// add to iterator + inline const_iterator& operator+=(difference_type i) + { + switch (m_object->m_type) + { + case (basic_json::value_t::object): + { + throw std::domain_error("cannot use operator+= for object iterators"); + break; + } + + case (basic_json::value_t::array): + { + m_it.array_iterator += i; + break; + } + + default: + { + m_it.generic_iterator += i; + break; + } + } + + return *this; + } + + /// subtract from iterator + inline const_iterator& operator-=(difference_type i) + { + return operator+=(-i); + } + + /// add to iterator + inline const_iterator operator+(difference_type i) + { + auto result = *this; + result += i; + return result; + } + + /// subtract from iterator + inline const_iterator operator-(difference_type i) + { + auto result = *this; + result -= i; + return result; + } + + /// return difference + inline difference_type operator-(const const_iterator& other) const + { + switch (m_object->m_type) + { + case (basic_json::value_t::object): + { + throw std::domain_error("cannot use operator- for object iterators"); + } + + case (basic_json::value_t::array): + { + return m_it.array_iterator - other.m_it.array_iterator; + } + + default: + { + return m_it.generic_iterator - other.m_it.generic_iterator; + } + } + } + + /// access to successor + inline reference operator[](difference_type n) const + { + switch (m_object->m_type) + { + case (basic_json::value_t::object): + { + throw std::domain_error("cannot use operator[] for object iterators"); + } + + case (basic_json::value_t::array): + { + return *(m_it.array_iterator + n); + } + + case (basic_json::value_t::null): + { + throw std::out_of_range("cannot get value"); + } + + default: + { + if (m_it.generic_iterator == -n) + { + return *m_object; + } + else + { + throw std::out_of_range("cannot get value"); + } + } + } + } + private: /// associated JSON instance pointer m_object = nullptr; @@ -2577,7 +3036,8 @@ class basic_json /*! @brief create a string from a Unicode code point - @param codepoint the code point (must be in [0x0, 0x10ffff] + @param codepoint1 the code point (can be high surrogate) + @param codepoint2 the code point (can be low surrogate or 0) @return string representation of the code point @exception std::out_of_range if code point is >0x10ffff @exception std::invalid_argument if the low surrogate is invalid @@ -3581,6 +4041,9 @@ basic_json_parser_59: const lexer_char_t* m_limit = nullptr; }; + /*! + @brief syntax analysis + */ class parser { public: @@ -3816,7 +4279,10 @@ using json = basic_json<>; // specialization of std::swap, and std::hash namespace std { -/// swaps the values of two JSON objects +/*! +@brief exchanges the values of two JSON objects +@ingroup container +*/ template <> inline void swap(nlohmann::json& j1, nlohmann::json& j2) noexcept( diff --git a/src/json.hpp.re2c b/src/json.hpp.re2c index cff9b0dc..add2e5c1 100644 --- a/src/json.hpp.re2c +++ b/src/json.hpp.re2c @@ -7,6 +7,26 @@ @see https://github.com/nlohmann/json */ +/*! +@defgroup container Container +@brief C++ Container concept + +A Container is an object used to store other objects and taking care of the +management of the memory used by the objects it contains. + +@see http://en.cppreference.com/w/cpp/concept/Container + +@defgroup reversiblecontainer Reversible Container +@brief C++ Reversible Container concept +@ingroup container + +A ReversibleContainer is a Container that has iterators that meet the +requirements of either BidirectionalIterator or RandomAccessIterator. Such +iterators allow a ReversibleContainer to be iterated over in reverse. + +@see http://en.cppreference.com/w/cpp/concept/ReversibleContainer +*/ + #ifndef _NLOHMANN_JSON #define _NLOHMANN_JSON @@ -27,6 +47,7 @@ #include /*! +@brief namespace for Niels Lohmann @see https://github.com/nlohmann */ namespace nlohmann @@ -75,30 +96,76 @@ class basic_json class iterator; class const_iterator; - /// the type of elements in a basic_json container + /*! + @brief the type of elements in a basic_json container + @ingroup container + */ using value_type = basic_json; - /// the type of an element reference + + /*! + @brief the type of an element reference + @ingroup container + */ using reference = basic_json&; - /// the type of an element const reference + + /*! + @brief the type of an element const reference + @ingroup container + */ using const_reference = const basic_json&; + + /*! + @brief a type to represent differences between iterators + @ingroup container + */ + using difference_type = std::ptrdiff_t; + + /*! + @brief a type to represent container sizes + @ingroup container + */ + using size_type = std::size_t; + + /// the allocator type + using allocator_type = Allocator; + /// the type of an element pointer using pointer = basic_json*; /// the type of an element const pointer using const_pointer = const basic_json*; - /// a type to represent differences between iterators - using difference_type = std::ptrdiff_t; - /// a type to represent container sizes - using size_type = std::size_t; - /// an iterator for a basic_json container + + /*! + @brief an iterator for a basic_json container + @ingroup container + */ using iterator = basic_json::iterator; - /// a const iterator for a basic_json container + + /*! + @brief a const iterator for a basic_json container + @ingroup container + */ using const_iterator = basic_json::const_iterator; - /// a reverse iterator for a basic_json container + + /*! + @brief a reverse iterator for a basic_json container + @ingroup reversiblecontainer + */ using reverse_iterator = std::reverse_iterator; - /// a const reverse iterator for a basic_json container + + /*! + @brief a const reverse iterator for a basic_json container + @ingroup reversiblecontainer + */ using const_reverse_iterator = std::reverse_iterator; + /// returns the allocator associated with the container + inline allocator_type get_allocator() const + { + return allocator_type(); + } + + /////////////////////////// // JSON value data types // /////////////////////////// @@ -166,6 +233,85 @@ class basic_json number_float ///< number value (floating-point) }; + /*! + @brief comparison operator for JSON value types + + Returns an ordering that is similar to Python: + - order: null < boolean < number < object < array < string + - furthermore, each type is not smaller than itself + */ + friend bool operator<(const value_t lhs, const value_t rhs) + { + // no type is smaller than itself + if (lhs == rhs) + { + return false; + } + + switch (lhs) + { + case (value_t::null): + { + // nulls are smaller than all other types + return true; + } + + case (value_t::boolean): + { + // only nulls are smaller than booleans + return (rhs != value_t::null); + } + + case (value_t::number_float): + case (value_t::number_integer): + { + switch (rhs) + { + // numbers are smaller than objects, arrays, and string + case (value_t::object): + case (value_t::array): + case (value_t::string): + { + return true; + } + default: + { + return false; + } + } + } + + case (value_t::object): + { + switch (rhs) + { + // objects are smaller than arrays and string + case (value_t::array): + case (value_t::string): + { + return true; + } + default: + { + return false; + } + } + } + + case (value_t::array): + { + // arrays are smaller than strings + return (rhs == value_t::string); + } + + default: + { + // a string is not smaller than any other types + return false; + } + } + } + ////////////////// // constructors // @@ -226,10 +372,11 @@ class basic_json } } - /// create a null object (implicitly) - inline basic_json() noexcept - : m_type(value_t::null) - {} + /*! + @brief create a null object (implicitly) + @ingroup container + */ + inline basic_json() noexcept = default; /// create a null object (explicitly) inline basic_json(std::nullptr_t) noexcept @@ -424,11 +571,15 @@ class basic_json return basic_json(l, false, value_t::object); } + /////////////////////////////////////// // other constructors and destructor // /////////////////////////////////////// - /// copy constructor + /*! + @brief copy constructor + @ingroup container + */ inline basic_json(const basic_json& other) : m_type(other.m_type) { @@ -487,7 +638,10 @@ class basic_json other.m_value = {}; } - /// copy assignment + /*! + @brief copy assignment + @ingroup container + */ inline reference& operator=(basic_json other) noexcept ( std::is_nothrow_move_constructible::value and std::is_nothrow_move_assignable::value and @@ -500,7 +654,10 @@ class basic_json return *this; } - /// destructor + /*! + @brief destructor + @ingroup container + */ inline ~basic_json() noexcept { switch (m_type) @@ -577,6 +734,42 @@ class basic_json return m_type; } + // return whether value is null + inline bool is_null() const noexcept + { + return m_type == value_t::null; + } + + // return whether value is boolean + inline bool is_boolean() const noexcept + { + return m_type == value_t::boolean; + } + + // return whether value is number + inline bool is_number() const noexcept + { + return (m_type == value_t::number_integer) or (m_type == value_t::number_float); + } + + // return whether value is object + inline bool is_object() const noexcept + { + return m_type == value_t::object; + } + + // return whether value is array + inline bool is_array() const noexcept + { + return m_type == value_t::array; + } + + // return whether value is string + inline bool is_string() const noexcept + { + return m_type == value_t::string; + } + /// return the type of the object (implicit) operator value_t() const noexcept { @@ -871,7 +1064,10 @@ class basic_json // iterators // /////////////// - /// returns an iterator to the beginning of the container + /*! + @brief returns an iterator to the first element + @ingroup container + */ inline iterator begin() noexcept { iterator result(this); @@ -879,7 +1075,10 @@ class basic_json return result; } - /// returns a const iterator to the beginning of the container + /*! + @brief returns a const iterator to the first element + @ingroup container + */ inline const_iterator begin() const noexcept { const_iterator result(this); @@ -887,7 +1086,10 @@ class basic_json return result; } - /// returns a const iterator to the beginning of the container + /*! + @brief returns a const iterator to the first element + @ingroup container + */ inline const_iterator cbegin() const noexcept { const_iterator result(this); @@ -895,7 +1097,10 @@ class basic_json return result; } - /// returns an iterator to the end of the container + /*! + @brief returns an iterator to one past the last element + @ingroup container + */ inline iterator end() noexcept { iterator result(this); @@ -903,7 +1108,10 @@ class basic_json return result; } - /// returns a const iterator to the end of the container + /*! + @brief returns a const iterator to one past the last element + @ingroup container + */ inline const_iterator end() const noexcept { const_iterator result(this); @@ -911,7 +1119,10 @@ class basic_json return result; } - /// returns a const iterator to the end of the container + /*! + @brief returns a const iterator to one past the last element + @ingroup container + */ inline const_iterator cend() const noexcept { const_iterator result(this); @@ -919,37 +1130,55 @@ class basic_json return result; } - /// returns a reverse iterator to the beginning + /*! + @brief returns a reverse iterator to the first element + @ingroup reversiblecontainer + */ inline reverse_iterator rbegin() noexcept { return reverse_iterator(end()); } - /// returns a reverse iterator to the beginning + /*! + @brief returns a const reverse iterator to the first element + @ingroup reversiblecontainer + */ inline const_reverse_iterator rbegin() const noexcept { return const_reverse_iterator(end()); } - /// returns a reverse iterator to the end + /*! + @brief returns a reverse iterator to one past the last element + @ingroup reversiblecontainer + */ inline reverse_iterator rend() noexcept { return reverse_iterator(begin()); } - /// returns a reverse iterator to the end + /*! + @brief returns a const reverse iterator to one past the last element + @ingroup reversiblecontainer + */ inline const_reverse_iterator rend() const noexcept { return const_reverse_iterator(begin()); } - /// returns a reverse iterator to the beginning + /*! + @brief returns a const reverse iterator to the first element + @ingroup reversiblecontainer + */ inline const_reverse_iterator crbegin() const noexcept { return const_reverse_iterator(cend()); } - /// returns a reverse iterator to the end + /*! + @brief returns a const reverse iterator to one past the last element + @ingroup reversiblecontainer + */ inline const_reverse_iterator crend() const noexcept { return const_reverse_iterator(cbegin()); @@ -960,7 +1189,10 @@ class basic_json // capacity // ////////////// - /// checks whether the container is empty + /*! + @brief checks whether the container is empty + @ingroup container + */ inline bool empty() const noexcept { switch (m_type) @@ -988,7 +1220,10 @@ class basic_json } } - /// returns the number of elements + /*! + @brief returns the number of elements + @ingroup container + */ inline size_type size() const noexcept { switch (m_type) @@ -1016,7 +1251,10 @@ class basic_json } } - /// returns the maximum possible number of elements + /*! + @brief returns the maximum possible number of elements + @ingroup container + */ inline size_type max_size() const noexcept { switch (m_type) @@ -1186,7 +1424,10 @@ class basic_json return operator[](value.first); } - /// swaps the contents + /*! + @brief exchanges the values + @ingroup container + */ inline void swap(reference other) noexcept ( std::is_nothrow_move_constructible::value and std::is_nothrow_move_assignable::value and @@ -1242,7 +1483,10 @@ class basic_json // lexicographical comparison operators // ////////////////////////////////////////// - /// comparison: equal + /*! + @brief comparison: equal + @ingroup container + */ friend bool operator==(const_reference lhs, const_reference rhs) { switch (lhs.type()) @@ -1316,7 +1560,10 @@ class basic_json return false; } - /// comparison: not equal + /*! + @brief comparison: not equal + @ingroup container + */ friend bool operator!=(const_reference lhs, const_reference rhs) { return not (lhs == rhs); @@ -1393,7 +1640,9 @@ class basic_json } } - return false; + // We only reach this line if we cannot compare values. In that case, + // we compare types. + return lhs.type() < rhs.type(); } /// comparison: less than or equal @@ -1743,19 +1992,6 @@ class basic_json // iterators // /////////////// - /// values of a generic iterator type of non-container JSON values - enum class generic_iterator_value - { - /// the iterator was not initialized - uninitialized, - /// the iterator points to the only value - begin, - /// the iterator points past the only value - end, - /// the iterator points to an invalid value - invalid - }; - /// an iterator value template union internal_iterator @@ -1765,21 +2001,15 @@ class basic_json /// iterator for JSON arrays array_iterator_t array_iterator; /// generic iteraotr for all other value types - generic_iterator_value generic_iterator; + difference_type generic_iterator; /// default constructor - internal_iterator() : generic_iterator(generic_iterator_value::uninitialized) {} - /// constructor for object iterators - internal_iterator(object_iterator_t v) : object_iterator(v) {} - /// constructor for array iterators - internal_iterator(array_iterator_t v) : array_iterator(v) {} - /// constructor for generic iterators - internal_iterator(generic_iterator_value v) : generic_iterator(v) {} + internal_iterator() : generic_iterator(-1) {} }; public: - /// a bidirectional iterator for the basic_json class - class iterator : public std::iterator + /// a random access iterator for the basic_json class + class iterator : public std::iterator { public: /// the type of the values when the iterator is dereferenced @@ -1813,7 +2043,7 @@ class basic_json } default: { - m_it.generic_iterator = generic_iterator_value::uninitialized; + m_it.generic_iterator = -1; break; } } @@ -1847,13 +2077,13 @@ class basic_json case (basic_json::value_t::null): { // set to end so begin()==end() is true: null is empty - m_it.generic_iterator = generic_iterator_value::end; + m_it.generic_iterator = 1; break; } default: { - m_it.generic_iterator = generic_iterator_value::begin; + m_it.generic_iterator = 0; break; } } @@ -1878,14 +2108,14 @@ class basic_json default: { - m_it.generic_iterator = generic_iterator_value::end; + m_it.generic_iterator = 1; break; } } } /// return a reference to the value pointed to by the iterator - inline reference operator*() const + inline reference operator*() { switch (m_object->m_type) { @@ -1906,7 +2136,7 @@ class basic_json default: { - if (m_it.generic_iterator == generic_iterator_value::begin) + if (m_it.generic_iterator == 0) { return *m_object; } @@ -1919,7 +2149,7 @@ class basic_json } /// dereference the iterator - inline pointer operator->() const + inline pointer operator->() { switch (m_object->m_type) { @@ -1933,9 +2163,14 @@ class basic_json return &*m_it.array_iterator; } + case (basic_json::value_t::null): + { + throw std::out_of_range("cannot get value"); + } + default: { - if (m_it.generic_iterator == generic_iterator_value::begin) + if (m_it.generic_iterator == 0) { return m_object; } @@ -1950,7 +2185,7 @@ class basic_json /// post-increment (it++) inline iterator operator++(int) { - iterator result = *this; + auto result = *this; switch (m_object->m_type) { @@ -1968,14 +2203,7 @@ class basic_json default: { - if (m_it.generic_iterator == generic_iterator_value::begin) - { - m_it.generic_iterator = generic_iterator_value::end; - } - else - { - m_it.generic_iterator = generic_iterator_value::invalid; - } + m_it.generic_iterator++; break; } } @@ -2002,14 +2230,7 @@ class basic_json default: { - if (m_it.generic_iterator == generic_iterator_value::begin) - { - m_it.generic_iterator = generic_iterator_value::end; - } - else - { - m_it.generic_iterator = generic_iterator_value::invalid; - } + ++m_it.generic_iterator; break; } } @@ -2020,7 +2241,7 @@ class basic_json /// post-decrement (it--) inline iterator operator--(int) { - iterator result = *this; + auto result = *this; switch (m_object->m_type) { @@ -2036,22 +2257,9 @@ class basic_json break; } - case (basic_json::value_t::null): - { - m_it.generic_iterator = generic_iterator_value::invalid; - break; - } - default: { - if (m_it.generic_iterator == generic_iterator_value::end) - { - m_it.generic_iterator = generic_iterator_value::begin; - } - else - { - m_it.generic_iterator = generic_iterator_value::invalid; - } + m_it.generic_iterator--; break; } } @@ -2076,22 +2284,9 @@ class basic_json break; } - case (basic_json::value_t::null): - { - m_it.generic_iterator = generic_iterator_value::invalid; - break; - } - default: { - if (m_it.generic_iterator == generic_iterator_value::end) - { - m_it.generic_iterator = generic_iterator_value::begin; - } - else - { - m_it.generic_iterator = generic_iterator_value::invalid; - } + --m_it.generic_iterator; break; } } @@ -2102,9 +2297,10 @@ class basic_json /// comparison: equal inline bool operator==(const iterator& other) const { - if (m_object != other.m_object or m_object->m_type != other.m_object->m_type) + // if objects are not the same, the comparison is undefined + if (m_object != other.m_object) { - return false; + throw std::domain_error("cannot compare iterators of different containers"); } switch (m_object->m_type) @@ -2132,6 +2328,157 @@ class basic_json return not operator==(other); } + /// comparison: smaller + inline bool operator<(const iterator& other) const + { + // if objects are not the same, the comparison is undefined + if (m_object != other.m_object) + { + throw std::domain_error("cannot compare iterators of different containers"); + } + + switch (m_object->m_type) + { + case (basic_json::value_t::object): + { + throw std::domain_error("cannot use operator< for object iterators"); + } + + case (basic_json::value_t::array): + { + return (m_it.array_iterator < other.m_it.array_iterator); + } + + default: + { + return (m_it.generic_iterator < other.m_it.generic_iterator); + } + } + } + + /// comparison: less than or equal + inline bool operator<=(const iterator& other) const + { + return not other.operator < (*this); + } + + /// comparison: greater than + inline bool operator>(const iterator& other) const + { + return not operator<=(other); + } + + /// comparison: greater than or equal + inline bool operator>=(const iterator& other) const + { + return not operator<(other); + } + + /// add to iterator + inline iterator& operator+=(difference_type i) + { + switch (m_object->m_type) + { + case (basic_json::value_t::object): + { + throw std::domain_error("cannot use operator+= for object iterators"); + } + + case (basic_json::value_t::array): + { + m_it.array_iterator += i; + break; + } + + default: + { + m_it.generic_iterator += i; + break; + } + } + + return *this; + } + + /// subtract from iterator + inline iterator& operator-=(difference_type i) + { + return operator+=(-i); + } + + /// add to iterator + inline iterator operator+(difference_type i) + { + auto result = *this; + result += i; + return result; + } + + /// subtract from iterator + inline iterator operator-(difference_type i) + { + auto result = *this; + result -= i; + return result; + } + + /// return difference + inline difference_type operator-(const iterator& other) const + { + switch (m_object->m_type) + { + case (basic_json::value_t::object): + { + throw std::domain_error("cannot use operator- for object iterators"); + return 0; + } + + case (basic_json::value_t::array): + { + return m_it.array_iterator - other.m_it.array_iterator; + } + + default: + { + return m_it.generic_iterator - other.m_it.generic_iterator; + } + } + } + + /// access to successor + inline reference operator[](difference_type n) + { + switch (m_object->m_type) + { + case (basic_json::value_t::object): + { + throw std::domain_error("cannot use operator[] for object iterators"); + } + + case (basic_json::value_t::array): + { + return *(m_it.array_iterator + n); + } + + case (basic_json::value_t::null): + { + throw std::out_of_range("cannot get value"); + } + + default: + { + if (m_it.generic_iterator == -n) + { + return *m_object; + } + else + { + throw std::out_of_range("cannot get value"); + } + } + } + } + private: /// associated JSON instance pointer m_object = nullptr; @@ -2139,8 +2486,8 @@ class basic_json internal_iterator m_it; }; - /// a const bidirectional iterator for the basic_json class - class const_iterator : public std::iterator + /// a const random access iterator for the basic_json class + class const_iterator : public std::iterator { public: /// the type of the values when the iterator is dereferenced @@ -2174,7 +2521,7 @@ class basic_json } default: { - m_it.generic_iterator = generic_iterator_value::uninitialized; + m_it.generic_iterator = -1; break; } } @@ -2233,13 +2580,13 @@ class basic_json case (basic_json::value_t::null): { // set to end so begin()==end() is true: null is empty - m_it.generic_iterator = generic_iterator_value::end; + m_it.generic_iterator = 1; break; } default: { - m_it.generic_iterator = generic_iterator_value::begin; + m_it.generic_iterator = 0; break; } } @@ -2264,7 +2611,7 @@ class basic_json default: { - m_it.generic_iterator = generic_iterator_value::end; + m_it.generic_iterator = 1; break; } } @@ -2292,7 +2639,7 @@ class basic_json default: { - if (m_it.generic_iterator == generic_iterator_value::begin) + if (m_it.generic_iterator == 0) { return *m_object; } @@ -2321,7 +2668,7 @@ class basic_json default: { - if (m_it.generic_iterator == generic_iterator_value::begin) + if (m_it.generic_iterator == 0) { return m_object; } @@ -2336,7 +2683,7 @@ class basic_json /// post-increment (it++) inline const_iterator operator++(int) { - const_iterator result = *this; + auto result = *this; switch (m_object->m_type) { @@ -2354,14 +2701,7 @@ class basic_json default: { - if (m_it.generic_iterator == generic_iterator_value::begin) - { - m_it.generic_iterator = generic_iterator_value::end; - } - else - { - m_it.generic_iterator = generic_iterator_value::invalid; - } + m_it.generic_iterator++; break; } } @@ -2388,14 +2728,7 @@ class basic_json default: { - if (m_it.generic_iterator == generic_iterator_value::begin) - { - m_it.generic_iterator = generic_iterator_value::end; - } - else - { - m_it.generic_iterator = generic_iterator_value::invalid; - } + ++m_it.generic_iterator; break; } } @@ -2406,7 +2739,7 @@ class basic_json /// post-decrement (it--) inline const_iterator operator--(int) { - const_iterator result = *this; + auto result = *this; switch (m_object->m_type) { @@ -2422,22 +2755,9 @@ class basic_json break; } - case (basic_json::value_t::null): - { - m_it.generic_iterator = generic_iterator_value::invalid; - break; - } - default: { - if (m_it.generic_iterator == generic_iterator_value::end) - { - m_it.generic_iterator = generic_iterator_value::begin; - } - else - { - m_it.generic_iterator = generic_iterator_value::invalid; - } + m_it.generic_iterator--; break; } } @@ -2462,22 +2782,9 @@ class basic_json break; } - case (basic_json::value_t::null): - { - m_it.generic_iterator = generic_iterator_value::invalid; - break; - } - default: { - if (m_it.generic_iterator == generic_iterator_value::end) - { - m_it.generic_iterator = generic_iterator_value::begin; - } - else - { - m_it.generic_iterator = generic_iterator_value::invalid; - } + --m_it.generic_iterator; break; } } @@ -2488,9 +2795,10 @@ class basic_json /// comparison: equal inline bool operator==(const const_iterator& other) const { - if (m_object != other.m_object or m_object->m_type != other.m_object->m_type) + // if objects are not the same, the comparison is undefined + if (m_object != other.m_object) { - return false; + throw std::domain_error("cannot compare iterators of different containers"); } switch (m_object->m_type) @@ -2518,6 +2826,157 @@ class basic_json return not operator==(other); } + /// comparison: smaller + inline bool operator<(const const_iterator& other) const + { + // if objects are not the same, the comparison is undefined + if (m_object != other.m_object) + { + throw std::domain_error("cannot compare iterators of different containers"); + } + + switch (m_object->m_type) + { + case (basic_json::value_t::object): + { + throw std::domain_error("cannot use operator< for object iterators"); + } + + case (basic_json::value_t::array): + { + return (m_it.array_iterator < other.m_it.array_iterator); + } + + default: + { + return (m_it.generic_iterator < other.m_it.generic_iterator); + } + } + } + + /// comparison: less than or equal + inline bool operator<=(const const_iterator& other) const + { + return not other.operator < (*this); + } + + /// comparison: greater than + inline bool operator>(const const_iterator& other) const + { + return not operator<=(other); + } + + /// comparison: greater than or equal + inline bool operator>=(const const_iterator& other) const + { + return not operator<(other); + } + + /// add to iterator + inline const_iterator& operator+=(difference_type i) + { + switch (m_object->m_type) + { + case (basic_json::value_t::object): + { + throw std::domain_error("cannot use operator+= for object iterators"); + break; + } + + case (basic_json::value_t::array): + { + m_it.array_iterator += i; + break; + } + + default: + { + m_it.generic_iterator += i; + break; + } + } + + return *this; + } + + /// subtract from iterator + inline const_iterator& operator-=(difference_type i) + { + return operator+=(-i); + } + + /// add to iterator + inline const_iterator operator+(difference_type i) + { + auto result = *this; + result += i; + return result; + } + + /// subtract from iterator + inline const_iterator operator-(difference_type i) + { + auto result = *this; + result -= i; + return result; + } + + /// return difference + inline difference_type operator-(const const_iterator& other) const + { + switch (m_object->m_type) + { + case (basic_json::value_t::object): + { + throw std::domain_error("cannot use operator- for object iterators"); + } + + case (basic_json::value_t::array): + { + return m_it.array_iterator - other.m_it.array_iterator; + } + + default: + { + return m_it.generic_iterator - other.m_it.generic_iterator; + } + } + } + + /// access to successor + inline reference operator[](difference_type n) const + { + switch (m_object->m_type) + { + case (basic_json::value_t::object): + { + throw std::domain_error("cannot use operator[] for object iterators"); + } + + case (basic_json::value_t::array): + { + return *(m_it.array_iterator + n); + } + + case (basic_json::value_t::null): + { + throw std::out_of_range("cannot get value"); + } + + default: + { + if (m_it.generic_iterator == -n) + { + return *m_object; + } + else + { + throw std::out_of_range("cannot get value"); + } + } + } + } + private: /// associated JSON instance pointer m_object = nullptr; @@ -2577,7 +3036,8 @@ class basic_json /*! @brief create a string from a Unicode code point - @param codepoint the code point (must be in [0x0, 0x10ffff] + @param codepoint1 the code point (can be high surrogate) + @param codepoint2 the code point (can be low surrogate or 0) @return string representation of the code point @exception std::out_of_range if code point is >0x10ffff @exception std::invalid_argument if the low surrogate is invalid @@ -2930,6 +3390,9 @@ class basic_json const lexer_char_t* m_limit = nullptr; }; + /*! + @brief syntax analysis + */ class parser { public: @@ -3165,7 +3628,10 @@ using json = basic_json<>; // specialization of std::swap, and std::hash namespace std { -/// swaps the values of two JSON objects +/*! +@brief exchanges the values of two JSON objects +@ingroup container +*/ template <> inline void swap(nlohmann::json& j1, nlohmann::json& j2) noexcept( diff --git a/test/unit.cpp b/test/unit.cpp index 19d0f7d5..6d0904bf 100644 --- a/test/unit.cpp +++ b/test/unit.cpp @@ -1050,6 +1050,86 @@ TEST_CASE("other constructors and destructor") TEST_CASE("object inspection") { + SECTION("convenience type checker") + { + SECTION("object") + { + json j {{"foo", 1}, {"bar", false}}; + CHECK(not j.is_null()); + CHECK(not j.is_boolean()); + CHECK(not j.is_number()); + CHECK(j.is_object()); + CHECK(not j.is_array()); + CHECK(not j.is_string()); + } + + SECTION("array") + { + json j {"foo", 1, 42.23, false}; + CHECK(not j.is_null()); + CHECK(not j.is_boolean()); + CHECK(not j.is_number()); + CHECK(not j.is_object()); + CHECK(j.is_array()); + CHECK(not j.is_string()); + } + + SECTION("null") + { + json j(nullptr); + CHECK(j.is_null()); + CHECK(not j.is_boolean()); + CHECK(not j.is_number()); + CHECK(not j.is_object()); + CHECK(not j.is_array()); + CHECK(not j.is_string()); + } + + SECTION("boolean") + { + json j(true); + CHECK(not j.is_null()); + CHECK(j.is_boolean()); + CHECK(not j.is_number()); + CHECK(not j.is_object()); + CHECK(not j.is_array()); + CHECK(not j.is_string()); + } + + SECTION("string") + { + json j("Hello world"); + CHECK(not j.is_null()); + CHECK(not j.is_boolean()); + CHECK(not j.is_number()); + CHECK(not j.is_object()); + CHECK(not j.is_array()); + CHECK(j.is_string()); + } + + SECTION("number (integer)") + { + json j(42); + CHECK(not j.is_null()); + CHECK(not j.is_boolean()); + CHECK(j.is_number()); + CHECK(not j.is_object()); + CHECK(not j.is_array()); + CHECK(not j.is_string()); + } + + SECTION("number (floating-point)") + { + json j(42.23); + CHECK(not j.is_null()); + CHECK(not j.is_boolean()); + CHECK(j.is_number()); + CHECK(not j.is_object()); + CHECK(not j.is_array()); + CHECK(not j.is_string()); + } + } + SECTION("serialization") { json j {{"object", json::object()}, {"array", {1, 2, 3, 4}}, {"number", 42}, {"boolean", false}, {"null", nullptr}, {"string", "Hello world"} }; @@ -2366,1135 +2446,1501 @@ TEST_CASE("element access") TEST_CASE("iterators") { - SECTION("uninitialized") + SECTION("basic behavior") { - json::iterator it; - CHECK(it.m_object == nullptr); - - json::const_iterator cit; - CHECK(cit.m_object == nullptr); - } - - SECTION("boolean") - { - json j = true; - json j_const(j); - - SECTION("json + begin/end") + SECTION("uninitialized") { - json::iterator it = j.begin(); - CHECK(it != j.end()); - CHECK(*it == j); + json::iterator it; + CHECK(it.m_object == nullptr); - it++; - CHECK(it != j.begin()); - CHECK(it == j.end()); - - it--; - CHECK(it == j.begin()); - CHECK(it != j.end()); - CHECK(*it == j); - - ++it; - CHECK(it != j.begin()); - CHECK(it == j.end()); - - --it; - CHECK(it == j.begin()); - CHECK(it != j.end()); - CHECK(*it == j); + json::const_iterator cit; + CHECK(cit.m_object == nullptr); } - SECTION("const json + begin/end") + SECTION("boolean") { - json::const_iterator it = j_const.begin(); - CHECK(it != j_const.end()); - CHECK(*it == j_const); + json j = true; + json j_const(j); - it++; - CHECK(it != j_const.begin()); - CHECK(it == j_const.end()); + SECTION("json + begin/end") + { + json::iterator it = j.begin(); + CHECK(it != j.end()); + CHECK(*it == j); - it--; - CHECK(it == j_const.begin()); - CHECK(it != j_const.end()); - CHECK(*it == j_const); + it++; + CHECK(it != j.begin()); + CHECK(it == j.end()); - ++it; - CHECK(it != j_const.begin()); - CHECK(it == j_const.end()); + it--; + CHECK(it == j.begin()); + CHECK(it != j.end()); + CHECK(*it == j); - --it; - CHECK(it == j_const.begin()); - CHECK(it != j_const.end()); - CHECK(*it == j_const); + ++it; + CHECK(it != j.begin()); + CHECK(it == j.end()); + + --it; + CHECK(it == j.begin()); + CHECK(it != j.end()); + CHECK(*it == j); + } + + SECTION("const json + begin/end") + { + json::const_iterator it = j_const.begin(); + CHECK(it != j_const.end()); + CHECK(*it == j_const); + + it++; + CHECK(it != j_const.begin()); + CHECK(it == j_const.end()); + + it--; + CHECK(it == j_const.begin()); + CHECK(it != j_const.end()); + CHECK(*it == j_const); + + ++it; + CHECK(it != j_const.begin()); + CHECK(it == j_const.end()); + + --it; + CHECK(it == j_const.begin()); + CHECK(it != j_const.end()); + CHECK(*it == j_const); + } + + SECTION("json + cbegin/cend") + { + json::const_iterator it = j.cbegin(); + CHECK(it != j.cend()); + CHECK(*it == j); + + it++; + CHECK(it != j.cbegin()); + CHECK(it == j.cend()); + + it--; + CHECK(it == j.cbegin()); + CHECK(it != j.cend()); + CHECK(*it == j); + + ++it; + CHECK(it != j.cbegin()); + CHECK(it == j.cend()); + + --it; + CHECK(it == j.cbegin()); + CHECK(it != j.cend()); + CHECK(*it == j); + } + + SECTION("const json + cbegin/cend") + { + json::const_iterator it = j_const.cbegin(); + CHECK(it != j_const.cend()); + CHECK(*it == j_const); + + it++; + CHECK(it != j_const.cbegin()); + CHECK(it == j_const.cend()); + + it--; + CHECK(it == j_const.cbegin()); + CHECK(it != j_const.cend()); + CHECK(*it == j_const); + + ++it; + CHECK(it != j_const.cbegin()); + CHECK(it == j_const.cend()); + + --it; + CHECK(it == j_const.cbegin()); + CHECK(it != j_const.cend()); + CHECK(*it == j_const); + } + + SECTION("json + rbegin/rend") + { + json::reverse_iterator it = j.rbegin(); + CHECK(it != j.rend()); + CHECK(*it == j); + + it++; + CHECK(it != j.rbegin()); + CHECK(it == j.rend()); + + it--; + CHECK(it == j.rbegin()); + CHECK(it != j.rend()); + CHECK(*it == j); + + ++it; + CHECK(it != j.rbegin()); + CHECK(it == j.rend()); + + --it; + CHECK(it == j.rbegin()); + CHECK(it != j.rend()); + CHECK(*it == j); + } + + SECTION("json + crbegin/crend") + { + json::const_reverse_iterator it = j.crbegin(); + CHECK(it != j.crend()); + CHECK(*it == j); + + it++; + CHECK(it != j.crbegin()); + CHECK(it == j.crend()); + + it--; + CHECK(it == j.crbegin()); + CHECK(it != j.crend()); + CHECK(*it == j); + + ++it; + CHECK(it != j.crbegin()); + CHECK(it == j.crend()); + + --it; + CHECK(it == j.crbegin()); + CHECK(it != j.crend()); + CHECK(*it == j); + } + + SECTION("const json + crbegin/crend") + { + json::const_reverse_iterator it = j_const.crbegin(); + CHECK(it != j_const.crend()); + CHECK(*it == j_const); + + it++; + CHECK(it != j_const.crbegin()); + CHECK(it == j_const.crend()); + + it--; + CHECK(it == j_const.crbegin()); + CHECK(it != j_const.crend()); + CHECK(*it == j_const); + + ++it; + CHECK(it != j_const.crbegin()); + CHECK(it == j_const.crend()); + + --it; + CHECK(it == j_const.crbegin()); + CHECK(it != j_const.crend()); + CHECK(*it == j_const); + } } - SECTION("json + cbegin/cend") + SECTION("string") { - json::const_iterator it = j.cbegin(); - CHECK(it != j.cend()); - CHECK(*it == j); + json j = "hello world"; + json j_const(j); - it++; - CHECK(it != j.cbegin()); - CHECK(it == j.cend()); + SECTION("json + begin/end") + { + json::iterator it = j.begin(); + CHECK(it != j.end()); + CHECK(*it == j); - it--; - CHECK(it == j.cbegin()); - CHECK(it != j.cend()); - CHECK(*it == j); + it++; + CHECK(it != j.begin()); + CHECK(it == j.end()); - ++it; - CHECK(it != j.cbegin()); - CHECK(it == j.cend()); + it--; + CHECK(it == j.begin()); + CHECK(it != j.end()); + CHECK(*it == j); - --it; - CHECK(it == j.cbegin()); - CHECK(it != j.cend()); - CHECK(*it == j); + ++it; + CHECK(it != j.begin()); + CHECK(it == j.end()); + + --it; + CHECK(it == j.begin()); + CHECK(it != j.end()); + CHECK(*it == j); + } + + SECTION("const json + begin/end") + { + json::const_iterator it = j_const.begin(); + CHECK(it != j_const.end()); + CHECK(*it == j_const); + + it++; + CHECK(it != j_const.begin()); + CHECK(it == j_const.end()); + + it--; + CHECK(it == j_const.begin()); + CHECK(it != j_const.end()); + CHECK(*it == j_const); + + ++it; + CHECK(it != j_const.begin()); + CHECK(it == j_const.end()); + + --it; + CHECK(it == j_const.begin()); + CHECK(it != j_const.end()); + CHECK(*it == j_const); + } + + SECTION("json + cbegin/cend") + { + json::const_iterator it = j.cbegin(); + CHECK(it != j.cend()); + CHECK(*it == j); + + it++; + CHECK(it != j.cbegin()); + CHECK(it == j.cend()); + + it--; + CHECK(it == j.cbegin()); + CHECK(it != j.cend()); + CHECK(*it == j); + + ++it; + CHECK(it != j.cbegin()); + CHECK(it == j.cend()); + + --it; + CHECK(it == j.cbegin()); + CHECK(it != j.cend()); + CHECK(*it == j); + } + + SECTION("const json + cbegin/cend") + { + json::const_iterator it = j_const.cbegin(); + CHECK(it != j_const.cend()); + CHECK(*it == j_const); + + it++; + CHECK(it != j_const.cbegin()); + CHECK(it == j_const.cend()); + + it--; + CHECK(it == j_const.cbegin()); + CHECK(it != j_const.cend()); + CHECK(*it == j_const); + + ++it; + CHECK(it != j_const.cbegin()); + CHECK(it == j_const.cend()); + + --it; + CHECK(it == j_const.cbegin()); + CHECK(it != j_const.cend()); + CHECK(*it == j_const); + } + + SECTION("json + rbegin/rend") + { + json::reverse_iterator it = j.rbegin(); + CHECK(it != j.rend()); + CHECK(*it == j); + + it++; + CHECK(it != j.rbegin()); + CHECK(it == j.rend()); + + it--; + CHECK(it == j.rbegin()); + CHECK(it != j.rend()); + CHECK(*it == j); + + ++it; + CHECK(it != j.rbegin()); + CHECK(it == j.rend()); + + --it; + CHECK(it == j.rbegin()); + CHECK(it != j.rend()); + CHECK(*it == j); + } + + SECTION("json + crbegin/crend") + { + json::const_reverse_iterator it = j.crbegin(); + CHECK(it != j.crend()); + CHECK(*it == j); + + it++; + CHECK(it != j.crbegin()); + CHECK(it == j.crend()); + + it--; + CHECK(it == j.crbegin()); + CHECK(it != j.crend()); + CHECK(*it == j); + + ++it; + CHECK(it != j.crbegin()); + CHECK(it == j.crend()); + + --it; + CHECK(it == j.crbegin()); + CHECK(it != j.crend()); + CHECK(*it == j); + } + + SECTION("const json + crbegin/crend") + { + json::const_reverse_iterator it = j_const.crbegin(); + CHECK(it != j_const.crend()); + CHECK(*it == j_const); + + it++; + CHECK(it != j_const.crbegin()); + CHECK(it == j_const.crend()); + + it--; + CHECK(it == j_const.crbegin()); + CHECK(it != j_const.crend()); + CHECK(*it == j_const); + + ++it; + CHECK(it != j_const.crbegin()); + CHECK(it == j_const.crend()); + + --it; + CHECK(it == j_const.crbegin()); + CHECK(it != j_const.crend()); + CHECK(*it == j_const); + } } - SECTION("const json + cbegin/cend") + SECTION("array") { - json::const_iterator it = j_const.cbegin(); - CHECK(it != j_const.cend()); - CHECK(*it == j_const); + json j = {1, 2, 3}; + json j_const(j); - it++; - CHECK(it != j_const.cbegin()); - CHECK(it == j_const.cend()); + SECTION("json + begin/end") + { + json::iterator it_begin = j.begin(); + json::iterator it_end = j.end(); - it--; - CHECK(it == j_const.cbegin()); - CHECK(it != j_const.cend()); - CHECK(*it == j_const); + auto it = it_begin; + CHECK(it != it_end); + CHECK(*it == j[0]); - ++it; - CHECK(it != j_const.cbegin()); - CHECK(it == j_const.cend()); + it++; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j[1]); - --it; - CHECK(it == j_const.cbegin()); - CHECK(it != j_const.cend()); - CHECK(*it == j_const); + ++it; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j[2]); + + ++it; + CHECK(it != it_begin); + CHECK(it == it_end); + } + + SECTION("const json + begin/end") + { + json::const_iterator it_begin = j_const.begin(); + json::const_iterator it_end = j_const.end(); + + auto it = it_begin; + CHECK(it != it_end); + CHECK(*it == j_const[0]); + + it++; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j_const[1]); + + ++it; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j_const[2]); + + ++it; + CHECK(it != it_begin); + CHECK(it == it_end); + } + + SECTION("json + cbegin/cend") + { + json::const_iterator it_begin = j.cbegin(); + json::const_iterator it_end = j.cend(); + + auto it = it_begin; + CHECK(it != it_end); + CHECK(*it == j[0]); + + it++; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j[1]); + + ++it; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j[2]); + + ++it; + CHECK(it != it_begin); + CHECK(it == it_end); + } + + SECTION("const json + cbegin/cend") + { + json::const_iterator it_begin = j_const.cbegin(); + json::const_iterator it_end = j_const.cend(); + + auto it = it_begin; + CHECK(it != it_end); + CHECK(*it == j[0]); + + it++; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j[1]); + + ++it; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j[2]); + + ++it; + CHECK(it != it_begin); + CHECK(it == it_end); + } + + SECTION("json + rbegin/rend") + { + json::reverse_iterator it_begin = j.rbegin(); + json::reverse_iterator it_end = j.rend(); + + auto it = it_begin; + CHECK(it != it_end); + CHECK(*it == j[2]); + + it++; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j[1]); + + ++it; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j[0]); + + ++it; + CHECK(it != it_begin); + CHECK(it == it_end); + } + + SECTION("json + crbegin/crend") + { + json::const_reverse_iterator it_begin = j.crbegin(); + json::const_reverse_iterator it_end = j.crend(); + + auto it = it_begin; + CHECK(it != it_end); + CHECK(*it == j[2]); + + it++; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j[1]); + + ++it; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j[0]); + + ++it; + CHECK(it != it_begin); + CHECK(it == it_end); + } + + SECTION("const json + crbegin/crend") + { + json::const_reverse_iterator it_begin = j_const.crbegin(); + json::const_reverse_iterator it_end = j_const.crend(); + + auto it = it_begin; + CHECK(it != it_end); + CHECK(*it == j[2]); + + it++; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j[1]); + + ++it; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j[0]); + + ++it; + CHECK(it != it_begin); + CHECK(it == it_end); + } } - SECTION("json + rbegin/rend") + SECTION("object") { - json::reverse_iterator it = j.rbegin(); - CHECK(it != j.rend()); - CHECK(*it == j); + json j = {{"A", 1}, {"B", 2}, {"C", 3}}; + json j_const(j); - it++; - CHECK(it != j.rbegin()); - CHECK(it == j.rend()); + SECTION("json + begin/end") + { + json::iterator it_begin = j.begin(); + json::iterator it_end = j.end(); - it--; - CHECK(it == j.rbegin()); - CHECK(it != j.rend()); - CHECK(*it == j); + auto it = it_begin; + CHECK(it != it_end); + CHECK(*it == j["A"]); - ++it; - CHECK(it != j.rbegin()); - CHECK(it == j.rend()); + it++; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j["B"]); - --it; - CHECK(it == j.rbegin()); - CHECK(it != j.rend()); - CHECK(*it == j); + ++it; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j["C"]); + + ++it; + CHECK(it != it_begin); + CHECK(it == it_end); + } + + SECTION("const json + begin/end") + { + json::const_iterator it_begin = j_const.begin(); + json::const_iterator it_end = j_const.end(); + + auto it = it_begin; + CHECK(it != it_end); + CHECK(*it == j_const["A"]); + + it++; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j_const["B"]); + + ++it; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j_const["C"]); + + ++it; + CHECK(it != it_begin); + CHECK(it == it_end); + } + + SECTION("json + cbegin/cend") + { + json::const_iterator it_begin = j.cbegin(); + json::const_iterator it_end = j.cend(); + + auto it = it_begin; + CHECK(it != it_end); + CHECK(*it == j["A"]); + + it++; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j["B"]); + + ++it; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j["C"]); + + ++it; + CHECK(it != it_begin); + CHECK(it == it_end); + } + + SECTION("const json + cbegin/cend") + { + json::const_iterator it_begin = j_const.cbegin(); + json::const_iterator it_end = j_const.cend(); + + auto it = it_begin; + CHECK(it != it_end); + CHECK(*it == j_const["A"]); + + it++; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j_const["B"]); + + ++it; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j_const["C"]); + + ++it; + CHECK(it != it_begin); + CHECK(it == it_end); + } + + SECTION("json + rbegin/rend") + { + json::reverse_iterator it_begin = j.rbegin(); + json::reverse_iterator it_end = j.rend(); + + auto it = it_begin; + CHECK(it != it_end); + CHECK(*it == j["C"]); + + it++; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j["B"]); + + ++it; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j["A"]); + + ++it; + CHECK(it != it_begin); + CHECK(it == it_end); + } + + SECTION("json + crbegin/crend") + { + json::const_reverse_iterator it_begin = j.crbegin(); + json::const_reverse_iterator it_end = j.crend(); + + auto it = it_begin; + CHECK(it != it_end); + CHECK(*it == j["C"]); + + it++; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j["B"]); + + ++it; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j["A"]); + + ++it; + CHECK(it != it_begin); + CHECK(it == it_end); + } + + SECTION("const json + crbegin/crend") + { + json::const_reverse_iterator it_begin = j_const.crbegin(); + json::const_reverse_iterator it_end = j_const.crend(); + + auto it = it_begin; + CHECK(it != it_end); + CHECK(*it == j["C"]); + + it++; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j["B"]); + + ++it; + CHECK(it != it_begin); + CHECK(it != it_end); + CHECK(*it == j["A"]); + + ++it; + CHECK(it != it_begin); + CHECK(it == it_end); + } } - SECTION("json + crbegin/crend") + SECTION("number (integer)") { - json::const_reverse_iterator it = j.crbegin(); - CHECK(it != j.crend()); - CHECK(*it == j); + json j = 23; + json j_const(j); - it++; - CHECK(it != j.crbegin()); - CHECK(it == j.crend()); + SECTION("json + begin/end") + { + json::iterator it = j.begin(); + CHECK(it != j.end()); + CHECK(*it == j); - it--; - CHECK(it == j.crbegin()); - CHECK(it != j.crend()); - CHECK(*it == j); + it++; + CHECK(it != j.begin()); + CHECK(it == j.end()); - ++it; - CHECK(it != j.crbegin()); - CHECK(it == j.crend()); + it--; + CHECK(it == j.begin()); + CHECK(it != j.end()); + CHECK(*it == j); - --it; - CHECK(it == j.crbegin()); - CHECK(it != j.crend()); - CHECK(*it == j); + ++it; + CHECK(it != j.begin()); + CHECK(it == j.end()); + + --it; + CHECK(it == j.begin()); + CHECK(it != j.end()); + CHECK(*it == j); + } + + SECTION("const json + begin/end") + { + json::const_iterator it = j_const.begin(); + CHECK(it != j_const.end()); + CHECK(*it == j_const); + + it++; + CHECK(it != j_const.begin()); + CHECK(it == j_const.end()); + + it--; + CHECK(it == j_const.begin()); + CHECK(it != j_const.end()); + CHECK(*it == j_const); + + ++it; + CHECK(it != j_const.begin()); + CHECK(it == j_const.end()); + + --it; + CHECK(it == j_const.begin()); + CHECK(it != j_const.end()); + CHECK(*it == j_const); + } + + SECTION("json + cbegin/cend") + { + json::const_iterator it = j.cbegin(); + CHECK(it != j.cend()); + CHECK(*it == j); + + it++; + CHECK(it != j.cbegin()); + CHECK(it == j.cend()); + + it--; + CHECK(it == j.cbegin()); + CHECK(it != j.cend()); + CHECK(*it == j); + + ++it; + CHECK(it != j.cbegin()); + CHECK(it == j.cend()); + + --it; + CHECK(it == j.cbegin()); + CHECK(it != j.cend()); + CHECK(*it == j); + } + + SECTION("const json + cbegin/cend") + { + json::const_iterator it = j_const.cbegin(); + CHECK(it != j_const.cend()); + CHECK(*it == j_const); + + it++; + CHECK(it != j_const.cbegin()); + CHECK(it == j_const.cend()); + + it--; + CHECK(it == j_const.cbegin()); + CHECK(it != j_const.cend()); + CHECK(*it == j_const); + + ++it; + CHECK(it != j_const.cbegin()); + CHECK(it == j_const.cend()); + + --it; + CHECK(it == j_const.cbegin()); + CHECK(it != j_const.cend()); + CHECK(*it == j_const); + } + + SECTION("json + rbegin/rend") + { + json::reverse_iterator it = j.rbegin(); + CHECK(it != j.rend()); + CHECK(*it == j); + + it++; + CHECK(it != j.rbegin()); + CHECK(it == j.rend()); + + it--; + CHECK(it == j.rbegin()); + CHECK(it != j.rend()); + CHECK(*it == j); + + ++it; + CHECK(it != j.rbegin()); + CHECK(it == j.rend()); + + --it; + CHECK(it == j.rbegin()); + CHECK(it != j.rend()); + CHECK(*it == j); + } + + SECTION("json + crbegin/crend") + { + json::const_reverse_iterator it = j.crbegin(); + CHECK(it != j.crend()); + CHECK(*it == j); + + it++; + CHECK(it != j.crbegin()); + CHECK(it == j.crend()); + + it--; + CHECK(it == j.crbegin()); + CHECK(it != j.crend()); + CHECK(*it == j); + + ++it; + CHECK(it != j.crbegin()); + CHECK(it == j.crend()); + + --it; + CHECK(it == j.crbegin()); + CHECK(it != j.crend()); + CHECK(*it == j); + } + + SECTION("const json + crbegin/crend") + { + json::const_reverse_iterator it = j_const.crbegin(); + CHECK(it != j_const.crend()); + CHECK(*it == j_const); + + it++; + CHECK(it != j_const.crbegin()); + CHECK(it == j_const.crend()); + + it--; + CHECK(it == j_const.crbegin()); + CHECK(it != j_const.crend()); + CHECK(*it == j_const); + + ++it; + CHECK(it != j_const.crbegin()); + CHECK(it == j_const.crend()); + + --it; + CHECK(it == j_const.crbegin()); + CHECK(it != j_const.crend()); + CHECK(*it == j_const); + } } - SECTION("const json + crbegin/crend") + SECTION("number (float)") { - json::const_reverse_iterator it = j_const.crbegin(); - CHECK(it != j_const.crend()); - CHECK(*it == j_const); + json j = 23.42; + json j_const(j); - it++; - CHECK(it != j_const.crbegin()); - CHECK(it == j_const.crend()); + SECTION("json + begin/end") + { + json::iterator it = j.begin(); + CHECK(it != j.end()); + CHECK(*it == j); - it--; - CHECK(it == j_const.crbegin()); - CHECK(it != j_const.crend()); - CHECK(*it == j_const); + it++; + CHECK(it != j.begin()); + CHECK(it == j.end()); - ++it; - CHECK(it != j_const.crbegin()); - CHECK(it == j_const.crend()); + it--; + CHECK(it == j.begin()); + CHECK(it != j.end()); + CHECK(*it == j); - --it; - CHECK(it == j_const.crbegin()); - CHECK(it != j_const.crend()); - CHECK(*it == j_const); + ++it; + CHECK(it != j.begin()); + CHECK(it == j.end()); + + --it; + CHECK(it == j.begin()); + CHECK(it != j.end()); + CHECK(*it == j); + } + + SECTION("const json + begin/end") + { + json::const_iterator it = j_const.begin(); + CHECK(it != j_const.end()); + CHECK(*it == j_const); + + it++; + CHECK(it != j_const.begin()); + CHECK(it == j_const.end()); + + it--; + CHECK(it == j_const.begin()); + CHECK(it != j_const.end()); + CHECK(*it == j_const); + + ++it; + CHECK(it != j_const.begin()); + CHECK(it == j_const.end()); + + --it; + CHECK(it == j_const.begin()); + CHECK(it != j_const.end()); + CHECK(*it == j_const); + } + + SECTION("json + cbegin/cend") + { + json::const_iterator it = j.cbegin(); + CHECK(it != j.cend()); + CHECK(*it == j); + + it++; + CHECK(it != j.cbegin()); + CHECK(it == j.cend()); + + it--; + CHECK(it == j.cbegin()); + CHECK(it != j.cend()); + CHECK(*it == j); + + ++it; + CHECK(it != j.cbegin()); + CHECK(it == j.cend()); + + --it; + CHECK(it == j.cbegin()); + CHECK(it != j.cend()); + CHECK(*it == j); + } + + SECTION("const json + cbegin/cend") + { + json::const_iterator it = j_const.cbegin(); + CHECK(it != j_const.cend()); + CHECK(*it == j_const); + + it++; + CHECK(it != j_const.cbegin()); + CHECK(it == j_const.cend()); + + it--; + CHECK(it == j_const.cbegin()); + CHECK(it != j_const.cend()); + CHECK(*it == j_const); + + ++it; + CHECK(it != j_const.cbegin()); + CHECK(it == j_const.cend()); + + --it; + CHECK(it == j_const.cbegin()); + CHECK(it != j_const.cend()); + CHECK(*it == j_const); + } + + SECTION("json + rbegin/rend") + { + json::reverse_iterator it = j.rbegin(); + CHECK(it != j.rend()); + CHECK(*it == j); + + it++; + CHECK(it != j.rbegin()); + CHECK(it == j.rend()); + + it--; + CHECK(it == j.rbegin()); + CHECK(it != j.rend()); + CHECK(*it == j); + + ++it; + CHECK(it != j.rbegin()); + CHECK(it == j.rend()); + + --it; + CHECK(it == j.rbegin()); + CHECK(it != j.rend()); + CHECK(*it == j); + } + + SECTION("json + crbegin/crend") + { + json::const_reverse_iterator it = j.crbegin(); + CHECK(it != j.crend()); + CHECK(*it == j); + + it++; + CHECK(it != j.crbegin()); + CHECK(it == j.crend()); + + it--; + CHECK(it == j.crbegin()); + CHECK(it != j.crend()); + CHECK(*it == j); + + ++it; + CHECK(it != j.crbegin()); + CHECK(it == j.crend()); + + --it; + CHECK(it == j.crbegin()); + CHECK(it != j.crend()); + CHECK(*it == j); + } + + SECTION("const json + crbegin/crend") + { + json::const_reverse_iterator it = j_const.crbegin(); + CHECK(it != j_const.crend()); + CHECK(*it == j_const); + + it++; + CHECK(it != j_const.crbegin()); + CHECK(it == j_const.crend()); + + it--; + CHECK(it == j_const.crbegin()); + CHECK(it != j_const.crend()); + CHECK(*it == j_const); + + ++it; + CHECK(it != j_const.crbegin()); + CHECK(it == j_const.crend()); + + --it; + CHECK(it == j_const.crbegin()); + CHECK(it != j_const.crend()); + CHECK(*it == j_const); + } + } + + SECTION("null") + { + json j = nullptr; + json j_const(j); + + SECTION("json + begin/end") + { + json::iterator it = j.begin(); + CHECK(it == j.end()); + } + + SECTION("const json + begin/end") + { + json::const_iterator it_begin = j_const.begin(); + json::const_iterator it_end = j_const.end(); + CHECK(it_begin == it_end); + } + + SECTION("json + cbegin/cend") + { + json::const_iterator it_begin = j.cbegin(); + json::const_iterator it_end = j.cend(); + CHECK(it_begin == it_end); + } + + SECTION("const json + cbegin/cend") + { + json::const_iterator it_begin = j_const.cbegin(); + json::const_iterator it_end = j_const.cend(); + CHECK(it_begin == it_end); + } + + SECTION("json + rbegin/rend") + { + json::reverse_iterator it = j.rbegin(); + CHECK(it == j.rend()); + } + + SECTION("json + crbegin/crend") + { + json::const_reverse_iterator it = j.crbegin(); + CHECK(it == j.crend()); + } + + SECTION("const json + crbegin/crend") + { + json::const_reverse_iterator it = j_const.crbegin(); + CHECK(it == j_const.crend()); + } } } - SECTION("string") + SECTION("iterator comparisons") { - json j = "hello world"; - json j_const(j); + json j_values = {nullptr, true, 42, 23.23, {{"one", 1}, {"two", 2}}, {1, 2, 3, 4, 5}, "Hello, world"}; - SECTION("json + begin/end") + for (json& j : j_values) { - json::iterator it = j.begin(); - CHECK(it != j.end()); - CHECK(*it == j); + auto it1 = j.begin(); + auto it2 = j.begin(); + auto it3 = j.begin(); + ++it2; + ++it3; + ++it3; + auto it1_c = j.cbegin(); + auto it2_c = j.cbegin(); + auto it3_c = j.cbegin(); + ++it2_c; + ++it3_c; + ++it3_c; - it++; - CHECK(it != j.begin()); - CHECK(it == j.end()); + // comparison: equal + { + CHECK(it1 == it1); + CHECK(not (it1 == it2)); + CHECK(not (it1 == it3)); + CHECK(not (it2 == it3)); + CHECK(it1_c == it1_c); + CHECK(not (it1_c == it2_c)); + CHECK(not (it1_c == it3_c)); + CHECK(not (it2_c == it3_c)); + } - it--; - CHECK(it == j.begin()); - CHECK(it != j.end()); - CHECK(*it == j); + // comparison: not equal + { + // check definition + CHECK( (it1 != it1) == not(it1 == it1) ); + CHECK( (it1 != it2) == not(it1 == it2) ); + CHECK( (it1 != it3) == not(it1 == it3) ); + CHECK( (it2 != it3) == not(it2 == it3) ); + CHECK( (it1_c != it1_c) == not(it1_c == it1_c) ); + CHECK( (it1_c != it2_c) == not(it1_c == it2_c) ); + CHECK( (it1_c != it3_c) == not(it1_c == it3_c) ); + CHECK( (it2_c != it3_c) == not(it2_c == it3_c) ); + } - ++it; - CHECK(it != j.begin()); - CHECK(it == j.end()); + // comparison: smaller + { + if (j.type() == json::value_t::object) + { + CHECK_THROWS_AS(it1 < it1, std::domain_error); + CHECK_THROWS_AS(it1 < it2, std::domain_error); + CHECK_THROWS_AS(it2 < it3, std::domain_error); + CHECK_THROWS_AS(it1 < it3, std::domain_error); + CHECK_THROWS_AS(it1_c < it1_c, std::domain_error); + CHECK_THROWS_AS(it1_c < it2_c, std::domain_error); + CHECK_THROWS_AS(it2_c < it3_c, std::domain_error); + CHECK_THROWS_AS(it1_c < it3_c, std::domain_error); + } + else + { + CHECK(not (it1 < it1)); + CHECK(it1 < it2); + CHECK(it1 < it3); + CHECK(it2 < it3); + CHECK(not (it1_c < it1_c)); + CHECK(it1_c < it2_c); + CHECK(it1_c < it3_c); + CHECK(it2_c < it3_c); + } + } - --it; - CHECK(it == j.begin()); - CHECK(it != j.end()); - CHECK(*it == j); + // comparison: less than or equal + { + if (j.type() == json::value_t::object) + { + CHECK_THROWS_AS(it1 <= it1, std::domain_error); + CHECK_THROWS_AS(it1 <= it2, std::domain_error); + CHECK_THROWS_AS(it2 <= it3, std::domain_error); + CHECK_THROWS_AS(it1 <= it3, std::domain_error); + CHECK_THROWS_AS(it1_c <= it1_c, std::domain_error); + CHECK_THROWS_AS(it1_c <= it2_c, std::domain_error); + CHECK_THROWS_AS(it2_c <= it3_c, std::domain_error); + CHECK_THROWS_AS(it1_c <= it3_c, std::domain_error); + } + else + { + // check definition + CHECK( (it1 <= it1) == not(it1 < it1) ); + CHECK( (it1 <= it2) == not(it2 < it1) ); + CHECK( (it1 <= it3) == not(it3 < it1) ); + CHECK( (it2 <= it3) == not(it3 < it2) ); + CHECK( (it1_c <= it1_c) == not(it1_c < it1_c) ); + CHECK( (it1_c <= it2_c) == not(it2_c < it1_c) ); + CHECK( (it1_c <= it3_c) == not(it3_c < it1_c) ); + CHECK( (it2_c <= it3_c) == not(it3_c < it2_c) ); + } + } + + // comparison: greater than + { + if (j.type() == json::value_t::object) + { + CHECK_THROWS_AS(it1 > it1, std::domain_error); + CHECK_THROWS_AS(it1 > it2, std::domain_error); + CHECK_THROWS_AS(it2 > it3, std::domain_error); + CHECK_THROWS_AS(it1 > it3, std::domain_error); + CHECK_THROWS_AS(it1_c > it1_c, std::domain_error); + CHECK_THROWS_AS(it1_c > it2_c, std::domain_error); + CHECK_THROWS_AS(it2_c > it3_c, std::domain_error); + CHECK_THROWS_AS(it1_c > it3_c, std::domain_error); + } + else + { + // check definition + CHECK( (it1 > it1) == (it1 < it1) ); + CHECK( (it1 > it2) == (it2 < it1) ); + CHECK( (it1 > it3) == (it3 < it1) ); + CHECK( (it2 > it3) == (it3 < it2) ); + CHECK( (it1_c > it1_c) == (it1_c < it1_c) ); + CHECK( (it1_c > it2_c) == (it2_c < it1_c) ); + CHECK( (it1_c > it3_c) == (it3_c < it1_c) ); + CHECK( (it2_c > it3_c) == (it3_c < it2_c) ); + } + } + + // comparison: greater than or equal + { + if (j.type() == json::value_t::object) + { + CHECK_THROWS_AS(it1 >= it1, std::domain_error); + CHECK_THROWS_AS(it1 >= it2, std::domain_error); + CHECK_THROWS_AS(it2 >= it3, std::domain_error); + CHECK_THROWS_AS(it1 >= it3, std::domain_error); + CHECK_THROWS_AS(it1_c >= it1_c, std::domain_error); + CHECK_THROWS_AS(it1_c >= it2_c, std::domain_error); + CHECK_THROWS_AS(it2_c >= it3_c, std::domain_error); + CHECK_THROWS_AS(it1_c >= it3_c, std::domain_error); + } + else + { + // check definition + CHECK( (it1 >= it1) == not(it1 < it1) ); + CHECK( (it1 >= it2) == not(it1 < it2) ); + CHECK( (it1 >= it3) == not(it1 < it3) ); + CHECK( (it2 >= it3) == not(it2 < it3) ); + CHECK( (it1_c >= it1_c) == not(it1_c < it1_c) ); + CHECK( (it1_c >= it2_c) == not(it1_c < it2_c) ); + CHECK( (it1_c >= it3_c) == not(it1_c < it3_c) ); + CHECK( (it2_c >= it3_c) == not(it2_c < it3_c) ); + } + } } - SECTION("const json + begin/end") + // check exceptions if different objects are compared + for (auto j : j_values) { - json::const_iterator it = j_const.begin(); - CHECK(it != j_const.end()); - CHECK(*it == j_const); + for (auto k : j_values) + { + if (j != k) + { + CHECK_THROWS_AS(j.begin() == k.begin(), std::domain_error); + CHECK_THROWS_AS(j.cbegin() == k.cbegin(), std::domain_error); - it++; - CHECK(it != j_const.begin()); - CHECK(it == j_const.end()); - - it--; - CHECK(it == j_const.begin()); - CHECK(it != j_const.end()); - CHECK(*it == j_const); - - ++it; - CHECK(it != j_const.begin()); - CHECK(it == j_const.end()); - - --it; - CHECK(it == j_const.begin()); - CHECK(it != j_const.end()); - CHECK(*it == j_const); - } - - SECTION("json + cbegin/cend") - { - json::const_iterator it = j.cbegin(); - CHECK(it != j.cend()); - CHECK(*it == j); - - it++; - CHECK(it != j.cbegin()); - CHECK(it == j.cend()); - - it--; - CHECK(it == j.cbegin()); - CHECK(it != j.cend()); - CHECK(*it == j); - - ++it; - CHECK(it != j.cbegin()); - CHECK(it == j.cend()); - - --it; - CHECK(it == j.cbegin()); - CHECK(it != j.cend()); - CHECK(*it == j); - } - - SECTION("const json + cbegin/cend") - { - json::const_iterator it = j_const.cbegin(); - CHECK(it != j_const.cend()); - CHECK(*it == j_const); - - it++; - CHECK(it != j_const.cbegin()); - CHECK(it == j_const.cend()); - - it--; - CHECK(it == j_const.cbegin()); - CHECK(it != j_const.cend()); - CHECK(*it == j_const); - - ++it; - CHECK(it != j_const.cbegin()); - CHECK(it == j_const.cend()); - - --it; - CHECK(it == j_const.cbegin()); - CHECK(it != j_const.cend()); - CHECK(*it == j_const); - } - - SECTION("json + rbegin/rend") - { - json::reverse_iterator it = j.rbegin(); - CHECK(it != j.rend()); - CHECK(*it == j); - - it++; - CHECK(it != j.rbegin()); - CHECK(it == j.rend()); - - it--; - CHECK(it == j.rbegin()); - CHECK(it != j.rend()); - CHECK(*it == j); - - ++it; - CHECK(it != j.rbegin()); - CHECK(it == j.rend()); - - --it; - CHECK(it == j.rbegin()); - CHECK(it != j.rend()); - CHECK(*it == j); - } - - SECTION("json + crbegin/crend") - { - json::const_reverse_iterator it = j.crbegin(); - CHECK(it != j.crend()); - CHECK(*it == j); - - it++; - CHECK(it != j.crbegin()); - CHECK(it == j.crend()); - - it--; - CHECK(it == j.crbegin()); - CHECK(it != j.crend()); - CHECK(*it == j); - - ++it; - CHECK(it != j.crbegin()); - CHECK(it == j.crend()); - - --it; - CHECK(it == j.crbegin()); - CHECK(it != j.crend()); - CHECK(*it == j); - } - - SECTION("const json + crbegin/crend") - { - json::const_reverse_iterator it = j_const.crbegin(); - CHECK(it != j_const.crend()); - CHECK(*it == j_const); - - it++; - CHECK(it != j_const.crbegin()); - CHECK(it == j_const.crend()); - - it--; - CHECK(it == j_const.crbegin()); - CHECK(it != j_const.crend()); - CHECK(*it == j_const); - - ++it; - CHECK(it != j_const.crbegin()); - CHECK(it == j_const.crend()); - - --it; - CHECK(it == j_const.crbegin()); - CHECK(it != j_const.crend()); - CHECK(*it == j_const); + CHECK_THROWS_AS(j.begin() < k.begin(), std::domain_error); + CHECK_THROWS_AS(j.cbegin() < k.cbegin(), std::domain_error); + } + } } } - SECTION("array") + SECTION("iterator arithmetic") { - json j = {1, 2, 3}; - json j_const(j); + json j_object = {{"one", 1}, {"two", 2}, {"three", 3}}; + json j_array = {1, 2, 3, 4, 5, 6}; + json j_null = nullptr; + json j_value = 42; - SECTION("json + begin/end") + SECTION("addition and subtraction") { - json::iterator it_begin = j.begin(); - json::iterator it_end = j.end(); + SECTION("object") + { + { + auto it = j_object.begin(); + CHECK_THROWS_AS(it += 1, std::domain_error); + } + { + auto it = j_object.cbegin(); + CHECK_THROWS_AS(it += 1, std::domain_error); + } + { + auto it = j_object.begin(); + CHECK_THROWS_AS(it + 1, std::domain_error); + } + { + auto it = j_object.cbegin(); + CHECK_THROWS_AS(it + 1, std::domain_error); + } + { + auto it = j_object.begin(); + CHECK_THROWS_AS(it -= 1, std::domain_error); + } + { + auto it = j_object.cbegin(); + CHECK_THROWS_AS(it -= 1, std::domain_error); + } + { + auto it = j_object.begin(); + CHECK_THROWS_AS(it - 1, std::domain_error); + } + { + auto it = j_object.cbegin(); + CHECK_THROWS_AS(it - 1, std::domain_error); + } + { + auto it = j_object.begin(); + CHECK_THROWS_AS(it - it, std::domain_error); + } + { + auto it = j_object.cbegin(); + CHECK_THROWS_AS(it - it, std::domain_error); + } + } - auto it = it_begin; - CHECK(it != it_end); - CHECK(*it == j[0]); + SECTION("array") + { + { + auto it = j_array.begin(); + it += 3; + CHECK((j_array.begin() + 3) == it); + CHECK((it - 3) == j_array.begin()); + CHECK((it - j_array.begin()) == 3); + CHECK(*it == json(4)); + it -= 2; + CHECK(*it == json(2)); + } + { + auto it = j_array.cbegin(); + it += 3; + CHECK((j_array.cbegin() + 3) == it); + CHECK((it - 3) == j_array.cbegin()); + CHECK((it - j_array.cbegin()) == 3); + CHECK(*it == json(4)); + it -= 2; + CHECK(*it == json(2)); + } + } - it++; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j[1]); + SECTION("null") + { + { + auto it = j_null.begin(); + it += 3; + CHECK((j_null.begin() + 3) == it); + CHECK((it - 3) == j_null.begin()); + CHECK((it - j_null.begin()) == 3); + CHECK(it != j_null.end()); + it -= 3; + CHECK(it == j_null.end()); + } + { + auto it = j_null.cbegin(); + it += 3; + CHECK((j_null.cbegin() + 3) == it); + CHECK((it - 3) == j_null.cbegin()); + CHECK((it - j_null.cbegin()) == 3); + CHECK(it != j_null.cend()); + it -= 3; + CHECK(it == j_null.cend()); + } + } - ++it; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j[2]); - - ++it; - CHECK(it != it_begin); - CHECK(it == it_end); + SECTION("value") + { + { + auto it = j_value.begin(); + it += 3; + CHECK((j_value.begin() + 3) == it); + CHECK((it - 3) == j_value.begin()); + CHECK((it - j_value.begin()) == 3); + CHECK(it != j_value.end()); + it -= 3; + CHECK(*it == json(42)); + } + { + auto it = j_value.cbegin(); + it += 3; + CHECK((j_value.cbegin() + 3) == it); + CHECK((it - 3) == j_value.cbegin()); + CHECK((it - j_value.cbegin()) == 3); + CHECK(it != j_value.cend()); + it -= 3; + CHECK(*it == json(42)); + } + } } - SECTION("const json + begin/end") + SECTION("subscript operator") { - json::const_iterator it_begin = j_const.begin(); - json::const_iterator it_end = j_const.end(); - - auto it = it_begin; - CHECK(it != it_end); - CHECK(*it == j_const[0]); - - it++; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j_const[1]); - - ++it; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j_const[2]); - - ++it; - CHECK(it != it_begin); - CHECK(it == it_end); - } - - SECTION("json + cbegin/cend") - { - json::const_iterator it_begin = j.cbegin(); - json::const_iterator it_end = j.cend(); - - auto it = it_begin; - CHECK(it != it_end); - CHECK(*it == j[0]); - - it++; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j[1]); - - ++it; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j[2]); - - ++it; - CHECK(it != it_begin); - CHECK(it == it_end); - } - - SECTION("const json + cbegin/cend") - { - json::const_iterator it_begin = j_const.cbegin(); - json::const_iterator it_end = j_const.cend(); - - auto it = it_begin; - CHECK(it != it_end); - CHECK(*it == j[0]); - - it++; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j[1]); - - ++it; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j[2]); - - ++it; - CHECK(it != it_begin); - CHECK(it == it_end); - } - - SECTION("json + rbegin/rend") - { - json::reverse_iterator it_begin = j.rbegin(); - json::reverse_iterator it_end = j.rend(); - - auto it = it_begin; - CHECK(it != it_end); - CHECK(*it == j[2]); - - it++; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j[1]); - - ++it; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j[0]); - - ++it; - CHECK(it != it_begin); - CHECK(it == it_end); - } - - SECTION("json + crbegin/crend") - { - json::const_reverse_iterator it_begin = j.crbegin(); - json::const_reverse_iterator it_end = j.crend(); - - auto it = it_begin; - CHECK(it != it_end); - CHECK(*it == j[2]); - - it++; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j[1]); - - ++it; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j[0]); - - ++it; - CHECK(it != it_begin); - CHECK(it == it_end); - } - - SECTION("const json + crbegin/crend") - { - json::const_reverse_iterator it_begin = j_const.crbegin(); - json::const_reverse_iterator it_end = j_const.crend(); - - auto it = it_begin; - CHECK(it != it_end); - CHECK(*it == j[2]); - - it++; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j[1]); - - ++it; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j[0]); - - ++it; - CHECK(it != it_begin); - CHECK(it == it_end); - } - } - - SECTION("object") - { - json j = {{"A", 1}, {"B", 2}, {"C", 3}}; - json j_const(j); - - SECTION("json + begin/end") - { - json::iterator it_begin = j.begin(); - json::iterator it_end = j.end(); - - auto it = it_begin; - CHECK(it != it_end); - CHECK(*it == j["A"]); - - it++; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j["B"]); - - ++it; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j["C"]); - - ++it; - CHECK(it != it_begin); - CHECK(it == it_end); - } - - SECTION("const json + begin/end") - { - json::const_iterator it_begin = j_const.begin(); - json::const_iterator it_end = j_const.end(); - - auto it = it_begin; - CHECK(it != it_end); - CHECK(*it == j_const["A"]); - - it++; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j_const["B"]); - - ++it; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j_const["C"]); - - ++it; - CHECK(it != it_begin); - CHECK(it == it_end); - } - - SECTION("json + cbegin/cend") - { - json::const_iterator it_begin = j.cbegin(); - json::const_iterator it_end = j.cend(); - - auto it = it_begin; - CHECK(it != it_end); - CHECK(*it == j["A"]); - - it++; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j["B"]); - - ++it; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j["C"]); - - ++it; - CHECK(it != it_begin); - CHECK(it == it_end); - } - - SECTION("const json + cbegin/cend") - { - json::const_iterator it_begin = j_const.cbegin(); - json::const_iterator it_end = j_const.cend(); - - auto it = it_begin; - CHECK(it != it_end); - CHECK(*it == j_const["A"]); - - it++; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j_const["B"]); - - ++it; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j_const["C"]); - - ++it; - CHECK(it != it_begin); - CHECK(it == it_end); - } - - SECTION("json + rbegin/rend") - { - json::reverse_iterator it_begin = j.rbegin(); - json::reverse_iterator it_end = j.rend(); - - auto it = it_begin; - CHECK(it != it_end); - CHECK(*it == j["C"]); - - it++; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j["B"]); - - ++it; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j["A"]); - - ++it; - CHECK(it != it_begin); - CHECK(it == it_end); - } - - SECTION("json + crbegin/crend") - { - json::const_reverse_iterator it_begin = j.crbegin(); - json::const_reverse_iterator it_end = j.crend(); - - auto it = it_begin; - CHECK(it != it_end); - CHECK(*it == j["C"]); - - it++; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j["B"]); - - ++it; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j["A"]); - - ++it; - CHECK(it != it_begin); - CHECK(it == it_end); - } - - SECTION("const json + crbegin/crend") - { - json::const_reverse_iterator it_begin = j_const.crbegin(); - json::const_reverse_iterator it_end = j_const.crend(); - - auto it = it_begin; - CHECK(it != it_end); - CHECK(*it == j["C"]); - - it++; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j["B"]); - - ++it; - CHECK(it != it_begin); - CHECK(it != it_end); - CHECK(*it == j["A"]); - - ++it; - CHECK(it != it_begin); - CHECK(it == it_end); - } - } - - SECTION("number (integer)") - { - json j = 23; - json j_const(j); - - SECTION("json + begin/end") - { - json::iterator it = j.begin(); - CHECK(it != j.end()); - CHECK(*it == j); - - it++; - CHECK(it != j.begin()); - CHECK(it == j.end()); - - it--; - CHECK(it == j.begin()); - CHECK(it != j.end()); - CHECK(*it == j); - - ++it; - CHECK(it != j.begin()); - CHECK(it == j.end()); - - --it; - CHECK(it == j.begin()); - CHECK(it != j.end()); - CHECK(*it == j); - } - - SECTION("const json + begin/end") - { - json::const_iterator it = j_const.begin(); - CHECK(it != j_const.end()); - CHECK(*it == j_const); - - it++; - CHECK(it != j_const.begin()); - CHECK(it == j_const.end()); - - it--; - CHECK(it == j_const.begin()); - CHECK(it != j_const.end()); - CHECK(*it == j_const); - - ++it; - CHECK(it != j_const.begin()); - CHECK(it == j_const.end()); - - --it; - CHECK(it == j_const.begin()); - CHECK(it != j_const.end()); - CHECK(*it == j_const); - } - - SECTION("json + cbegin/cend") - { - json::const_iterator it = j.cbegin(); - CHECK(it != j.cend()); - CHECK(*it == j); - - it++; - CHECK(it != j.cbegin()); - CHECK(it == j.cend()); - - it--; - CHECK(it == j.cbegin()); - CHECK(it != j.cend()); - CHECK(*it == j); - - ++it; - CHECK(it != j.cbegin()); - CHECK(it == j.cend()); - - --it; - CHECK(it == j.cbegin()); - CHECK(it != j.cend()); - CHECK(*it == j); - } - - SECTION("const json + cbegin/cend") - { - json::const_iterator it = j_const.cbegin(); - CHECK(it != j_const.cend()); - CHECK(*it == j_const); - - it++; - CHECK(it != j_const.cbegin()); - CHECK(it == j_const.cend()); - - it--; - CHECK(it == j_const.cbegin()); - CHECK(it != j_const.cend()); - CHECK(*it == j_const); - - ++it; - CHECK(it != j_const.cbegin()); - CHECK(it == j_const.cend()); - - --it; - CHECK(it == j_const.cbegin()); - CHECK(it != j_const.cend()); - CHECK(*it == j_const); - } - - SECTION("json + rbegin/rend") - { - json::reverse_iterator it = j.rbegin(); - CHECK(it != j.rend()); - CHECK(*it == j); - - it++; - CHECK(it != j.rbegin()); - CHECK(it == j.rend()); - - it--; - CHECK(it == j.rbegin()); - CHECK(it != j.rend()); - CHECK(*it == j); - - ++it; - CHECK(it != j.rbegin()); - CHECK(it == j.rend()); - - --it; - CHECK(it == j.rbegin()); - CHECK(it != j.rend()); - CHECK(*it == j); - } - - SECTION("json + crbegin/crend") - { - json::const_reverse_iterator it = j.crbegin(); - CHECK(it != j.crend()); - CHECK(*it == j); - - it++; - CHECK(it != j.crbegin()); - CHECK(it == j.crend()); - - it--; - CHECK(it == j.crbegin()); - CHECK(it != j.crend()); - CHECK(*it == j); - - ++it; - CHECK(it != j.crbegin()); - CHECK(it == j.crend()); - - --it; - CHECK(it == j.crbegin()); - CHECK(it != j.crend()); - CHECK(*it == j); - } - - SECTION("const json + crbegin/crend") - { - json::const_reverse_iterator it = j_const.crbegin(); - CHECK(it != j_const.crend()); - CHECK(*it == j_const); - - it++; - CHECK(it != j_const.crbegin()); - CHECK(it == j_const.crend()); - - it--; - CHECK(it == j_const.crbegin()); - CHECK(it != j_const.crend()); - CHECK(*it == j_const); - - ++it; - CHECK(it != j_const.crbegin()); - CHECK(it == j_const.crend()); - - --it; - CHECK(it == j_const.crbegin()); - CHECK(it != j_const.crend()); - CHECK(*it == j_const); - } - } - - SECTION("number (float)") - { - json j = 23.42; - json j_const(j); - - SECTION("json + begin/end") - { - json::iterator it = j.begin(); - CHECK(it != j.end()); - CHECK(*it == j); - - it++; - CHECK(it != j.begin()); - CHECK(it == j.end()); - - it--; - CHECK(it == j.begin()); - CHECK(it != j.end()); - CHECK(*it == j); - - ++it; - CHECK(it != j.begin()); - CHECK(it == j.end()); - - --it; - CHECK(it == j.begin()); - CHECK(it != j.end()); - CHECK(*it == j); - } - - SECTION("const json + begin/end") - { - json::const_iterator it = j_const.begin(); - CHECK(it != j_const.end()); - CHECK(*it == j_const); - - it++; - CHECK(it != j_const.begin()); - CHECK(it == j_const.end()); - - it--; - CHECK(it == j_const.begin()); - CHECK(it != j_const.end()); - CHECK(*it == j_const); - - ++it; - CHECK(it != j_const.begin()); - CHECK(it == j_const.end()); - - --it; - CHECK(it == j_const.begin()); - CHECK(it != j_const.end()); - CHECK(*it == j_const); - } - - SECTION("json + cbegin/cend") - { - json::const_iterator it = j.cbegin(); - CHECK(it != j.cend()); - CHECK(*it == j); - - it++; - CHECK(it != j.cbegin()); - CHECK(it == j.cend()); - - it--; - CHECK(it == j.cbegin()); - CHECK(it != j.cend()); - CHECK(*it == j); - - ++it; - CHECK(it != j.cbegin()); - CHECK(it == j.cend()); - - --it; - CHECK(it == j.cbegin()); - CHECK(it != j.cend()); - CHECK(*it == j); - } - - SECTION("const json + cbegin/cend") - { - json::const_iterator it = j_const.cbegin(); - CHECK(it != j_const.cend()); - CHECK(*it == j_const); - - it++; - CHECK(it != j_const.cbegin()); - CHECK(it == j_const.cend()); - - it--; - CHECK(it == j_const.cbegin()); - CHECK(it != j_const.cend()); - CHECK(*it == j_const); - - ++it; - CHECK(it != j_const.cbegin()); - CHECK(it == j_const.cend()); - - --it; - CHECK(it == j_const.cbegin()); - CHECK(it != j_const.cend()); - CHECK(*it == j_const); - } - - SECTION("json + rbegin/rend") - { - json::reverse_iterator it = j.rbegin(); - CHECK(it != j.rend()); - CHECK(*it == j); - - it++; - CHECK(it != j.rbegin()); - CHECK(it == j.rend()); - - it--; - CHECK(it == j.rbegin()); - CHECK(it != j.rend()); - CHECK(*it == j); - - ++it; - CHECK(it != j.rbegin()); - CHECK(it == j.rend()); - - --it; - CHECK(it == j.rbegin()); - CHECK(it != j.rend()); - CHECK(*it == j); - } - - SECTION("json + crbegin/crend") - { - json::const_reverse_iterator it = j.crbegin(); - CHECK(it != j.crend()); - CHECK(*it == j); - - it++; - CHECK(it != j.crbegin()); - CHECK(it == j.crend()); - - it--; - CHECK(it == j.crbegin()); - CHECK(it != j.crend()); - CHECK(*it == j); - - ++it; - CHECK(it != j.crbegin()); - CHECK(it == j.crend()); - - --it; - CHECK(it == j.crbegin()); - CHECK(it != j.crend()); - CHECK(*it == j); - } - - SECTION("const json + crbegin/crend") - { - json::const_reverse_iterator it = j_const.crbegin(); - CHECK(it != j_const.crend()); - CHECK(*it == j_const); - - it++; - CHECK(it != j_const.crbegin()); - CHECK(it == j_const.crend()); - - it--; - CHECK(it == j_const.crbegin()); - CHECK(it != j_const.crend()); - CHECK(*it == j_const); - - ++it; - CHECK(it != j_const.crbegin()); - CHECK(it == j_const.crend()); - - --it; - CHECK(it == j_const.crbegin()); - CHECK(it != j_const.crend()); - CHECK(*it == j_const); - } - } - - SECTION("null") - { - json j = nullptr; - json j_const(j); - - SECTION("json + begin/end") - { - json::iterator it = j.begin(); - CHECK(it == j.end()); - } - - SECTION("const json + begin/end") - { - json::const_iterator it_begin = j_const.begin(); - json::const_iterator it_end = j_const.end(); - CHECK(it_begin == it_end); - } - - SECTION("json + cbegin/cend") - { - json::const_iterator it_begin = j.cbegin(); - json::const_iterator it_end = j.cend(); - CHECK(it_begin == it_end); - } - - SECTION("const json + cbegin/cend") - { - json::const_iterator it_begin = j_const.cbegin(); - json::const_iterator it_end = j_const.cend(); - CHECK(it_begin == it_end); - } - - SECTION("json + rbegin/rend") - { - json::reverse_iterator it = j.rbegin(); - CHECK(it == j.rend()); - } - - SECTION("json + crbegin/crend") - { - json::const_reverse_iterator it = j.crbegin(); - CHECK(it == j.crend()); - } - - SECTION("const json + crbegin/crend") - { - json::const_reverse_iterator it = j_const.crbegin(); - CHECK(it == j_const.crend()); + SECTION("object") + { + { + auto it = j_object.begin(); + CHECK_THROWS_AS(it[0], std::domain_error); + CHECK_THROWS_AS(it[1], std::domain_error); + } + { + auto it = j_object.cbegin(); + CHECK_THROWS_AS(it[0], std::domain_error); + CHECK_THROWS_AS(it[1], std::domain_error); + } + } + + SECTION("array") + { + { + auto it = j_array.begin(); + CHECK(it[0] == json(1)); + CHECK(it[1] == json(2)); + CHECK(it[2] == json(3)); + CHECK(it[3] == json(4)); + CHECK(it[4] == json(5)); + CHECK(it[5] == json(6)); + } + { + auto it = j_array.cbegin(); + CHECK(it[0] == json(1)); + CHECK(it[1] == json(2)); + CHECK(it[2] == json(3)); + CHECK(it[3] == json(4)); + CHECK(it[4] == json(5)); + CHECK(it[5] == json(6)); + } + } + + SECTION("null") + { + { + auto it = j_null.begin(); + CHECK_THROWS_AS(it[0], std::out_of_range); + CHECK_THROWS_AS(it[1], std::out_of_range); + } + { + auto it = j_null.cbegin(); + CHECK_THROWS_AS(it[0], std::out_of_range); + CHECK_THROWS_AS(it[1], std::out_of_range); + } + } + + SECTION("value") + { + { + auto it = j_value.begin(); + CHECK(it[0] == json(42)); + CHECK_THROWS_AS(it[1], std::out_of_range); + } + { + auto it = j_value.cbegin(); + CHECK(it[0] == json(42)); + CHECK_THROWS_AS(it[1], std::out_of_range); + } + } } } } @@ -4356,121 +4802,163 @@ TEST_CASE("modifiers") TEST_CASE("lexicographical comparison operators") { - json j_values = + SECTION("types") { - nullptr, nullptr, - 17, 42, - 3.14159, 23.42, - "foo", "bar", - true, false, - {1, 2, 3}, {"one", "two", "three"}, - {{"first", 1}, {"second", 2}}, {{"a", "A"}, {"b", {"B"}}} - }; - - SECTION("comparison: equal") - { - std::vector> expected = + std::vector j_types = { - {true, true, false, false, false, false, false, false, false, false, false, false, false, false}, - {true, true, false, false, false, false, false, false, false, false, false, false, false, false}, - {false, false, true, false, false, false, false, false, false, false, false, false, false, false}, - {false, false, false, true, false, false, false, false, false, false, false, false, false, false}, - {false, false, false, false, true, false, false, false, false, false, false, false, false, false}, - {false, false, false, false, false, true, false, false, false, false, false, false, false, false}, - {false, false, false, false, false, false, true, false, false, false, false, false, false, false}, - {false, false, false, false, false, false, false, true, false, false, false, false, false, false}, - {false, false, false, false, false, false, false, false, true, false, false, false, false, false}, - {false, false, false, false, false, false, false, false, false, true, false, false, false, false}, - {false, false, false, false, false, false, false, false, false, false, true, false, false, false}, - {false, false, false, false, false, false, false, false, false, false, false, true, false, false}, - {false, false, false, false, false, false, false, false, false, false, false, false, true, false}, - {false, false, false, false, false, false, false, false, false, false, false, false, false, true} + json::value_t::null, + json::value_t::boolean, + json::value_t::number_integer, + json::value_t::number_float, + json::value_t::object, + json::value_t::array, + json::value_t::string }; - for (size_t i = 0; i < j_values.size(); ++i) + SECTION("comparison: less") { - for (size_t j = 0; j < j_values.size(); ++j) + std::vector> expected = { - // check precomputed values - CHECK( (j_values[i] == j_values[j]) == expected[i][j] ); + {false, true, true, true, true, true, true}, + {false, false, true, true, true, true, true}, + {false, false, false, false, true, true, true}, + {false, false, false, false, true, true, true}, + {false, false, false, false, false, true, true}, + {false, false, false, false, false, false, true}, + {false, false, false, false, false, false, false} + }; + + for (size_t i = 0; i < j_types.size(); ++i) + { + for (size_t j = 0; j < j_types.size(); ++j) + { + CAPTURE(i); + CAPTURE(j); + // check precomputed values + CHECK( (j_types[i] < j_types[j]) == expected[i][j] ); + } } } } - SECTION("comparison: not equal") + SECTION("values") { - for (size_t i = 0; i < j_values.size(); ++i) + json j_values = { - for (size_t j = 0; j < j_values.size(); ++j) - { - // check definition - CHECK( (j_values[i] != j_values[j]) == not(j_values[i] == j_values[j]) ); - } - } - } - - SECTION("comparison: less") - { - std::vector> expected = - { - {false, false, false, false, false, false, false, false, false, false, false, false, false, false}, - {false, false, false, false, false, false, false, false, false, false, false, false, false, false}, - {false, false, false, true, false, true, false, false, false, false, false, false, false, false}, - {false, false, false, false, false, false, false, false, false, false, false, false, false, false}, - {false, false, true, true, false, true, false, false, false, false, false, false, false, false}, - {false, false, false, true, false, false, false, false, false, false, false, false, false, false}, - {false, false, false, false, false, false, false, false, false, false, false, false, false, false}, - {false, false, false, false, false, false, true, false, false, false, false, false, false, false}, - {false, false, false, false, false, false, false, false, false, false, false, false, false, false}, - {false, false, false, false, false, false, false, false, true, false, false, false, false, false}, - {false, false, false, false, false, false, false, false, false, false, false, false, false, false}, - {false, false, false, false, false, false, false, false, false, false, false, false, false, false}, - {false, false, false, false, false, false, false, false, false, false, false, false, false, false}, - {false, false, false, false, false, false, false, false, false, false, false, false, true, false} + nullptr, nullptr, + 17, 42, + 3.14159, 23.42, + "foo", "bar", + true, false, + {1, 2, 3}, {"one", "two", "three"}, + {{"first", 1}, {"second", 2}}, {{"a", "A"}, {"b", {"B"}}} }; - for (size_t i = 0; i < j_values.size(); ++i) + SECTION("comparison: equal") { - for (size_t j = 0; j < j_values.size(); ++j) + std::vector> expected = { - // check precomputed values - CHECK( (j_values[i] < j_values[j]) == expected[i][j] ); + {true, true, false, false, false, false, false, false, false, false, false, false, false, false}, + {true, true, false, false, false, false, false, false, false, false, false, false, false, false}, + {false, false, true, false, false, false, false, false, false, false, false, false, false, false}, + {false, false, false, true, false, false, false, false, false, false, false, false, false, false}, + {false, false, false, false, true, false, false, false, false, false, false, false, false, false}, + {false, false, false, false, false, true, false, false, false, false, false, false, false, false}, + {false, false, false, false, false, false, true, false, false, false, false, false, false, false}, + {false, false, false, false, false, false, false, true, false, false, false, false, false, false}, + {false, false, false, false, false, false, false, false, true, false, false, false, false, false}, + {false, false, false, false, false, false, false, false, false, true, false, false, false, false}, + {false, false, false, false, false, false, false, false, false, false, true, false, false, false}, + {false, false, false, false, false, false, false, false, false, false, false, true, false, false}, + {false, false, false, false, false, false, false, false, false, false, false, false, true, false}, + {false, false, false, false, false, false, false, false, false, false, false, false, false, true} + }; + + for (size_t i = 0; i < j_values.size(); ++i) + { + for (size_t j = 0; j < j_values.size(); ++j) + { + // check precomputed values + CHECK( (j_values[i] == j_values[j]) == expected[i][j] ); + } } } - } - SECTION("comparison: less than or equal equal") - { - for (size_t i = 0; i < j_values.size(); ++i) + SECTION("comparison: not equal") { - for (size_t j = 0; j < j_values.size(); ++j) + for (size_t i = 0; i < j_values.size(); ++i) { - // check definition - CHECK( (j_values[i] <= j_values[j]) == not(j_values[j] < j_values[i]) ); + for (size_t j = 0; j < j_values.size(); ++j) + { + // check definition + CHECK( (j_values[i] != j_values[j]) == not(j_values[i] == j_values[j]) ); + } } } - } - SECTION("comparison: greater than") - { - for (size_t i = 0; i < j_values.size(); ++i) + SECTION("comparison: less") { - for (size_t j = 0; j < j_values.size(); ++j) + std::vector> expected = { - // check definition - CHECK( (j_values[i] > j_values[j]) == (j_values[j] < j_values[i]) ); + {false, false, true, true, true, true, true, true, true, true, true, true, true, true}, + {false, false, true, true, true, true, true, true, true, true, true, true, true, true}, + {false, false, false, true, false, true, true, true, false, false, true, true, true, true}, + {false, false, false, false, false, false, true, true, false, false, true, true, true, true}, + {false, false, true, true, false, true, true, true, false, false, true, true, true, true}, + {false, false, false, true, false, false, true, true, false, false, true, true, true, true}, + {false, false, false, false, false, false, false, false, false, false, false, false, false, false}, + {false, false, false, false, false, false, true, false, false, false, false, false, false, false}, + {false, false, true, true, true, true, true, true, false, false, true, true, true, true}, + {false, false, true, true, true, true, true, true, true, false, true, true, true, true}, + {false, false, false, false, false, false, true, true, false, false, false, true, false, false}, + {false, false, false, false, false, false, true, true, false, false, false, false, false, false}, + {false, false, false, false, false, false, true, true, false, false, true, true, false, false}, + {false, false, false, false, false, false, true, true, false, false, true, true, true, false} + }; + + for (size_t i = 0; i < j_values.size(); ++i) + { + for (size_t j = 0; j < j_values.size(); ++j) + { + // check precomputed values + CHECK( (j_values[i] < j_values[j]) == expected[i][j] ); + } } } - } - SECTION("comparison: greater than or equal") - { - for (size_t i = 0; i < j_values.size(); ++i) + SECTION("comparison: less than or equal equal") { - for (size_t j = 0; j < j_values.size(); ++j) + for (size_t i = 0; i < j_values.size(); ++i) { - // check definition - CHECK( (j_values[i] >= j_values[j]) == not(j_values[i] < j_values[j]) ); + for (size_t j = 0; j < j_values.size(); ++j) + { + // check definition + CHECK( (j_values[i] <= j_values[j]) == not(j_values[j] < j_values[i]) ); + } + } + } + + SECTION("comparison: greater than") + { + for (size_t i = 0; i < j_values.size(); ++i) + { + for (size_t j = 0; j < j_values.size(); ++j) + { + // check definition + CHECK( (j_values[i] > j_values[j]) == (j_values[j] < j_values[i]) ); + } + } + } + + SECTION("comparison: greater than or equal") + { + for (size_t i = 0; i < j_values.size(); ++i) + { + for (size_t j = 0; j < j_values.size(); ++j) + { + // check definition + CHECK( (j_values[i] >= j_values[j]) == not(j_values[i] < j_values[j]) ); + } } } } @@ -4721,20 +5209,20 @@ TEST_CASE("iterator class") { json j(json::value_t::null); json::iterator it = j.begin(); - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::end); + CHECK(it.m_it.generic_iterator == 1); it++; - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::invalid); + CHECK((it.m_it.generic_iterator != 0 and it.m_it.generic_iterator != 1)); } SECTION("number") { json j(17); json::iterator it = j.begin(); - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::begin); + CHECK(it.m_it.generic_iterator == 0); it++; - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::end); + CHECK(it.m_it.generic_iterator == 1); it++; - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::invalid); + CHECK((it.m_it.generic_iterator != 0 and it.m_it.generic_iterator != 1)); } SECTION("object") @@ -4772,20 +5260,20 @@ TEST_CASE("iterator class") { json j(json::value_t::null); json::iterator it = j.begin(); - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::end); + CHECK(it.m_it.generic_iterator == 1); ++it; - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::invalid); + CHECK((it.m_it.generic_iterator != 0 and it.m_it.generic_iterator != 1)); } SECTION("number") { json j(17); json::iterator it = j.begin(); - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::begin); + CHECK(it.m_it.generic_iterator == 0); ++it; - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::end); + CHECK(it.m_it.generic_iterator == 1); ++it; - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::invalid); + CHECK((it.m_it.generic_iterator != 0 and it.m_it.generic_iterator != 1)); } SECTION("object") @@ -4823,20 +5311,18 @@ TEST_CASE("iterator class") { json j(json::value_t::null); json::iterator it = j.end(); - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::end); - it--; - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::invalid); + CHECK(it.m_it.generic_iterator == 1); } SECTION("number") { json j(17); json::iterator it = j.end(); - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::end); + CHECK(it.m_it.generic_iterator == 1); it--; - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::begin); + CHECK(it.m_it.generic_iterator == 0); it--; - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::invalid); + CHECK((it.m_it.generic_iterator != 0 and it.m_it.generic_iterator != 1)); } SECTION("object") @@ -4874,20 +5360,18 @@ TEST_CASE("iterator class") { json j(json::value_t::null); json::iterator it = j.end(); - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::end); - --it; - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::invalid); + CHECK(it.m_it.generic_iterator == 1); } SECTION("number") { json j(17); json::iterator it = j.end(); - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::end); + CHECK(it.m_it.generic_iterator == 1); --it; - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::begin); + CHECK(it.m_it.generic_iterator == 0); --it; - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::invalid); + CHECK((it.m_it.generic_iterator != 0 and it.m_it.generic_iterator != 1)); } SECTION("object") @@ -4919,63 +5403,6 @@ TEST_CASE("iterator class") } } } - - SECTION("comparison") - { - json j_values = - { - nullptr, nullptr, - 17, 42, - 3.14159, 23.42, - "foo", "bar", - true, false, - {1, 2, 3}, {"one", "two", "three"}, - {{"first", 1}, {"second", 2}}, {{"a", "A"}, {"b", {"B"}}} - }; - - SECTION("comparison: equal") - { - std::vector> expected = - { - {true, false, false, false, false, false, false, false, false, false, false, false, false, false}, - {false, true, false, false, false, false, false, false, false, false, false, false, false, false}, - {false, false, true, false, false, false, false, false, false, false, false, false, false, false}, - {false, false, false, true, false, false, false, false, false, false, false, false, false, false}, - {false, false, false, false, true, false, false, false, false, false, false, false, false, false}, - {false, false, false, false, false, true, false, false, false, false, false, false, false, false}, - {false, false, false, false, false, false, true, false, false, false, false, false, false, false}, - {false, false, false, false, false, false, false, true, false, false, false, false, false, false}, - {false, false, false, false, false, false, false, false, true, false, false, false, false, false}, - {false, false, false, false, false, false, false, false, false, true, false, false, false, false}, - {false, false, false, false, false, false, false, false, false, false, true, false, false, false}, - {false, false, false, false, false, false, false, false, false, false, false, true, false, false}, - {false, false, false, false, false, false, false, false, false, false, false, false, true, false}, - {false, false, false, false, false, false, false, false, false, false, false, false, false, true} - }; - - for (size_t i = 0; i < j_values.size(); ++i) - { - for (size_t j = 0; j < j_values.size(); ++j) - { - // check precomputed values - CHECK( (j_values[i].begin() == j_values[j].begin()) == expected[i][j] ); - } - } - } - - SECTION("comparison: not equal") - { - for (size_t i = 0; i < j_values.size(); ++i) - { - for (size_t j = 0; j < j_values.size(); ++j) - { - // check definition - CHECK( (j_values[i].begin() != j_values[j].begin()) == not ((j_values[i].begin() == - j_values[j].begin())) ); - } - } - } - } } TEST_CASE("const_iterator class") @@ -5146,20 +5573,20 @@ TEST_CASE("const_iterator class") { json j(json::value_t::null); json::const_iterator it = j.cbegin(); - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::end); + CHECK(it.m_it.generic_iterator == 1); it++; - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::invalid); + CHECK((it.m_it.generic_iterator != 0 and it.m_it.generic_iterator != 1)); } SECTION("number") { json j(17); json::const_iterator it = j.cbegin(); - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::begin); + CHECK(it.m_it.generic_iterator == 0); it++; - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::end); + CHECK(it.m_it.generic_iterator == 1); it++; - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::invalid); + CHECK((it.m_it.generic_iterator != 0 and it.m_it.generic_iterator != 1)); } SECTION("object") @@ -5197,20 +5624,20 @@ TEST_CASE("const_iterator class") { json j(json::value_t::null); json::const_iterator it = j.cbegin(); - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::end); + CHECK(it.m_it.generic_iterator == 1); ++it; - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::invalid); + CHECK((it.m_it.generic_iterator != 0 and it.m_it.generic_iterator != 1)); } SECTION("number") { json j(17); json::const_iterator it = j.cbegin(); - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::begin); + CHECK(it.m_it.generic_iterator == 0); ++it; - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::end); + CHECK(it.m_it.generic_iterator == 1); ++it; - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::invalid); + CHECK((it.m_it.generic_iterator != 0 and it.m_it.generic_iterator != 1)); } SECTION("object") @@ -5248,20 +5675,18 @@ TEST_CASE("const_iterator class") { json j(json::value_t::null); json::const_iterator it = j.cend(); - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::end); - it--; - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::invalid); + CHECK(it.m_it.generic_iterator == 1); } SECTION("number") { json j(17); json::const_iterator it = j.cend(); - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::end); + CHECK(it.m_it.generic_iterator == 1); it--; - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::begin); + CHECK(it.m_it.generic_iterator == 0); it--; - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::invalid); + CHECK((it.m_it.generic_iterator != 0 and it.m_it.generic_iterator != 1)); } SECTION("object") @@ -5299,20 +5724,18 @@ TEST_CASE("const_iterator class") { json j(json::value_t::null); json::const_iterator it = j.cend(); - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::end); - --it; - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::invalid); + CHECK(it.m_it.generic_iterator == 1); } SECTION("number") { json j(17); json::const_iterator it = j.cend(); - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::end); + CHECK(it.m_it.generic_iterator == 1); --it; - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::begin); + CHECK(it.m_it.generic_iterator == 0); --it; - CHECK(it.m_it.generic_iterator == json::generic_iterator_value::invalid); + CHECK((it.m_it.generic_iterator != 0 and it.m_it.generic_iterator != 1)); } SECTION("object") @@ -5344,63 +5767,6 @@ TEST_CASE("const_iterator class") } } } - - SECTION("comparison") - { - json j_values = - { - nullptr, nullptr, - 17, 42, - 3.14159, 23.42, - "foo", "bar", - true, false, - {1, 2, 3}, {"one", "two", "three"}, - {{"first", 1}, {"second", 2}}, {{"a", "A"}, {"b", {"B"}}} - }; - - SECTION("comparison: equal") - { - std::vector> expected = - { - {true, false, false, false, false, false, false, false, false, false, false, false, false, false}, - {false, true, false, false, false, false, false, false, false, false, false, false, false, false}, - {false, false, true, false, false, false, false, false, false, false, false, false, false, false}, - {false, false, false, true, false, false, false, false, false, false, false, false, false, false}, - {false, false, false, false, true, false, false, false, false, false, false, false, false, false}, - {false, false, false, false, false, true, false, false, false, false, false, false, false, false}, - {false, false, false, false, false, false, true, false, false, false, false, false, false, false}, - {false, false, false, false, false, false, false, true, false, false, false, false, false, false}, - {false, false, false, false, false, false, false, false, true, false, false, false, false, false}, - {false, false, false, false, false, false, false, false, false, true, false, false, false, false}, - {false, false, false, false, false, false, false, false, false, false, true, false, false, false}, - {false, false, false, false, false, false, false, false, false, false, false, true, false, false}, - {false, false, false, false, false, false, false, false, false, false, false, false, true, false}, - {false, false, false, false, false, false, false, false, false, false, false, false, false, true} - }; - - for (size_t i = 0; i < j_values.size(); ++i) - { - for (size_t j = 0; j < j_values.size(); ++j) - { - // check precomputed values - CHECK( (j_values[i].cbegin() == j_values[j].cbegin()) == expected[i][j] ); - } - } - } - - SECTION("comparison: not equal") - { - for (size_t i = 0; i < j_values.size(); ++i) - { - for (size_t j = 0; j < j_values.size(); ++j) - { - // check definition - CHECK( (j_values[i].cbegin() != j_values[j].cbegin()) == not ((j_values[i].cbegin() == - j_values[j].cbegin())) ); - } - } - } - } } TEST_CASE("convenience functions") @@ -6143,3 +6509,326 @@ TEST_CASE("README", "[hide]") // etc. } } + +TEST_CASE("algorithms") +{ + json j_array = {13, 29, 3, {{"one", 1}, {"two", 2}}, true, false, {1, 2, 3}, "foo", "baz"}; + json j_object = {{"one", 1}, {"two", 2}}; + + SECTION("non-modifying sequence operations") + { + SECTION("std::all_of") + { + CHECK(std::all_of(j_array.begin(), j_array.end(), [](const json & value) + { + return value.size() > 0; + })); + CHECK(std::all_of(j_object.begin(), j_object.end(), [](const json & value) + { + return value.type() == json::value_t::number_integer; + })); + } + + SECTION("std::any_of") + { + CHECK(std::any_of(j_array.begin(), j_array.end(), [](const json & value) + { + return value.is_string() and value.get() == "foo"; + })); + CHECK(std::any_of(j_object.begin(), j_object.end(), [](const json & value) + { + return value.get() > 1; + })); + } + + SECTION("std::none_of") + { + CHECK(std::none_of(j_array.begin(), j_array.end(), [](const json & value) + { + return value.size() == 0; + })); + CHECK(std::none_of(j_object.begin(), j_object.end(), [](const json & value) + { + return value.get() <= 0; + })); + } + + SECTION("std::for_each") + { + SECTION("reading") + { + int sum = 0; + + std::for_each(j_array.cbegin(), j_array.cend(), [&sum](const json & value) + { + if (value.is_number()) + { + sum += static_cast(value); + } + }); + + CHECK(sum == 45); + } + + SECTION("writing") + { + auto add17 = [](json & value) + { + if (value.is_array()) + { + value.push_back(17); + } + }; + + std::for_each(j_array.begin(), j_array.end(), add17); + + CHECK(j_array[6] == json({1, 2, 3, 17})); + } + } + + SECTION("std::count") + { + CHECK(std::count(j_array.begin(), j_array.end(), json(true)) == 1); + } + + SECTION("std::count_if") + { + CHECK(std::count_if(j_array.begin(), j_array.end(), [](const json & value) + { + return (value.is_number()); + }) == 3); + CHECK(std::count_if(j_array.begin(), j_array.end(), [](const json&) + { + return true; + }) == 9); + } + + SECTION("std::mismatch") + { + json j_array2 = {13, 29, 3, {{"one", 1}, {"two", 2}, {"three", 3}}, true, false, {1, 2, 3}, "foo", "baz"}; + auto res = std::mismatch(j_array.begin(), j_array.end(), j_array2.begin()); + CHECK(*res.first == json({{"one", 1}, {"two", 2}})); + CHECK(*res.second == json({{"one", 1}, {"two", 2}, {"three", 3}})); + } + + SECTION("std::equal") + { + SECTION("using operator==") + { + CHECK(std::equal(j_array.begin(), j_array.end(), j_array.begin())); + CHECK(std::equal(j_object.begin(), j_object.end(), j_object.begin())); + CHECK(not std::equal(j_array.begin(), j_array.end(), j_object.begin())); + } + + SECTION("using user-defined comparison") + { + // compare objects only by size of its elements + json j_array2 = {13, 29, 3, {"Hello", "World"}, true, false, {{"one", 1}, {"two", 2}, {"three", 3}}, "foo", "baz"}; + CHECK(not std::equal(j_array.begin(), j_array.end(), j_array2.begin())); + CHECK(std::equal(j_array.begin(), j_array.end(), j_array2.begin(), + [](const json & a, const json & b) + { + return (a.size() == b.size()); + })); + } + } + + SECTION("std::find") + { + auto it = std::find(j_array.begin(), j_array.end(), json(false)); + CHECK(std::distance(j_array.begin(), it) == 5); + } + + SECTION("std::find_if") + { + auto it = std::find_if(j_array.begin(), j_array.end(), + [](const json & value) + { + return value.is_boolean(); + }); + CHECK(std::distance(j_array.begin(), it) == 4); + } + + SECTION("std::find_if_not") + { + auto it = std::find_if_not(j_array.begin(), j_array.end(), + [](const json & value) + { + return value.is_number(); + }); + CHECK(std::distance(j_array.begin(), it) == 3); + } + + SECTION("std::adjacent_find") + { + CHECK(std::adjacent_find(j_array.begin(), j_array.end()) == j_array.end()); + CHECK(std::adjacent_find(j_array.begin(), j_array.end(), + [](const json & v1, const json & v2) + { + return v1.type() == v2.type(); + }) == j_array.begin()); + } + } + + SECTION("modifying sequence operations") + { + SECTION("std::reverse") + { + std::reverse(j_array.begin(), j_array.end()); + CHECK(j_array == json({"baz", "foo", {1, 2, 3}, false, true, {{"one", 1}, {"two", 2}}, 3, 29, 13})); + } + + SECTION("std::rotate") + { + std::rotate(j_array.begin(), j_array.begin() + 1, j_array.end()); + CHECK(j_array == json({29, 3, {{"one", 1}, {"two", 2}}, true, false, {1, 2, 3}, "foo", "baz", 13})); + } + + SECTION("std::partition") + { + auto it = std::partition(j_array.begin(), j_array.end(), [](const json & v) + { + return v.is_string(); + }); + CHECK(std::distance(j_array.begin(), it) == 2); + CHECK(not it[2].is_string()); + } + } + + SECTION("sorting operations") + { + SECTION("std::sort") + { + SECTION("with standard comparison") + { + json j = {13, 29, 3, {{"one", 1}, {"two", 2}}, true, false, {1, 2, 3}, "foo", "baz", nullptr}; + std::sort(j.begin(), j.end()); + CHECK(j == json({nullptr, false, true, 3, 13, 29, {{"one", 1}, {"two", 2}}, {1, 2, 3}, "baz", "foo"})); + } + + SECTION("with user-defined comparison") + { + json j = {3, {{"one", 1}, {"two", 2}}, {1, 2, 3}, nullptr}; + std::sort(j.begin(), j.end(), [](const json & a, const json & b) + { + return a.size() < b.size(); + }); + CHECK(j == json({nullptr, 3, {{"one", 1}, {"two", 2}}, {1, 2, 3}})); + } + + SECTION("sorting an object") + { + json j({{"one", 1}, {"two", 2}}); + CHECK_THROWS_AS(std::sort(j.begin(), j.end()), std::domain_error); + } + } + + SECTION("std::partial_sort") + { + json j = {13, 29, 3, {{"one", 1}, {"two", 2}}, true, false, {1, 2, 3}, "foo", "baz", nullptr}; + std::partial_sort(j.begin(), j.begin() + 4, j.end()); + CHECK(j == json({nullptr, false, true, 3, {{"one", 1}, {"two", 2}}, 29, {1, 2, 3}, "foo", "baz", 13})); + } + } + + SECTION("set operations") + { + SECTION("std::merge") + { + { + json j1 = {2, 4, 6, 8}; + json j2 = {1, 2, 3, 5, 7}; + json j3; + + std::merge(j1.begin(), j1.end(), j2.begin(), j2.end(), std::back_inserter(j3)); + CHECK(j3 == json({1, 2, 2, 3, 4, 5, 6, 7, 8})); + } + } + + SECTION("std::set_difference") + { + json j1 = {1, 2, 3, 4, 5, 6, 7, 8}; + json j2 = {1, 2, 3, 5, 7}; + json j3; + + std::set_difference(j1.begin(), j1.end(), j2.begin(), j2.end(), std::back_inserter(j3)); + CHECK(j3 == json({4, 6, 8})); + } + + SECTION("std::set_intersection") + { + json j1 = {1, 2, 3, 4, 5, 6, 7, 8}; + json j2 = {1, 2, 3, 5, 7}; + json j3; + + std::set_intersection(j1.begin(), j1.end(), j2.begin(), j2.end(), std::back_inserter(j3)); + CHECK(j3 == json({1, 2, 3, 5, 7})); + } + + SECTION("std::set_union") + { + json j1 = {2, 4, 6, 8}; + json j2 = {1, 2, 3, 5, 7}; + json j3; + + std::set_union(j1.begin(), j1.end(), j2.begin(), j2.end(), std::back_inserter(j3)); + CHECK(j3 == json({1, 2, 3, 4, 5, 6, 7, 8})); + } + + SECTION("std::set_symmetric_difference") + { + json j1 = {2, 4, 6, 8}; + json j2 = {1, 2, 3, 5, 7}; + json j3; + + std::set_symmetric_difference(j1.begin(), j1.end(), j2.begin(), j2.end(), std::back_inserter(j3)); + CHECK(j3 == json({1, 3, 4, 5, 6, 7, 8})); + } + } + + SECTION("heap operations") + { + std::make_heap(j_array.begin(), j_array.end()); + CHECK(std::is_heap(j_array.begin(), j_array.end())); + std::sort_heap(j_array.begin(), j_array.end()); + CHECK(j_array == json({false, true, 3, 13, 29, {{"one", 1}, {"two", 2}}, {1, 2, 3}, "baz", "foo"})); + } +} + +TEST_CASE("concepts") +{ + SECTION("DefaultConstructible") + { + CHECK(std::is_nothrow_default_constructible::value); + } + + SECTION("MoveConstructible") + { + CHECK(std::is_nothrow_move_constructible::value); + } + + SECTION("CopyConstructible") + { + CHECK(std::is_copy_constructible::value); + } + + SECTION("MoveAssignable") + { + CHECK(std::is_nothrow_move_assignable::value); + } + + SECTION("CopyAssignable") + { + CHECK(std::is_copy_assignable::value); + } + + SECTION("Destructible") + { + CHECK(std::is_nothrow_destructible::value); + } + + SECTION("StandardLayoutType") + { + CHECK(std::is_standard_layout::value); + } +}