Skip to content

Commit d2a90cb

Browse files
committed
Replace CSSSWTTestCase inheritance with a JUnit 5 extension
The css.swt widget tests inherited Display and engine handling plus a protected mutable display field from a common base class, which tied every test to that superclass. A CssSwtEngine extension registered via RegisterExtension now owns engine creation, the widget helpers and shell cleanup; tests access the display and engine through accessors and are free to extend other bases.
1 parent 68e20f6 commit d2a90cb

36 files changed

Lines changed: 488 additions & 253 deletions

tests/org.eclipse.e4.ui.tests.css.swt/META-INF/MANIFEST.MF

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ Bundle-ActivationPolicy: lazy
1313
Bundle-RequiredExecutionEnvironment: JavaSE-21
1414
Import-Package: org.eclipse.core.runtime;version="3.5.0",
1515
org.junit.jupiter.api;version="[5.14.0,6.0.0)",
16+
org.junit.jupiter.api.extension;version="[5.14.0,6.0.0)",
1617
org.junit.jupiter.api.function;version="[5.14.0,6.0.0)",
1718
org.junit.platform.suite.api;version="[1.14.0,2.0.0)",
1819
org.osgi.framework;version="[1.7.0,2.0.0)",

tests/org.eclipse.e4.ui.tests.css.swt/src/org/eclipse/e4/ui/tests/css/forms/ExpandableCompositeTest.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,31 @@
1717
import static org.junit.jupiter.api.Assertions.assertNotNull;
1818
import static org.junit.jupiter.api.Assertions.assertNull;
1919

20-
import org.eclipse.e4.ui.tests.css.swt.CSSSWTTestCase;
20+
import org.eclipse.e4.ui.css.core.engine.CSSEngine;
21+
import org.eclipse.e4.ui.tests.css.swt.CssSwtEngine;
2122
import org.eclipse.swt.SWT;
2223
import org.eclipse.swt.graphics.RGB;
2324
import org.eclipse.swt.layout.FillLayout;
2425
import org.eclipse.swt.widgets.Composite;
26+
import org.eclipse.swt.widgets.Display;
2527
import org.eclipse.swt.widgets.Shell;
2628
import org.eclipse.ui.forms.widgets.ExpandableComposite;
2729
import org.eclipse.ui.forms.widgets.ToggleHyperlink;
2830
import org.junit.jupiter.api.Test;
31+
import org.junit.jupiter.api.extension.RegisterExtension;
2932

