forked from rerun-io/rerun
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcolor.cpp
More file actions
78 lines (67 loc) · 1.95 KB
/
color.cpp
File metadata and controls
78 lines (67 loc) · 1.95 KB
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <catch2/catch_test_macros.hpp>
#include <rerun/components/color.hpp>
#include <rerun/datatypes/rgba32.hpp>
#define TEST_TAG "[color][archetypes]"
template <typename Color>
void test() {
SECTION("Default constructor") {
Color c;
// Not initialized! Access is undefined behavior.
// Suppress unused warning.
(void)(c);
}
SECTION("Passing RGBA to constructor") {
Color c(1, 2, 3, 4);
CHECK(c.r() == 1);
CHECK(c.g() == 2);
CHECK(c.b() == 3);
CHECK(c.a() == 4);
}
SECTION("Passing RGB to constructor") {
Color c(1, 2, 3);
CHECK(c.r() == 1);
CHECK(c.g() == 2);
CHECK(c.b() == 3);
CHECK(c.a() == 255);
}
// Ambiguous overload.
// SECTION("Passing RGBA to constructor via initializer list") {
// Color c({1, 2, 3, 4});
// CHECK(c.r() == 1);
// CHECK(c.g() == 2);
// CHECK(c.b() == 3);
// CHECK(c.a() == 4);
// }
// This builds on Clang but is an ambiguous overload on GCC.
// SECTION("Passing RGB to constructor via initializer list") {
// Color c({1, 2, 3});
// CHECK(c.r() == 1);
// CHECK(c.g() == 2);
// CHECK(c.b() == 3);
// CHECK(c.a() == 255);
// }
SECTION("Passing RGBA to constructor via c array") {
uint8_t rgba[4] = {1, 2, 3, 4};
Color c(rgba);
CHECK(c.r() == 1);
CHECK(c.g() == 2);
CHECK(c.b() == 3);
CHECK(c.a() == 4);
}
SECTION("Passing RGB to constructor via c array") {
uint8_t rgb[3] = {1, 2, 3};
Color c(rgb);
CHECK(c.r() == 1);
CHECK(c.g() == 2);
CHECK(c.b() == 3);
CHECK(c.a() == 255);
}
}
TEST_CASE("Construct Color in different ways", TEST_TAG) {
SECTION("datatypes::Rgba32") {
test<rerun::datatypes::Rgba32>();
}
SECTION("components::Color") {
test<rerun::components::Color>();
}
}