TestStringView.cpp 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #include <AK/TestSuite.h>
  2. #include <AK/String.h>
  3. TEST_CASE(construct_empty)
  4. {
  5. EXPECT(StringView().is_null());
  6. EXPECT(StringView().is_empty());
  7. EXPECT(!StringView().characters_without_null_termination());
  8. EXPECT_EQ(StringView().length(), 0);
  9. }
  10. TEST_CASE(view_literal)
  11. {
  12. const char* truth = "cats rule dogs drool";
  13. StringView view(truth);
  14. EXPECT_EQ(view.is_null(), false);
  15. EXPECT_EQ(view.characters_without_null_termination(), truth);
  16. EXPECT_EQ(view, view);
  17. EXPECT_EQ(view, truth);
  18. }
  19. TEST_CASE(compare_views)
  20. {
  21. String foo1 = "foo";
  22. String foo2 = "foo";
  23. auto view1 = foo1.view();
  24. auto view2 = foo2.view();
  25. EXPECT_EQ(view1, view2);
  26. EXPECT_EQ(view1, foo1);
  27. EXPECT_EQ(view1, foo2);
  28. EXPECT_EQ(view1, "foo");
  29. }
  30. TEST_CASE(starts_with)
  31. {
  32. String test_string = "ABCDEF";
  33. StringView test_string_view = test_string.view();
  34. EXPECT(test_string_view.starts_with("AB"));
  35. EXPECT(test_string_view.starts_with("ABCDEF"));
  36. EXPECT(!test_string_view.starts_with("DEF"));
  37. }
  38. TEST_CASE(lines)
  39. {
  40. String test_string = "a\nb\r\nc\rd";
  41. StringView test_string_view = test_string.view();
  42. Vector<StringView> test_string_vector = test_string_view.lines();
  43. EXPECT_EQ(test_string_vector.size(), 4);
  44. EXPECT(test_string_vector.at(0) == String("a"));
  45. EXPECT(test_string_vector.at(1) == String("b"));
  46. EXPECT(test_string_vector.at(2) == String("c"));
  47. EXPECT(test_string_vector.at(3) == String("d"));
  48. test_string = "```\nHello there\r\nHello there\n```";
  49. test_string_view = test_string.view();
  50. test_string_vector = test_string_view.lines();
  51. EXPECT_EQ(test_string_vector.size(), 4);
  52. EXPECT(test_string_vector.at(0) == String("```"));
  53. EXPECT(test_string_vector.at(1) == String("Hello there"));
  54. EXPECT(test_string_vector.at(2) == String("Hello there"));
  55. EXPECT(test_string_vector.at(3) == String("```"));
  56. test_string = "\n\n\n";
  57. test_string_view = test_string.view();
  58. test_string_vector = test_string_view.lines();
  59. EXPECT_EQ(test_string_vector.size(), 3);
  60. EXPECT_EQ(test_string_vector.at(0).is_empty(), true);
  61. EXPECT_EQ(test_string_vector.at(1).is_empty(), true);
  62. EXPECT_EQ(test_string_vector.at(2).is_empty(), true);
  63. }
  64. TEST_MAIN(StringView)