Skip to content

Commit 548ccd9

Browse files
author
meri
committed
New tests on extend all + one minor bug fixed. #151
1 parent 44642f0 commit 548ccd9

File tree

8 files changed

+166
-2
lines changed

8 files changed

+166
-2
lines changed

src/main/java/com/github/sommeri/less4j/core/ast/SimpleSelector.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,11 @@ public void extendName(String extension) {
132132
if (isStar) {
133133
isStar=false;
134134
}
135-
getElementName().extendName(extension);
135+
if (hasElement()) {
136+
getElementName().extendName(extension);
137+
} else {
138+
setElementName(new InterpolableName(getUnderlyingStructure(), new FixedNamePart(getUnderlyingStructure(), extension)));
139+
}
136140
}
137141

138142
}

src/test/java/com/github/sommeri/less4j/compiler/ExtendsTest.java

+5-1
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,13 @@
88
import com.github.sommeri.less4j.LessCompiler.CompilationResult;
99

1010
//FIXME (!!!) add tests for values lists for attributes - e.g. error handling
11+
//FIXME !!!! documentation: element will attach itself to previous
12+
//FIXME !!!! documentation: no partial class name match - not even for all
1113
public class ExtendsTest extends BasicFeaturesTest {
1214

1315
private static final String standardCases = "src/test/resources/compile-basic-features/extends/extend-full/";
16+
private static final String combinations = "src/test/resources/compile-basic-features/extends/combinations/";
17+
private static final String misc = "src/test/resources/compile-basic-features/extends/";
1418
private static final String extendAllMatch1 = "src/test/resources/compile-basic-features/extends/extend-all/match-replacement-by-element/";
1519
private static final String extendAllMatch2 = "src/test/resources/compile-basic-features/extends/extend-all/match-replacement-by-x/";
1620
private static final String extendAllMultiple = "src/test/resources/compile-basic-features/extends/extend-all/multiple-matches/";
@@ -24,7 +28,7 @@ public static Collection<Object[]> allTestsParameters() {
2428
//FIXME !!!! bwuhuhuuuuuu enable combied tests
2529
//return createTestFileUtils().loadTestFiles(standardCases);
2630
//return createTestFileUtils().loadTestFiles(standardCases, extendAllMatch);
27-
return createTestFileUtils().loadTestFiles(extendAllMatch1, extendAllMatch2, extendAllMultiple);
31+
return createTestFileUtils().loadTestFiles(misc, extendAllMatch1, extendAllMatch2, extendAllMultiple);
2832
}
2933

3034
protected void assertSourceMapValid(CompilationResult actual) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
:pseudo,
2+
new-element:new-pseudo1:new-pseudo2:new-pseudo3 {
3+
property: value;
4+
}
5+
:pseudo other:first,
6+
new-element:new-pseudo1:new-pseudo2:new-pseudo3 other:first {
7+
property: value;
8+
}
9+
:pseudo:last + other:first,
10+
new-element:new-pseudo1:new-pseudo2:new-pseudo3:last + other:first {
11+
property: value;
12+
}
13+
:first:pseudo + other:first,
14+
:firstnew-element:new-pseudo1:new-pseudo2:new-pseudo3 + other:first {
15+
property: value;
16+
}
17+
beginning:pseudo other:first,
18+
beginningnew-element:new-pseudo1:new-pseudo2:new-pseudo3 other:first {
19+
property: value;
20+
}
21+
beginning:pseudo:last + other:first,
22+
beginningnew-element:new-pseudo1:new-pseudo2:new-pseudo3:last + other:first {
23+
property: value;
24+
}
25+
first:first + :pseudo,
26+
first:first + new-element:new-pseudo1:new-pseudo2:new-pseudo3 {
27+
property: value;
28+
}
29+
first:first + end:pseudo,
30+
first:first + endnew-element:new-pseudo1:new-pseudo2:new-pseudo3 {
31+
property: value;
32+
}
33+
first:first + end:first:pseudo,
34+
first:first + end:firstnew-element:new-pseudo1:new-pseudo2:new-pseudo3 {
35+
property: value;
36+
}
37+
first:first + :pseudo end:end,
38+
first:first + new-element:new-pseudo1:new-pseudo2:new-pseudo3 end:end {
39+
property: value;
40+
}
41+
first:first + :pseudo:last end:end,
42+
first:first + new-element:new-pseudo1:new-pseudo2:new-pseudo3:last end:end {
43+
property: value;
44+
}
45+
first:first + middle:pseudo end:end,
46+
first:first + middlenew-element:new-pseudo1:new-pseudo2:new-pseudo3 end:end {
47+
property: value;
48+
}
49+
first:first + middle:pseudo:last end:end,
50+
first:first + middlenew-element:new-pseudo1:new-pseudo2:new-pseudo3:last end:end {
51+
property: value;
52+
}
53+
first:first middle:first:pseudo + end:end,
54+
first:first middle:firstnew-element:new-pseudo1:new-pseudo2:new-pseudo3 + end:end {
55+
property: value;
56+
}
57+
element:match > other:end,
58+
new-element:new-pseudo1:new-pseudo2:new-pseudo3 > other:end {
59+
property: value;
60+
}
61+
element:match:last > other:end,
62+
new-element:new-pseudo1:new-pseudo2:new-pseudo3:last > other:end {
63+
property: value;
64+
}
65+
beginning:end element:match,
66+
beginning:end new-element:new-pseudo1:new-pseudo2:new-pseudo3 {
67+
property: value;
68+
}
69+
beginning:end element:match:last,
70+
beginning:end new-element:new-pseudo1:new-pseudo2:new-pseudo3:last {
71+
property: value;
72+
}
73+
beginning:end element:match other:end,
74+
beginning:end new-element:new-pseudo1:new-pseudo2:new-pseudo3 other:end {
75+
property: value;
76+
}
77+
beginning:end element:match:last other:end,
78+
beginning:end new-element:new-pseudo1:new-pseudo2:new-pseudo3:last other:end {
79+
property: value;
80+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
:pseudo {
2+
property: value;
3+
}
4+
//total beginning
5+
:pseudo other:first {
6+
property: value;
7+
}
8+
:pseudo:last + other:first {
9+
property: value;
10+
}
11+
:first:pseudo + other:first,
12+
:firstnew-element:new-pseudo1:new-pseudo2:new-pseudo3 + other:first {
13+
property: value;
14+
}
15+
//partial beginning
16+
beginning:pseudo other:first {
17+
property: value;
18+
}
19+
beginning:pseudo:last + other:first {
20+
property: value;
21+
}
22+
//total end
23+
first:first + :pseudo {
24+
property: value;
25+
}
26+
first:first + end:pseudo {
27+
property: value;
28+
}
29+
first:first + end:first:pseudo {
30+
property: value;
31+
}
32+
//beginning in the middle
33+
first:first + :pseudo end:end {
34+
property: value;
35+
}
36+
first:first + :pseudo:last end:end {
37+
property: value;
38+
}
39+
first:first + middle:pseudo end:end {
40+
property: value;
41+
}
42+
first:first + middle:pseudo:last end:end {
43+
property: value;
44+
}
45+
//end in the middle
46+
first:first middle:first:pseudo + end:end {
47+
property: value;
48+
}
49+
50+
new-element:new-pseudo1:new-pseudo2:new-pseudo3:extend(:pseudo all) {}
51+
52+
element:match > other:end {
53+
property: value;
54+
}
55+
56+
element:match:last > other:end {
57+
property: value;
58+
}
59+
60+
beginning:end element:match {
61+
property: value;
62+
}
63+
64+
beginning:end element:match:last {
65+
property: value;
66+
}
67+
68+
beginning:end element:match other:end {
69+
property: value;
70+
}
71+
72+
beginning:end element:match:last other:end {
73+
property: value;
74+
}
75+
76+
new-element:new-pseudo1:new-pseudo2:new-pseudo3:extend(element:match all) {}

0 commit comments

Comments
 (0)