-TEST(Conv, TryStringToBool) {
- auto rv1 = folly::tryTo<bool>("xxxx");
- EXPECT_FALSE(rv1.hasValue());
- auto rv2 = folly::tryTo<bool>("false");
- EXPECT_TRUE(rv2.hasValue());
- EXPECT_FALSE(rv2.value());
- auto rv3 = folly::tryTo<bool>("yes");
- EXPECT_TRUE(rv3.hasValue());
- EXPECT_TRUE(rv3.value());
-}
-
-TEST(Conv, TryStringToInt) {
- auto rv1 = folly::tryTo<int>("1000000000000000000000000000000");
- EXPECT_FALSE(rv1.hasValue());
- auto rv2 = folly::tryTo<int>("4711");
- EXPECT_TRUE(rv2.hasValue());
- EXPECT_EQ(rv2.value(), 4711);
-}
-
-TEST(Conv, TryStringToFloat) {
- auto rv1 = folly::tryTo<float>("");
- EXPECT_FALSE(rv1.hasValue());
- auto rv2 = folly::tryTo<float>("3.14");
- EXPECT_TRUE(rv2.hasValue());
- EXPECT_NEAR(rv2.value(), 3.14, 1e-5);
-}
-
-TEST(Conv, TryStringToDouble) {
- auto rv1 = folly::tryTo<double>("");
- EXPECT_FALSE(rv1.hasValue());
- auto rv2 = folly::tryTo<double>("3.14");
- EXPECT_TRUE(rv2.hasValue());
- EXPECT_NEAR(rv2.value(), 3.14, 1e-10);
-}
-
-TEST(Conv, TryIntToInt) {
- auto rv1 = folly::tryTo<uint8_t>(256);
- EXPECT_FALSE(rv1.hasValue());
- auto rv2 = folly::tryTo<uint8_t>(255);
- EXPECT_TRUE(rv2.hasValue());
- EXPECT_EQ(rv2.value(), 255);
-}
-
-TEST(Conv, TryFloatToFloat) {
- auto rv1 = folly::tryTo<float>(1e100);
- EXPECT_FALSE(rv1.hasValue());
- auto rv2 = folly::tryTo<double>(25.5f);
- EXPECT_TRUE(rv2.hasValue());
- EXPECT_NEAR(rv2.value(), 25.5, 1e-10);
-}
-
-TEST(Conv, TryFloatToInt) {
- auto rv1 = folly::tryTo<int>(100.001);
- EXPECT_FALSE(rv1.hasValue());
- auto rv2 = folly::tryTo<int>(100.0);
- EXPECT_TRUE(rv2.hasValue());
- EXPECT_EQ(rv2.value(), 100);
-}
-
-TEST(Conv, TryIntToFloat) {
- auto rv1 = folly::tryTo<float>(std::numeric_limits<uint64_t>::max());
- EXPECT_FALSE(rv1.hasValue());
- auto rv2 = folly::tryTo<float>(1000ULL);
- EXPECT_TRUE(rv2.hasValue());
- EXPECT_EQ(rv2.value(), 1000.0f);
-}
-
-TEST(Conv, TryPtrPairToInt) {
- StringPiece sp1("1000000000000000000000000000000");
- auto rv1 = folly::tryTo<int>(sp1.begin(), sp1.end());
- EXPECT_FALSE(rv1.hasValue());
- StringPiece sp2("4711");
- auto rv2 = folly::tryTo<int>(sp2.begin(), sp2.end());
- EXPECT_TRUE(rv2.hasValue());
- EXPECT_EQ(rv2.value(), 4711);
- StringPiece sp3("-4711");
- auto rv3 = folly::tryTo<int>(sp3.begin(), sp3.end());
- EXPECT_TRUE(rv3.hasValue());
- EXPECT_EQ(rv3.value(), -4711);
- StringPiece sp4("4711");
- auto rv4 = folly::tryTo<uint16_t>(sp4.begin(), sp4.end());
- EXPECT_TRUE(rv4.hasValue());
- EXPECT_EQ(rv4.value(), 4711);
-}
-