@@ -5,15 +5,50 @@ fn runner() -> crate::TestRunner {
5
5
super :: runner ( ) . with_cwd ( "compound" )
6
6
}
7
7
8
- #[ test]
9
- fn full_overlap ( ) {
10
- assert_eq ! (
11
- runner( ) . ok( "@use \" sass:selector\" ;\
8
+ mod full_overlap {
9
+ #[ allow( unused) ]
10
+ use super :: runner;
11
+
12
+ #[ test]
13
+ fn class ( ) {
14
+ assert_eq ! (
15
+ runner( ) . ok( "@use \" sass:selector\" ;\
12
16
\n a {b: selector.unify(\" .c.d\" , \" .c.d\" )}\n ") ,
13
- "a {\
17
+ "a {\
14
18
\n b: .c.d;\
15
19
\n }\n "
16
- ) ;
20
+ ) ;
21
+ }
22
+ #[ test]
23
+ fn pseudo_class ( ) {
24
+ assert_eq ! (
25
+ runner( ) . ok( "@use \" sass:selector\" ;\
26
+ \n a {b: selector.unify(\" .c:d\" , \" .c:d\" )}\n ") ,
27
+ "a {\
28
+ \n b: .c:d;\
29
+ \n }\n "
30
+ ) ;
31
+ }
32
+ #[ test]
33
+ fn pseudo_element ( ) {
34
+ assert_eq ! (
35
+ runner( ) . ok( "@use \" sass:selector\" ;\
36
+ \n a {b: selector.unify(\" .c::d\" , \" .c::d\" )}\n ") ,
37
+ "a {\
38
+ \n b: .c::d;\
39
+ \n }\n "
40
+ ) ;
41
+ }
42
+ #[ test]
43
+ fn pseudo_selector_and_class ( ) {
44
+ assert_eq ! (
45
+ runner( ) . ok( "@use \" sass:selector\" ;\
46
+ \n a {b: selector.unify(\" .c:d::e\" , \" .c:d::e\" )}\n ") ,
47
+ "a {\
48
+ \n b: .c:d::e;\
49
+ \n }\n "
50
+ ) ;
51
+ }
17
52
}
18
53
#[ test]
19
54
fn no_overlap ( ) {
@@ -29,6 +64,93 @@ mod order {
29
64
#[ allow( unused) ]
30
65
use super :: runner;
31
66
67
+ mod do_not_cross_pseudo_element {
68
+ #[ allow( unused) ]
69
+ use super :: runner;
70
+
71
+ mod pseudo_class_and_element {
72
+ #[ allow( unused) ]
73
+ use super :: runner;
74
+
75
+ #[ test]
76
+ fn into_different_pseudo_element_and_different_pseudo_class ( ) {
77
+ assert_eq ! (
78
+ runner( ) . ok( "@use \" sass:selector\" ;\
79
+ \n a {b: selector.unify(\" ::foo:bar\" , \" ::other:baz\" )}\n ") ,
80
+ ""
81
+ ) ;
82
+ }
83
+ #[ test]
84
+ #[ ignore] // wrong result
85
+ fn into_pseudo_element ( ) {
86
+ assert_eq ! (
87
+ runner( ) . ok( "@use \" sass:selector\" ;\
88
+ \n a {b: selector.unify(\" ::bar:baz\" , \" :foo\" )}\n ") ,
89
+ "a {\
90
+ \n b: :foo::bar:baz;\
91
+ \n }\n "
92
+ ) ;
93
+ }
94
+ #[ test]
95
+ #[ ignore] // wrong result
96
+ fn into_same_pseudo_element_and_different_pseudo_class ( ) {
97
+ assert_eq ! (
98
+ runner( ) . ok( "@use \" sass:selector\" ;\
99
+ \n a {b: selector.unify(\" ::foo:bar\" , \" ::foo:baz\" )}\n ") ,
100
+ "a {\
101
+ \n b: ::foo:bar:baz;\
102
+ \n }\n "
103
+ ) ;
104
+ }
105
+ #[ test]
106
+ #[ ignore] // wrong result
107
+ fn into_simple ( ) {
108
+ assert_eq ! (
109
+ runner( ) . ok(
110
+ "@use \" sass:selector\" ;\
111
+ \n a {b: selector.unify(\" .x::scrollbar:horizontal\" , \" .y\" )}\n "
112
+ ) ,
113
+ "a {\
114
+ \n b: .x.y::scrollbar:horizontal;\
115
+ \n }\n "
116
+ ) ;
117
+ }
118
+ }
119
+ mod pseudo_element {
120
+ #[ allow( unused) ]
121
+ use super :: runner;
122
+
123
+ #[ test]
124
+ #[ ignore] // wrong result
125
+ fn into_pseudo_class_and_element ( ) {
126
+ assert_eq ! (
127
+ runner( ) . ok( "@use \" sass:selector\" ;\
128
+ \n a {b: selector.unify(\" :foo\" , \" ::bar:baz\" )}\n ") ,
129
+ "a {\
130
+ \n b: :foo::bar:baz;\
131
+ \n }\n "
132
+ ) ;
133
+ }
134
+ }
135
+ mod simple {
136
+ #[ allow( unused) ]
137
+ use super :: runner;
138
+
139
+ #[ test]
140
+ #[ ignore] // wrong result
141
+ fn into_pseudo_class_and_element ( ) {
142
+ assert_eq ! (
143
+ runner( ) . ok(
144
+ "@use \" sass:selector\" ;\
145
+ \n a {b: selector.unify(\" .x\" , \" .y::scrollbar:horizontal\" )}\n "
146
+ ) ,
147
+ "a {\
148
+ \n b: .x.y::scrollbar:horizontal;\
149
+ \n }\n "
150
+ ) ;
151
+ }
152
+ }
153
+ }
32
154
#[ test]
33
155
fn element_at_start ( ) {
34
156
assert_eq ! (
0 commit comments