-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathcanvas_test.cc
63 lines (52 loc) · 2.11 KB
/
canvas_test.cc
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
#include "canvas.hh"
#include "color.hh"
#include <gtest/gtest.h>
using namespace wt;
TEST(CanvasTest, Ctor) { canvas c(100, 100); }
TEST(CanvasTest, ExportPpmSimple) {
canvas c1{5, 3};
c1.fill({0, 0, 0});
color col1{1.5, 0, 0};
color col2{0, 0.5, 0};
color col3{-0.5, 0, 1};
// flip Y axis
c1(0, 2 - 2) = col1;
c1(2, 2 - 1) = col2;
c1(4, 2 - 0) = col3;
std::string const image = c1.as_ppm();
std::string_view expected{"P3\n"
"5 3\n"
"255\n"
"255 0 0 0 0 0 0 0 0 0 0 0 0 0 0\n"
" 0 0 0 0 0 0 0 128 0 0 0 0 0 0 0\n"
" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 255\n"};
EXPECT_EQ(image, expected) << image;
}
TEST(CanvasTest, ExportPpmLongLines) {
canvas c1{10, 2};
color col1{1, 0.8, 0.6};
c1.fill(col1);
std::string const image = c1.as_ppm();
std::string expected{"P3\n"
"10 2\n"
"255\n"
"255 204 153 255 204 153 255 204 153 255 204 153 255 204 153\n"
"255 204 153 255 204 153 255 204 153 255 204 153 255 204 153\n"
"255 204 153 255 204 153 255 204 153 255 204 153 255 204 153\n"
"255 204 153 255 204 153 255 204 153 255 204 153 255 204 153\n"};
EXPECT_EQ(image, expected) << image;
}
TEST(CanvasTest, ExportPpmTail) {
canvas c1{3, 6};
color col1{1, 0.8, 0.6};
c1.fill(col1);
const std::string image = c1.as_ppm();
std::string expected{"P3\n"
"3 6\n"
"255\n"
"255 204 153 255 204 153 255 204 153 255 204 153 255 204 153\n"
"255 204 153 255 204 153 255 204 153 255 204 153 255 204 153\n"
"255 204 153 255 204 153 255 204 153 255 204 153 255 204 153\n"
"255 204 153 255 204 153 255 204 153\n"};
EXPECT_EQ(image, expected) << image;
}