選択できるのは25トピックまでです。 トピックは、先頭が英数字で、英数字とダッシュ('-')を使用した35文字以内のものにしてください。

97 行
2.5 KiB

  1. #include <memory>
  2. #include <type_traits>
  3. #include <gtest/gtest.h>
  4. namespace string_helper_tests
  5. {
  6. #include "../src/cpputils/StringHelper.h"
  7. enum class TestEnum
  8. {
  9. Test0,
  10. Test1,
  11. Test2,
  12. Test3
  13. };
  14. DefEnumToStringMap(
  15. TestEnum,
  16. { TestEnum::Test0, "Test0" },
  17. { TestEnum::Test1, "Test1" },
  18. { TestEnum::Test2, "Test2" },
  19. { TestEnum::Test3, "Test3" }
  20. );
  21. DefStringToEnumMap(
  22. TestEnum,
  23. InvariantStringLess,
  24. { "test0", TestEnum::Test0 },
  25. { "test1", TestEnum::Test1 },
  26. { "test2", TestEnum::Test2 },
  27. { "test3", TestEnum::Test3 }
  28. );
  29. struct TestClass1
  30. {
  31. int i;
  32. std::string toString() const
  33. { return std::to_string(i); }
  34. bool fromString(const std::string& s)
  35. { return static_cast<bool>(std::istringstream(s) >> i); }
  36. };
  37. struct TestClass2
  38. {
  39. int i;
  40. void toString(std::ostream& os) const
  41. { os << i; }
  42. static bool fromString(const std::string& s, TestClass2& v)
  43. { return static_cast<bool>(std::istringstream(s) >> v.i); }
  44. };
  45. }
  46. using namespace ::testing;
  47. using namespace ::string_helper_tests;
  48. using namespace ::string_helper_tests::utl;
  49. TEST(StringHelperTests, toString)
  50. {
  51. EXPECT_EQ(std::string("4.5"), utl::toString(4.5));
  52. EXPECT_EQ(std::string("test"), utl::toString("test"));
  53. EXPECT_EQ(std::string("fuu"), utl::toString(std::string("fuu")));
  54. EXPECT_EQ(std::string("Test1(1)"), utl::toString(TestEnum::Test1));
  55. EXPECT_EQ(std::string("5"), utl::toString(TestClass1 { 5 }));
  56. EXPECT_EQ(std::string("6"), utl::toString(TestClass2 { 6 }));
  57. }
  58. TEST(StringHelperTests, fromString)
  59. {
  60. double d;
  61. EXPECT_FALSE(utl::tryFromString("abc", d));
  62. EXPECT_TRUE (utl::tryFromString("4.5", d));
  63. EXPECT_TRUE (d >= 4.5 && d <= 4.5);
  64. int i;
  65. EXPECT_FALSE(utl::tryFromString("abc", i));
  66. EXPECT_TRUE (utl::tryFromString("123", i));
  67. EXPECT_EQ (123, i);
  68. TestEnum e;
  69. EXPECT_FALSE(utl::tryFromString("abc", e));
  70. EXPECT_TRUE (utl::tryFromString("test1", e));
  71. EXPECT_EQ (TestEnum::Test1, e);
  72. TestClass1 t1;
  73. EXPECT_FALSE(utl::tryFromString("abc", t1));
  74. EXPECT_TRUE (utl::tryFromString("11", t1));
  75. EXPECT_EQ (11, t1.i);
  76. TestClass2 t2;
  77. EXPECT_FALSE(utl::tryFromString("abc", t2));
  78. EXPECT_TRUE (utl::tryFromString("12", t2));
  79. EXPECT_EQ (12, t2.i);
  80. }