aboutsummaryrefslogtreecommitdiffstats
path: root/test/_gradients.scss
diff options
context:
space:
mode:
Diffstat (limited to 'test/_gradients.scss')
-rw-r--r--test/_gradients.scss264
1 files changed, 264 insertions, 0 deletions
diff --git a/test/_gradients.scss b/test/_gradients.scss
new file mode 100644
index 0000000..c1145aa
--- /dev/null
+++ b/test/_gradients.scss
@@ -0,0 +1,264 @@
1// sass-lint:disable no-color-literals zero-unit
2
3@include describe('Gradients') {
4 @include it('iro-easing-gradient') {
5 $gradient1: iro-easing-gradient(
6 linear,
7 to right,
8 #000,
9 ease-in-quad,
10 transparent
11 );
12
13 $expected1: linear-gradient(
14 to right,
15 #000 0,
16 mix(transparent, #000, iro-ease-in-quad(0.25) * 100%) 25%,
17 mix(transparent, #000, iro-ease-in-quad(0.5) * 100%) 50%,
18 mix(transparent, #000, iro-ease-in-quad(0.75) * 100%) 75%,
19 transparent 100%
20 );
21
22 @include assert-equal($gradient1, $expected1, 'Simple linear gradient');
23
24 // ---------------------------------------------------------------------------
25
26 $gradient2: iro-easing-gradient(
27 radial,
28 1em 2em at 50% 60%,
29 #000,
30 ease-out-cubic,
31 transparent
32 );
33
34 $expected2: radial-gradient(
35 1em 2em at 50% 60%,
36 #000 0,
37 mix(transparent, #000, iro-ease-out-cubic(0.25) * 100%) 25%,
38 mix(transparent, #000, iro-ease-out-cubic(0.5) * 100%) 50%,
39 mix(transparent, #000, iro-ease-out-cubic(0.75) * 100%) 75%,
40 transparent 100%
41 );
42
43 @include assert-equal($gradient2, $expected2, 'Simple radial gradient');
44
45 // ---------------------------------------------------------------------------
46
47 $gradient3: iro-easing-gradient(
48 linear,
49 to right,
50 #000 2em,
51 ease-in-quad,
52 transparent 10em
53 );
54
55 $expected3: linear-gradient(
56 to right,
57 #000 2em,
58 mix(transparent, #000, iro-ease-in-quad(0.25) * 100%) 4em,
59 mix(transparent, #000, iro-ease-in-quad(0.5) * 100%) 6em,
60 mix(transparent, #000, iro-ease-in-quad(0.75) * 100%) 8em,
61 transparent 10em
62 );
63
64 @include assert-equal($gradient3, $expected3, 'Linear gradient with positioned color stops');
65
66 // ---------------------------------------------------------------------------
67
68 $gradient4: iro-easing-gradient(
69 linear,
70 to right,
71 #000 20%,
72 ease-in-quad,
73 transparent calc(20% + 10em)
74 );
75
76 $expected4: linear-gradient(
77 to right,
78 #000 20%,
79 mix(transparent, #000, iro-ease-in-quad(0.25) * 100%) calc(20% + (20% + 10em - 20%) * 0.25),
80 mix(transparent, #000, iro-ease-in-quad(0.5) * 100%) calc(20% + (20% + 10em - 20%) * 0.5),
81 mix(transparent, #000, iro-ease-in-quad(0.75) * 100%) calc(20% + (20% + 10em - 20%) * 0.75),
82 transparent calc(20% + 10em)
83 );
84
85 @include assert-equal($gradient4, $expected4, 'More advanced linear gradient with positioned color stops');
86
87 // ---------------------------------------------------------------------------
88
89 $gradient5: iro-easing-gradient(
90 linear,
91 to right,
92 #000 2em,
93 #f00 7em,
94 ease-in-quad,
95 transparent 10em
96 );
97
98 $expected5: linear-gradient(
99 to right,
100 #000 2em,
101 #f00 7em,
102 mix(transparent, #f00, iro-ease-in-quad(0.25) * 100%) 7em + 3em * 0.25,
103 mix(transparent, #f00, iro-ease-in-quad(0.5) * 100%) 7em + 3em * 0.5,
104 mix(transparent, #f00, iro-ease-in-quad(0.75) * 100%) 7em + 3em * 0.75,
105 transparent 10em
106 );
107
108 @include assert-equal($gradient5, $expected5, 'Linear gradient with 3 positioned color stops, 1 easing transitions');
109
110 // ---------------------------------------------------------------------------
111
112 $gradient6: iro-easing-gradient(
113 linear,
114 to right,
115 #000 2em,
116 ease-in-quad,
117 #f00 7em,
118 ease-in-quad,
119 transparent 10em
120 );
121
122 $expected6: linear-gradient(
123 to right,
124 #000 2em,
125 mix(#f00, #000, iro-ease-in-quad(0.25) * 100%) 2em + 5em * 0.25,
126 mix(#f00, #000, iro-ease-in-quad(0.5) * 100%) 2em + 5em * 0.5,
127 mix(#f00, #000, iro-ease-in-quad(0.75) * 100%) 2em + 5em * 0.75,
128 #f00 7em,
129 mix(transparent, #f00, iro-ease-in-quad(0.25) * 100%) 7em + 3em * 0.25,
130 mix(transparent, #f00, iro-ease-in-quad(0.5) * 100%) 7em + 3em * 0.5,
131 mix(transparent, #f00, iro-ease-in-quad(0.75) * 100%) 7em + 3em * 0.75,
132 transparent 10em
133 );
134
135 @include assert-equal($gradient6, $expected6, 'Linear gradient with 3 positioned color stops, 2 easing transitions');
136
137 // ---------------------------------------------------------------------------
138
139 $gradient7: iro-easing-gradient(
140 linear,
141 to right,
142 #000 2em,
143 ease-in-quad,
144 #f00,
145 ease-in-quad,
146 transparent 10em
147 );
148
149 $expected7: linear-gradient(
150 to right,
151 #000 2em,
152 mix(#f00, #000, iro-ease-in-quad(0.25) * 100%) 2em + 4em * 0.25,
153 mix(#f00, #000, iro-ease-in-quad(0.5) * 100%) 2em + 4em * 0.5,
154 mix(#f00, #000, iro-ease-in-quad(0.75) * 100%) 2em + 4em * 0.75,
155 #f00 6em,
156 mix(transparent, #f00, iro-ease-in-quad(0.25) * 100%) 6em + 4em * 0.25,
157 mix(transparent, #f00, iro-ease-in-quad(0.5) * 100%) 6em + 4em * 0.5,
158 mix(transparent, #f00, iro-ease-in-quad(0.75) * 100%) 6em + 4em * 0.75,
159 transparent 10em
160 );
161
162 @include assert-equal($gradient7, $expected7, 'Linear gradient with 2 / 3 positioned color stops, 2 easing transitions');
163
164 // ---------------------------------------------------------------------------
165
166 $gradient8: iro-easing-gradient(
167 linear,
168 to right,
169 #000,
170 ease-in-quad,
171 #f00,
172 ease-in-quad,
173 transparent
174 );
175
176 $expected8: linear-gradient(
177 to right,
178 #000 0,
179 mix(#f00, #000, iro-ease-in-quad(0.25) * 100%) 50% * 0.25,
180 mix(#f00, #000, iro-ease-in-quad(0.5) * 100%) 50% * 0.5,
181 mix(#f00, #000, iro-ease-in-quad(0.75) * 100%) 50% * 0.75,
182 #f00 50%,
183 mix(transparent, #f00, iro-ease-in-quad(0.25) * 100%) 50% + 50% * 0.25,
184 mix(transparent, #f00, iro-ease-in-quad(0.5) * 100%) 50% + 50% * 0.5,
185 mix(transparent, #f00, iro-ease-in-quad(0.75) * 100%) 50% + 50% * 0.75,
186 transparent 100%
187 );
188
189 @include assert-equal($gradient8, $expected8, 'Linear gradient with 0 / 3 positioned color stops, 2 easing transitions');
190
191 // ---------------------------------------------------------------------------
192
193 $gradient9: iro-easing-gradient(
194 linear,
195 to right,
196 #000,
197 ease-in-quad,
198 #f00,
199 ease-in-quad,
200 transparent 20em
201 );
202
203 $expected9: linear-gradient(
204 to right,
205 #000 0,
206 mix(#f00, #000, iro-ease-in-quad(0.25) * 100%) 10em * 0.25,
207 mix(#f00, #000, iro-ease-in-quad(0.5) * 100%) 10em * 0.5,
208 mix(#f00, #000, iro-ease-in-quad(0.75) * 100%) 10em * 0.75,
209 #f00 10em,
210 mix(transparent, #f00, iro-ease-in-quad(0.25) * 100%) 10em + 10em * 0.25,
211 mix(transparent, #f00, iro-ease-in-quad(0.5) * 100%) 10em + 10em * 0.5,
212 mix(transparent, #f00, iro-ease-in-quad(0.75) * 100%) 10em + 10em * 0.75,
213 transparent 20em
214 );
215
216 @include assert-equal($gradient9, $expected9, 'Linear gradient with 1 / 3 positioned color stops, 2 easing transitions');
217
218 // ---------------------------------------------------------------------------
219
220 $gradient10: iro-easing-gradient(
221 linear,
222 to right,
223 #000,
224 cubic-bezier 0.47 0 0.745 0.715,
225 transparent
226 );
227
228 $expected10: linear-gradient(
229 to right,
230 #000 0,
231 mix(transparent, #000, iro-cubic-bezier(0.47, 0, 0.745, 0.715, 0.25) * 100%) 25%,
232 mix(transparent, #000, iro-cubic-bezier(0.47, 0, 0.745, 0.715, 0.5) * 100%) 50%,
233 mix(transparent, #000, iro-cubic-bezier(0.47, 0, 0.745, 0.715, 0.75) * 100%) 75%,
234 transparent 100%
235 );
236
237 @include assert-equal($gradient10, $expected10, 'Simple linear gradient with custom cubic-bezier easing');
238
239 // ---------------------------------------------------------------------------
240
241 $gradient11: iro-easing-gradient(
242 linear,
243 to right,
244 #000,
245 steps 4 jump-start,
246 transparent
247 );
248
249 $expected11: linear-gradient(
250 to right,
251 #000 0,
252 mix(transparent, #000, 0.25 * 100%) 0,
253 mix(transparent, #000, 0.25 * 100%) 25%,
254 mix(transparent, #000, 0.5 * 100%) 25%,
255 mix(transparent, #000, 0.5 * 100%) 50%,
256 mix(transparent, #000, 0.75 * 100%) 50%,
257 mix(transparent, #000, 0.75 * 100%) 75%,
258 transparent 75%,
259 transparent 100%
260 );
261
262 @include assert-equal($gradient11, $expected11, 'Simple linear gradient with custom steps easing');
263 }
264}