|
@@ -15,6 +15,7 @@
|
|
|
#include <gtest/gtest.h>
|
|
|
#include <boost/foreach.hpp>
|
|
|
#include <boost/assign/std/vector.hpp>
|
|
|
+#include <climits>
|
|
|
|
|
|
#include <cc/data.h>
|
|
|
|
|
@@ -146,6 +147,22 @@ TEST(Element, from_and_to_json) {
|
|
|
EXPECT_EQ("100", Element::fromJSON("1e2")->str());
|
|
|
EXPECT_EQ("100", Element::fromJSON("+1e2")->str());
|
|
|
EXPECT_EQ("-100", Element::fromJSON("-1e2")->str());
|
|
|
+
|
|
|
+ // LONG_MAX, -LONG_MAX, LONG_MIN test
|
|
|
+ std::ostringstream longmax, minus_longmax, longmin;
|
|
|
+ longmax << LONG_MAX;
|
|
|
+ minus_longmax << -LONG_MAX;
|
|
|
+ longmin << LONG_MIN;
|
|
|
+ EXPECT_NO_THROW( {
|
|
|
+ EXPECT_EQ(longmax.str(), Element::fromJSON(longmax.str())->str());
|
|
|
+ });
|
|
|
+ EXPECT_NO_THROW( {
|
|
|
+ EXPECT_EQ(minus_longmax.str(), Element::fromJSON(minus_longmax.str())->str());
|
|
|
+ });
|
|
|
+ EXPECT_NO_THROW( {
|
|
|
+ EXPECT_EQ(longmin.str(), Element::fromJSON(longmin.str())->str());
|
|
|
+ });
|
|
|
+
|
|
|
EXPECT_EQ("0.01", Element::fromJSON("1e-2")->str());
|
|
|
EXPECT_EQ("0.01", Element::fromJSON(".01")->str());
|
|
|
EXPECT_EQ("-0.01", Element::fromJSON("-1e-2")->str());
|
|
@@ -173,6 +190,8 @@ TEST(Element, from_and_to_json) {
|
|
|
EXPECT_THROW(Element::fromJSON("-1.1e12345678901234567890")->str(), JSONError);
|
|
|
EXPECT_THROW(Element::fromJSON("1e12345678901234567890")->str(), JSONError);
|
|
|
EXPECT_THROW(Element::fromJSON("1e50000")->str(), JSONError);
|
|
|
+ // number underflow
|
|
|
+ EXPECT_THROW(Element::fromJSON("1.1e-12345678901234567890")->str(), JSONError);
|
|
|
|
|
|
}
|
|
|
|