1pub mod perspective;
3pub mod perspective_origin;
4pub mod rotate;
5pub mod scale;
6pub mod skew;
7pub mod transform_origin;
8pub mod transform_type;
9pub mod translate;
10
11const CSS_TRANSFORM: &str = "transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));";
14
15#[cfg(test)]
16mod tests {
17 use crate::{generate, utils::testing::base_config};
18
19 use pretty_assertions::assert_eq;
20
21 #[test]
22 fn perspective() {
23 assert_eq!(
24 generate(["perspective-distant"], &base_config()),
25 ".perspective-distant {
26 perspective: 1200px;
27}"
28 );
29 assert_eq!(
30 generate(["perspective-[0.1rem]"], &base_config()),
31 r".perspective-\[0\.1rem\] {
32 perspective: 0.1rem;
33}"
34 );
35 }
36
37 #[test]
38 fn perspective_origin() {
39 assert_eq!(
40 generate(["perspective-origin-top-left"], &base_config()),
41 ".perspective-origin-top-left {
42 perspective-origin: top left;
43}"
44 );
45 assert_eq!(
46 generate(["perspective-origin-[0.1rem_center]"], &base_config()),
47 r".perspective-origin-\[0\.1rem_center\] {
48 perspective-origin: 0.1rem center;
49}"
50 );
51 }
52
53 #[test]
54 fn rotate() {
55 assert_eq!(generate(["rotate-20"], &base_config()), ".rotate-20 {
56 --en-rotate-x: 20deg;
57 --en-rotate-y: 20deg;
58 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
59}");
60 assert_eq!(
61 generate(["rotate-[1.25turn]"], &base_config()),
62 r".rotate-\[1\.25turn\] {
63 --en-rotate-x: 1.25turn;
64 --en-rotate-y: 1.25turn;
65 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
66}"
67 );
68
69 assert_eq!(generate(["rotate-x-20"], &base_config()), ".rotate-x-20 {
70 --en-rotate-x: 20deg;
71 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
72}");
73 assert_eq!(
74 generate(["rotate-x-[1.25turn]"], &base_config()),
75 r".rotate-x-\[1\.25turn\] {
76 --en-rotate-x: 1.25turn;
77 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
78}"
79 );
80
81 assert_eq!(generate(["rotate-y-20"], &base_config()), ".rotate-y-20 {
82 --en-rotate-y: 20deg;
83 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
84}");
85 assert_eq!(
86 generate(["rotate-y-[1.25turn]"], &base_config()),
87 r".rotate-y-\[1\.25turn\] {
88 --en-rotate-y: 1.25turn;
89 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
90}"
91 );
92
93 assert_eq!(generate(["rotate-z-20"], &base_config()), ".rotate-z-20 {
94 --en-rotate-z: 20deg;
95 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
96}");
97 assert_eq!(
98 generate(["rotate-z-[1.25turn]"], &base_config()),
99 r".rotate-z-\[1\.25turn\] {
100 --en-rotate-z: 1.25turn;
101 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
102}"
103 );
104 }
105
106 #[test]
107 fn scale() {
108 assert_eq!(generate(["scale-150"], &base_config()), ".scale-150 {
109 --en-scale-x: 1.5;
110 --en-scale-y: 1.5;
111 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
112}");
113 assert_eq!(generate(["scale-x-20"], &base_config()), ".scale-x-20 {
114 --en-scale-x: 0.2;
115 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
116}");
117 assert_eq!(generate(["scale-y-45"], &base_config()), ".scale-y-45 {
118 --en-scale-y: 0.45;
119 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
120}");
121 assert_eq!(
122 generate(["scale-y-[88.42%]"], &base_config()),
123 r".scale-y-\[88\.42\%\] {
124 --en-scale-y: 88.42%;
125 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
126}"
127 );
128 assert_eq!(generate(["scale-z-45"], &base_config()), ".scale-z-45 {
129 --en-scale-z: 0.45;
130 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
131}");
132 }
133
134 #[test]
135 fn skew() {
136 assert_eq!(generate(["skew-x-20"], &base_config()), ".skew-x-20 {
137 --en-skew-x: 20deg;
138 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
139}");
140 assert_eq!(generate(["skew-y-20"], &base_config()), ".skew-y-20 {
141 --en-skew-y: 20deg;
142 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
143}");
144 assert_eq!(
145 generate(["skew-x-[1.25turn]"], &base_config()),
146 r".skew-x-\[1\.25turn\] {
147 --en-skew-x: 1.25turn;
148 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
149}"
150 );
151 assert_eq!(
152 generate(["skew-y-[1.25turn]"], &base_config()),
153 r".skew-y-\[1\.25turn\] {
154 --en-skew-y: 1.25turn;
155 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
156}"
157 );
158 }
159
160 #[test]
161 fn translate() {
162 assert_eq!(generate(["translate-x-20"], &base_config()), ".translate-x-20 {
163 --en-translate-x: 5rem;
164 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
165}");
166 assert_eq!(generate(["-translate-x-full"], &base_config()), ".-translate-x-full {
167 --en-translate-x: -100%;
168 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
169}");
170 assert_eq!(generate(["-translate-x-20"], &base_config()), ".-translate-x-20 {
171 --en-translate-x: -5rem;
172 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
173}");
174 assert_eq!(generate(["translate-x-auto"], &base_config()), ".translate-x-auto {
175 --en-translate-x: auto;
176 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
177}");
178 assert_eq!(
179 generate(["translate-x-[1.25%]"], &base_config()),
180 r".translate-x-\[1\.25\%\] {
181 --en-translate-x: 1.25%;
182 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
183}"
184 );
185
186 assert_eq!(generate(["translate-y-20"], &base_config()), ".translate-y-20 {
187 --en-translate-y: 5rem;
188 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
189}");
190 assert_eq!(generate(["-translate-y-full"], &base_config()), ".-translate-y-full {
191 --en-translate-y: -100%;
192 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
193}");
194 assert_eq!(generate(["-translate-y-20"], &base_config()), ".-translate-y-20 {
195 --en-translate-y: -5rem;
196 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
197}");
198 assert_eq!(generate(["translate-y-auto"], &base_config()), ".translate-y-auto {
199 --en-translate-y: auto;
200 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
201}");
202 assert_eq!(
203 generate(["translate-y-[1.25%]"], &base_config()),
204 r".translate-y-\[1\.25\%\] {
205 --en-translate-y: 1.25%;
206 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
207}"
208 );
209
210 assert_eq!(generate(["translate-z-20"], &base_config()), ".translate-z-20 {
211 --en-translate-z: 5rem;
212 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
213}");
214 assert_eq!(generate(["-translate-z-full"], &base_config()), ".-translate-z-full {
215 --en-translate-z: -100%;
216 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
217}");
218 assert_eq!(generate(["-translate-z-20"], &base_config()), ".-translate-z-20 {
219 --en-translate-z: -5rem;
220 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
221}");
222 assert_eq!(generate(["translate-z-auto"], &base_config()), ".translate-z-auto {
223 --en-translate-z: auto;
224 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
225}");
226 assert_eq!(
227 generate(["translate-z-[1.25%]"], &base_config()),
228 r".translate-z-\[1\.25\%\] {
229 --en-translate-z: 1.25%;
230 transform: translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
231}"
232 );
233 }
234
235 #[test]
236 fn transform_origin() {
237 assert_eq!(
238 generate(["origin-center"], &base_config()),
239 ".origin-center {
240 transform-origin: center;
241}"
242 );
243 assert_eq!(
244 generate(["origin-top-left"], &base_config()),
245 ".origin-top-left {
246 transform-origin: top left;
247}"
248 );
249 assert_eq!(
250 generate(["origin-[bottom_right_60px]"], &base_config()),
251 r".origin-\[bottom_right_60px\] {
252 transform-origin: bottom right 60px;
253}"
254 );
255 assert_eq!(
256 generate(["origin-[-100%_40%]"], &base_config()),
257 r".origin-\[-100\%_40\%\] {
258 transform-origin: -100% 40%;
259}"
260 );
261 }
262
263 #[test]
264 fn transform_type() {
265 assert_eq!(generate(["transform-gpu"], &base_config()), ".transform-gpu {
266 transform: translateZ(0) translate3d(var(--en-translate-x), var(--en-translate-y), var(--en-translate-z)) rotateX(var(--en-rotate-x)) rotateY(var(--en-rotate-y)) rotateZ(var(--en-rotate-z)) skewX(var(--en-skew-x)) skewY(var(--en-skew-y)) scale3d(var(--en-scale-x), var(--en-scale-y), var(--en-scale-z));
267}");
268 assert_eq!(
269 generate(["transform-none"], &base_config()),
270 ".transform-none {
271 transform: none;
272}"
273 );
274 }
275}