1212// See the License for the specific language governing permissions and
1313// limitations under the License.
1414
15- import 'package:material_color_utilities/scheme/scheme.dart' ;
15+ import 'package:material_color_utilities/hct/hct.dart' ;
16+ import 'package:material_color_utilities/scheme/scheme_content.dart' ;
17+ import 'package:material_color_utilities/scheme/scheme_tonal_spot.dart' ;
1618import 'package:test/test.dart' ;
1719
1820import './utils/color_matcher.dart' ;
1921
2022void main () {
2123 test ('blue light scheme' , () {
22- final scheme = Scheme .light (0xff0000ff );
23- expect (scheme.primary, isColor (0xff343dff ));
24+ final scheme = SchemeTonalSpot (
25+ sourceColorHct: Hct .fromInt (0xff0000ff ),
26+ isDark: false ,
27+ contrastLevel: 0.0 ,
28+ );
29+ expect (scheme.primary, isColor (0xff555992 ));
2430 });
2531
2632 test ('blue dark scheme' , () {
27- final scheme = Scheme .dark (0xff0000ff );
33+ final scheme = SchemeTonalSpot (
34+ sourceColorHct: Hct .fromInt (0xff0000ff ),
35+ isDark: true ,
36+ contrastLevel: 0.0 ,
37+ );
2838 expect (scheme.primary, isColor (0xffbec2ff ));
2939 });
3040
3141 test ('3rd party light scheme' , () async {
32- final scheme = Scheme .light (0xff6750a4 );
33- expect (scheme.primary, isColor (0xff6750a4 ));
42+ final scheme = SchemeTonalSpot (
43+ sourceColorHct: Hct .fromInt (0xff6750a4 ),
44+ isDark: false ,
45+ contrastLevel: 0.0 ,
46+ );
47+
48+ expect (scheme.primary, isColor (0xff65558f ));
3449 expect (scheme.secondary, isColor (0xff625b71 ));
3550 expect (scheme.tertiary, isColor (0xff7e5260 ));
36- expect (scheme.surface, isColor (0xfffffbff ));
37- expect (scheme.onSurface, isColor (0xff1c1b1e ));
51+ expect (scheme.surface, isColor (0xfffdf7ff ));
52+ expect (scheme.onSurface, isColor (0xff1d1b20 ));
3853 });
3954
4055 test ('3rd party dark scheme' , () async {
41- final scheme = Scheme .dark (0xff6750a4 );
42- expect (scheme.primary, isColor (0xffcfbcff ));
56+ final scheme = SchemeTonalSpot (
57+ sourceColorHct: Hct .fromInt (0xff6750a4 ),
58+ isDark: true ,
59+ contrastLevel: 0.0 ,
60+ );
61+ expect (scheme.primary, isColor (0xffcfbdfe ));
4362 expect (scheme.secondary, isColor (0xffcbc2db ));
4463 expect (scheme.tertiary, isColor (0xffefb8c8 ));
45- expect (scheme.surface, isColor (0xff1c1b1e ));
46- expect (scheme.onSurface, isColor (0xffe6e1e6 ));
64+ expect (scheme.surface, isColor (0xff141218 ));
65+ expect (scheme.onSurface, isColor (0xffe6e0e9 ));
4766 });
4867
4968 test ('light scheme from high chroma color' , () async {
50- final scheme = Scheme .light (0xfffa2bec );
51- expect (scheme.primary, isColor (0xffab00a2 ));
69+ final scheme = SchemeTonalSpot (
70+ sourceColorHct: Hct .fromInt (0xfffa2bec ),
71+ isDark: false ,
72+ contrastLevel: 0.0 ,
73+ );
74+ expect (scheme.primary, isColor (0xff814c77 ));
5275 expect (scheme.onPrimary, isColor (0xffffffff ));
5376 expect (scheme.primaryContainer, isColor (0xffffd7f3 ));
54- expect (scheme.onPrimaryContainer, isColor (0xff390035 ));
77+ expect (scheme.onPrimaryContainer, isColor (0xff340830 ));
5578 expect (scheme.secondary, isColor (0xff6e5868 ));
5679 expect (scheme.onSecondary, isColor (0xffffffff ));
5780 expect (scheme.secondaryContainer, isColor (0xfff8daee ));
@@ -64,26 +87,30 @@ void main() {
6487 expect (scheme.onError, isColor (0xffffffff ));
6588 expect (scheme.errorContainer, isColor (0xffffdad6 ));
6689 expect (scheme.onErrorContainer, isColor (0xff410002 ));
67- expect (scheme.background, isColor (0xfffffbff ));
68- expect (scheme.onBackground, isColor (0xff1f1a1d ));
69- expect (scheme.surface, isColor (0xfffffbff ));
70- expect (scheme.onSurface, isColor (0xff1f1a1d ));
90+ expect (scheme.background, isColor (0xfffff7f9 ));
91+ expect (scheme.onBackground, isColor (0xff201a1e ));
92+ expect (scheme.surface, isColor (0xfffff7f9 ));
93+ expect (scheme.onSurface, isColor (0xff201a1e ));
7194 expect (scheme.surfaceVariant, isColor (0xffeedee7 ));
7295 expect (scheme.onSurfaceVariant, isColor (0xff4e444b ));
7396 expect (scheme.outline, isColor (0xff80747b ));
7497 expect (scheme.outlineVariant, isColor (0xffd2c2cb ));
7598 expect (scheme.shadow, isColor (0xff000000 ));
7699 expect (scheme.scrim, isColor (0xff000000 ));
77- expect (scheme.inverseSurface, isColor (0xff342f32 ));
78- expect (scheme.inverseOnSurface, isColor (0xfff8eef2 ));
79- expect (scheme.inversePrimary, isColor (0xffffabee ));
100+ expect (scheme.inverseSurface, isColor (0xff362e33 ));
101+ expect (scheme.inverseOnSurface, isColor (0xfffaedf3 ));
102+ expect (scheme.inversePrimary, isColor (0xfff3b2e4 ));
80103 });
81104
82105 test ('dark scheme from high chroma color' , () async {
83- final scheme = Scheme .dark (0xfffa2bec );
84- expect (scheme.primary, isColor (0xffffabee ));
85- expect (scheme.onPrimary, isColor (0xff5c0057 ));
86- expect (scheme.primaryContainer, isColor (0xff83007b ));
106+ final scheme = SchemeTonalSpot (
107+ sourceColorHct: Hct .fromInt (0xfffa2bec ),
108+ isDark: true ,
109+ contrastLevel: 0.0 ,
110+ );
111+ expect (scheme.primary, isColor (0xfff3b2e4 ));
112+ expect (scheme.onPrimary, isColor (0xff4d1f47 ));
113+ expect (scheme.primaryContainer, isColor (0xff67355e ));
87114 expect (scheme.onPrimaryContainer, isColor (0xffffd7f3 ));
88115 expect (scheme.secondary, isColor (0xffdbbed1 ));
89116 expect (scheme.onSecondary, isColor (0xff3e2a39 ));
@@ -96,85 +123,95 @@ void main() {
96123 expect (scheme.error, isColor (0xffffb4ab ));
97124 expect (scheme.onError, isColor (0xff690005 ));
98125 expect (scheme.errorContainer, isColor (0xff93000a ));
99- expect (scheme.onErrorContainer, isColor (0xffffb4ab ));
100- expect (scheme.background, isColor (0xff1f1a1d ));
101- expect (scheme.onBackground, isColor (0xffeae0e4 ));
102- expect (scheme.surface, isColor (0xff1f1a1d ));
103- expect (scheme.onSurface, isColor (0xffeae0e4 ));
126+ expect (scheme.onErrorContainer, isColor (0xffffdad6 ));
127+ expect (scheme.background, isColor (0xff181216 ));
128+ expect (scheme.onBackground, isColor (0xffecdfe5 ));
129+ expect (scheme.surface, isColor (0xff181216 ));
130+ expect (scheme.onSurface, isColor (0xffecdfe5 ));
104131 expect (scheme.surfaceVariant, isColor (0xff4e444b ));
105132 expect (scheme.onSurfaceVariant, isColor (0xffd2c2cb ));
106133 expect (scheme.outline, isColor (0xff9a8d95 ));
107134 expect (scheme.outlineVariant, isColor (0xff4e444b ));
108135 expect (scheme.shadow, isColor (0xff000000 ));
109136 expect (scheme.scrim, isColor (0xff000000 ));
110- expect (scheme.inverseSurface, isColor (0xffeae0e4 ));
111- expect (scheme.inverseOnSurface, isColor (0xff342f32 ));
112- expect (scheme.inversePrimary, isColor (0xffab00a2 ));
137+ expect (scheme.inverseSurface, isColor (0xffecdfe5 ));
138+ expect (scheme.inverseOnSurface, isColor (0xff362e33 ));
139+ expect (scheme.inversePrimary, isColor (0xff814c77 ));
113140 });
114141
115142 test ('light content scheme from high chroma color' , () async {
116- final scheme = Scheme .lightContent (0xfffa2bec );
117- expect (scheme.primary, isColor (0xffab00a2 ));
143+ final scheme = SchemeContent (
144+ sourceColorHct: Hct .fromInt (0xfffa2bec ),
145+ isDark: false ,
146+ contrastLevel: 0.0 ,
147+ );
148+
149+ expect (scheme.primary, isColor (0xff92008b ));
118150 expect (scheme.onPrimary, isColor (0xffffffff ));
119- expect (scheme.primaryContainer, isColor (0xffffd7f3 ));
120- expect (scheme.onPrimaryContainer, isColor (0xff390035 ));
121- expect (scheme.secondary, isColor (0xff7f4e75 ));
151+ expect (scheme.primaryContainer, isColor (0xffd100c6 ));
152+ expect (scheme.onPrimaryContainer, isColor (0xffffffff ));
153+ expect (scheme.secondary, isColor (0xff9e2d93 ));
122154 expect (scheme.onSecondary, isColor (0xffffffff ));
123- expect (scheme.secondaryContainer, isColor (0xffffd7f3 ));
124- expect (scheme.onSecondaryContainer, isColor (0xff330b2f ));
125- expect (scheme.tertiary, isColor (0xff9c4323 ));
155+ expect (scheme.secondaryContainer, isColor (0xffff83ec ));
156+ expect (scheme.onSecondaryContainer, isColor (0xff4a0045 ));
157+ expect (scheme.tertiary, isColor (0xffa30326 ));
126158 expect (scheme.onTertiary, isColor (0xffffffff ));
127- expect (scheme.tertiaryContainer, isColor (0xffffdbd0 ));
128- expect (scheme.onTertiaryContainer, isColor (0xff390c00 ));
159+ expect (scheme.tertiaryContainer, isColor (0xffd83546 ));
160+ expect (scheme.onTertiaryContainer, isColor (0xffffffff ));
129161 expect (scheme.error, isColor (0xffba1a1a ));
130162 expect (scheme.onError, isColor (0xffffffff ));
131163 expect (scheme.errorContainer, isColor (0xffffdad6 ));
132164 expect (scheme.onErrorContainer, isColor (0xff410002 ));
133- expect (scheme.background, isColor (0xfffffbff ));
134- expect (scheme.onBackground, isColor (0xff1f1a1d ));
135- expect (scheme.surface, isColor (0xfffffbff ));
136- expect (scheme.onSurface, isColor (0xff1f1a1d ));
137- expect (scheme.surfaceVariant, isColor (0xffeedee7 ));
138- expect (scheme.onSurfaceVariant, isColor (0xff4e444b ));
139- expect (scheme.outline, isColor (0xff80747b ));
140- expect (scheme.outlineVariant, isColor (0xffd2c2cb ));
165+ expect (scheme.background, isColor (0xfffff7f9 ));
166+ expect (scheme.onBackground, isColor (0xff251722 ));
167+ expect (scheme.surface, isColor (0xfffff7f9 ));
168+ expect (scheme.onSurface, isColor (0xff251722 ));
169+ expect (scheme.surfaceVariant, isColor (0xfff9daee ));
170+ expect (scheme.onSurfaceVariant, isColor (0xff564050 ));
171+ expect (scheme.outline, isColor (0xff897081 ));
172+ expect (scheme.outlineVariant, isColor (0xffdcbed2 ));
141173 expect (scheme.shadow, isColor (0xff000000 ));
142174 expect (scheme.scrim, isColor (0xff000000 ));
143- expect (scheme.inverseSurface, isColor (0xff342f32 ));
144- expect (scheme.inverseOnSurface, isColor (0xfff8eef2 ));
175+ expect (scheme.inverseSurface, isColor (0xff3b2c37 ));
176+ expect (scheme.inverseOnSurface, isColor (0xffffebf6 ));
145177 expect (scheme.inversePrimary, isColor (0xffffabee ));
146178 });
147179
148180 test ('dark content scheme from high chroma color' , () async {
149- final scheme = Scheme .darkContent (0xfffa2bec );
181+ final scheme = SchemeContent (
182+ sourceColorHct: Hct .fromInt (0xfffa2bec ),
183+ isDark: true ,
184+ contrastLevel: 0.0 ,
185+ );
186+
150187 expect (scheme.primary, isColor (0xffffabee ));
151188 expect (scheme.onPrimary, isColor (0xff5c0057 ));
152- expect (scheme.primaryContainer, isColor (0xff83007b ));
153- expect (scheme.onPrimaryContainer, isColor (0xffffd7f3 ));
154- expect (scheme.secondary, isColor (0xfff0b4e1 ));
155- expect (scheme.onSecondary, isColor (0xff4b2145 ));
156- expect (scheme.secondaryContainer, isColor (0xff64375c ));
157- expect (scheme.onSecondaryContainer, isColor (0xffffd7f3 ));
158- expect (scheme.tertiary, isColor (0xffffb59c ));
159- expect (scheme.onTertiary, isColor (0xff5c1900 ));
160- expect (scheme.tertiaryContainer, isColor (0xff7d2c0d ));
161- expect (scheme.onTertiaryContainer, isColor (0xffffdbd0 ));
189+ expect (scheme.primaryContainer, isColor (0xfffa2bec ));
190+ expect (scheme.onPrimaryContainer, isColor (0xff000000 ));
191+ expect (scheme.secondary, isColor (0xffffabee ));
192+ expect (scheme.onSecondary, isColor (0xff5c0057 ));
193+ expect (scheme.secondaryContainer, isColor (0xff840f7c ));
194+ expect (scheme.onSecondaryContainer, isColor (0xffffd9f3 ));
195+ expect (scheme.tertiary, isColor (0xffffb3b2 ));
196+ expect (scheme.onTertiary, isColor (0xff680014 ));
197+ expect (scheme.tertiaryContainer, isColor (0xffff525f ));
198+ expect (scheme.onTertiaryContainer, isColor (0xff000000 ));
162199 expect (scheme.error, isColor (0xffffb4ab ));
163200 expect (scheme.onError, isColor (0xff690005 ));
164201 expect (scheme.errorContainer, isColor (0xff93000a ));
165- expect (scheme.onErrorContainer, isColor (0xffffb4ab ));
166- expect (scheme.background, isColor (0xff1f1a1d ));
167- expect (scheme.onBackground, isColor (0xffeae0e4 ));
168- expect (scheme.surface, isColor (0xff1f1a1d ));
169- expect (scheme.onSurface, isColor (0xffeae0e4 ));
170- expect (scheme.surfaceVariant, isColor (0xff4e444b ));
171- expect (scheme.onSurfaceVariant, isColor (0xffd2c2cb ));
172- expect (scheme.outline, isColor (0xff9a8d95 ));
173- expect (scheme.outlineVariant, isColor (0xff4e444b ));
202+ expect (scheme.onErrorContainer, isColor (0xffffdad6 ));
203+ expect (scheme.background, isColor (0xff1c0f19 ));
204+ expect (scheme.onBackground, isColor (0xfff4dceb ));
205+ expect (scheme.surface, isColor (0xff1c0f19 ));
206+ expect (scheme.onSurface, isColor (0xfff4dceb ));
207+ expect (scheme.surfaceVariant, isColor (0xff564050 ));
208+ expect (scheme.onSurfaceVariant, isColor (0xffdcbed2 ));
209+ expect (scheme.outline, isColor (0xffa4899b ));
210+ expect (scheme.outlineVariant, isColor (0xff564050 ));
174211 expect (scheme.shadow, isColor (0xff000000 ));
175212 expect (scheme.scrim, isColor (0xff000000 ));
176- expect (scheme.inverseSurface, isColor (0xffeae0e4 ));
177- expect (scheme.inverseOnSurface, isColor (0xff342f32 ));
213+ expect (scheme.inverseSurface, isColor (0xfff4dceb ));
214+ expect (scheme.inverseOnSurface, isColor (0xff3b2c37 ));
178215 expect (scheme.inversePrimary, isColor (0xffab00a2 ));
179216 });
180217}
0 commit comments