30-
public class ExpandableCompositeTest extends CSSSWTTestCase {
33+
public class ExpandableCompositeTest {
34+
35+
@RegisterExtension
36+
CssSwtEngine css = new CssSwtEngine();
3137

3238
static final RGB RED = new RGB(255, 0, 0);
3339
static final RGB GREEN = new RGB(0, 255, 0);
3440
static final RGB BLUE = new RGB(0, 0, 255);
3541

3642
protected ExpandableComposite createTestExpandableComposite(String styleSheet) {
37-
engine = createEngine(styleSheet, display);
43+
Display display = css.getDisplay();
44+
CSSEngine engine = css.createEngine(styleSheet);
3845

3946
// Create widgets
4047
Shell shell = new Shell(display, SWT.SHELL_TRIM);
@@ -76,7 +83,7 @@ void testExpandableComposite_foregroundColorGetsReset_foregroundCollorIsNull() t
7683
assertNotNull(compositeToTest.getTitleBarForeground());
7784
assertEquals(RED, compositeToTest.getTitleBarForeground().getRGB());
7885

79-
engine.reset();
86+
css.getEngine().reset();
8087

8188
assertNull(compositeToTest.getTitleBarForeground());
8289

tests/org.eclipse.e4.ui.tests.css.swt/src/org/eclipse/e4/ui/tests/css/forms/SectionTest.java

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,25 +18,32 @@
1818
import static org.junit.jupiter.api.Assertions.assertNotNull;
1919
import static org.junit.jupiter.api.Assertions.assertNull;
2020

21-
import org.eclipse.e4.ui.tests.css.swt.CSSSWTTestCase;
21+
import org.eclipse.e4.ui.css.core.engine.CSSEngine;
22+
import org.eclipse.e4.ui.tests.css.swt.CssSwtEngine;
2223
import org.eclipse.swt.SWT;
2324
import org.eclipse.swt.graphics.RGB;
2425
import org.eclipse.swt.layout.FillLayout;
2526
import org.eclipse.swt.widgets.Composite;
27+
import org.eclipse.swt.widgets.Display;
2628
import org.eclipse.swt.widgets.Shell;
2729
import org.eclipse.ui.forms.widgets.ExpandableComposite;
2830
import org.eclipse.ui.forms.widgets.Section;
2931
import org.eclipse.ui.forms.widgets.ToggleHyperlink;
3032
import org.junit.jupiter.api.Test;
33+
import org.junit.jupiter.api.extension.RegisterExtension;
3134

32-
public class SectionTest extends CSSSWTTestCase {
35+
public class SectionTest {
36+
37+
@RegisterExtension
38+
CssSwtEngine css = new CssSwtEngine();
3339

3440
static final RGB RED = new RGB(255, 0, 0);
3541
static final RGB GREEN = new RGB(0, 255, 0);
3642
static final RGB BLUE = new RGB(0, 0, 255);
3743

3844
protected Section createTestSection(String styleSheet) {
39-
engine = createEngine(styleSheet, display);
45+
Display display = css.getDisplay();
46+
CSSEngine engine = css.createEngine(styleSheet);
4047

4148
// Create widgets
4249
Shell shell = new Shell(display, SWT.SHELL_TRIM);
@@ -91,7 +98,7 @@ void testSectionResetColors() throws Exception {
9198
background-color-titlebar: #0000FF; \
9299
border-color-titlebar: #00FF00}""");
93100

94-
engine.reset();
101+
css.getEngine().reset();
95102

96103
assertNull(section.getTitleBarForeground());
97104

tests/org.eclipse.e4.ui.tests.css.swt/src/org/eclipse/e4/ui/tests/css/properties/tabbed/TabbedPropertiesListTest.java

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,8 @@
1313

1414
import static org.junit.jupiter.api.Assertions.assertEquals;
1515

16-
import org.eclipse.e4.ui.tests.css.swt.CSSSWTTestCase;
16+
import org.eclipse.e4.ui.css.core.engine.CSSEngine;
17+
import org.eclipse.e4.ui.tests.css.swt.CssSwtEngine;
1718
import org.eclipse.swt.SWT;
1819
import org.eclipse.swt.graphics.RGB;
1920
import org.eclipse.swt.layout.FillLayout;
@@ -22,12 +23,17 @@
2223
import org.eclipse.ui.internal.views.properties.tabbed.view.TabbedPropertyList;
2324
import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
2425
import org.junit.jupiter.api.Test;
26+
import org.junit.jupiter.api.extension.RegisterExtension;
2527

26-
public class TabbedPropertiesListTest extends CSSSWTTestCase {
28+
public class TabbedPropertiesListTest {
29+
30+
@RegisterExtension
31+
CssSwtEngine css = new CssSwtEngine();
2732

2833
static final RGB RED = new RGB(255, 0, 0);
2934
private TabbedPropertySheetWidgetFactory factory;
3035
private Shell shell;
36+
private CSSEngine engine;
3137

3238

3339
private TabbedPropertyList createTabbedPropertiesList(String stylesheet) {
@@ -37,9 +43,9 @@ private TabbedPropertyList createTabbedPropertiesList(String stylesheet) {
3743
} else {
3844
s = stylesheet;
3945
}
40-
engine = createEngine(s, display);
46+
engine = css.createEngine(s);
4147

42-
shell = new Shell(display, SWT.SHELL_TRIM);
48+
shell = new Shell(css.getDisplay(), SWT.SHELL_TRIM);
4349
FillLayout layout = new FillLayout();
4450
shell.setLayout(layout);
4551

tests/org.eclipse.e4.ui.tests.css.swt/src/org/eclipse/e4/ui/tests/css/properties/tabbed/TabbedPropertiesTitleTest.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,23 @@
1414
import static org.junit.jupiter.api.Assertions.assertEquals;
1515
import static org.junit.jupiter.api.Assertions.assertNotNull;
1616

17-
import org.eclipse.e4.ui.tests.css.swt.CSSSWTTestCase;
17+
import org.eclipse.e4.ui.tests.css.swt.CssSwtEngine;
1818
import org.eclipse.swt.SWT;
1919
import org.eclipse.swt.graphics.RGB;
2020
import org.eclipse.swt.layout.FillLayout;
2121
import org.eclipse.swt.widgets.Composite;
22+
import org.eclipse.swt.widgets.Display;
2223
import org.eclipse.swt.widgets.Shell;
2324
import org.eclipse.ui.forms.IFormColors;
2425
import org.eclipse.ui.internal.views.properties.tabbed.view.TabbedPropertyTitle;
2526
import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetWidgetFactory;
2627
import org.junit.jupiter.api.Test;
28+
import org.junit.jupiter.api.extension.RegisterExtension;
2729

28-
public class TabbedPropertiesTitleTest extends CSSSWTTestCase {
30+
public class TabbedPropertiesTitleTest {
31+
32+
@RegisterExtension
33+
CssSwtEngine css = new CssSwtEngine();
2934

3035
static final RGB RED = new RGB(255, 0, 0);
3136
private TabbedPropertySheetWidgetFactory factory;
@@ -39,9 +44,8 @@ private TabbedPropertyTitle createTabbedPropertiesTitle(String stylesheet) {
3944
} else {
4045
s = stylesheet;
4146
}
42-
engine = createEngine(
43-
s,
44-
display);
47+
Display display = css.getDisplay();
48+
css.createEngine(s);
4549

4650
shell = new Shell(display, SWT.SHELL_TRIM);
4751
FillLayout layout = new FillLayout();
@@ -66,7 +70,7 @@ private void assertColor(RGB expected, String actualKey){
6670
void titleBackgroundColorIsStyled() {
6771
createTabbedPropertiesTitle(null);
6872

69-
engine.applyStyles(shell, true);
73+
css.getEngine().applyStyles(shell, true);
7074

7175
assertColor(RED, IFormColors.H_GRADIENT_START);
7276
assertColor(RED, IFormColors.H_GRADIENT_END);
@@ -83,8 +87,8 @@ void titleBackgroundColorIsStyledAndReset() {
8387
RGB colorBottomKeylineOneBeforStyling = factory.getColors().getColor(IFormColors.H_BOTTOM_KEYLINE1).getRGB();
8488
RGB colorBottomKeylineTwoBeforStyling = factory.getColors().getColor(IFormColors.H_BOTTOM_KEYLINE2).getRGB();
8589

86-
engine.applyStyles(shell, true);
87-
engine.reset();
90+
css.getEngine().applyStyles(shell, true);
91+
css.getEngine().reset();
8892
assertColor(colorGradStartBeforStyling, IFormColors.H_GRADIENT_START);
8993
assertColor(colorGradEndBeforStyling, IFormColors.H_GRADIENT_END);
9094
assertColor(colorBottomKeylineOneBeforStyling, IFormColors.H_BOTTOM_KEYLINE1);
@@ -101,7 +105,7 @@ void colorsAreNotChangedWhenNoStyleGivenInCss() {
101105
RGB colorBottomKeylineOneBeforStyling = factory.getColors().getColor(IFormColors.H_BOTTOM_KEYLINE1).getRGB();
102106
RGB colorBottomKeylineTwoBeforStyling = factory.getColors().getColor(IFormColors.H_BOTTOM_KEYLINE2).getRGB();
103107

104-
engine.applyStyles(shell, true);
108+
css.getEngine().applyStyles(shell, true);
105109
assertColor(colorGradStartBeforStyling, IFormColors.H_GRADIENT_START);
106110
assertColor(colorGradEndBeforStyling, IFormColors.H_GRADIENT_END);
107111
assertColor(colorBottomKeylineOneBeforStyling, IFormColors.H_BOTTOM_KEYLINE1);

tests/org.eclipse.e4.ui.tests.css.swt/src/org/eclipse/e4/ui/tests/css/swt/Bug419482Test.java

Lines changed: 16 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import static org.junit.jupiter.api.Assertions.assertEquals;
1818

19+
import org.eclipse.e4.ui.css.core.engine.CSSEngine;
1920
import org.eclipse.swt.SWT;
2021
import org.eclipse.swt.graphics.RGB;
2122
import org.eclipse.swt.layout.RowLayout;
@@ -25,8 +26,12 @@
2526
import org.eclipse.swt.widgets.Shell;
2627
import org.eclipse.swt.widgets.ToolBar;
2728
import org.junit.jupiter.api.Test;
29+
import org.junit.jupiter.api.extension.RegisterExtension;
2830

29-
public class Bug419482Test extends CSSSWTTestCase {
31+
public class Bug419482Test {
32+
33+
@RegisterExtension
34+
CssSwtEngine css = new CssSwtEngine();
3035

3136
private static final RGB RGB_BLUE = new RGB(0, 0, 255);
3237
private static final RGB RGB_RED = new RGB(255, 0, 0);
@@ -39,7 +44,7 @@ public class Bug419482Test extends CSSSWTTestCase {
3944
void testTwoLevelsWildcard() {
4045
String cssString = "Shell > * > * { color: red; } \n" + "Label { color: blue; }";
4146

42-
Label label = createTestLabel(cssString);
47+
Label label = css.createTestLabel(cssString);
4348

4449
RGB rgb = label.getForeground().getRGB();
4550
assertEquals(RGB_BLUE, rgb);
@@ -49,7 +54,7 @@ void testTwoLevelsWildcard() {
4954
void testOneLevelWildcardOneSpecific() {
5055
String cssString = "Shell > * > Label { color: red; } \n" + "Label { color: blue; }";
5156

52-
Label label = createTestLabel(cssString);
57+
Label label = css.createTestLabel(cssString);
5358

5459
RGB rgb = label.getForeground().getRGB();
5560
assertEquals(RGB_RED, rgb);
@@ -59,7 +64,7 @@ void testOneLevelWildcardOneSpecific() {
5964
void testDescendentsWildcard() {
6065
String cssString = "Shell * { color: red; } \n" + "Label { color: blue; }";
6166

62-
Label label = createTestLabel(cssString);
67+
Label label = css.createTestLabel(cssString);
6368

6469
RGB rgb = label.getForeground().getRGB();
6570
assertEquals(RGB_BLUE, rgb);
@@ -69,25 +74,25 @@ void testDescendentsWildcard() {
6974
void testDescendentsSpecific() {
7075
String cssString = "Shell Label { color: red; } \n" + "Label { color: blue; }";
7176

72-
Label label = createTestLabel(cssString);
77+
Label label = css.createTestLabel(cssString);
7378

7479
RGB rgb = label.getForeground().getRGB();
7580
assertEquals(RGB_RED, rgb);
7681
}
7782

7883
@Test
7984
void testOriginalBugReport() {
80-
String css = """
85+
String cssString = """
8186
Shell, Shell > *, Shell > * > * {
8287
background-color: red;
8388
}
8489
ToolBar {
8590
background-color: blue;
8691
}""";
8792

88-
engine = createEngine(css, display);
93+
CSSEngine engine = css.createEngine(cssString);
8994

90-
Shell shell = createShellWithToolbars(display);
95+
Shell shell = createShellWithToolbars(css.getDisplay());
9196

9297
// Apply styles
9398
engine.applyStyles(shell, true);
@@ -99,7 +104,7 @@ void testOriginalBugReport() {
99104

100105
@Test
101106
void testOriginalBugReportDifferentOrder() {
102-
String css = """
107+
String cssString = """
103108
ToolBar {
104109
background-color: blue;
105110
}\
@@ -108,10 +113,10 @@ void testOriginalBugReportDifferentOrder() {
108113
}
109114
""";
110115

111-
engine = createEngine(css, display);
116+
CSSEngine engine = css.createEngine(cssString);
112117

113118
// Create widgets
114-
Shell shell = createShellWithToolbars(display);
119+
Shell shell = createShellWithToolbars(css.getDisplay());
115120

116121
// Apply styles
117122
engine.applyStyles(shell, true);

tests/org.eclipse.e4.ui.tests.css.swt/src/org/eclipse/e4/ui/tests/css/swt/Bug459961Test.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,14 +20,18 @@
2020
import org.eclipse.swt.widgets.Display;
2121
import org.eclipse.swt.widgets.Label;
2222
import org.junit.jupiter.api.Test;
23+
import org.junit.jupiter.api.extension.RegisterExtension;
2324

24-
public class Bug459961Test extends CSSSWTTestCase {
25+
public class Bug459961Test {
26+
27+
@RegisterExtension
28+
CssSwtEngine css = new CssSwtEngine();
2529

2630
@Test
2731
void testRegularColorConstantReference() {
2832
String cssString = "Label { background-color: COLOR-GREEN; }";
2933

30-
Label label = createTestLabel(cssString);
34+
Label label = css.createTestLabel(cssString);
3135

3236
RGBA expected = Display.getDefault().getSystemColor(SWT.COLOR_GREEN).getRGBA();
3337
RGBA actual = label.getBackground().getRGBA();
@@ -38,7 +42,7 @@ void testRegularColorConstantReference() {
3842
void testTransparentColorConstantReference() {
3943
String cssString = "Label { background-color: COLOR-TRANSPARENT; }";
4044

41-
Label label = createTestLabel(cssString);
45+
Label label = css.createTestLabel(cssString);
4246

4347
RGBA expected = Display.getDefault().getSystemColor(SWT.COLOR_TRANSPARENT).getRGBA();
4448
RGBA actual = label.getBackground().getRGBA();

tests/org.eclipse.e4.ui.tests.css.swt/src/org/eclipse/e4/ui/tests/css/swt/ButtonTest.java

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,23 +15,32 @@
1515
*******************************************************************************/
1616
package org.eclipse.e4.ui.tests.css.swt;
1717

18+
import static org.eclipse.e4.ui.tests.css.swt.CssSwtEngine.BLUE;
19+
import static org.eclipse.e4.ui.tests.css.swt.CssSwtEngine.RED;
1820
import static org.junit.jupiter.api.Assertions.assertEquals;
1921
import static org.junit.jupiter.api.Assertions.assertNotEquals;
2022

23+
import org.eclipse.e4.ui.css.core.engine.CSSEngine;
2124
import org.eclipse.swt.SWT;
2225
import org.eclipse.swt.graphics.FontData;
2326
import org.eclipse.swt.graphics.RGB;
2427
import org.eclipse.swt.layout.FillLayout;
2528
import org.eclipse.swt.widgets.Button;
2629
import org.eclipse.swt.widgets.Composite;
30+
import org.eclipse.swt.widgets.Display;
2731
import org.eclipse.swt.widgets.Shell;
2832
import org.junit.jupiter.api.Disabled;
2933
import org.junit.jupiter.api.Test;
34+
import org.junit.jupiter.api.extension.RegisterExtension;
3035

31-
public class ButtonTest extends CSSSWTTestCase {
36+
public class ButtonTest {
37+
38+
@RegisterExtension
39+
CssSwtEngine css = new CssSwtEngine();
3240

3341
protected Button createTestButton(String styleSheet, int buttonStyle) {
34-
engine = createEngine(styleSheet, display);
42+
Display display = css.getDisplay();
43+
CSSEngine engine = css.createEngine(styleSheet);
3544

3645
// Create widgets
3746
Shell shell = new Shell(display, SWT.SHELL_TRIM);
@@ -102,7 +111,7 @@ void testSelectedPseudo() {
102111
SWT.CHECK);
103112
assertEquals(RED, buttonToTest.getForeground().getRGB());
104113
buttonToTest.setSelection(true);
105-
engine.applyStyles(buttonToTest.getShell(), true);
114+
css.getEngine().applyStyles(buttonToTest.getShell(), true);
106115
assertEquals(BLUE, buttonToTest.getForeground().getRGB());
107116
}
108117

0 commit comments

Comments
 (0)