// // cast_test.cxx // string_utils-test // // Created by Sam Jaffe on 2/14/21. // Copyright © 2021 Sam Jaffe. All rights reserved. // #include "string_utils/cast.h" #include "xcode_gtest_helper.h" using testing::Pair; using namespace string_utils; TEST(CastIntegerTest, CastsWithBase10) { auto [value, success] = cast("10"); EXPECT_TRUE(success); EXPECT_THAT(value, 10); } TEST(CastIntegerTest, DoesNotCastBase8) { auto [value, success] = cast("010"); EXPECT_TRUE(success); EXPECT_THAT(value, 10); } TEST(CastIntegerTest, DoesNotCastHex) { auto [value, success] = cast("0x10"); EXPECT_FALSE(success); EXPECT_THAT(value, 0); } TEST(CastIntegerTest, FailsOnBadData) { auto [value, success] = cast("x"); EXPECT_FALSE(success); EXPECT_THAT(value, 0); } TEST(CastIntegerTest, FailsOnBadSuffix) { auto [value, success] = cast("10x"); EXPECT_FALSE(success); EXPECT_THAT(value, 10); } TEST(CastIntegerTest, FailsOnOutOfBounds) { auto [_, success] = cast("2147483648"); EXPECT_FALSE(success); } TEST(CastBooleanTest, CastsVariousTrueValues) { EXPECT_THAT(cast("true"), Pair(true, true)); EXPECT_THAT(cast("TRUE"), Pair(true, true)); EXPECT_THAT(cast("YES"), Pair(true, true)); EXPECT_THAT(cast("1"), Pair(true, true)); } TEST(CastBooleanTest, CastsVariousFalseValues) { EXPECT_THAT(cast("false"), Pair(false, true)); EXPECT_THAT(cast("FALSE"), Pair(false, true)); EXPECT_THAT(cast("NO"), Pair(false, true)); EXPECT_THAT(cast("0"), Pair(false, true)); } TEST(CastBooleanTest, DoesNotCastAllIntegers) { auto [_, success] = cast("2"); EXPECT_FALSE(success); }