cast_test.cxx 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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, DoesNotCastBase8) {
  18. auto [value, success] = cast<int>("010");
  19. EXPECT_TRUE(success);
  20. EXPECT_THAT(value, 10);
  21. }
  22. TEST(CastIntegerTest, DoesNotCastHex) {
  23. auto [value, success] = cast<int>("0x10");
  24. EXPECT_FALSE(success);
  25. EXPECT_THAT(value, 0);
  26. }
  27. TEST(CastIntegerTest, FailsOnBadData) {
  28. auto [value, success] = cast<int>("x");
  29. EXPECT_FALSE(success);
  30. EXPECT_THAT(value, 0);
  31. }
  32. TEST(CastIntegerTest, FailsOnBadSuffix) {
  33. auto [value, success] = cast<int>("10x");
  34. EXPECT_FALSE(success);
  35. EXPECT_THAT(value, 10);
  36. }
  37. TEST(CastIntegerTest, FailsOnOutOfBounds) {
  38. auto [_, success] = cast<int>("2147483648");
  39. EXPECT_FALSE(success);
  40. }
  41. TEST(CastBooleanTest, CastsVariousTrueValues) {
  42. EXPECT_THAT(cast<bool>("true"), Pair(true, true));
  43. EXPECT_THAT(cast<bool>("TRUE"), Pair(true, true));
  44. EXPECT_THAT(cast<bool>("YES"), Pair(true, true));
  45. EXPECT_THAT(cast<bool>("1"), Pair(true, true));
  46. }
  47. TEST(CastBooleanTest, CastsVariousFalseValues) {
  48. EXPECT_THAT(cast<bool>("false"), Pair(false, true));
  49. EXPECT_THAT(cast<bool>("FALSE"), Pair(false, true));
  50. EXPECT_THAT(cast<bool>("NO"), Pair(false, true));
  51. EXPECT_THAT(cast<bool>("0"), Pair(false, true));
  52. }
  53. TEST(CastBooleanTest, DoesNotCastAllIntegers) {
  54. auto [_, success] = cast<bool>("2");
  55. EXPECT_FALSE(success);
  56. }