@@ -4,15 +4,123 @@ import org.scalatest.funsuite.AnyFunSuite
4
4
5
5
class GradientSuite extends AnyFunSuite {
6
6
7
- test(" Thing " ) {
7
+ test(" Sample color from gradient " ) {
8
8
val gradient = Gradient (
9
9
0.0f -> Col3f (1.0f , 0.0f , 0.0f ),
10
- 0.5f -> Col3f (0.0f , 1.0f , 0.0f )
10
+ 0.5f -> Col3f (1.0f , 1.0f , 0.0f ),
11
+ 1.0f -> Col3f (0.0f , 1.0f , 0.0f )
11
12
)
12
- println(gradient.sample(0.5f ))
13
- println(gradient.sample(0.25f ))
14
- println(gradient.sample(0.1f ))
15
- println(gradient.sample(0.75f ))
16
- println(gradient.sample(1.0f ))
13
+ assert(gradient.sample(0.25f ) == Col3f (1.0f , 0.5f , 0.0f ))
14
+ assert(gradient.sample(0.5f ) == Col3f (1.0f , 1.0f , 0.0f ))
15
+ assert(gradient.sample(0.375f ) == Col3f (1.0f , 0.75f , 0.0f ))
16
+ assert(gradient.sample(- 0.1f ) == Col3f (1.0f , 0.0f , 0.0f ))
17
+ assert(gradient.sample(0.75f ) == Col3f (0.5f , 1.0f , 0.0f ))
18
+ assert(gradient.sample(0.625f ) == Col3f (0.75f , 1.0f , 0.0f ))
19
+ assert(gradient.sample(1.0f ) == Col3f (0.0f , 1.0f , 0.0f ))
20
+ }
21
+
22
+ test(" Add points to gradient" ) {
23
+ val g1 = Gradient (
24
+ 0.0f -> Col3f (1.0f , 0.0f , 0.0f ),
25
+ 0.5f -> Col3f (1.0f , 1.0f , 0.0f ),
26
+ 1.0f -> Col3f (0.0f , 1.0f , 0.0f )
27
+ )
28
+ val g2 = Gradient (
29
+ 0.0f -> Col3f (1.0f , 0.0f , 0.0f ),
30
+ 0.25f -> Col3f (1.0f , 0.0f , 1.0f ),
31
+ 0.5f -> Col3f (1.0f , 1.0f , 0.0f ),
32
+ 0.75f -> Col3f (0.0f , 0.0f , 1.0f ),
33
+ 1.0f -> Col3f (0.0f , 1.0f , 0.0f )
34
+ )
35
+ val res = g1
36
+ .addPoint(Col3f (0.0f , 0.0f , 1.0f ), 0.75f )
37
+ .addPoint(0.25f , Col3f (1.0f , 0.0f , 1.0f ))
38
+ assert(g2 == res)
39
+ }
40
+
41
+ test(" Add points using the + operator" ) {
42
+ val g1 = Gradient (
43
+ 0.0f -> Col3f (1.0f , 0.0f , 0.0f ),
44
+ 0.5f -> Col3f (1.0f , 1.0f , 0.0f ),
45
+ 1.0f -> Col3f (0.0f , 1.0f , 0.0f )
46
+ )
47
+ val g2 = Gradient (
48
+ 0.0f -> Col3f (1.0f , 0.0f , 0.0f ),
49
+ 0.25f -> Col3f (1.0f , 0.0f , 1.0f ),
50
+ 0.5f -> Col3f (1.0f , 1.0f , 0.0f ),
51
+ 0.75f -> Col3f (0.0f , 0.0f , 1.0f ),
52
+ 1.0f -> Col3f (0.0f , 1.0f , 0.0f )
53
+ )
54
+ val res = g1 + (Col3f (0.0f , 0.0f , 1.0f ), 0.75f ) + (0.25f , Col3f (1.0f , 0.0f , 1.0f ))
55
+ assert(g2 == res)
56
+ }
57
+
58
+ test(" Get the number of points in a gradient" ) {
59
+ val gradient = Gradient (
60
+ 0.0f -> Col3f (1.0f , 0.0f , 0.0f ),
61
+ 1.0f / 6.0f -> Col3f (1.0f , 0.5f , 0.0f ),
62
+ 2.0f / 6.0f -> Col3f (1.0f , 1.0f , 0.0f ),
63
+ 3.0f / 6.0f -> Col3f (0.0f , 1.0f , 0.0f ),
64
+ 4.0f / 6.0f -> Col3f (0.0f , 0.0f , 1.0f ),
65
+ 5.0f / 6.0f -> Col3f (0.5f , 0.0f , 1.0f ),
66
+ 1.0f -> Col3f (1.0f , 1.0f , 1.0f )
67
+ )
68
+ assert(gradient.pointCount == 7 )
69
+ assert(Gradient ().pointCount == 0 )
70
+ }
71
+
72
+ test(" Get color without interpolating" ) {
73
+ val gradient = Gradient (
74
+ 0.0f -> Col3f (1.0f , 0.0f , 0.0f ),
75
+ 0.5f -> Col3f (1.0f , 1.0f , 0.0f ),
76
+ 1.0f -> Col3f (0.0f , 1.0f , 0.0f )
77
+ )
78
+ assert(gradient.getColor(0.0f ) == Col3f (1.0f , 0.0f , 0.0f ))
79
+ assert(gradient.getColor(0.25f ) == Col3f (1.0f , 0.0f , 0.0f ))
80
+ assert(gradient.getColor(0.5f ) == Col3f (1.0f , 1.0f , 0.0f ))
81
+ assert(gradient.getColor(0.75f ) == Col3f (1.0f , 1.0f , 0.0f ))
82
+ assert(gradient.getColor(1.0f ) == Col3f (0.0f , 1.0f , 0.0f ))
83
+ assert(gradient.getColor(1.2f ) == Col3f (0.0f , 1.0f , 0.0f ))
84
+ assert(gradient.getColor(- 0.2f ) == Col3f (1.0f , 0.0f , 0.0f ))
85
+ }
86
+
87
+ test(" Remove points from gradient" ) {
88
+ val g1 = Gradient (
89
+ 0.0f -> Col3f (1.0f , 0.0f , 0.0f ),
90
+ 0.5f -> Col3f (1.0f , 1.0f , 0.0f ),
91
+ 1.0f -> Col3f (0.0f , 1.0f , 0.0f )
92
+ )
93
+ val g2 = Gradient (
94
+ 0.0f -> Col3f (1.0f , 0.0f , 0.0f ),
95
+ 0.25f -> Col3f (1.0f , 0.0f , 1.0f ),
96
+ 0.5f -> Col3f (1.0f , 1.0f , 0.0f ),
97
+ 0.75f -> Col3f (0.0f , 0.0f , 1.0f ),
98
+ 1.0f -> Col3f (0.0f , 1.0f , 0.0f )
99
+ )
100
+ val res = g2.removePoint(0.25f ).removePoint(0.75f )
101
+ assert(g1 == res)
102
+ }
103
+
104
+ test(" Remove points using the - operator" ) {
105
+ val g1 = Gradient (
106
+ 0.0f -> Col3f (1.0f , 0.0f , 0.0f ),
107
+ 0.5f -> Col3f (1.0f , 1.0f , 0.0f ),
108
+ 1.0f -> Col3f (0.0f , 1.0f , 0.0f )
109
+ )
110
+ val g2 = Gradient (
111
+ 0.0f -> Col3f (1.0f , 0.0f , 0.0f ),
112
+ 0.25f -> Col3f (1.0f , 0.0f , 1.0f ),
113
+ 0.5f -> Col3f (1.0f , 1.0f , 0.0f ),
114
+ 0.75f -> Col3f (0.0f , 0.0f , 1.0f ),
115
+ 1.0f -> Col3f (0.0f , 1.0f , 0.0f )
116
+ )
117
+ val res = g2 - 0.25f - 0.75f
118
+ assert(g1 == res)
119
+ }
120
+
121
+ test(" Create gradient between two colors" ) {
122
+ val g1 = Gradient (0.0f -> Col3f (1.0f , 0.0f , 0.0f ), 1.0f -> Col3f (0.0f , 1.0f , 0.0f ))
123
+ val g2 = Gradient .between(Col3f (1.0f , 0.0f , 0.0f ), Col3f (0.0f , 1.0f , 0.0f ))
124
+ assert(g1 == g2)
17
125
}
18
126
}
0 commit comments