1f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III// Copyright 2007-2010 Baptiste Lepilleur 2f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III// Distributed under MIT license, or public domain if desired and 3f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III// recognized in your jurisdiction. 4f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III// See file LICENSE for detail or copy at http://jsoncpp.sourceforge.net/LICENSE 5f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 6f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III#include <json/config.h> 7f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III#include <json/json.h> 8f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III#include "jsontest.h" 9f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 10f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III// Make numeric limits more convenient to talk about. 11f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III// Assumes int type in 32 bits. 12f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III#define kint32max Json::Value::maxInt 13f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III#define kint32min Json::Value::minInt 14f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III#define kuint32max Json::Value::maxUInt 15f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III#define kint64max Json::Value::maxInt64 16f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III#define kint64min Json::Value::minInt64 17f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III#define kuint64max Json::Value::maxUInt64 18f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 19f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIstatic const double kdint64max = double(kint64max); 20f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIstatic const float kfint64max = float(kint64max); 21f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIstatic const float kfint32max = float(kint32max); 22f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIstatic const float kfuint32max = float(kuint32max); 23f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 24f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 25f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III// ////////////////////////////////////////////////////////////////// 26f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III// ////////////////////////////////////////////////////////////////// 27f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III// Json Library test cases 28f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III// ////////////////////////////////////////////////////////////////// 29f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III// ////////////////////////////////////////////////////////////////// 30f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 31f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III#if !defined(JSON_USE_INT64_DOUBLE_CONVERSION) 32f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIstatic inline double uint64ToDouble( Json::UInt64 value ) 33f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 34f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III return static_cast<double>( value ); 35f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 36f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III#else // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION) 37f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIstatic inline double uint64ToDouble( Json::UInt64 value ) 38f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 39f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III return static_cast<double>( Json::Int64(value/2) ) * 2.0 + Json::Int64(value & 1); 40f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 41f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III#endif // if !defined(JSON_USE_INT64_DOUBLE_CONVERSION) 42f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 43f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIstruct ValueTest : JsonTest::TestCase 44f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 45f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value null_; 46f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value emptyArray_; 47f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value emptyObject_; 48f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value integer_; 49f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value unsignedInteger_; 50f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value smallUnsignedInteger_; 51f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value real_; 52f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value float_; 53f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value array1_; 54f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value object1_; 55f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value emptyString_; 56f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value string1_; 57f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value string_; 58f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value true_; 59f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value false_; 60f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 61f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 62f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III ValueTest() 63f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III : emptyArray_( Json::arrayValue ) 64f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III , emptyObject_( Json::objectValue ) 65f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III , integer_( 123456789 ) 66f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III , smallUnsignedInteger_( Json::Value::UInt( Json::Value::maxInt ) ) 67f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III , unsignedInteger_( 34567890u ) 68f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III , real_( 1234.56789 ) 69f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III , float_( 0.00390625f ) 70f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III , emptyString_( "" ) 71f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III , string1_( "a" ) 72f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III , string_( "sometext with space" ) 73f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III , true_( true ) 74f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III , false_( false ) 75f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III { 76f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III array1_.append( 1234 ); 77f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III object1_["id"] = 1234; 78f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III } 79f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 80f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III struct IsCheck 81f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III { 82f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III /// Initialize all checks to \c false by default. 83f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III IsCheck(); 84f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 85f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III bool isObject_; 86f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III bool isArray_; 87f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III bool isBool_; 88f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III bool isString_; 89f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III bool isNull_; 90f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 91f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III bool isInt_; 92f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III bool isInt64_; 93f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III bool isUInt_; 94f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III bool isUInt64_; 95f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III bool isIntegral_; 96f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III bool isDouble_; 97f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III bool isNumeric_; 98f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III }; 99f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 100f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III void checkConstMemberCount( const Json::Value &value, unsigned int expectedCount ); 101f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 102f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III void checkMemberCount( Json::Value &value, unsigned int expectedCount ); 103f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 104f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III void checkIs( const Json::Value &value, const IsCheck &check ); 105f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 106f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III void checkIsLess( const Json::Value &x, const Json::Value &y ); 107f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 108f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III void checkIsEqual( const Json::Value &x, const Json::Value &y ); 109f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 110f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III /// Normalize the representation of floating-point number by stripped leading 0 in exponent. 111f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III static std::string normalizeFloatingPointStr( const std::string &s ); 112f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III}; 113f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 114f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 115f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIstd::string 116f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIValueTest::normalizeFloatingPointStr( const std::string &s ) 117f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 118f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III std::string::size_type index = s.find_last_of( "eE" ); 119f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III if ( index != std::string::npos ) 120f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III { 121f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III std::string::size_type hasSign = (s[index+1] == '+' || s[index+1] == '-') ? 1 : 0; 122f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III std::string::size_type exponentStartIndex = index + 1 + hasSign; 123f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III std::string normalized = s.substr( 0, exponentStartIndex ); 124f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III std::string::size_type indexDigit = s.find_first_not_of( '0', exponentStartIndex ); 125f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III std::string exponent = "0"; 126f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III if ( indexDigit != std::string::npos ) // There is an exponent different from 0 127f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III { 128f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III exponent = s.substr( indexDigit ); 129f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III } 130f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III return normalized + exponent; 131f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III } 132f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III return s; 133f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 134f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 135f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 136f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIJSONTEST_FIXTURE( ValueTest, checkNormalizeFloatingPointStr ) 137f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 138f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL( "0.0", normalizeFloatingPointStr("0.0") ); 139f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL( "0e0", normalizeFloatingPointStr("0e0") ); 140f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL( "1234.0", normalizeFloatingPointStr("1234.0") ); 141f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL( "1234.0e0", normalizeFloatingPointStr("1234.0e0") ); 142f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL( "1234.0e+0", normalizeFloatingPointStr("1234.0e+0") ); 143f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL( "1234e-1", normalizeFloatingPointStr("1234e-1") ); 144f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL( "1234e10", normalizeFloatingPointStr("1234e10") ); 145f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL( "1234e10", normalizeFloatingPointStr("1234e010") ); 146f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL( "1234e+10", normalizeFloatingPointStr("1234e+010") ); 147f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL( "1234e-10", normalizeFloatingPointStr("1234e-010") ); 148f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL( "1234e+100", normalizeFloatingPointStr("1234e+100") ); 149f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL( "1234e-100", normalizeFloatingPointStr("1234e-100") ); 150f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL( "1234e+1", normalizeFloatingPointStr("1234e+001") ); 151f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 152f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 153f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 154f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIJSONTEST_FIXTURE( ValueTest, memberCount ) 155f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 156f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkMemberCount(emptyArray_, 0) ); 157f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkMemberCount(emptyObject_, 0) ); 158f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkMemberCount(array1_, 1) ); 159f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkMemberCount(object1_, 1) ); 160f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkMemberCount(null_, 0) ); 161f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkMemberCount(integer_, 0) ); 162f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkMemberCount(unsignedInteger_, 0) ); 163f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkMemberCount(smallUnsignedInteger_, 0) ); 164f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkMemberCount(real_, 0) ); 165f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkMemberCount(emptyString_, 0) ); 166f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkMemberCount(string_, 0) ); 167f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkMemberCount(true_, 0) ); 168f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 169f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 170f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 171f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIJSONTEST_FIXTURE( ValueTest, objects ) 172f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 173f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Types 174f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III IsCheck checks; 175f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isObject_ = true; 176f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( emptyObject_, checks ) ); 177f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( object1_, checks ) ); 178f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 179f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::objectValue, emptyObject_.type()); 180f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 181f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Empty object okay 182f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(emptyObject_.isConvertibleTo(Json::nullValue)); 183f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 184f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Non-empty object not okay 185f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!object1_.isConvertibleTo(Json::nullValue)); 186f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 187f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Always okay 188f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(emptyObject_.isConvertibleTo(Json::objectValue)); 189f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 190f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Never okay 191f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!emptyObject_.isConvertibleTo(Json::arrayValue)); 192f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!emptyObject_.isConvertibleTo(Json::intValue)); 193f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!emptyObject_.isConvertibleTo(Json::uintValue)); 194f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!emptyObject_.isConvertibleTo(Json::realValue)); 195f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!emptyObject_.isConvertibleTo(Json::booleanValue)); 196f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!emptyObject_.isConvertibleTo(Json::stringValue)); 197f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 198f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Access through const reference 199f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III const Json::Value &constObject = object1_; 200f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 201f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::Value(1234), constObject["id"]); 202f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::Value(), constObject["unknown id"]); 203f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 204f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Access through non-const reference 205f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::Value(1234), object1_["id"]); 206f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::Value(), object1_["unknown id"]); 207f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 208f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III object1_["some other id"] = "foo"; 209f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::Value("foo"), object1_["some other id"]); 210f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 211f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 212f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 213f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIJSONTEST_FIXTURE( ValueTest, arrays ) 214f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 215f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III const unsigned int index0 = 0; 216f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 217f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Types 218f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III IsCheck checks; 219f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isArray_ = true; 220f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( emptyArray_, checks ) ); 221f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( array1_, checks ) ); 222f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 223f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::arrayValue, array1_.type()); 224f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 225f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Empty array okay 226f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(emptyArray_.isConvertibleTo(Json::nullValue)); 227f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 228f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Non-empty array not okay 229f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!array1_.isConvertibleTo(Json::nullValue)); 230f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 231f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Always okay 232f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(emptyArray_.isConvertibleTo(Json::arrayValue)); 233f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 234f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Never okay 235f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!emptyArray_.isConvertibleTo(Json::objectValue)); 236f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!emptyArray_.isConvertibleTo(Json::intValue)); 237f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!emptyArray_.isConvertibleTo(Json::uintValue)); 238f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!emptyArray_.isConvertibleTo(Json::realValue)); 239f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!emptyArray_.isConvertibleTo(Json::booleanValue)); 240f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!emptyArray_.isConvertibleTo(Json::stringValue)); 241f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 242f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Access through const reference 243f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III const Json::Value &constArray = array1_; 244f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::Value(1234), constArray[index0]); 245f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::Value(1234), constArray[0]); 246f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 247f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Access through non-const reference 248f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::Value(1234), array1_[index0]); 249f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::Value(1234), array1_[0]); 250f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 251f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III array1_[2] = Json::Value(17); 252f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::Value(), array1_[1]); 253f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::Value(17), array1_[2]); 254f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 255f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 256f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 257f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIJSONTEST_FIXTURE( ValueTest, null ) 258f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 259f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::nullValue, null_.type()); 260f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 261f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III IsCheck checks; 262f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNull_ = true; 263f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( null_, checks ) ); 264f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 265f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(null_.isConvertibleTo(Json::nullValue)); 266f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(null_.isConvertibleTo(Json::intValue)); 267f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(null_.isConvertibleTo(Json::uintValue)); 268f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(null_.isConvertibleTo(Json::realValue)); 269f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(null_.isConvertibleTo(Json::booleanValue)); 270f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(null_.isConvertibleTo(Json::stringValue)); 271f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(null_.isConvertibleTo(Json::arrayValue)); 272f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(null_.isConvertibleTo(Json::objectValue)); 273f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 274f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::Int(0), null_.asInt()); 275f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::LargestInt(0), null_.asLargestInt()); 276f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::UInt(0), null_.asUInt()); 277f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::LargestUInt(0), null_.asLargestUInt()); 278f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0.0, null_.asDouble()); 279f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0.0, null_.asFloat()); 280f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("", null_.asString()); 281f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 282f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 283f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 284f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIJSONTEST_FIXTURE( ValueTest, strings ) 285f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 286f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::stringValue, string1_.type()); 287f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 288f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III IsCheck checks; 289f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isString_ = true; 290f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( emptyString_, checks ) ); 291f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( string_, checks ) ); 292f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( string1_, checks ) ); 293f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 294f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Empty string okay 295f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(emptyString_.isConvertibleTo(Json::nullValue)); 296f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 297f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Non-empty string not okay 298f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!string1_.isConvertibleTo(Json::nullValue)); 299f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 300f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Always okay 301f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(string1_.isConvertibleTo(Json::stringValue)); 302f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 303f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Never okay 304f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!string1_.isConvertibleTo(Json::objectValue)); 305f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!string1_.isConvertibleTo(Json::arrayValue)); 306f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!string1_.isConvertibleTo(Json::intValue)); 307f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!string1_.isConvertibleTo(Json::uintValue)); 308f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!string1_.isConvertibleTo(Json::realValue)); 309f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 310f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("a", string1_.asString()); 311f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("a", string1_.asCString()); 312f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 313f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 314f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 315f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIJSONTEST_FIXTURE( ValueTest, bools ) 316f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 317f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::booleanValue, false_.type()); 318f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 319f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III IsCheck checks; 320f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isBool_ = true; 321f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( false_, checks ) ); 322f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( true_, checks ) ); 323f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 324f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // False okay 325f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(false_.isConvertibleTo(Json::nullValue)); 326f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 327f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // True not okay 328f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!true_.isConvertibleTo(Json::nullValue)); 329f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 330f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Always okay 331f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(true_.isConvertibleTo(Json::intValue)); 332f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(true_.isConvertibleTo(Json::uintValue)); 333f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(true_.isConvertibleTo(Json::realValue)); 334f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(true_.isConvertibleTo(Json::booleanValue)); 335f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(true_.isConvertibleTo(Json::stringValue)); 336f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 337f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Never okay 338f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!true_.isConvertibleTo(Json::arrayValue)); 339f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!true_.isConvertibleTo(Json::objectValue)); 340f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 341f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(true, true_.asBool()); 342f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(1, true_.asInt()); 343f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(1, true_.asLargestInt()); 344f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(1, true_.asUInt()); 345f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(1, true_.asLargestUInt()); 346f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(1.0, true_.asDouble()); 347f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(1.0, true_.asFloat()); 348f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 349f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(false, false_.asBool()); 350f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, false_.asInt()); 351f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, false_.asLargestInt()); 352f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, false_.asUInt()); 353f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, false_.asLargestUInt()); 354f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0.0, false_.asDouble()); 355f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0.0, false_.asFloat()); 356f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 357f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 358f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 359f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIJSONTEST_FIXTURE( ValueTest, integers ) 360f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 361f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III IsCheck checks; 362f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value val; 363f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 364f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Conversions that don't depend on the value. 365f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(Json::Value(17).isConvertibleTo(Json::realValue)); 366f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(Json::Value(17).isConvertibleTo(Json::stringValue)); 367f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(Json::Value(17).isConvertibleTo(Json::booleanValue)); 368f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!Json::Value(17).isConvertibleTo(Json::arrayValue)); 369f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!Json::Value(17).isConvertibleTo(Json::objectValue)); 370f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 371f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(Json::Value(17U).isConvertibleTo(Json::realValue)); 372f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(Json::Value(17U).isConvertibleTo(Json::stringValue)); 373f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(Json::Value(17U).isConvertibleTo(Json::booleanValue)); 374f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!Json::Value(17U).isConvertibleTo(Json::arrayValue)); 375f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!Json::Value(17U).isConvertibleTo(Json::objectValue)); 376f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 377f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(Json::Value(17.0).isConvertibleTo(Json::realValue)); 378f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(Json::Value(17.0).isConvertibleTo(Json::stringValue)); 379f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(Json::Value(17.0).isConvertibleTo(Json::booleanValue)); 380f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!Json::Value(17.0).isConvertibleTo(Json::arrayValue)); 381f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!Json::Value(17.0).isConvertibleTo(Json::objectValue)); 382f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 383f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Default int 384f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(Json::intValue); 385f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 386f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::intValue, val.type()); 387f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 388f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 389f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt_ = true; 390f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt64_ = true; 391f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt_ = true; 392f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt64_ = true; 393f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isIntegral_ = true; 394f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 395f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 396f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 397f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 398f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::nullValue)); 399f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue)); 400f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::uintValue)); 401f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 402f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, val.asInt()); 403f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, val.asLargestInt()); 404f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, val.asUInt()); 405f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, val.asLargestUInt()); 406f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0.0, val.asDouble()); 407f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0.0, val.asFloat()); 408f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(false, val.asBool()); 409f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("0", val.asString()); 410f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 411f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Default uint 412f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(Json::uintValue); 413f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 414f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::uintValue, val.type()); 415f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 416f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 417f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt_ = true; 418f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt64_ = true; 419f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt_ = true; 420f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt64_ = true; 421f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isIntegral_ = true; 422f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 423f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 424f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 425f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 426f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::nullValue)); 427f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue)); 428f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::uintValue)); 429f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 430f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, val.asInt()); 431f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, val.asLargestInt()); 432f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, val.asUInt()); 433f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, val.asLargestUInt()); 434f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0.0, val.asDouble()); 435f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0.0, val.asFloat()); 436f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(false, val.asBool()); 437f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("0", val.asString()); 438f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 439f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Default real 440f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(Json::realValue); 441f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 442f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::realValue, val.type()); 443f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 444f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::nullValue)); 445f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue)); 446f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::uintValue)); 447f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 448f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 449f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt_ = true; 450f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt64_ = true; 451f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt_ = true; 452f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt64_ = true; 453f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isIntegral_ = true; 454f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 455f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 456f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 457f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 458f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, val.asInt()); 459f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, val.asLargestInt()); 460f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, val.asUInt()); 461f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, val.asLargestUInt()); 462f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0.0, val.asDouble()); 463f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0.0, val.asFloat()); 464f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(false, val.asBool()); 465f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("0.0", val.asString()); 466f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 467f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Zero (signed constructor arg) 468f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(0); 469f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 470f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::intValue, val.type()); 471f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 472f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 473f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt_ = true; 474f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt64_ = true; 475f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt_ = true; 476f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt64_ = true; 477f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isIntegral_ = true; 478f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 479f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 480f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 481f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 482f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::nullValue)); 483f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue)); 484f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::uintValue)); 485f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 486f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, val.asInt()); 487f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, val.asLargestInt()); 488f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, val.asUInt()); 489f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, val.asLargestUInt()); 490f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0.0, val.asDouble()); 491f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0.0, val.asFloat()); 492f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(false, val.asBool()); 493f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("0", val.asString()); 494f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 495f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Zero (unsigned constructor arg) 496f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(0u); 497f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 498f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::uintValue, val.type()); 499f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 500f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 501f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt_ = true; 502f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt64_ = true; 503f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt_ = true; 504f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt64_ = true; 505f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isIntegral_ = true; 506f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 507f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 508f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 509f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 510f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::nullValue)); 511f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue)); 512f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::uintValue)); 513f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 514f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, val.asInt()); 515f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, val.asLargestInt()); 516f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, val.asUInt()); 517f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, val.asLargestUInt()); 518f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0.0, val.asDouble()); 519f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0.0, val.asFloat()); 520f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(false, val.asBool()); 521f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("0", val.asString()); 522f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 523f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Zero (floating-point constructor arg) 524f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(0.0); 525f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 526f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::realValue, val.type()); 527f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 528f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 529f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt_ = true; 530f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt64_ = true; 531f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt_ = true; 532f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt64_ = true; 533f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isIntegral_ = true; 534f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 535f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 536f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 537f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 538f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::nullValue)); 539f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue)); 540f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::uintValue)); 541f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 542f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, val.asInt()); 543f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, val.asLargestInt()); 544f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, val.asUInt()); 545f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0, val.asLargestUInt()); 546f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0.0, val.asDouble()); 547f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(0.0, val.asFloat()); 548f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(false, val.asBool()); 549f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("0.0", val.asString()); 550f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 551f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // 2^20 (signed constructor arg) 552f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(1 << 20); 553f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 554f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::intValue, val.type()); 555f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 556f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt_ = true; 557f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt64_ = true; 558f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt_ = true; 559f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt64_ = true; 560f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isIntegral_ = true; 561f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 562f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 563f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 564f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 565f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue)); 566f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue)); 567f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::uintValue)); 568f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 569f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((1 << 20), val.asInt()); 570f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((1 << 20), val.asLargestInt()); 571f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((1 << 20), val.asUInt()); 572f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((1 << 20), val.asLargestUInt()); 573f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((1 << 20), val.asDouble()); 574f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((1 << 20), val.asFloat()); 575f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(true, val.asBool()); 576f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("1048576", val.asString()); 577f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 578f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // 2^20 (unsigned constructor arg) 579f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(Json::UInt(1 << 20)); 580f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 581f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::uintValue, val.type()); 582f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 583f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 584f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt_ = true; 585f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt64_ = true; 586f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt_ = true; 587f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt64_ = true; 588f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isIntegral_ = true; 589f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 590f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 591f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 592f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 593f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue)); 594f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue)); 595f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::uintValue)); 596f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 597f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((1 << 20), val.asInt()); 598f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((1 << 20), val.asLargestInt()); 599f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((1 << 20), val.asUInt()); 600f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((1 << 20), val.asLargestUInt()); 601f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((1 << 20), val.asDouble()); 602f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((1 << 20), val.asFloat()); 603f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(true, val.asBool()); 604f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("1048576", val.asString()); 605f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 606f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // 2^20 (floating-point constructor arg) 607f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value((1 << 20) / 1.0); 608f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 609f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::realValue, val.type()); 610f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 611f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 612f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt_ = true; 613f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt64_ = true; 614f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt_ = true; 615f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt64_ = true; 616f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isIntegral_ = true; 617f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 618f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 619f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 620f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 621f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue)); 622f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue)); 623f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::uintValue)); 624f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 625f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((1 << 20), val.asInt()); 626f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((1 << 20), val.asLargestInt()); 627f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((1 << 20), val.asUInt()); 628f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((1 << 20), val.asLargestUInt()); 629f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((1 << 20), val.asDouble()); 630f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((1 << 20), val.asFloat()); 631f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(true, val.asBool()); 632f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("1048576.0", normalizeFloatingPointStr(val.asString())); 633f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 634f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // -2^20 635f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(-(1 << 20)); 636f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 637f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::intValue, val.type()); 638f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 639f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 640f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt_ = true; 641f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt64_ = true; 642f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isIntegral_ = true; 643f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 644f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 645f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 646f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 647f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue)); 648f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue)); 649f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue)); 650f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 651f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(-(1 << 20), val.asInt()); 652f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(-(1 << 20), val.asLargestInt()); 653f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(-(1 << 20), val.asDouble()); 654f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(-(1 << 20), val.asFloat()); 655f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(true, val.asBool()); 656f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("-1048576", val.asString()); 657f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 658f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // int32 max 659f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(kint32max); 660f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 661f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::intValue, val.type()); 662f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 663f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 664f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt_ = true; 665f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt64_ = true; 666f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt_ = true; 667f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt64_ = true; 668f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isIntegral_ = true; 669f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 670f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 671f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 672f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 673f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue)); 674f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue)); 675f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::uintValue)); 676f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 677f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(kint32max, val.asInt()); 678f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(kint32max, val.asLargestInt()); 679f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(kint32max, val.asUInt()); 680f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(kint32max, val.asLargestUInt()); 681f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(kint32max, val.asDouble()); 682f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(kfint32max, val.asFloat()); 683f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(true, val.asBool()); 684f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("2147483647", val.asString()); 685f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 686f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // int32 min 687f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(kint32min); 688f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 689f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::intValue, val.type()); 690f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 691f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 692f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt_ = true; 693f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt64_ = true; 694f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isIntegral_ = true; 695f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 696f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 697f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 698f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 699f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue)); 700f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue)); 701f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue)); 702f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 703f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(kint32min, val.asInt()); 704f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(kint32min, val.asLargestInt()); 705f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(kint32min, val.asDouble()); 706f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(kint32min, val.asFloat()); 707f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(true, val.asBool()); 708f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("-2147483648", val.asString()); 709f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 710f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // uint32 max 711f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(kuint32max); 712f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 713f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::uintValue, val.type()); 714f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 715f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 716f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt64_ = true; 717f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt_ = true; 718f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt64_ = true; 719f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isIntegral_ = true; 720f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 721f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 722f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 723f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 724f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue)); 725f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue)); 726f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::uintValue)); 727f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 728f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III#ifndef JSON_NO_INT64 729f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(kuint32max, val.asLargestInt()); 730f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III#endif 731f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(kuint32max, val.asUInt()); 732f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(kuint32max, val.asLargestUInt()); 733f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(kuint32max, val.asDouble()); 734f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(kfuint32max, val.asFloat()); 735f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(true, val.asBool()); 736f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("4294967295", val.asString()); 737f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 738f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III#ifdef JSON_NO_INT64 739f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // int64 max 740f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(double(kint64max)); 741f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 742f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::realValue, val.type()); 743f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 744f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 745f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 746f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 747f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 748f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 749f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue)); 750f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue)); 751f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue)); 752f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 753f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(double(kint64max), val.asDouble()); 754f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(float(kint64max), val.asFloat()); 755f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(true, val.asBool()); 756f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("9.22337e+18", val.asString()); 757f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 758f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // int64 min 759f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(double(kint64min)); 760f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 761f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::realValue, val.type()); 762f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 763f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 764f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 765f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 766f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 767f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 768f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue)); 769f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue)); 770f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue)); 771f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 772f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(double(kint64min), val.asDouble()); 773f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(float(kint64min), val.asFloat()); 774f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(true, val.asBool()); 775f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("-9.22337e+18", val.asString()); 776f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 777f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // uint64 max 778f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(double(kuint64max)); 779f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 780f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::realValue, val.type()); 781f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 782f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 783f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 784f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 785f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 786f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 787f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue)); 788f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue)); 789f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue)); 790f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 791f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(double(kuint64max), val.asDouble()); 792f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(float(kuint64max), val.asFloat()); 793f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(true, val.asBool()); 794f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("1.84467e+19", val.asString()); 795f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III#else // ifdef JSON_NO_INT64 796f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // 2^40 (signed constructor arg) 797f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(Json::Int64(1) << 40); 798f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 799f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::intValue, val.type()); 800f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 801f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 802f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt64_ = true; 803f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt64_ = true; 804f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isIntegral_ = true; 805f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 806f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 807f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 808f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 809f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue)); 810f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue)); 811f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue)); 812f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 813f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asInt64()); 814f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asLargestInt()); 815f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asUInt64()); 816f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asLargestUInt()); 817f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asDouble()); 818f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asFloat()); 819f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(true, val.asBool()); 820f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("1099511627776", val.asString()); 821f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 822f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // 2^40 (unsigned constructor arg) 823f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(Json::UInt64(1) << 40); 824f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 825f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::uintValue, val.type()); 826f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 827f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 828f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt64_ = true; 829f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt64_ = true; 830f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isIntegral_ = true; 831f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 832f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 833f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 834f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 835f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue)); 836f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue)); 837f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue)); 838f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 839f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asInt64()); 840f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asLargestInt()); 841f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asUInt64()); 842f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asLargestUInt()); 843f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asDouble()); 844f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asFloat()); 845f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(true, val.asBool()); 846f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("1099511627776", val.asString()); 847f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 848f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // 2^40 (floating-point constructor arg) 849f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value((Json::Int64(1) << 40) / 1.0); 850f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 851f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::realValue, val.type()); 852f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 853f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 854f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt64_ = true; 855f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt64_ = true; 856f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isIntegral_ = true; 857f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 858f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 859f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 860f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 861f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue)); 862f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue)); 863f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue)); 864f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 865f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asInt64()); 866f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asLargestInt()); 867f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asUInt64()); 868f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asLargestUInt()); 869f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asDouble()); 870f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 40), val.asFloat()); 871f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(true, val.asBool()); 872f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("1099511627776.0", normalizeFloatingPointStr(val.asString())); 873f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 874f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // -2^40 875f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(-(Json::Int64(1) << 40)); 876f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 877f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::intValue, val.type()); 878f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 879f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 880f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt64_ = true; 881f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isIntegral_ = true; 882f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 883f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 884f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 885f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 886f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue)); 887f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue)); 888f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue)); 889f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 890f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(-(Json::Int64(1) << 40), val.asInt64()); 891f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(-(Json::Int64(1) << 40), val.asLargestInt()); 892f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(-(Json::Int64(1) << 40), val.asDouble()); 893f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(-(Json::Int64(1) << 40), val.asFloat()); 894f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(true, val.asBool()); 895f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("-1099511627776", val.asString()); 896f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 897f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // int64 max 898f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(Json::Int64(kint64max)); 899f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 900f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::intValue, val.type()); 901f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 902f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 903f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt64_ = true; 904f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt64_ = true; 905f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isIntegral_ = true; 906f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 907f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 908f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 909f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 910f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue)); 911f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue)); 912f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue)); 913f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 914f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(kint64max, val.asInt64()); 915f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(kint64max, val.asLargestInt()); 916f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(kint64max, val.asUInt64()); 917f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(kint64max, val.asLargestUInt()); 918f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(double(kint64max), val.asDouble()); 919f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(float(kint64max), val.asFloat()); 920f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(true, val.asBool()); 921f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("9223372036854775807", val.asString()); 922f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 923f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // int64 max (floating point constructor). Note that kint64max is not exactly 924f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // representable as a double, and will be rounded up to be higher. 925f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(double(kint64max)); 926f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 927f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::realValue, val.type()); 928f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 929f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 930f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt64_ = true; 931f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isIntegral_ = true; 932f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 933f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 934f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 935f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 936f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue)); 937f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue)); 938f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue)); 939f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 940f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::UInt64(1) << 63, val.asUInt64()); 941f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::UInt64(1) << 63, val.asLargestUInt()); 942f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(uint64ToDouble(Json::UInt64(1) << 63), val.asDouble()); 943f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(float(uint64ToDouble(Json::UInt64(1) << 63)), val.asFloat()); 944f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(true, val.asBool()); 945f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("9.223372036854776e+18", normalizeFloatingPointStr(val.asString())); 946f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 947f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // int64 min 948f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(Json::Int64(kint64min)); 949f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 950f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::intValue, val.type()); 951f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 952f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 953f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt64_ = true; 954f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isIntegral_ = true; 955f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 956f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 957f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 958f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 959f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue)); 960f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue)); 961f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue)); 962f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 963f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(kint64min, val.asInt64()); 964f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(kint64min, val.asLargestInt()); 965f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(double(kint64min), val.asDouble()); 966f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(float(kint64min), val.asFloat()); 967f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(true, val.asBool()); 968f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("-9223372036854775808", val.asString()); 969f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 970f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // int64 min (floating point constructor). Note that kint64min *is* exactly 971f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // representable as a double. 972f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(double(kint64min)); 973f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 974f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::realValue, val.type()); 975f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 976f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 977f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isInt64_ = true; 978f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isIntegral_ = true; 979f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 980f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 981f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 982f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 983f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue)); 984f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue)); 985f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue)); 986f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 987f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(kint64min, val.asInt64()); 988f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(kint64min, val.asLargestInt()); 989f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(-9223372036854775808.0, val.asDouble()); 990f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(-9223372036854775808.0, val.asFloat()); 991f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(true, val.asBool()); 992f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("-9.223372036854776e+18", normalizeFloatingPointStr(val.asString())); 993f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 994f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // uint64 max 995f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(Json::UInt64(kuint64max)); 996f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 997f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::uintValue, val.type()); 998f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 999f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 1000f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isUInt64_ = true; 1001f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isIntegral_ = true; 1002f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 1003f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 1004f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 1005f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1006f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue)); 1007f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue)); 1008f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue)); 1009f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1010f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(kuint64max, val.asUInt64()); 1011f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(kuint64max, val.asLargestUInt()); 1012f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(uint64ToDouble(kuint64max), val.asDouble()); 1013f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(float(uint64ToDouble(kuint64max)), val.asFloat()); 1014f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(true, val.asBool()); 1015f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("18446744073709551615", val.asString()); 1016f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1017f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // uint64 max (floating point constructor). Note that kuint64max is not 1018f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // exactly representable as a double, and will be rounded up to be higher. 1019f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(uint64ToDouble(kuint64max)); 1020f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1021f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::realValue, val.type()); 1022f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1023f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 1024f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 1025f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 1026f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 1027f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1028f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue)); 1029f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue)); 1030f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue)); 1031f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1032f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(18446744073709551616.0, val.asDouble()); 1033f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(18446744073709551616.0, val.asFloat()); 1034f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(true, val.asBool()); 1035f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL("1.844674407370955e+19", normalizeFloatingPointStr(val.asString())); 1036f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III#endif 1037f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 1038f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1039f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1040f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIJSONTEST_FIXTURE( ValueTest, nonIntegers ) 1041f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 1042f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III IsCheck checks; 1043f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value val; 1044f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1045f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Small positive number 1046f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(1.5); 1047f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1048f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::realValue, val.type()); 1049f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1050f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 1051f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 1052f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 1053f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 1054f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1055f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue)); 1056f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::uintValue)); 1057f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::realValue)); 1058f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::booleanValue)); 1059f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::stringValue)); 1060f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue)); 1061f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::arrayValue)); 1062f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::objectValue)); 1063f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1064f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(1.5, val.asDouble()); 1065f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(1.5, val.asFloat()); 1066f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(1, val.asInt()); 1067f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(1, val.asLargestInt()); 1068f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(1, val.asUInt()); 1069f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(1, val.asLargestUInt()); 1070f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(true, val.asBool()); 1071f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL("1.50", val.asString()); 1072f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1073f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // Small negative number 1074f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(-1.5); 1075f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1076f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::realValue, val.type()); 1077f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1078f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 1079f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 1080f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 1081f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 1082f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1083f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::intValue)); 1084f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::realValue)); 1085f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::booleanValue)); 1086f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::stringValue)); 1087f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue)); 1088f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue)); 1089f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::arrayValue)); 1090f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::objectValue)); 1091f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1092f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(-1.5, val.asDouble()); 1093f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(-1.5, val.asFloat()); 1094f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(-1, val.asInt()); 1095f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(-1, val.asLargestInt()); 1096f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(true, val.asBool()); 1097f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL("-1.50", val.asString()); 1098f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1099f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // A bit over int32 max 1100f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(kint32max + 0.5); 1101f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1102f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::realValue, val.type()); 1103f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1104f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 1105f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 1106f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 1107f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 1108f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1109f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::uintValue)); 1110f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::realValue)); 1111f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::booleanValue)); 1112f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::stringValue)); 1113f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue)); 1114f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue)); 1115f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::arrayValue)); 1116f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::objectValue)); 1117f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1118f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(2147483647.5, val.asDouble()); 1119f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(float(2147483647.5), val.asFloat()); 1120f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(2147483647U, val.asUInt()); 1121f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III#ifdef JSON_HAS_INT64 1122f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(2147483647L, val.asLargestInt()); 1123f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(2147483647U, val.asLargestUInt()); 1124f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III#endif 1125f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(true, val.asBool()); 1126f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL("2147483647.50", normalizeFloatingPointStr(val.asString())); 1127f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1128f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // A bit under int32 min 1129f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(kint32min - 0.5); 1130f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1131f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::realValue, val.type()); 1132f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1133f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 1134f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 1135f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 1136f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 1137f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1138f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::realValue)); 1139f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::booleanValue)); 1140f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::stringValue)); 1141f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue)); 1142f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue)); 1143f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue)); 1144f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::arrayValue)); 1145f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::objectValue)); 1146f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1147f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(-2147483648.5, val.asDouble()); 1148f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(float(-2147483648.5), val.asFloat()); 1149f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III#ifdef JSON_HAS_INT64 1150f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(-Json::Int64(1)<< 31, val.asLargestInt()); 1151f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III#endif 1152f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(true, val.asBool()); 1153f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL("-2147483648.50", normalizeFloatingPointStr(val.asString())); 1154f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1155f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // A bit over uint32 max 1156f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(kuint32max + 0.5); 1157f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1158f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(Json::realValue, val.type()); 1159f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1160f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks = IsCheck(); 1161f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isDouble_ = true; 1162f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III checks.isNumeric_ = true; 1163f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIs( val, checks ) ); 1164f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1165f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::realValue)); 1166f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::booleanValue)); 1167f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(val.isConvertibleTo(Json::stringValue)); 1168f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::nullValue)); 1169f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::intValue)); 1170f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::uintValue)); 1171f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::arrayValue)); 1172f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT(!val.isConvertibleTo(Json::objectValue)); 1173f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1174f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(4294967295.5, val.asDouble()); 1175f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(float(4294967295.5), val.asFloat()); 1176f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III#ifdef JSON_HAS_INT64 1177f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((Json::Int64(1) << 32)-1, val.asLargestInt()); 1178f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL((Json::UInt64(1) << 32)-Json::UInt64(1), val.asLargestUInt()); 1179f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III#endif 1180f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(true, val.asBool()); 1181f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL("4294967295.50", normalizeFloatingPointStr(val.asString())); 1182f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1183f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III val = Json::Value(1.2345678901234); 1184f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_STRING_EQUAL( "1.23456789012340", normalizeFloatingPointStr(val.asString())); 1185f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 1186f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1187f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1188f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIvoid 1189f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIValueTest::checkConstMemberCount( const Json::Value &value, unsigned int expectedCount ) 1190f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 1191f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III unsigned int count = 0; 1192f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value::const_iterator itEnd = value.end(); 1193f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III for ( Json::Value::const_iterator it = value.begin(); it != itEnd; ++it ) 1194f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III { 1195f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III ++count; 1196f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III } 1197f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL( expectedCount, count ) << "Json::Value::const_iterator"; 1198f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 1199f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1200f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIvoid 1201f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIValueTest::checkMemberCount( Json::Value &value, unsigned int expectedCount ) 1202f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 1203f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(expectedCount, value.size() ); 1204f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1205f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III unsigned int count = 0; 1206f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value::iterator itEnd = value.end(); 1207f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III for ( Json::Value::iterator it = value.begin(); it != itEnd; ++it ) 1208f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III { 1209f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III ++count; 1210f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III } 1211f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL( expectedCount, count ) << "Json::Value::iterator"; 1212f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1213f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkConstMemberCount(value, expectedCount) ); 1214f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 1215f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1216f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1217f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIValueTest::IsCheck::IsCheck() 1218f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III : isObject_( false ) 1219f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III , isArray_( false ) 1220f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III , isBool_( false ) 1221f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III , isString_( false ) 1222f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III , isNull_( false ) 1223f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III , isInt_( false ) 1224f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III , isInt64_( false ) 1225f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III , isUInt_( false ) 1226f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III , isUInt64_( false ) 1227f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III , isIntegral_( false ) 1228f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III , isDouble_( false ) 1229f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III , isNumeric_( false ) 1230f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 1231f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 1232f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1233f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1234f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIvoid 1235f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIValueTest::checkIs( const Json::Value &value, const IsCheck &check ) 1236f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 1237f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(check.isObject_, value.isObject() ); 1238f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(check.isArray_, value.isArray() ); 1239f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(check.isBool_, value.isBool() ); 1240f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(check.isDouble_, value.isDouble() ); 1241f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(check.isInt_, value.isInt() ); 1242f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(check.isUInt_, value.isUInt() ); 1243f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(check.isIntegral_, value.isIntegral() ); 1244f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(check.isNumeric_, value.isNumeric() ); 1245f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(check.isString_, value.isString() ); 1246f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(check.isNull_, value.isNull() ); 1247f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1248f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III#ifdef JSON_HAS_INT64 1249f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(check.isInt64_, value.isInt64() ); 1250f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(check.isUInt64_, value.isUInt64() ); 1251f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III#else 1252f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(false, value.isInt64() ); 1253f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_EQUAL(false, value.isUInt64() ); 1254f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III#endif 1255f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 1256f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1257f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIJSONTEST_FIXTURE( ValueTest, compareNull ) 1258f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 1259f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsEqual( Json::Value(), Json::Value() ) ); 1260f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 1261f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1262f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1263f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIJSONTEST_FIXTURE( ValueTest, compareInt ) 1264f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 1265f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsLess( 0, 10 ) ); 1266f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsEqual( 10, 10 ) ); 1267f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsEqual( -10, -10 ) ); 1268f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsLess( -10, 0 ) ); 1269f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 1270f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1271f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1272f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIJSONTEST_FIXTURE( ValueTest, compareUInt ) 1273f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 1274f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsLess( 0u, 10u ) ); 1275f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsLess( 0u, Json::Value::maxUInt ) ); 1276f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsEqual( 10u, 10u ) ); 1277f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 1278f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1279f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1280f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIJSONTEST_FIXTURE( ValueTest, compareDouble ) 1281f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 1282f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsLess( 0.0, 10.0 ) ); 1283f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsEqual( 10.0, 10.0 ) ); 1284f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsEqual( -10.0, -10.0 ) ); 1285f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsLess( -10.0, 0.0 ) ); 1286f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 1287f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1288f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1289f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIJSONTEST_FIXTURE( ValueTest, compareString ) 1290f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 1291f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsLess( "", " " ) ); 1292f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsLess( "", "a" ) ); 1293f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsLess( "abcd", "zyui" ) ); 1294f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsLess( "abc", "abcd" ) ); 1295f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsEqual( "abcd", "abcd" ) ); 1296f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsEqual( " ", " " ) ); 1297f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsLess( "ABCD", "abcd" ) ); 1298f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsEqual( "ABCD", "ABCD" ) ); 1299f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 1300f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1301f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1302f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIJSONTEST_FIXTURE( ValueTest, compareBoolean ) 1303f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 1304f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsLess( false, true ) ); 1305f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsEqual( false, false ) ); 1306f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsEqual( true, true ) ); 1307f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 1308f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1309f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1310f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIJSONTEST_FIXTURE( ValueTest, compareArray ) 1311f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 1312f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // array compare size then content 1313f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value emptyArray(Json::arrayValue); 1314f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value l1aArray; 1315f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III l1aArray.append( 0 ); 1316f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value l1bArray; 1317f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III l1bArray.append( 10 ); 1318f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value l2aArray; 1319f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III l2aArray.append( 0 ); 1320f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III l2aArray.append( 0 ); 1321f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value l2bArray; 1322f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III l2bArray.append( 0 ); 1323f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III l2bArray.append( 10 ); 1324f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsLess( emptyArray, l1aArray ) ); 1325f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsLess( emptyArray, l2aArray ) ); 1326f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsLess( l1aArray, l2aArray ) ); 1327f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsLess( l2aArray, l2bArray ) ); 1328f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsEqual( emptyArray, Json::Value( emptyArray ) ) ); 1329f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsEqual( l1aArray, Json::Value( l1aArray) ) ); 1330f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsEqual( l2bArray, Json::Value( l2bArray) ) ); 1331f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 1332f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1333f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1334f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIJSONTEST_FIXTURE( ValueTest, compareObject ) 1335f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 1336f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // object compare size then content 1337f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value emptyObject(Json::objectValue); 1338f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value l1aObject; 1339f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III l1aObject["key1"] = 0; 1340f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value l1bObject; 1341f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III l1aObject["key1"] = 10; 1342f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III Json::Value l2aObject; 1343f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III l2aObject["key1"] = 0; 1344f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III l2aObject["key2"] = 0; 1345f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsLess( emptyObject, l1aObject ) ); 1346f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsLess( emptyObject, l2aObject ) ); 1347f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsLess( l1aObject, l2aObject ) ); 1348f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsEqual( emptyObject, Json::Value( emptyObject ) ) ); 1349f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsEqual( l1aObject, Json::Value( l1aObject ) ) ); 1350f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsEqual( l2aObject, Json::Value( l2aObject ) ) ); 1351f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 1352f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1353f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1354f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIJSONTEST_FIXTURE( ValueTest, compareType ) 1355f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 1356f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III // object of different type are ordered according to their type 1357f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsLess( Json::Value(), Json::Value(1) ) ); 1358f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsLess( Json::Value(1), Json::Value(1u) ) ); 1359f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsLess( Json::Value(1u), Json::Value(1.0) ) ); 1360f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsLess( Json::Value(1.0), Json::Value("a") ) ); 1361f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsLess( Json::Value("a"), Json::Value(true) ) ); 1362f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsLess( Json::Value(true), Json::Value(Json::arrayValue) ) ); 1363f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT_PRED( checkIsLess( Json::Value(Json::arrayValue), Json::Value(Json::objectValue) ) ); 1364f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 1365f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1366f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1367f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIvoid 1368f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIValueTest::checkIsLess( const Json::Value &x, const Json::Value &y ) 1369f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 1370f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT( x < y ); 1371f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT( y > x ); 1372f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT( x <= y ); 1373f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT( y >= x ); 1374f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT( !(x == y) ); 1375f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT( !(y == x) ); 1376f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT( !(x >= y) ); 1377f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT( !(y <= x) ); 1378f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT( !(x > y) ); 1379f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT( !(y < x) ); 1380f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT( x.compare( y ) < 0 ); 1381f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT( y.compare( x ) >= 0 ); 1382f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 1383f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1384f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1385f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIvoid 1386f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIValueTest::checkIsEqual( const Json::Value &x, const Json::Value &y ) 1387f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 1388f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT( x == y ); 1389f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT( y == x ); 1390f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT( x <= y ); 1391f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT( y <= x ); 1392f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT( x >= y ); 1393f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT( y >= x ); 1394f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT( !(x < y) ); 1395f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT( !(y < x) ); 1396f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT( !(x > y) ); 1397f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT( !(y > x) ); 1398f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT( x.compare( y ) == 0 ); 1399f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_ASSERT( y.compare( x ) == 0 ); 1400f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 1401f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III 1402f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins IIIint main( int argc, const char *argv[] ) 1403f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III{ 1404f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JsonTest::Runner runner; 1405f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_REGISTER_FIXTURE( runner, ValueTest, checkNormalizeFloatingPointStr ); 1406f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_REGISTER_FIXTURE( runner, ValueTest, memberCount ); 1407f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_REGISTER_FIXTURE( runner, ValueTest, objects ); 1408f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_REGISTER_FIXTURE( runner, ValueTest, arrays ); 1409f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_REGISTER_FIXTURE( runner, ValueTest, null ); 1410f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_REGISTER_FIXTURE( runner, ValueTest, strings ); 1411f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_REGISTER_FIXTURE( runner, ValueTest, bools ); 1412f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_REGISTER_FIXTURE( runner, ValueTest, integers ); 1413f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_REGISTER_FIXTURE( runner, ValueTest, nonIntegers ); 1414f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_REGISTER_FIXTURE( runner, ValueTest, compareNull ); 1415f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_REGISTER_FIXTURE( runner, ValueTest, compareInt ); 1416f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_REGISTER_FIXTURE( runner, ValueTest, compareUInt ); 1417f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_REGISTER_FIXTURE( runner, ValueTest, compareDouble ); 1418f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_REGISTER_FIXTURE( runner, ValueTest, compareString ); 1419f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_REGISTER_FIXTURE( runner, ValueTest, compareBoolean ); 1420f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_REGISTER_FIXTURE( runner, ValueTest, compareArray ); 1421f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_REGISTER_FIXTURE( runner, ValueTest, compareObject ); 1422f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III JSONTEST_REGISTER_FIXTURE( runner, ValueTest, compareType ); 1423f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III return runner.runCommandLine( argc, argv ); 1424f59fb0e83fd0a4b41700d3f5eebdc8d21b173c2eLeon Scroggins III} 1425