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