@@ -18,6 +18,186 @@ import XCTest
18
18
@testable import MaterialColorUtilities
19
19
20
20
final class SchemeRainbowTests : XCTestCase {
21
+ func testKeyColors( ) {
22
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: false , contrastLevel: 0.0 )
23
+
24
+ XCTAssertEqual ( scheme. primaryPaletteKeyColor, 0xff69_6FC4 )
25
+ XCTAssertEqual ( scheme. secondaryPaletteKeyColor, 0xff75_758B )
26
+ XCTAssertEqual ( scheme. tertiaryPaletteKeyColor, 0xff93_6B84 )
27
+ XCTAssertEqual ( scheme. neutralPaletteKeyColor, 0xff77_7777 )
28
+ XCTAssertEqual ( scheme. neutralVariantPaletteKeyColor, 0xff77_7777 )
29
+ }
30
+
31
+ func testLightTheme_minContrast_primary( ) {
32
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: false , contrastLevel: - 1.0 )
33
+ XCTAssertEqual ( scheme. primary, 0xff67_6DC1 )
34
+ }
35
+
36
+ func testLightTheme_standardContrast_primary( ) {
37
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: false , contrastLevel: 0.0 )
38
+ XCTAssertEqual ( scheme. primary, 0xff50_56A9 )
39
+ }
40
+
41
+ func testLightTheme_maxContrast_primary( ) {
42
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: false , contrastLevel: 1.0 )
43
+ XCTAssertEqual ( scheme. primary, 0xff1b_2074 )
44
+ }
45
+
46
+ func testLightTheme_minContrast_primaryContainer( ) {
47
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: false , contrastLevel: - 1.0 )
48
+ XCTAssertEqual ( scheme. primaryContainer, 0xffd5_d6ff )
49
+ }
50
+
51
+ func testLightTheme_standardContrast_primaryContainer( ) {
52
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: false , contrastLevel: 0.0 )
53
+ XCTAssertEqual ( scheme. primaryContainer, 0xffE0_E0FF )
54
+ }
55
+
56
+ func testLightTheme_maxContrast_primaryContainer( ) {
57
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: false , contrastLevel: 1.0 )
58
+ XCTAssertEqual ( scheme. primaryContainer, 0xff3a_4092 )
59
+ }
60
+
61
+ func testLightTheme_minContrast_tertiaryContainer( ) {
62
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: false , contrastLevel: - 1.0 )
63
+ XCTAssertEqual ( scheme. tertiaryContainer, 0xfffb_cbe7 )
64
+ }
65
+
66
+ func testLightTheme_standardContrast_tertiaryContainer( ) {
67
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: false , contrastLevel: 0.0 )
68
+ XCTAssertEqual ( scheme. tertiaryContainer, 0xffff_d8ee )
69
+ }
70
+
71
+ func testLightTheme_maxContrast_tertiaryContainer( ) {
72
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: false , contrastLevel: 1.0 )
73
+ XCTAssertEqual ( scheme. tertiaryContainer, 0xff61_3e55 )
74
+ }
75
+
76
+ func testLightTheme_minContrast_onPrimaryContainer( ) {
77
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: false , contrastLevel: - 1.0 )
78
+ XCTAssertEqual ( scheme. onPrimaryContainer, 0xff6c_72c7 )
79
+ }
80
+
81
+ func testLightTheme_standardContrast_onPrimaryContainer( ) {
82
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: false , contrastLevel: 0.0 )
83
+ XCTAssertEqual ( scheme. onPrimaryContainer, 0xff38_3e8f )
84
+ }
85
+
86
+ func testLightTheme_maxContrast_onPrimaryContainer( ) {
87
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: false , contrastLevel: 1.0 )
88
+ XCTAssertEqual ( scheme. onPrimaryContainer, 0xffff_ffff )
89
+ }
90
+
91
+ func testLightTheme_minContrast_surface( ) {
92
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: false , contrastLevel: - 1.0 )
93
+ XCTAssertEqual ( scheme. surface, 0xfff9_f9f9 )
94
+ }
95
+
96
+ func testLightTheme_standardContrast_surface( ) {
97
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: false , contrastLevel: 0.0 )
98
+ XCTAssertEqual ( scheme. surface, 0xfff9_f9f9 )
99
+ }
100
+
101
+ func testLightTheme_maxContrast_surface( ) {
102
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: false , contrastLevel: 1.0 )
103
+ XCTAssertEqual ( scheme. surface, 0xfff9_f9f9 )
104
+ }
105
+
106
+ func testLightTheme_standardContrast_secondary( ) {
107
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: false , contrastLevel: 0.0 )
108
+ XCTAssertEqual ( scheme. secondary, 0xff5c_5d72 )
109
+ }
110
+
111
+ func testLightTheme_standardContrast_secondaryContainer( ) {
112
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: false , contrastLevel: 0.0 )
113
+ XCTAssertEqual ( scheme. secondaryContainer, 0xffe1_e0f9 )
114
+ }
115
+
116
+ func testDarkTheme_minContrast_primary( ) {
117
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: true , contrastLevel: - 1.0 )
118
+ XCTAssertEqual ( scheme. primary, 0xff83_89e0 )
119
+ }
120
+
121
+ func testDarkTheme_standardContrast_primary( ) {
122
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: true , contrastLevel: 0.0 )
123
+ XCTAssertEqual ( scheme. primary, 0xffbe_c2ff )
124
+ }
125
+
126
+ func testDarkTheme_maxContrast_primary( ) {
127
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: true , contrastLevel: 1.0 )
128
+ XCTAssertEqual ( scheme. primary, 0xfff0_eeff )
129
+ }
130
+
131
+ func testDarkTheme_minContrast_primaryContainer( ) {
132
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: true , contrastLevel: - 1.0 )
133
+ XCTAssertEqual ( scheme. primaryContainer, 0xff2a_3082 )
134
+ }
135
+
136
+ func testDarkTheme_standardContrast_primaryContainer( ) {
137
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: true , contrastLevel: 0.0 )
138
+ XCTAssertEqual ( scheme. primaryContainer, 0xff38_3E8F )
139
+ }
140
+
141
+ func testDarkTheme_maxContrast_primaryContainer( ) {
142
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: true , contrastLevel: 1.0 )
143
+ XCTAssertEqual ( scheme. primaryContainer, 0xffba_bdff )
144
+ }
145
+
146
+ func testDarkTheme_minContrast_onPrimaryContainer( ) {
147
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: true , contrastLevel: - 1.0 )
148
+ XCTAssertEqual ( scheme. onPrimaryContainer, 0xff76_7cd2 )
149
+ }
150
+
151
+ func testDarkTheme_standardContrast_onPrimaryContainer( ) {
152
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: true , contrastLevel: 0.0 )
153
+ XCTAssertEqual ( scheme. onPrimaryContainer, 0xffe0_e0ff )
154
+ }
155
+
156
+ func testDarkTheme_maxContrast_onPrimaryContainer( ) {
157
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: true , contrastLevel: 1.0 )
158
+ XCTAssertEqual ( scheme. onPrimaryContainer, 0xff00_003d )
159
+ }
160
+
161
+ func testDarkTheme_minContrast_onTertiaryContainer( ) {
162
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: true , contrastLevel: - 1.0 )
163
+ XCTAssertEqual ( scheme. onTertiaryContainer, 0xffa1_7891 )
164
+ }
165
+
166
+ func testDarkTheme_standardContrast_onTertiaryContainer( ) {
167
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: true , contrastLevel: 0.0 )
168
+ XCTAssertEqual ( scheme. onTertiaryContainer, 0xffff_d8ee )
169
+ }
170
+
171
+ func testDarkTheme_maxContrast_onTertiaryContainer( ) {
172
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: true , contrastLevel: 1.0 )
173
+ XCTAssertEqual ( scheme. onTertiaryContainer, 0xff1b_0315 )
174
+ }
175
+
176
+ func testDarkTheme_minContrast_surface( ) {
177
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: true , contrastLevel: - 1.0 )
178
+ XCTAssertEqual ( scheme. surface, 0xff13_1313 )
179
+ }
180
+
181
+ func testDarkTheme_standardContrast_surface( ) {
182
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: true , contrastLevel: 0.0 )
183
+ XCTAssertEqual ( scheme. surface, 0xff13_1313 )
184
+ }
185
+
186
+ func testDarkTheme_maxContrast_surface( ) {
187
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: true , contrastLevel: 1.0 )
188
+ XCTAssertEqual ( scheme. surface, 0xff13_1313 )
189
+ }
190
+
191
+ func testDarkTheme_standardContrast_secondary( ) {
192
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: true , contrastLevel: 0.0 )
193
+ XCTAssertEqual ( scheme. secondary, 0xffc5_c4dd )
194
+ }
195
+
196
+ func testDarkTheme_standardContrast_secondaryContainer( ) {
197
+ let scheme = SchemeRainbow ( sourceColorHct: Hct ( 0xff00_00ff ) , isDark: true , contrastLevel: 0.0 )
198
+ XCTAssertEqual ( scheme. secondaryContainer, 0xff44_4559 )
199
+ }
200
+
21
201
func testSchemeRainbowProvider_returnsIdeniticalSchemeWithSameSourceColor( ) {
22
202
let sourceColorHct = Hct ( 0xfffa_2bec )
23
203
let isDark = false
0 commit comments