TestCSSPixels.cpp 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109
  1. /*
  2. * Copyright (c) 2023, Aliaksandr Kalenik <kalenik.aliaksandr@gmail.com>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <LibTest/TestCase.h>
  7. #include <LibWeb/PixelUnits.h>
  8. namespace Web {
  9. TEST_CASE(addition1)
  10. {
  11. CSSPixels a(10);
  12. CSSPixels b(20);
  13. CSSPixels c = a + b;
  14. EXPECT_EQ(c, CSSPixels(30));
  15. }
  16. TEST_CASE(subtraction1)
  17. {
  18. CSSPixels a(30);
  19. CSSPixels b(10);
  20. CSSPixels c = a - b;
  21. EXPECT_EQ(c, CSSPixels(20));
  22. }
  23. TEST_CASE(division1)
  24. {
  25. CSSPixels a(10);
  26. CSSPixels b(5);
  27. CSSPixels c = a / b;
  28. EXPECT_EQ(c, CSSPixels(2));
  29. }
  30. TEST_CASE(multiplication1)
  31. {
  32. CSSPixels a(3);
  33. CSSPixels b(4);
  34. CSSPixels c = a * b;
  35. EXPECT_EQ(c, CSSPixels(12));
  36. // Temporary overflow
  37. a = CSSPixels::from_raw(0xFFFF'FFFF >> (CSSPixels::fractional_bits + 1));
  38. b = 1;
  39. EXPECT_EQ((a * b), a);
  40. // Rounding
  41. a = CSSPixels::from_raw(0b01'000001);
  42. b = CSSPixels::from_raw(0b01'100000);
  43. EXPECT_EQ(a * b, CSSPixels(a.to_double() * b.to_double()));
  44. EXPECT_EQ(a * -b, CSSPixels(a.to_double() * -b.to_double()));
  45. }
  46. TEST_CASE(addition2)
  47. {
  48. CSSPixels a(3);
  49. a += CSSPixels(2);
  50. EXPECT_EQ(a, CSSPixels(5));
  51. }
  52. TEST_CASE(to_double)
  53. {
  54. CSSPixels a(10);
  55. EXPECT_EQ(a.to_double(), 10);
  56. }
  57. TEST_CASE(to_float)
  58. {
  59. CSSPixels a(11);
  60. EXPECT_EQ(a.to_float(), 11);
  61. }
  62. TEST_CASE(to_int)
  63. {
  64. CSSPixels b(12);
  65. EXPECT_EQ(b.to_int(), 12);
  66. }
  67. TEST_CASE(comparison1)
  68. {
  69. EXPECT_EQ(CSSPixels(1) < CSSPixels(2), true);
  70. }
  71. TEST_CASE(comparison2)
  72. {
  73. EXPECT_EQ(CSSPixels(123) == CSSPixels(123), true);
  74. }
  75. TEST_CASE(saturated_addition)
  76. {
  77. EXPECT_EQ(CSSPixels(INFINITY), CSSPixels(INFINITY) + 1);
  78. }
  79. TEST_CASE(saturated_subtraction)
  80. {
  81. auto value = CSSPixels(INFINITY);
  82. EXPECT_EQ(value - -1, CSSPixels(INFINITY));
  83. }
  84. TEST_CASE(multiplication_uses_i64_for_raw_values)
  85. {
  86. CSSPixels a(1200);
  87. CSSPixels b(647);
  88. CSSPixels c = a * b;
  89. EXPECT_EQ(c, CSSPixels(776400));
  90. }
  91. }