aboutsummaryrefslogtreecommitdiff
path: root/test/platform/GraphicsBaseTest.cpp
blob: 9e6007cf9f731b3d3f80911b7e4a0341d669869d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include "cru/platform/GraphicsBase.h"

#include <catch2/catch_test_macros.hpp>

using cru::platform::Rect;

TEST_CASE("Rect IsIntersect", "[graphics][rect]") {
  auto test = [](const Rect& left, const Rect& right, bool intersect) {
    REQUIRE(left.IsIntersect(right) == intersect);
    REQUIRE(right.IsIntersect(left) == intersect);
  };

  test({}, {}, false);
  test({0.f, 0.f, 1.f, 1.f}, {}, false);

  test({0.f, 0.f, 1.f, 1.f}, {-2.f, 0.f, 1.f, 1.f}, false);
  test({0.f, 0.f, 1.f, 1.f}, {2.f, 0.25f, 1.f, 0.5f}, false);
  test({0.f, 0.f, 1.f, 1.f}, {0.f, -2.f, 0.5f, 1.f}, false);
  test({0.f, 0.f, 1.f, 1.f}, {0.f, 2.f, 0.5f, 1.f}, false);

  test({0.f, 0.f, 1.f, 1.f}, {-1.f, -1.f, 3.f, 0.5f}, false);
  test({0.f, 0.f, 1.f, 1.f}, {-1.f, -1.f, 3.f, 0.5f}, false);
  test({0.f, 0.f, 1.f, 1.f}, {-1.f, -1.f, 0.5f, 3.f}, false);
  test({0.f, 0.f, 1.f, 1.f}, {1.5f, -1.f, 0.5f, 3.f}, false);

  test({0.f, 0.f, 1.f, 1.f}, {-0.5f, 0.25f, 1.f, 0.5f}, true);
  test({0.f, 0.f, 1.f, 1.f}, {0.5f, 0.25f, 1.f, 0.5f}, true);
  test({0.f, 0.f, 1.f, 1.f}, {0.25f, -0.5f, 0.5f, 1.f}, true);
  test({0.f, 0.f, 1.f, 1.f}, {0.25f, 0.5f, 0.5f, 1.f}, true);

  test({0.f, 0.f, 1.f, 1.f}, {-0.5f, -0.5f, 1.f, 1.f}, true);
  test({0.f, 0.f, 1.f, 1.f}, {0.5f, -0.5f, 1.f, 1.f}, true);
  test({0.f, 0.f, 1.f, 1.f}, {0.5f, 0.5f, 1.f, 1.f}, true);
  test({0.f, 0.f, 1.f, 1.f}, {-0.5f, 0.5f, 1.f, 1.f}, true);
}

TEST_CASE("Rect Union", "[graphics][rect]") {
  auto test = [](const Rect& left, const Rect& right, const Rect& result) {
    REQUIRE(left.Union(right) == result);
    REQUIRE(right.Union(left) == result);
  };

  test({}, {0.f, 0.f, 1.f, 1.f}, {0.f, 0.f, 1.f, 1.f});
  test({0.f, 0.f, 1.f, 1.f}, {2.f, 2.f, 1.f, 1.f}, {0.f, 0.f, 3.f, 3.f});
  test({2.f, 0.f, 1.f, 1.f}, {0.f, 2.f, 1.f, 1.f}, {0.f, 0.f, 3.f, 3.f});
  test({0.f, 0.f, 1.f, 1.f}, {0.5f, 0.5f, 1.f, 1.f}, {0.f, 0.f, 1.5f, 1.5f});
  test({0.5f, 0.f, 1.f, 1.f}, {0.f, 0.5f, 1.f, 1.f}, {0.f, 0.f, 1.5f, 1.5f});
}