cast_test.cxx 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. //
  2. // cast_test.cxx
  3. // string_utils-test
  4. //
  5. // Created by Sam Jaffe on 2/14/21.
  6. // Copyright © 2021 Sam Jaffe. All rights reserved.
  7. //
  8. #include "string_utils/cast.h"
  9. #include "xcode_gtest_helper.h"
  10. using testing::Pair;
  11. using namespace string_utils;
  12. TEST(CastIntegerTest, CastsWithBase10) {
  13. auto [value, success] = cast<int>("10");
  14. EXPECT_TRUE(success);
  15. EXPECT_THAT(value, 10);
  16. }
  17. TEST(CastIntegerTest, FailsOnBadData) {
  18. auto [value, success] = cast<int>("x");
  19. EXPECT_FALSE(success);
  20. EXPECT_THAT(value, 0);
  21. }
  22. TEST(CastIntegerTest, FailsOnBadSuffix) {
  23. auto [value, success] = cast<int>("10x");
  24. EXPECT_FALSE(success);
  25. EXPECT_THAT(value, 10);
  26. }
  27. TEST(CastIntegerTest, FailsOnOutOfBounds) {
  28. auto [_, success] = cast<int>("2147483648");
  29. EXPECT_FALSE(success);
  30. }
  31. TEST(CastBooleanTest, CastsVariousTrueValues) {
  32. EXPECT_THAT(cast<bool>("true"), Pair(true, true));
  33. EXPECT_THAT(cast<bool>("TRUE"), Pair(true, true));
  34. EXPECT_THAT(cast<bool>("YES"), Pair(true, true));
  35. EXPECT_THAT(cast<bool>("1"), Pair(true, true));
  36. }
  37. TEST(CastBooleanTest, CastsVariousFalseValues) {
  38. EXPECT_THAT(cast<bool>("false"), Pair(false, true));
  39. EXPECT_THAT(cast<bool>("FALSE"), Pair(false, true));
  40. EXPECT_THAT(cast<bool>("NO"), Pair(false, true));
  41. EXPECT_THAT(cast<bool>("0"), Pair(false, true));
  42. }
  43. TEST(CastBooleanTest, DoesNotCastAllIntegers) {
  44. auto [_, success] = cast<bool>("2");
  45. EXPECT_FALSE(success);
  46. }