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());
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);
}