@@ -4,15 +4,123 @@ import org.scalatest.funsuite.AnyFunSuite
44
55class GradientSuite extends AnyFunSuite {
66
7- test(" Thing " ) {
7+ test(" Sample color from gradient " ) {
88 val gradient = Gradient (
99 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 )
1112 )
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)
17125 }
18126}
0 commit comments