TestNumbers.cpp 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. /*
  2. * Copyright (c) 2023, Jonatan Klemets <jonatan.r.klemets@gmail.com>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <LibTest/TestCase.h>
  7. #include <LibWeb/HTML/Numbers.h>
  8. TEST_CASE(parse_integer)
  9. {
  10. auto optional_value = Web::HTML::parse_integer(""sv);
  11. EXPECT(!optional_value.has_value());
  12. optional_value = Web::HTML::parse_integer("123"sv);
  13. EXPECT(optional_value.has_value());
  14. EXPECT_EQ(optional_value.value(), 123);
  15. optional_value = Web::HTML::parse_integer(" 456"sv);
  16. EXPECT(optional_value.has_value());
  17. EXPECT_EQ(optional_value.value(), 456);
  18. optional_value = Web::HTML::parse_integer("789 "sv);
  19. EXPECT(optional_value.has_value());
  20. EXPECT_EQ(optional_value.value(), 789);
  21. optional_value = Web::HTML::parse_integer(" 22 "sv);
  22. EXPECT(optional_value.has_value());
  23. EXPECT_EQ(optional_value.value(), 22);
  24. optional_value = Web::HTML::parse_integer(" \n\t31\t\t\n\n"sv);
  25. EXPECT(optional_value.has_value());
  26. EXPECT_EQ(optional_value.value(), 31);
  27. optional_value = Web::HTML::parse_integer("765foo"sv);
  28. EXPECT(optional_value.has_value());
  29. EXPECT_EQ(optional_value.value(), 765);
  30. optional_value = Web::HTML::parse_integer("3;"sv);
  31. EXPECT(optional_value.has_value());
  32. EXPECT_EQ(optional_value.value(), 3);
  33. optional_value = Web::HTML::parse_integer("foo765"sv);
  34. EXPECT(!optional_value.has_value());
  35. optional_value = Web::HTML::parse_integer("1"sv);
  36. EXPECT(optional_value.has_value());
  37. EXPECT_EQ(optional_value.value(), 1);
  38. optional_value = Web::HTML::parse_integer("+2"sv);
  39. EXPECT(optional_value.has_value());
  40. EXPECT_EQ(optional_value.value(), 2);
  41. optional_value = Web::HTML::parse_integer("-3"sv);
  42. EXPECT(optional_value.has_value());
  43. EXPECT_EQ(optional_value.value(), -3);
  44. }
  45. TEST_CASE(parse_non_negative_integer)
  46. {
  47. auto optional_value = Web::HTML::parse_non_negative_integer(""sv);
  48. EXPECT(!optional_value.has_value());
  49. optional_value = Web::HTML::parse_non_negative_integer("123"sv);
  50. EXPECT(optional_value.has_value());
  51. EXPECT_EQ(optional_value.value(), 123u);
  52. optional_value = Web::HTML::parse_non_negative_integer(" 456"sv);
  53. EXPECT(optional_value.has_value());
  54. EXPECT_EQ(optional_value.value(), 456u);
  55. optional_value = Web::HTML::parse_non_negative_integer("789 "sv);
  56. EXPECT(optional_value.has_value());
  57. EXPECT_EQ(optional_value.value(), 789u);
  58. optional_value = Web::HTML::parse_non_negative_integer(" 22 "sv);
  59. EXPECT(optional_value.has_value());
  60. EXPECT_EQ(optional_value.value(), 22u);
  61. optional_value = Web::HTML::parse_non_negative_integer(" \n\t31\t\t\n\n"sv);
  62. EXPECT(optional_value.has_value());
  63. EXPECT_EQ(optional_value.value(), 31u);
  64. optional_value = Web::HTML::parse_non_negative_integer("765foo"sv);
  65. EXPECT(optional_value.has_value());
  66. EXPECT_EQ(optional_value.value(), 765u);
  67. optional_value = Web::HTML::parse_non_negative_integer("3;"sv);
  68. EXPECT(optional_value.has_value());
  69. EXPECT_EQ(optional_value.value(), 3u);
  70. optional_value = Web::HTML::parse_non_negative_integer("foo765"sv);
  71. EXPECT(!optional_value.has_value());
  72. optional_value = Web::HTML::parse_non_negative_integer("1"sv);
  73. EXPECT(optional_value.has_value());
  74. EXPECT_EQ(optional_value.value(), 1u);
  75. optional_value = Web::HTML::parse_non_negative_integer("+2"sv);
  76. EXPECT(optional_value.has_value());
  77. EXPECT_EQ(optional_value.value(), 2u);
  78. optional_value = Web::HTML::parse_non_negative_integer("-3"sv);
  79. EXPECT(!optional_value.has_value());
  80. }