mirror of
https://github.com/open-source-parsers/jsoncpp.git
synced 2025-10-15 23:20:05 +02:00
Gave a more consistent behavior to the Value::isFoo methods. See
NEWS.txt for more details.
This commit is contained in:
@@ -74,13 +74,16 @@ struct ValueTest : JsonTest::TestCase
|
||||
bool isObject_;
|
||||
bool isArray_;
|
||||
bool isBool_;
|
||||
bool isDouble_;
|
||||
bool isInt_;
|
||||
bool isUInt_;
|
||||
bool isIntegral_;
|
||||
bool isNumeric_;
|
||||
bool isString_;
|
||||
bool isNull_;
|
||||
|
||||
bool isInt_;
|
||||
bool isInt64_;
|
||||
bool isUInt_;
|
||||
bool isUInt64_;
|
||||
bool isIntegral_;
|
||||
bool isDouble_;
|
||||
bool isNumeric_;
|
||||
};
|
||||
|
||||
void checkConstMemberCount( const Json::Value &value, unsigned int expectedCount );
|
||||
@@ -120,6 +123,8 @@ JSONTEST_FIXTURE( ValueTest, objects )
|
||||
JSONTEST_ASSERT_PRED( checkIs( emptyObject_, checks ) );
|
||||
JSONTEST_ASSERT_PRED( checkIs( object1_, checks ) );
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::objectValue, emptyObject_.type());
|
||||
|
||||
// Access through const reference
|
||||
const Json::Value &constObject = object1_;
|
||||
|
||||
@@ -145,6 +150,8 @@ JSONTEST_FIXTURE( ValueTest, arrays )
|
||||
JSONTEST_ASSERT_PRED( checkIs( emptyArray_, checks ) );
|
||||
JSONTEST_ASSERT_PRED( checkIs( array1_, checks ) );
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::arrayValue, array1_.type());
|
||||
|
||||
// Access through const reference
|
||||
const Json::Value &constArray = array1_;
|
||||
JSONTEST_ASSERT( Json::Value(1234) == constArray[index0] );
|
||||
@@ -162,16 +169,18 @@ JSONTEST_FIXTURE( ValueTest, arrays )
|
||||
|
||||
JSONTEST_FIXTURE( ValueTest, null )
|
||||
{
|
||||
JSONTEST_ASSERT_EQUAL( Json::nullValue, null_.type());
|
||||
|
||||
IsCheck checks;
|
||||
checks.isNull_ = true;
|
||||
checks.isObject_ = true;
|
||||
checks.isArray_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( null_, checks ) );
|
||||
}
|
||||
|
||||
|
||||
JSONTEST_FIXTURE( ValueTest, strings )
|
||||
{
|
||||
JSONTEST_ASSERT_EQUAL( Json::stringValue, string1_.type());
|
||||
|
||||
IsCheck checks;
|
||||
checks.isString_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( emptyString_, checks ) );
|
||||
@@ -185,10 +194,10 @@ JSONTEST_FIXTURE( ValueTest, strings )
|
||||
|
||||
JSONTEST_FIXTURE( ValueTest, bools )
|
||||
{
|
||||
JSONTEST_ASSERT_EQUAL( Json::booleanValue, false_.type());
|
||||
|
||||
IsCheck checks;
|
||||
checks.isBool_ = true;
|
||||
checks.isIntegral_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( false_, checks ) );
|
||||
JSONTEST_ASSERT_PRED( checkIs( true_, checks ) );
|
||||
|
||||
@@ -209,8 +218,12 @@ JSONTEST_FIXTURE( ValueTest, integers )
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isInt_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
checks.isInt64_ = true;
|
||||
checks.isUInt_ = true;
|
||||
checks.isUInt64_ = true;
|
||||
checks.isIntegral_ = true;
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( val, checks ) );
|
||||
|
||||
JSONTEST_ASSERT( 0 == val.asInt());
|
||||
@@ -226,9 +239,35 @@ JSONTEST_FIXTURE( ValueTest, integers )
|
||||
JSONTEST_ASSERT_EQUAL(Json::uintValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isInt_ = true;
|
||||
checks.isInt64_ = true;
|
||||
checks.isUInt_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
checks.isUInt64_ = true;
|
||||
checks.isIntegral_ = true;
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( val, checks ) );
|
||||
|
||||
JSONTEST_ASSERT( 0 == val.asInt());
|
||||
JSONTEST_ASSERT( 0 == val.asLargestInt());
|
||||
JSONTEST_ASSERT( 0 == val.asUInt());
|
||||
JSONTEST_ASSERT( 0 == val.asLargestUInt());
|
||||
JSONTEST_ASSERT( 0.0 == val.asDouble());
|
||||
JSONTEST_ASSERT( 0.0 == val.asFloat());
|
||||
|
||||
// Default real
|
||||
val = Json::Value(Json::realValue);
|
||||
|
||||
JSONTEST_ASSERT_EQUAL(Json::realValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isInt_ = true;
|
||||
checks.isInt64_ = true;
|
||||
checks.isUInt_ = true;
|
||||
checks.isUInt64_ = true;
|
||||
checks.isIntegral_ = true;
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( val, checks ) );
|
||||
|
||||
JSONTEST_ASSERT( 0 == val.asInt());
|
||||
@@ -241,10 +280,16 @@ JSONTEST_FIXTURE( ValueTest, integers )
|
||||
// Zero (signed constructor arg)
|
||||
val = Json::Value(0);
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::intValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isInt_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
checks.isInt64_ = true;
|
||||
checks.isUInt_ = true;
|
||||
checks.isUInt64_ = true;
|
||||
checks.isIntegral_ = true;
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( val, checks ) );
|
||||
|
||||
JSONTEST_ASSERT( 0 == val.asInt());
|
||||
@@ -257,10 +302,16 @@ JSONTEST_FIXTURE( ValueTest, integers )
|
||||
// Zero (unsigned constructor arg)
|
||||
val = Json::Value(0u);
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::uintValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isInt_ = true;
|
||||
checks.isInt64_ = true;
|
||||
checks.isUInt_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
checks.isUInt64_ = true;
|
||||
checks.isIntegral_ = true;
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( val, checks ) );
|
||||
|
||||
JSONTEST_ASSERT( 0 == val.asInt());
|
||||
@@ -273,7 +324,14 @@ JSONTEST_FIXTURE( ValueTest, integers )
|
||||
// Zero (floating-point constructor arg)
|
||||
val = Json::Value(0.0);
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::realValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isInt_ = true;
|
||||
checks.isInt64_ = true;
|
||||
checks.isUInt_ = true;
|
||||
checks.isUInt64_ = true;
|
||||
checks.isIntegral_ = true;
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( val, checks ) );
|
||||
@@ -288,10 +346,16 @@ JSONTEST_FIXTURE( ValueTest, integers )
|
||||
// 2^20 (signed constructor arg)
|
||||
val = Json::Value(1 << 20);
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::intValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isInt_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
checks.isInt64_ = true;
|
||||
checks.isUInt_ = true;
|
||||
checks.isUInt64_ = true;
|
||||
checks.isIntegral_ = true;
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( val, checks ) );
|
||||
|
||||
JSONTEST_ASSERT( (1 << 20) == val.asInt());
|
||||
@@ -304,10 +368,16 @@ JSONTEST_FIXTURE( ValueTest, integers )
|
||||
// 2^20 (unsigned constructor arg)
|
||||
val = Json::Value(1u << 20);
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::uintValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isInt_ = true;
|
||||
checks.isInt64_ = true;
|
||||
checks.isUInt_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
checks.isUInt64_ = true;
|
||||
checks.isIntegral_ = true;
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( val, checks ) );
|
||||
|
||||
JSONTEST_ASSERT( (1 << 20) == val.asInt());
|
||||
@@ -320,7 +390,14 @@ JSONTEST_FIXTURE( ValueTest, integers )
|
||||
// 2^20 (floating-point constructor arg)
|
||||
val = Json::Value((1 << 20) / 1.0);
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::realValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isInt_ = true;
|
||||
checks.isInt64_ = true;
|
||||
checks.isUInt_ = true;
|
||||
checks.isUInt64_ = true;
|
||||
checks.isIntegral_ = true;
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( val, checks ) );
|
||||
@@ -335,10 +412,14 @@ JSONTEST_FIXTURE( ValueTest, integers )
|
||||
// -2^20
|
||||
val = Json::Value(-(1 << 20));
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::intValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isInt_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
checks.isInt64_ = true;
|
||||
checks.isIntegral_ = true;
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( val, checks ) );
|
||||
|
||||
JSONTEST_ASSERT( -(1 << 20) == val.asInt());
|
||||
@@ -349,10 +430,16 @@ JSONTEST_FIXTURE( ValueTest, integers )
|
||||
// int32 max
|
||||
val = Json::Value(kint32max);
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::intValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isInt_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
checks.isInt64_ = true;
|
||||
checks.isUInt_ = true;
|
||||
checks.isUInt64_ = true;
|
||||
checks.isIntegral_ = true;
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( val, checks ) );
|
||||
|
||||
JSONTEST_ASSERT( kint32max == val.asInt());
|
||||
@@ -365,10 +452,14 @@ JSONTEST_FIXTURE( ValueTest, integers )
|
||||
// int32 min
|
||||
val = Json::Value(kint32min);
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::intValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isInt_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
checks.isInt64_ = true;
|
||||
checks.isIntegral_ = true;
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( val, checks ) );
|
||||
|
||||
JSONTEST_ASSERT( kint32min == val.asInt());
|
||||
@@ -379,10 +470,15 @@ JSONTEST_FIXTURE( ValueTest, integers )
|
||||
// uint32 max
|
||||
val = Json::Value(kuint32max);
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::uintValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isInt64_ = true;
|
||||
checks.isUInt_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
checks.isUInt64_ = true;
|
||||
checks.isIntegral_ = true;
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( val, checks ) );
|
||||
|
||||
#ifndef JSON_NO_INT64
|
||||
@@ -397,6 +493,8 @@ JSONTEST_FIXTURE( ValueTest, integers )
|
||||
// int64 max
|
||||
val = Json::Value(double(kint64max));
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::realValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
@@ -408,6 +506,8 @@ JSONTEST_FIXTURE( ValueTest, integers )
|
||||
// int64 min
|
||||
val = Json::Value(double(kint64min));
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::realValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
@@ -419,6 +519,8 @@ JSONTEST_FIXTURE( ValueTest, integers )
|
||||
// uint64 max
|
||||
val = Json::Value(double(kuint64max));
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::realValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
@@ -430,10 +532,14 @@ JSONTEST_FIXTURE( ValueTest, integers )
|
||||
// 2^40 (signed constructor arg)
|
||||
val = Json::Value(1LL << 40);
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::intValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isInt_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
checks.isInt64_ = true;
|
||||
checks.isUInt64_ = true;
|
||||
checks.isIntegral_ = true;
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( val, checks ) );
|
||||
|
||||
JSONTEST_ASSERT( (1LL << 40) == val.asInt64());
|
||||
@@ -446,10 +552,14 @@ JSONTEST_FIXTURE( ValueTest, integers )
|
||||
// 2^40 (unsigned constructor arg)
|
||||
val = Json::Value(1ULL << 40);
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::uintValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isUInt_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
checks.isInt64_ = true;
|
||||
checks.isUInt64_ = true;
|
||||
checks.isIntegral_ = true;
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( val, checks ) );
|
||||
|
||||
JSONTEST_ASSERT( (1LL << 40) == val.asInt64());
|
||||
@@ -462,7 +572,12 @@ JSONTEST_FIXTURE( ValueTest, integers )
|
||||
// 2^40 (floating-point constructor arg)
|
||||
val = Json::Value((1LL << 40) / 1.0);
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::realValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isInt64_ = true;
|
||||
checks.isUInt64_ = true;
|
||||
checks.isIntegral_ = true;
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( val, checks ) );
|
||||
@@ -477,10 +592,13 @@ JSONTEST_FIXTURE( ValueTest, integers )
|
||||
// -2^40
|
||||
val = Json::Value(-(1LL << 40));
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::intValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isInt_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
checks.isInt64_ = true;
|
||||
checks.isIntegral_ = true;
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( val, checks ) );
|
||||
|
||||
JSONTEST_ASSERT( -(1LL << 40) == val.asInt64());
|
||||
@@ -491,10 +609,14 @@ JSONTEST_FIXTURE( ValueTest, integers )
|
||||
// int64 max
|
||||
val = Json::Value(Json::Int64(kint64max));
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::intValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isInt_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
checks.isInt64_ = true;
|
||||
checks.isUInt64_ = true;
|
||||
checks.isIntegral_ = true;
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( val, checks ) );
|
||||
|
||||
JSONTEST_ASSERT( kint64max == val.asInt64());
|
||||
@@ -504,13 +626,34 @@ JSONTEST_FIXTURE( ValueTest, integers )
|
||||
JSONTEST_ASSERT( double(kint64max) == val.asDouble());
|
||||
JSONTEST_ASSERT( float(kint64max) == val.asFloat());
|
||||
|
||||
// int64 max (floating point constructor). Note that kint64max is not exactly
|
||||
// representable as a double, and will be rounded up to be higher.
|
||||
val = Json::Value(double(kint64max));
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::realValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isUInt64_ = true;
|
||||
checks.isIntegral_ = true;
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( val, checks ) );
|
||||
|
||||
JSONTEST_ASSERT( 9223372036854775808ULL == val.asUInt64());
|
||||
JSONTEST_ASSERT( 9223372036854775808ULL == val.asLargestUInt());
|
||||
JSONTEST_ASSERT( 9223372036854775808ULL == val.asDouble());
|
||||
JSONTEST_ASSERT( 9223372036854775808ULL == val.asFloat());
|
||||
|
||||
// int64 min
|
||||
val = Json::Value(Json::Int64(kint64min));
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::intValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isInt_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
checks.isInt64_ = true;
|
||||
checks.isIntegral_ = true;
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( val, checks ) );
|
||||
|
||||
JSONTEST_ASSERT( kint64min == val.asInt64());
|
||||
@@ -518,19 +661,54 @@ JSONTEST_FIXTURE( ValueTest, integers )
|
||||
JSONTEST_ASSERT( double(kint64min) == val.asDouble());
|
||||
JSONTEST_ASSERT( float(kint64min) == val.asFloat());
|
||||
|
||||
// int64 min (floating point constructor). Note that kint64min *is* exactly
|
||||
// representable as a double.
|
||||
val = Json::Value(double(kint64min));
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::realValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isInt64_ = true;
|
||||
checks.isIntegral_ = true;
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( val, checks ) );
|
||||
|
||||
JSONTEST_ASSERT( -9223372036854775808LL == val.asInt64());
|
||||
JSONTEST_ASSERT( -9223372036854775808LL == val.asLargestInt());
|
||||
JSONTEST_ASSERT( -9223372036854775808.0 == val.asDouble());
|
||||
JSONTEST_ASSERT( -9223372036854775808.0 == val.asFloat());
|
||||
|
||||
// uint64 max
|
||||
val = Json::Value(Json::UInt64(kuint64max));
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::uintValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isUInt_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
checks.isUInt64_ = true;
|
||||
checks.isIntegral_ = true;
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( val, checks ) );
|
||||
|
||||
JSONTEST_ASSERT( kuint64max == val.asUInt64());
|
||||
JSONTEST_ASSERT( kuint64max == val.asLargestUInt());
|
||||
JSONTEST_ASSERT( double(kuint64max) == val.asDouble());
|
||||
JSONTEST_ASSERT( float(kuint64max) == val.asFloat());
|
||||
|
||||
// uint64 max (floating point constructor). Note that kuint64max is not
|
||||
// exactly representable as a double, and will be rounded up to be higher.
|
||||
val = Json::Value(double(kuint64max));
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::realValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( val, checks ) );
|
||||
|
||||
JSONTEST_ASSERT( 18446744073709551616.0 == val.asDouble());
|
||||
JSONTEST_ASSERT( 18446744073709551616.0 == val.asFloat());
|
||||
#endif
|
||||
}
|
||||
|
||||
@@ -540,26 +718,11 @@ JSONTEST_FIXTURE( ValueTest, nonIntegers )
|
||||
IsCheck checks;
|
||||
Json::Value val;
|
||||
|
||||
// Default real
|
||||
val = Json::Value(Json::realValue);
|
||||
|
||||
JSONTEST_ASSERT_EQUAL(Json::realValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
JSONTEST_ASSERT_PRED( checkIs( val, checks ) );
|
||||
|
||||
JSONTEST_ASSERT( 0 == val.asInt());
|
||||
JSONTEST_ASSERT( 0 == val.asLargestInt());
|
||||
JSONTEST_ASSERT( 0 == val.asUInt());
|
||||
JSONTEST_ASSERT( 0 == val.asLargestUInt());
|
||||
JSONTEST_ASSERT( 0.0 == val.asDouble());
|
||||
JSONTEST_ASSERT( 0.0 == val.asFloat());
|
||||
|
||||
// Positive number
|
||||
val = Json::Value(0.25);
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::realValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
@@ -571,6 +734,8 @@ JSONTEST_FIXTURE( ValueTest, nonIntegers )
|
||||
// Negative number
|
||||
val = Json::Value(-0.25);
|
||||
|
||||
JSONTEST_ASSERT_EQUAL( Json::realValue, val.type());
|
||||
|
||||
checks = IsCheck();
|
||||
checks.isDouble_ = true;
|
||||
checks.isNumeric_ = true;
|
||||
@@ -614,13 +779,15 @@ ValueTest::IsCheck::IsCheck()
|
||||
: isObject_( false )
|
||||
, isArray_( false )
|
||||
, isBool_( false )
|
||||
, isDouble_( false )
|
||||
, isInt_( false )
|
||||
, isUInt_( false )
|
||||
, isIntegral_( false )
|
||||
, isNumeric_( false )
|
||||
, isString_( false )
|
||||
, isNull_( false )
|
||||
, isInt_( false )
|
||||
, isInt64_( false )
|
||||
, isUInt_( false )
|
||||
, isUInt64_( false )
|
||||
, isIntegral_( false )
|
||||
, isDouble_( false )
|
||||
, isNumeric_( false )
|
||||
{
|
||||
}
|
||||
|
||||
@@ -633,7 +800,9 @@ ValueTest::checkIs( const Json::Value &value, const IsCheck &check )
|
||||
JSONTEST_ASSERT_EQUAL( check.isBool_, value.isBool() );
|
||||
JSONTEST_ASSERT_EQUAL( check.isDouble_, value.isDouble() );
|
||||
JSONTEST_ASSERT_EQUAL( check.isInt_, value.isInt() );
|
||||
JSONTEST_ASSERT_EQUAL( check.isInt64_, value.isInt64() );
|
||||
JSONTEST_ASSERT_EQUAL( check.isUInt_, value.isUInt() );
|
||||
JSONTEST_ASSERT_EQUAL( check.isUInt64_, value.isUInt64() );
|
||||
JSONTEST_ASSERT_EQUAL( check.isIntegral_, value.isIntegral() );
|
||||
JSONTEST_ASSERT_EQUAL( check.isNumeric_, value.isNumeric() );
|
||||
JSONTEST_ASSERT_EQUAL( check.isString_, value.isString() );
|
||||
|
Reference in New Issue
Block a user