From d1784fe312ede9b8d47f94d9f4218dbb65a9c0b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20M=C3=BCllner?= Date: Thu, 22 Jun 2023 18:10:48 +0200 Subject: [PATCH] tests: Remove interactive tests The tests rely on the ability to run Clutter as stand-alone app, which hasn't been possible for quite a while now. Event handling was broken long before that, plus tests that need a human to run them and evaluate the result aren't that useful to begin with. It would be neat to test our CSS rendering by setting up a stage, capturing it and comparing it to a reference image. But writing some code that exercises backgrounds, borders etc. is hardly the obstacle to make that happen, and not worth carrying around dead code. Part-of: --- tests/interactive/background-repeat.js | 29 -- tests/interactive/background-size.js | 85 ----- tests/interactive/border-radius.js | 62 ---- tests/interactive/border-width.js | 59 ---- tests/interactive/borders.js | 134 -------- tests/interactive/box-layout.js | 86 ----- tests/interactive/box-shadow-animated.js | 82 ----- tests/interactive/box-shadows.js | 57 ---- tests/interactive/calendar.js | 29 -- tests/interactive/css-fonts.js | 41 --- tests/interactive/entry.js | 59 ---- tests/interactive/icons.js | 80 ----- tests/interactive/inline-style.js | 47 --- tests/interactive/scroll-view-sizing.js | 398 ----------------------- tests/interactive/scrolling.js | 53 --- tests/interactive/test-title.js | 28 -- tests/interactive/transitions.js | 36 -- tests/testcommon/100-200.svg | 21 -- tests/testcommon/200-100.svg | 21 -- tests/testcommon/200-200.svg | 21 -- tests/testcommon/border-image.png | Bin 981 -> 0 bytes tests/testcommon/face-plain.png | Bin 4298 -> 0 bytes tests/testcommon/test.css | 112 ------- tests/testcommon/ui.js | 31 -- 24 files changed, 1571 deletions(-) delete mode 100644 tests/interactive/background-repeat.js delete mode 100644 tests/interactive/background-size.js delete mode 100644 tests/interactive/border-radius.js delete mode 100644 tests/interactive/border-width.js delete mode 100644 tests/interactive/borders.js delete mode 100644 tests/interactive/box-layout.js delete mode 100644 tests/interactive/box-shadow-animated.js delete mode 100644 tests/interactive/box-shadows.js delete mode 100644 tests/interactive/calendar.js delete mode 100644 tests/interactive/css-fonts.js delete mode 100644 tests/interactive/entry.js delete mode 100644 tests/interactive/icons.js delete mode 100644 tests/interactive/inline-style.js delete mode 100644 tests/interactive/scroll-view-sizing.js delete mode 100644 tests/interactive/scrolling.js delete mode 100755 tests/interactive/test-title.js delete mode 100644 tests/interactive/transitions.js delete mode 100644 tests/testcommon/100-200.svg delete mode 100644 tests/testcommon/200-100.svg delete mode 100644 tests/testcommon/200-200.svg delete mode 100644 tests/testcommon/border-image.png delete mode 100644 tests/testcommon/face-plain.png delete mode 100644 tests/testcommon/test.css delete mode 100644 tests/testcommon/ui.js diff --git a/tests/interactive/background-repeat.js b/tests/interactive/background-repeat.js deleted file mode 100644 index 2b83411c4..000000000 --- a/tests/interactive/background-repeat.js +++ /dev/null @@ -1,29 +0,0 @@ -// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- - -const UI = imports.testcommon.ui; - -const Clutter = imports.gi.Clutter; -const St = imports.gi.St; - -function test() { - let stage = new Clutter.Stage({ width: 640, height: 480 }); - UI.init(stage); - - let vbox = new St.BoxLayout({ width: stage.width, - height: stage.height, - style: 'background: #ffee88;' }); - stage.add_actor(vbox); - - let scroll = new St.ScrollView(); - vbox.add(scroll, { expand: true }); - - let box = new St.BoxLayout({ vertical: true }); - scroll.add_actor(box); - - let contents = new St.Widget({ width: 1000, height: 1000, - style_class: 'background-image background-repeat' }); - box.add_actor(contents); - - UI.main(stage); -} -test(); diff --git a/tests/interactive/background-size.js b/tests/interactive/background-size.js deleted file mode 100644 index 39c3bd8f4..000000000 --- a/tests/interactive/background-size.js +++ /dev/null @@ -1,85 +0,0 @@ -// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- - -const UI = imports.testcommon.ui; - -const Cogl = imports.gi.Cogl; -const Clutter = imports.gi.Clutter; -const Meta = imports.gi.Meta; -const St = imports.gi.St; - - -function test() { - Meta.init(); - - let stage = global.backend.get_stage(); - UI.init(stage); - - let vbox = new St.BoxLayout({ style: 'background: #ffee88;' }); - vbox.add_constraint(new Clutter.BindConstraint({ source: stage, - coordinate: Clutter.BindCoordinate.SIZE })); - stage.add_actor(vbox); - - let scroll = new St.ScrollView(); - vbox.add(scroll, { expand: true }); - - vbox = new St.BoxLayout({ vertical: true, - style: 'padding: 10px;' - + 'spacing: 20px;' }); - scroll.add_actor(vbox); - - let tbox = null; - - function addTestCase(image, size, backgroundSize, useCairo) { - let obin = new St.Bin({ style: 'border: 3px solid green;' }); - tbox.add(obin); - - let [width, height] = size; - let bin = new St.Bin({ style_class: 'background-image-' + image, - width: width, - height: height, - style: `${useCairo - ? 'border: 1px solid transparent;' : '' - } background-size: ${backgroundSize};`, - x_fill: true, - y_fill: true - }); - obin.set_child(bin); - - bin.set_child(new St.Label({ text: backgroundSize + (useCairo ? ' (cairo)' : ' (cogl)'), - style: 'font-size: 15px;' - + 'text-align: center;' - })); - } - - function addTestLine(image, size) { - const backgroundSizes = ["auto", "contain", "cover", "200px 200px", "100px 100px", "100px 200px"]; - - let [width, height] = size; - vbox.add(new St.Label({ text: image + '.svg / ' + width + '×' + height, - style: 'font-size: 15px;' - + 'text-align: center;' - })); - - tbox = new St.BoxLayout({ style: 'spacing: 20px;' }); - vbox.add(tbox); - - for (let s of backgroundSizes) - addTestCase(image, size, s, false); - for (let s of backgroundSizes) - addTestCase(image, size, s, true); - } - - function addTestImage(image) { - const containerSizes = [[100, 100], [200, 200], [250, 250], [100, 250], [250, 100]]; - - for (let size of containerSizes) - addTestLine(image, size); - } - - addTestImage ('200-200'); - addTestImage ('200-100'); - addTestImage ('100-200'); - - UI.main(stage); -} -test(); diff --git a/tests/interactive/border-radius.js b/tests/interactive/border-radius.js deleted file mode 100644 index 3b7d3d306..000000000 --- a/tests/interactive/border-radius.js +++ /dev/null @@ -1,62 +0,0 @@ -// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- - -const UI = imports.testcommon.ui; - -const Clutter = imports.gi.Clutter; -const St = imports.gi.St; - -function test() { - let stage = new Clutter.Stage({ width: 640, height: 480 }); - UI.init(stage); - - let vbox = new St.BoxLayout({ width: stage.width, - height: stage.height, - style: 'background: #ffee88;' }); - stage.add_actor(vbox); - - let scroll = new St.ScrollView(); - vbox.add(scroll, { expand: true }); - - let box = new St.BoxLayout({ vertical: true, - style: 'padding: 10px;' - + 'spacing: 20px;' }); - scroll.add_actor(box); - - function addTestCase(radii, useGradient) { - let background; - if (useGradient) - background = 'background-gradient-direction: vertical;' - + 'background-gradient-start: white;' - + 'background-gradient-end: gray;'; - else - background = 'background: white;'; - - box.add(new St.Label({ text: "border-radius: " + radii + ";", - style: 'border: 1px solid black; ' - + 'border-radius: ' + radii + ';' - + 'padding: 5px;' + background }), - { x_fill: false }); - } - - // uniform backgrounds - addTestCase(" 0px 5px 10px 15px", false); - addTestCase(" 5px 10px 15px 0px", false); - addTestCase("10px 15px 0px 5px", false); - addTestCase("15px 0px 5px 10px", false); - - // gradient backgrounds - addTestCase(" 0px 5px 10px 15px", true); - addTestCase(" 5px 10px 15px 0px", true); - addTestCase("10px 15px 0px 5px", true); - addTestCase("15px 0px 5px 10px", true); - - // border-radius reduction - // these should all take the cairo fallback, - // so don't bother testing w/ or w/out gradients. - addTestCase("200px 200px 200px 200px", false); - addTestCase("200px 200px 0px 200px", false); - addTestCase("999px 0px 999px 0px", false); - - UI.main(stage); -} -test(); diff --git a/tests/interactive/border-width.js b/tests/interactive/border-width.js deleted file mode 100644 index cb84187e0..000000000 --- a/tests/interactive/border-width.js +++ /dev/null @@ -1,59 +0,0 @@ -// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- - -const UI = imports.testcommon.ui; - -const Clutter = imports.gi.Clutter; -const St = imports.gi.St; - -function test() { - let stage = new Clutter.Stage({ width: 640, height: 480 }); - UI.init(stage); - - let vbox = new St.BoxLayout({ width: stage.width, - height: stage.height, - style: 'padding: 10px; background: #ffee88;' - }); - stage.add_actor(vbox); - - let scroll = new St.ScrollView(); - vbox.add(scroll, { expand: true }); - - let box = new St.BoxLayout({ vertical: true, - style: 'spacing: 20px;' }); - scroll.add_actor(box); - - function addTestCase(borders, useGradient) { - let background; - if (useGradient) - background = 'background-gradient-direction: vertical;' - + 'background-gradient-start: white;' - + 'background-gradient-end: gray;'; - else - background = 'background: white;'; - - let border_style = "border-top: " + borders[St.Side.TOP] + " solid black;\n" + - "border-right: " + borders[St.Side.RIGHT] + " solid black;\n" + - "border-bottom: " + borders[St.Side.BOTTOM] + " solid black;\n" + - "border-left: " + borders[St.Side.LEFT] + " solid black;"; - box.add(new St.Label({ text: border_style, - style: border_style - + 'border-radius: 0px 5px 15px 25px;' - + 'padding: 5px;' + background }), - { x_fill: false }); - } - - // uniform backgrounds - addTestCase([" 0px", " 5px", "10px", "15px"], false); - addTestCase([" 5px", "10px", "15px", " 0px"], false); - addTestCase(["10px", "15px", " 0px", " 5px"], false); - addTestCase(["15px", " 0px", " 5px", "10px"], false); - - // gradient backgrounds - addTestCase([" 0px", " 5px", "10px", "15px"], true); - addTestCase([" 5px", "10px", "15px", " 0px"], true); - addTestCase(["10px", "15px", " 0px", " 5px"], true); - addTestCase(["15px", " 0px", " 5px", "10px"], true); - - UI.main(stage); -} -test(); diff --git a/tests/interactive/borders.js b/tests/interactive/borders.js deleted file mode 100644 index 23212e4fb..000000000 --- a/tests/interactive/borders.js +++ /dev/null @@ -1,134 +0,0 @@ -// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- - -const UI = imports.testcommon.ui; - -const Clutter = imports.gi.Clutter; -const St = imports.gi.St; - -function test() { - let stage = new Clutter.Stage({ width: 640, height: 480 }); - UI.init(stage); - - let vbox = new St.BoxLayout({ width: stage.width, - height: stage.height, - style: 'background: #ffee88;' }); - stage.add_actor(vbox); - - let scroll = new St.ScrollView(); - vbox.add(scroll, { expand: true }); - - let box = new St.BoxLayout({ vertical: true, - style: 'padding: 10px;' - + 'spacing: 20px;' }); - scroll.add_actor(box); - - box.add(new St.Label({ text: "Hello World", - style: 'border: 1px solid black; ' - + 'padding: 5px;' })); - - box.add(new St.Label({ text: "Hello Round World", - style: 'border: 3px solid green; ' - + 'border-radius: 8px; ' - + 'padding: 5px;' })); - - box.add(new St.Label({ text: "Hello Background", - style: 'border: 3px solid green; ' - + 'border-radius: 8px; ' - + 'background: white; ' - + 'padding: 5px;' })); - - box.add(new St.Label({ text: "Hello Translucent Black Border", - style: 'border: 3px solid rgba(0, 0, 0, 0.4); ' - + 'background: white; ' })); - - box.add(new St.Label({ text: "Hello Translucent Background", - style: 'background: rgba(255, 255, 255, 0.3);' })); - - box.add(new St.Label({ text: "Border, Padding, Content: 20px" })); - - let b1 = new St.BoxLayout({ vertical: true, - style: 'border: 20px solid black; ' - + 'background: white; ' - + 'padding: 20px;' }); - box.add(b1); - - b1.add(new St.BoxLayout({ width: 20, height: 20, - style: 'background: black' })); - - box.add(new St.Label({ text: "Translucent big blue border, with rounding", - style: 'border: 20px solid rgba(0, 0, 255, 0.2); ' - + 'border-radius: 10px; ' - + 'background: white; ' - + 'padding: 10px;' })); - - box.add(new St.Label({ text: "Transparent border", - style: 'border: 20px solid transparent; ' - + 'background: white; ' - + 'padding: 10px;' })); - - box.add(new St.Label({ text: "Border Image", - style_class: "border-image", - style: "padding: 10px;" })); - - box.add(new St.Label({ text: "Border Image with Gradient", - style_class: 'border-image-with-background-gradient', - style: "padding: 10px;" - + 'background-gradient-direction: vertical;' })); - - box.add(new St.Label({ text: "Rounded, framed, shadowed gradients" })); - - let framedGradients = new St.BoxLayout({ vertical: false, - style: 'padding: 10px; spacing: 12px;' }); - box.add(framedGradients); - - function addGradientCase(direction, borderWidth, borderRadius, extra) { - let gradientBox = new St.BoxLayout({ style_class: 'background-gradient', - style: 'border: ' + borderWidth + 'px solid #8b0000;' - + 'border-radius: ' + borderRadius + 'px;' - + 'background-gradient-direction: ' + direction + ';' - + 'width: 32px;' - + 'height: 32px;' - + extra }); - framedGradients.add(gradientBox, { x_fill: false, y_fill: false } ); - } - - addGradientCase ('horizontal', 0, 5, 'box-shadow: 0px 0px 0px 0px rgba(0,0,0,0.5);'); - addGradientCase ('horizontal', 2, 5, 'box-shadow: 0px 2px 0px 0px rgba(0,255,0,0.5);'); - addGradientCase ('horizontal', 5, 2, 'box-shadow: 2px 0px 0px 0px rgba(0,0,255,0.5);'); - addGradientCase ('horizontal', 5, 20, 'box-shadow: 0px 0px 4px 0px rgba(255,0,0,0.5);'); - addGradientCase ('vertical', 0, 5, 'box-shadow: 0px 0px 0px 4px rgba(0,0,0,0.5);'); - addGradientCase ('vertical', 2, 5, 'box-shadow: 0px 0px 4px 4px rgba(0,0,0,0.5);'); - addGradientCase ('vertical', 5, 2, 'box-shadow: -2px -2px 6px 0px rgba(0,0,0,0.5);'); - addGradientCase ('vertical', 5, 20, 'box-shadow: -2px -2px 0px 6px rgba(0,0,0,0.5);'); - - box.add(new St.Label({ text: "Rounded, framed, shadowed images" })); - - let framedImages = new St.BoxLayout({ vertical: false, - style: 'padding: 10px; spacing: 6px;' }); - box.add(framedImages); - - function addBackgroundImageCase(borderWidth, borderRadius, width, height, extra) { - let imageBox = new St.BoxLayout({ style_class: 'background-image', - style: 'border: ' + borderWidth + 'px solid #8b8b8b;' - + 'border-radius: ' + borderRadius + 'px;' - + 'width: ' + width + 'px;' - + 'height: ' + height + 'px;' - + extra }); - framedImages.add(imageBox, { x_fill: false, y_fill: false } ); - } - - addBackgroundImageCase (0, 0, 32, 32, 'background-position: 2px 5px'); - addBackgroundImageCase (0, 0, 16, 16, '-st-background-image-shadow: 1px 1px 4px 0px rgba(0,0,0,0.5); background-color: rgba(0,0,0,0)'); - addBackgroundImageCase (0, 5, 32, 32, '-st-background-image-shadow: 0px 0px 0px 0px rgba(0,0,0,0.5);'); - addBackgroundImageCase (2, 5, 32, 32, '-st-background-image-shadow: 0px 2px 0px 0px rgba(0,255,0,0.5);'); - addBackgroundImageCase (5, 2, 32, 32, '-st-background-image-shadow: 2px 0px 0px 0px rgba(0,0,255,0.5);'); - addBackgroundImageCase (5, 20, 32, 32, '-st-background-image-shadow: 0px 0px 4px 0px rgba(255,0,0,0.5);'); - addBackgroundImageCase (0, 5, 48, 48, '-st-background-image-shadow: 0px 0px 0px 4px rgba(0,0,0,0.5);'); - addBackgroundImageCase (5, 5, 48, 48, '-st-background-image-shadow: 0px 0px 4px 4px rgba(0,0,0,0.5);'); - addBackgroundImageCase (0, 5, 64, 64, '-st-background-image-shadow: -2px -2px 6px 0px rgba(0,0,0,0.5);'); - addBackgroundImageCase (5, 5, 64, 64, '-st-background-image-shadow: -2px -2px 0px 6px rgba(0,0,0,0.5);'); - addBackgroundImageCase (0, 5, 32, 32, 'background-position: 2px 5px'); - - UI.main(stage); -} -test(); diff --git a/tests/interactive/box-layout.js b/tests/interactive/box-layout.js deleted file mode 100644 index 5eb83a46b..000000000 --- a/tests/interactive/box-layout.js +++ /dev/null @@ -1,86 +0,0 @@ -// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- - -const UI = imports.testcommon.ui; - -const Clutter = imports.gi.Clutter; -const St = imports.gi.St; - -function test() { - let stage = new Clutter.Stage(); - UI.init(stage); - - let vbox = new St.BoxLayout({ vertical: true, - width: stage.width, - height: stage.height, - style: 'padding: 10px;' - + 'spacing: 10px;' }); - stage.add_actor(vbox); - - //////////////////////////////////////////////////////////////////////////////// - - let colored_boxes = new St.BoxLayout({ vertical: true, - width: 200, - height: 200, - style: 'border: 2px solid black;' }); - vbox.add(colored_boxes, { x_fill: false, - x_align: St.Align.MIDDLE }); - - let b2 = new St.BoxLayout({ style: 'border: 2px solid #666666' }); - colored_boxes.add(b2, { expand: true }); - - b2.add(new St.Label({ text: "Expand", - style: 'border: 1px solid #aaaaaa; ' - + 'background: #ffeecc' }), - { expand: true }); - b2.add(new St.Label({ text: "Expand\nNo Fill", - style: 'border: 1px solid #aaaaaa; ' - + 'background: #ccffaa' }), - { expand: true, - x_fill: false, - x_align: St.Align.MIDDLE, - y_fill: false, - y_align: St.Align.MIDDLE }); - - colored_boxes.add(new St.Label({ text: "Default", - style: 'border: 1px solid #aaaaaa; ' - + 'background: #cceeff' })); - - //////////////////////////////////////////////////////////////////////////////// - - function createCollapsableBox(width) { - let b = new St.BoxLayout({ width: width, - style: 'border: 1px solid black;' - + 'font: 13px Sans;' }); - b.add(new St.Label({ text: "Very Very Very Long", - style: 'background: #ffaacc;' - + 'padding: 5px; ' - + 'border: 1px solid #666666;' }), - { expand: true }); - b.add(new St.Label({ text: "Very Very Long", - style: 'background: #ffeecc; ' - + 'padding: 5px; ' - + 'border: 1px solid #666666;' }), - { expand: true }); - b.add(new St.Label({ text: "Very Long", - style: 'background: #ccffaa; ' - + 'padding: 5px; ' - + 'border: 1px solid #666666;' }), - { expand: true }); - b.add(new St.Label({ text: "Short", - style: 'background: #cceeff; ' - + 'padding: 5px; ' - + 'border: 1px solid #666666;' }), - { expand: true }); - - return b; - } - - for (let width = 200; width <= 500; width += 60 ) { - vbox.add(createCollapsableBox (width), - { x_fill: false, - x_align: St.Align.MIDDLE }); - } - - UI.main(stage); -} -test(); diff --git a/tests/interactive/box-shadow-animated.js b/tests/interactive/box-shadow-animated.js deleted file mode 100644 index 6e96c43b6..000000000 --- a/tests/interactive/box-shadow-animated.js +++ /dev/null @@ -1,82 +0,0 @@ -// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- - -const UI = imports.testcommon.ui; - -const Clutter = imports.gi.Clutter; -const GLib = imports.gi.GLib; -const St = imports.gi.St; - -const DELAY = 2000; - -function resize_animated(label) { - if (label.width == 100) { - label.save_easing_state(); - label.set_easing_mode(Clutter.AnimationMode.EASE_OUT_QUAD); - label.set_easing_duration(DELAY - 50); - label.set_size(500, 500); - label.restore_easing_state(); - } else { - label.save_easing_state(); - label.set_easing_mode(Clutter.AnimationMode.EASE_OUT_QUAD); - label.set_easing_duration(DELAY - 50); - label.set_size(100, 100); - label.restore_easing_state(); - } -} - -function get_css_style(shadow_style) -{ - return 'border: 20px solid black;' + - 'border-radius: 20px;' + - 'background-color: white; ' + - 'padding: 5px;' + shadow_style; -} - -function test() { - let stage = new Clutter.Stage({ width: 1000, height: 600 }); - UI.init(stage); - - let iter = 0; - let shadowStyles = [ 'box-shadow: 3px 50px 0px 4px rgba(0,0,0,0.5);', - 'box-shadow: 3px 4px 10px 4px rgba(0,0,0,0.5);', - 'box-shadow: 0px 50px 0px 0px rgba(0,0,0,0.5);', - 'box-shadow: 100px 100px 20px 4px rgba(0,0,0,0.5);']; - let label1 = new St.Label({ style: get_css_style(shadowStyles[iter]), - text: shadowStyles[iter], - x: 20, - y: 20, - width: 100, - height: 100 - }); - stage.add_actor(label1); - let label2 = new St.Label({ style: get_css_style(shadowStyles[iter]), - text: shadowStyles[iter], - x: 500, - y: 20, - width: 100, - height: 100 - }); - stage.add_actor(label2); - - resize_animated(label1); - resize_animated(label2); - GLib.timeout_add(GLib.PRIORITY_DEFAULT, DELAY, () => { - log(label1 + label1.get_size()); - resize_animated(label1); - resize_animated(label2); - return true; - }); - - GLib.timeout_add(GLib.PRIORITY_DEFAULT, 2 * DELAY, () => { - iter += 1; - iter %= shadowStyles.length; - label1.set_style(get_css_style(shadowStyles[iter])); - label1.set_text(shadowStyles[iter]); - label2.set_style(get_css_style(shadowStyles[iter])); - label2.set_text(shadowStyles[iter]); - return true; - }); - - UI.main(stage); -} -test(); diff --git a/tests/interactive/box-shadows.js b/tests/interactive/box-shadows.js deleted file mode 100644 index 4a14df1c9..000000000 --- a/tests/interactive/box-shadows.js +++ /dev/null @@ -1,57 +0,0 @@ -// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- - -const UI = imports.testcommon.ui; - -const Clutter = imports.gi.Clutter; -const St = imports.gi.St; - -function test() { - let stage = new Clutter.Stage({ width: 640, height: 480 }); - UI.init(stage); - - let vbox = new St.BoxLayout({ width: stage.width, - height: stage.height, - style: 'background: #ffee88;' }); - stage.add_actor(vbox); - - let scroll = new St.ScrollView(); - vbox.add(scroll, { expand: true }); - - let box = new St.BoxLayout({ vertical: true, - style: 'padding: 10px;' - + 'spacing: 20px;' }); - scroll.add_actor(box); - - - function addTestCase(inset, offsetX, offsetY, blur, spread) { - let shadowStyle = 'box-shadow: ' + (inset ? 'inset ' : '') + - offsetX + 'px ' + offsetY + 'px ' + blur + 'px ' + - (spread > 0 ? (' ' + spread + 'px ') : '') + - 'rgba(0,0,0,0.5);'; - let label = new St.Label({ style: 'border: 4px solid black;' + - 'border-radius: 5px;' + - 'background-color: white; ' + - 'padding: 5px;' + - shadowStyle, - text: shadowStyle }); - box.add(label, { x_fill: false, y_fill: false } ); - } - - addTestCase (false, 3, 4, 0, 0); - addTestCase (false, 3, 4, 0, 4); - addTestCase (false, 3, 4, 4, 0); - addTestCase (false, 3, 4, 4, 4); - addTestCase (false, -3, -4, 4, 0); - addTestCase (false, 0, 0, 0, 4); - addTestCase (false, 0, 0, 4, 0); - addTestCase (true, 3, 4, 0, 0); - addTestCase (true, 3, 4, 0, 4); - addTestCase (true, 3, 4, 4, 0); - addTestCase (true, 3, 4, 4, 4); - addTestCase (true, -3, -4, 4, 0); - addTestCase (true, 0, 0, 0, 4); - addTestCase (true, 0, 0, 4, 0); - - UI.main(stage); -} -test(); diff --git a/tests/interactive/calendar.js b/tests/interactive/calendar.js deleted file mode 100644 index bc263867d..000000000 --- a/tests/interactive/calendar.js +++ /dev/null @@ -1,29 +0,0 @@ -// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- - -const UI = imports.testcommon.ui; - -const Clutter = imports.gi.Clutter; -const St = imports.gi.St; - -function test() { - let stage = new Clutter.Stage({ width: 400, height: 400 }); - UI.init(stage); - - let vbox = new St.BoxLayout({ vertical: true, - width: stage.width, - height: stage.height, - style: 'padding: 10px; spacing: 10px; font: 15px sans-serif;' }); - stage.add_actor(vbox); - - // Calendar can only be imported after Environment.init() - const Calendar = imports.ui.calendar; - let calendar = new Calendar.Calendar(); - vbox.add(calendar, - { expand: true, - x_fill: false, x_align: St.Align.MIDDLE, - y_fill: false, y_align: St.Align.START }); - calendar.setEventSource(new Calendar.EmptyEventSource()); - - UI.main(stage); -} -test(); diff --git a/tests/interactive/css-fonts.js b/tests/interactive/css-fonts.js deleted file mode 100644 index 56c19055d..000000000 --- a/tests/interactive/css-fonts.js +++ /dev/null @@ -1,41 +0,0 @@ -// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- - -const UI = imports.testcommon.ui; - -const Clutter = imports.gi.Clutter; -const St = imports.gi.St; - -function test() { - let stage = new Clutter.Stage(); - UI.init(stage); - - let b = new St.BoxLayout({ vertical: true, - width: stage.width, - height: stage.height }); - stage.add_actor(b); - - let t; - - t = new St.Label({ "text": "Bold", style_class: "bold" }); - b.add(t); - t = new St.Label({ "text": "Monospace", style_class: "monospace" }); - b.add(t); - t = new St.Label({ "text": "Italic", style_class: "italic" }); - b.add(t); - t = new St.Label({ "text": "Bold Italic", style_class: "bold italic" }); - b.add(t); - t = new St.Label({ "text": "Big Italic", style_class: "big italic" }); - b.add(t); - t = new St.Label({ "text": "Big Bold", style_class: "big bold" }); - b.add(t); - - let b2 = new St.BoxLayout({ vertical: true, style_class: "monospace" }); - b.add(b2); - t = new St.Label({ "text": "Big Monospace", style_class: "big" }); - b2.add(t); - t = new St.Label({ "text": "Italic Monospace", style_class: "italic" }); - b2.add(t); - - UI.main(stage); -} -test(); diff --git a/tests/interactive/entry.js b/tests/interactive/entry.js deleted file mode 100644 index 59b037505..000000000 --- a/tests/interactive/entry.js +++ /dev/null @@ -1,59 +0,0 @@ -// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- - -const UI = imports.testcommon.ui; - -const Clutter = imports.gi.Clutter; -const GLib = imports.gi.GLib; -const St = imports.gi.St; - -function test() { - let stage = new Clutter.Stage({ width: 400, height: 400 }); - UI.init(stage); - - let vbox = new St.BoxLayout({ vertical: true, - width: stage.width, - height: stage.height, - style: 'padding: 10px; spacing: 10px; font: 32px sans-serif;' }); - stage.add_actor(vbox); - - let entry = new St.Entry({ style: 'border: 1px solid black; text-shadow: 0 2px red;', - text: 'Example text' }); - vbox.add(entry, - { expand: true, - y_fill: false, y_align: St.Align.MIDDLE }); - entry.grab_key_focus(); - - let entryTextHint = new St.Entry({ style: 'border: 1px solid black; text-shadow: 0 2px red;', - hint_text: 'Hint text' }); - vbox.add(entryTextHint, - { expand: true, - y_fill: false, y_align: St.Align.MIDDLE }); - - let hintActor = new St.Label({ text: 'Hint actor' }); - let entryHintActor = new St.Entry({ style: 'border: 1px solid black; text-shadow: 0 2px red;', - hint_actor: hintActor }); - vbox.add(entryHintActor, - { expand: true, - y_fill: false, y_align: St.Align.MIDDLE }); - - let hintActor2 = new St.Label({ text: 'Hint both (actor)' }); - let entryHintBoth = new St.Entry({ style: 'border: 1px solid black; text-shadow: 0 2px red;', - hint_actor: hintActor2 }); - let idx = 0; - GLib.timeout_add_seconds(GLib.PRIORITY_DEFAULT, 1, function() { - idx++; - - if (idx % 2 == 0) - entryHintBoth.hint_actor = hintActor2; - else - entryHintBoth.hint_text = 'Hint both (text)'; - - return true; - }); - vbox.add(entryHintBoth, - { expand: true, - y_fill: false, y_align: St.Align.MIDDLE }); - - UI.main(stage); -} -test(); diff --git a/tests/interactive/icons.js b/tests/interactive/icons.js deleted file mode 100644 index 55afdbf2b..000000000 --- a/tests/interactive/icons.js +++ /dev/null @@ -1,80 +0,0 @@ -// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- - -const UI = imports.testcommon.ui; - -const Clutter = imports.gi.Clutter; -const St = imports.gi.St; - -function test() { - let stage = new Clutter.Stage(); - UI.init(stage); - - let b = new St.BoxLayout({ vertical: true, - width: stage.width, - height: stage.height }); - stage.add_actor(b); - - function addTest(label, icon_props) { - if (b.get_children().length > 0) - b.add (new St.BoxLayout({ style: 'background: #cccccc; border: 10px transparent white; height: 1px; ' })); - - let hb = new St.BoxLayout({ vertical: false, - style: 'spacing: 10px;' }); - - hb.add(new St.Label({ text: label }), { y_fill: false }); - hb.add(new St.Icon(icon_props)); - - b.add(hb); - } - - addTest("Symbolic", - { icon_name: 'battery-full-symbolic', - icon_size: 48 }); - addTest("Full color", - { icon_name: 'battery-full', - icon_size: 48 }); - addTest("Default size", - { icon_name: 'battery-full-symbolic' }); - addTest("Size set by property", - { icon_name: 'battery-full-symbolic', - icon_size: 32 }); - addTest("Size set by style", - { icon_name: 'battery-full-symbolic', - style: 'icon-size: 1em;' }); - addTest("16px icon in 48px icon widget", - { icon_name: 'battery-full-symbolic', - style: 'icon-size: 16px; width: 48px; height: 48px; border: 1px solid black;' }); - - function iconRow(icons, box_style) { - let hb = new St.BoxLayout({ vertical: false, style: box_style }); - - for (let iconName of icons) { - hb.add(new St.Icon({ icon_name: iconName, - icon_size: 48 })); - } - - b.add(hb); - } - - let normalCss = 'background: white; color: black; padding: 10px 10px;'; - let reversedCss = 'background: black; color: white; warning-color: #ffcc00; error-color: #ff0000; padding: 10px 10px;'; - - let batteryIcons = ['battery-full-charging-symbolic', - 'battery-full-symbolic', - 'battery-good-symbolic', - 'battery-low-symbolic', - 'battery-caution-symbolic' ]; - - let volumeIcons = ['audio-volume-high-symbolic', - 'audio-volume-medium-symbolic', - 'audio-volume-low-symbolic', - 'audio-volume-muted-symbolic' ]; - - iconRow(batteryIcons, normalCss); - iconRow(batteryIcons, reversedCss); - iconRow(volumeIcons, normalCss); - iconRow(volumeIcons, reversedCss); - - UI.main(stage); -} -test(); diff --git a/tests/interactive/inline-style.js b/tests/interactive/inline-style.js deleted file mode 100644 index 2f9000579..000000000 --- a/tests/interactive/inline-style.js +++ /dev/null @@ -1,47 +0,0 @@ -// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- - -const UI = imports.testcommon.ui; - -const Clutter = imports.gi.Clutter; -const St = imports.gi.St; - -function test() { - let stage = new Clutter.Stage(); - UI.init(stage); - - let vbox = new St.BoxLayout({ vertical: true, - width: stage.width, - height: stage.height }); - stage.add_actor(vbox); - - let hbox = new St.BoxLayout({ style: 'spacing: 12px;' }); - vbox.add(hbox); - - let text = new St.Label({ text: "Styled Text" }); - vbox.add (text); - - let size = 24; - function update_size() { - text.style = 'font-size: ' + size + 'pt'; - } - update_size(); - - let button; - - button = new St.Button ({ label: 'Smaller', style_class: 'push-button' }); - hbox.add (button); - button.connect('clicked', () => { - size /= 1.2; - update_size (); - }); - - button = new St.Button ({ label: 'Bigger', style_class: 'push-button' }); - hbox.add (button); - button.connect('clicked', () => { - size *= 1.2; - update_size (); - }); - - UI.main(stage); -} -test(); diff --git a/tests/interactive/scroll-view-sizing.js b/tests/interactive/scroll-view-sizing.js deleted file mode 100644 index dfc8118ec..000000000 --- a/tests/interactive/scroll-view-sizing.js +++ /dev/null @@ -1,398 +0,0 @@ -// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- - -const UI = imports.testcommon.ui; - -const Clutter = imports.gi.Clutter; -const GObject = imports.gi.GObject; -const Shell = imports.gi.Shell; -const St = imports.gi.St; - -// This is an interactive test of the sizing behavior of StScrollView. It -// may be interesting in the future to split out the two classes at the -// top into utility classes for testing the sizing behavior of other -// containers and actors. - -/****************************************************************************/ - -// FlowedBoxes: This is a simple actor that demonstrates an interesting -// height-for-width behavior. A set of boxes of different sizes are line-wrapped -// horizontally with the minimum horizontal size being determined by the -// largest box. It would be easy to extend this to allow doing vertical -// wrapping instead, if you wanted to see just how badly our width-for-height -// implementation is or work on fixing it. - -const BOX_HEIGHT = 20; -const BOX_WIDTHS = [ - 10, 40, 100, 20, 60, 30, 70, 10, 20, 200, 50, 70, 90, 20, 40, - 10, 40, 100, 20, 60, 30, 70, 10, 20, 200, 50, 70, 90, 20, 40, - 10, 40, 100, 20, 60, 30, 70, 10, 20, 200, 50, 70, 90, 20, 40, - 10, 40, 100, 20, 60, 30, 70, 10, 20, 200, 50, 70, 90, 20, 40, -]; - -const SPACING = 10; - -var FlowedBoxes = GObject.registerClass( -class FlowedBoxes extends St.Widget { - _init() { - super._init(); - - for (let i = 0; i < BOX_WIDTHS.length; i++) { - let child = new St.Bin({ width: BOX_WIDTHS[i], height: BOX_HEIGHT, - style: 'border: 1px solid #444444; background: #00aa44' }); - this.add_actor(child); - } - } - - vfunc_get_preferred_width(forHeight) { - let children = this.get_children(); - - let maxMinWidth = 0; - let totalNaturalWidth = 0; - - for (let i = 0; i < children.length; i++) { - let child = children[i]; - let [minWidth, naturalWidth] = child.get_preferred_width(-1); - maxMinWidth = Math.max(maxMinWidth, minWidth); - if (i != 0) - totalNaturalWidth += SPACING; - totalNaturalWidth += naturalWidth; - } - - return [maxMinWidth, totalNaturalWidth]; - } - - _layoutChildren(forWidth, callback) { - let children = this.get_children(); - - let x = 0; - let y = 0; - for (let i = 0; i < children.length; i++) { - let child = children[i]; - let [minWidth, naturalWidth] = child.get_preferred_width(-1); - let [minHeight, naturalHeight] = child.get_preferred_height(naturalWidth); - - let x1 = x; - if (x != 0) - x1 += SPACING; - let x2 = x1 + naturalWidth; - - if (x2 > forWidth) { - if (x > 0) { - x1 = 0; - y += BOX_HEIGHT + SPACING; - } - - x2 = naturalWidth; - } - - callback(child, x1, y, x2, y + naturalHeight); - x = x2; - } - - } - - vfunc_get_preferred_height(forWidth) { - let height = 0; - this._layoutChildren(forWidth, - function(child, x1, y1, x2, y2) { - height = Math.max(height, y2); - }); - - return [height, height]; - } - - vfunc_allocate(box) { - this.set_allocation(box); - - this._layoutChildren(box.x2 - box.x1, - function(child, x1, y1, x2, y2) { - child.allocate(new Clutter.ActorBox({ x1: x1, y1: y1, x2: x2, y2: y2 })); - }); - } -}); - -/****************************************************************************/ - -// SizingIllustrator: this is a container that allows interactively exploring -// the sizing behavior of the child. Lines are drawn to indicate the minimum -// and natural size of the child, and a drag handle allows the user to resize -// the child interactively and see how that affects it. -// -// This is currently only written for the case where the child is height-for-width - -var SizingIllustrator = GObject.registerClass( -class SizingIllustrator extends St.Widget { - _init() { - super._init(); - - this.minWidthLine = new St.Bin({ style: 'background: red' }); - this.add_actor(this.minWidthLine); - this.minHeightLine = new St.Bin({ style: 'background: red' }); - this.add_actor(this.minHeightLine); - - this.naturalWidthLine = new St.Bin({ style: 'background: #4444ff' }); - this.add_actor(this.naturalWidthLine); - this.naturalHeightLine = new St.Bin({ style: 'background: #4444ff' }); - this.add_actor(this.naturalHeightLine); - - this.currentWidthLine = new St.Bin({ style: 'background: #aaaaaa' }); - this.add_actor(this.currentWidthLine); - this.currentHeightLine = new St.Bin({ style: 'background: #aaaaaa' }); - this.add_actor(this.currentHeightLine); - - this.handle = new St.Bin({ style: 'background: yellow; border: 1px solid black;', - reactive: true }); - this.handle.connect('button-press-event', this._handlePressed.bind(this)); - this.handle.connect('button-release-event', this._handleReleased.bind(this)); - this.handle.connect('motion-event', this._handleMotion.bind(this)); - this.add_actor(this.handle); - - this._inDrag = false; - - this.width = 300; - this.height = 300; - } - - add(child) { - this.child = child; - this.add_child(child); - this.set_child_below_sibling(child, null); - } - - vfunc_get_preferred_width(forHeight) { - let children = this.get_children(); - for (let i = 0; i < children.length; i++) { - let child = children[i]; - let [minWidth, naturalWidth] = child.get_preferred_width(-1); - if (child == this.child) { - this.minWidth = minWidth; - this.naturalWidth = naturalWidth; - } - } - - return [0, 400]; - } - - vfunc_get_preferred_height(forWidth) { - let children = this.get_children(); - for (let i = 0; i < children.length; i++) { - let child = children[i]; - if (child == this.child) { - [this.minHeight, this.naturalHeight] = child.get_preferred_height(this.width); - } else { - let [minWidth, naturalWidth] = child.get_preferred_height(naturalWidth); - } - } - - return [0, 400]; - } - - vfunc_allocate(box) { - this.set_allocation(box); - - box = this.get_theme_node().get_content_box(box); - - let allocWidth = box.x2 - box.x1; - let allocHeight = box.y2 - box.y1; - - function alloc(child, x1, y1, x2, y2) { - child.allocate(new Clutter.ActorBox({ x1: x1, y1: y1, x2: x2, y2: y2 })); - } - - alloc(this.child, 0, 0, this.width, this.height); - alloc(this.minWidthLine, this.minWidth, 0, this.minWidth + 1, allocHeight); - alloc(this.naturalWidthLine, this.naturalWidth, 0, this.naturalWidth + 1, allocHeight); - alloc(this.currentWidthLine, this.width, 0, this.width + 1, allocHeight); - alloc(this.minHeightLine, 0, this.minHeight, allocWidth, this.minHeight + 1); - alloc(this.naturalHeightLine, 0, this.naturalHeight, allocWidth, this.naturalHeight + 1); - alloc(this.currentHeightLine, 0, this.height, allocWidth, this.height + 1); - alloc(this.handle, this.width, this.height, this.width + 10, this.height + 10); - } - - _handlePressed(handle, event) { - if (event.get_button() == 1) { - this._inDrag = true; - let [handleX, handleY] = handle.get_transformed_position(); - let [x, y] = event.get_coords(); - this._dragX = x - handleX; - this._dragY = y - handleY; - } - } - - _handleReleased(handle, event) { - if (event.get_button() == 1) { - this._inDrag = false; - } - } - - _handleMotion(handle, event) { - if (this._inDrag) { - let [x, y] = event.get_coords(); - let [actorX, actorY] = this.get_transformed_position(); - this.width = x - this._dragX - actorX; - this.height = y - this._dragY - actorY; - this.queue_relayout(); - } - } -}); - -/****************************************************************************/ - -function test() { - let stage = new Clutter.Stage({ width: 600, height: 600 }); - UI.init(stage); - - let mainBox = new St.BoxLayout({ width: stage.width, - height: stage.height, - vertical: true, - style: 'padding: 10px;' - + 'spacing: 5px;' - + 'font: 16px sans-serif;' - + 'background: black;' - + 'color: white;' }); - stage.add_actor(mainBox); - - const DOCS = 'Red lines represent minimum size, blue lines natural size. Drag yellow handle to resize ScrollView. Click on options to change.'; - - let docsLabel = new St.Label({ text: DOCS }); - docsLabel.clutter_text.line_wrap = true; - mainBox.add(docsLabel); - - let bin = new St.Bin({ x_fill: true, y_fill: true, style: 'border: 2px solid #666666;' }); - mainBox.add(bin, { x_fill: true, y_fill: true, expand: true }); - - let illustrator = new SizingIllustrator(); - bin.add_actor(illustrator); - - let scrollView = new St.ScrollView(); - illustrator.add(scrollView); - - let box = new St.BoxLayout({ vertical: true }); - scrollView.add_actor(box); - - let flowedBoxes = new FlowedBoxes(); - box.add(flowedBoxes, { expand: false, x_fill: true, y_fill: true }); - - let policyBox = new St.BoxLayout({ vertical: false }); - mainBox.add(policyBox); - - policyBox.add(new St.Label({ text: 'Horizontal Policy: ' })); - let hpolicy = new St.Button({ label: 'AUTOMATIC', style: 'text-decoration: underline; color: #4444ff;' }); - policyBox.add(hpolicy); - - let spacer = new St.Bin(); - policyBox.add(spacer, { expand: true }); - - policyBox.add(new St.Label({ text: 'Vertical Policy: '})); - let vpolicy = new St.Button({ label: 'AUTOMATIC', style: 'text-decoration: underline; color: #4444ff;' }); - policyBox.add(vpolicy); - - function togglePolicy(button) { - switch(button.label) { - case 'AUTOMATIC': - button.label = 'ALWAYS'; - break; - case 'ALWAYS': - button.label = 'NEVER'; - break; - case 'NEVER': - button.label = 'EXTERNAL'; - break; - case 'EXTERNAL': - button.label = 'AUTOMATIC'; - break; - } - scrollView.set_policy(St.PolicyType[hpolicy.label], St.PolicyType[vpolicy.label]); - } - - hpolicy.connect('clicked', () => { togglePolicy(hpolicy); }); - vpolicy.connect('clicked', () => { togglePolicy(vpolicy); }); - - let fadeBox = new St.BoxLayout({ vertical: false }); - mainBox.add(fadeBox); - - spacer = new St.Bin(); - fadeBox.add(spacer, { expand: true }); - - fadeBox.add(new St.Label({ text: 'Padding: '})); - let paddingButton = new St.Button({ label: 'No', style: 'text-decoration: underline; color: #4444ff;padding-right:3px;' }); - fadeBox.add(paddingButton); - - fadeBox.add(new St.Label({ text: 'Borders: '})); - let borderButton = new St.Button({ label: 'No', style: 'text-decoration: underline; color: #4444ff;padding-right:3px;' }); - fadeBox.add(borderButton); - - fadeBox.add(new St.Label({ text: 'Vertical Fade: '})); - let vfade = new St.Button({ label: 'No', style: 'text-decoration: underline; color: #4444ff;' }); - fadeBox.add(vfade); - - fadeBox.add(new St.Label({ text: 'Overlay scrollbars: '})); - let overlay = new St.Button({ label: 'No', style: 'text-decoration: underline; color: #4444ff;' }); - fadeBox.add(overlay); - - function togglePadding(button) { - switch(button.label) { - case 'No': - button.label = 'Yes'; - break; - case 'Yes': - button.label = 'No'; - break; - } - if (scrollView.style == null) - scrollView.style = (button.label == 'Yes' ? 'padding: 10px;' : 'padding: 0;'); - else - scrollView.style += (button.label == 'Yes' ? 'padding: 10px;' : 'padding: 0;'); - } - - paddingButton.connect('clicked', () => { togglePadding(paddingButton); }); - - function toggleBorders(button) { - switch(button.label) { - case 'No': - button.label = 'Yes'; - break; - case 'Yes': - button.label = 'No'; - break; - } - if (scrollView.style == null) - scrollView.style = (button.label == 'Yes' ? 'border: 2px solid red;' : 'border: 0;'); - else - scrollView.style += (button.label == 'Yes' ? 'border: 2px solid red;' : 'border: 0;'); - } - - borderButton.connect('clicked', () => { toggleBorders(borderButton); }); - - function toggleFade(button) { - switch(button.label) { - case 'No': - button.label = 'Yes'; - break; - case 'Yes': - button.label = 'No'; - break; - } - scrollView.set_style_class_name(button.label == 'Yes' ? 'vfade' : ''); - } - - vfade.connect('clicked', () => { toggleFade(vfade); }); - toggleFade(vfade); - - function toggleOverlay(button) { - switch(button.label) { - case 'No': - button.label = 'Yes'; - break; - case 'Yes': - button.label = 'No'; - break; - } - scrollView.overlay_scrollbars = (button.label == 'Yes'); - } - - overlay.connect('clicked', () => { toggleOverlay(overlay); }); - - UI.main(stage); -} -test(); diff --git a/tests/interactive/scrolling.js b/tests/interactive/scrolling.js deleted file mode 100644 index d16643ad2..000000000 --- a/tests/interactive/scrolling.js +++ /dev/null @@ -1,53 +0,0 @@ -// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- - -const UI = imports.testcommon.ui; - -const Clutter = imports.gi.Clutter; -const St = imports.gi.St; - - -function test() { - let stage = new Clutter.Stage(); - UI.init(stage); - - let vbox = new St.BoxLayout({ vertical: true, - width: stage.width, - height: stage.height, - style: "padding: 10px;" }); - stage.add_actor(vbox); - - let toggle = new St.Button({ label: 'Horizontal Scrolling', - toggle_mode: true }); - vbox.add(toggle); - - let v = new St.ScrollView(); - vbox.add(v, { expand: true }); - - toggle.connect('notify::checked', () => { - v.set_policy(toggle.checked ? St.PolicyType.AUTOMATIC - : St.PolicyType.NEVER, - St.PolicyType.AUTOMATIC); - }); - - let b = new St.BoxLayout({ vertical: true, - style: "border: 2px solid #880000; border-radius: 10px; padding: 0px 5px;" }); - v.add_actor(b); - - let cc_a = "a".charCodeAt(0); - let s = ""; - for (let i = 0; i < 26 * 3; i++) { - s += String.fromCharCode(cc_a + i % 26); - - let t = new St.Label({ text: s, - reactive: true }); - let line = i + 1; - t.connect('button-press-event', - function() { - log("Click on line " + line); - }); - b.add(t); - } - - UI.main(stage); -} -test(); diff --git a/tests/interactive/test-title.js b/tests/interactive/test-title.js deleted file mode 100755 index 415c3ce80..000000000 --- a/tests/interactive/test-title.js +++ /dev/null @@ -1,28 +0,0 @@ -#!/usr/bin/env gjs - -imports.gi.versions.Gtk = '4.0'; -const Gtk = imports.gi.Gtk; - -function nextTitle() { - let length = Math.random() * 20; - let str = ''; - - for (let i = 0; i < length; i++) { - // 97 == 'a' - str += String.fromCharCode(97 + Math.random() * 26); - } - - return str; -} - -const application = new Gtk.Application({application_id: 'org.gnome.TestTitle'}); -application.connect('activate', () => { - const win = new Gtk.Window({ - application, - title: nextTitle(), - }); - win.present(); - - setInterval(() => (win.title = nextTitle()), 5000); -}); -application.run(null); diff --git a/tests/interactive/transitions.js b/tests/interactive/transitions.js deleted file mode 100644 index acb5db479..000000000 --- a/tests/interactive/transitions.js +++ /dev/null @@ -1,36 +0,0 @@ -// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- - -const UI = imports.testcommon.ui; - -const Clutter = imports.gi.Clutter; -const St = imports.gi.St; - -function test() { - let stage = new Clutter.Stage(); - UI.init(stage); - - let hbox = new St.BoxLayout({ name: 'transition-container', - reactive: true, - track_hover: true, - width: stage.width, - height: stage.height, - style: 'padding: 10px;' - + 'spacing: 10px;' }); - stage.add_actor(hbox); - - for (let i = 0; i < 5; i ++) { - let label = new St.Label({ text: (i+1).toString(), - name: "label" + i, - style_class: 'transition-label', - reactive: true, - track_hover: true }); - - hbox.add(label, { x_fill: false, - y_fill: false }); - } - - //////////////////////////////////////////////////////////////////////////////// - - UI.main(stage); -} -test(); diff --git a/tests/testcommon/100-200.svg b/tests/testcommon/100-200.svg deleted file mode 100644 index 59a5307be..000000000 --- a/tests/testcommon/100-200.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - diff --git a/tests/testcommon/200-100.svg b/tests/testcommon/200-100.svg deleted file mode 100644 index e149b5ffe..000000000 --- a/tests/testcommon/200-100.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - diff --git a/tests/testcommon/200-200.svg b/tests/testcommon/200-200.svg deleted file mode 100644 index 9965a2afd..000000000 --- a/tests/testcommon/200-200.svg +++ /dev/null @@ -1,21 +0,0 @@ - - - - - - diff --git a/tests/testcommon/border-image.png b/tests/testcommon/border-image.png deleted file mode 100644 index e680020abee2f19784cba2d74826adcfc6e2e7b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 981 zcmV;`11kK9P)Px#32;bRa{vGf6951U69E94oEQKA00(qQO+^RU2^16s7+$&}K>z>%8FWQhbVF}# zZDnqB07G(RVRU6=Aa`kWXdp*PO;A^X4i^9b142neK~!ko)tJ9eT2UOuKkrsCL=qis z9Ng59bVQuoWGgHtF3KOEW%ftHWK!&G>0Wd(=^}2LE>0?=2@xkdm@;arCD6$0axu@R zg?GR2HNZ(&$UW~IF7Mv&_j@ecwsE4Cw$^|RV8rqD9gqtb>`%18eQ|XVm;)Ap1TYTV z07t++a1u%8|FnBXEp5#MSs)ICfCg{|Y=sN=lcE>x=3AmC{WKTZMa}hx8C_l6V+xk_OxCbF#Y#(E#n%qK;0v^ z-i*d(`@Xla`njtdaFcb(Z#oLdrM?w99!_oSyZ(sqxUg~o9O}($=^p|Y?zPW$-oxR` zxZc%3VXCiOZEdGpW5?aj258(^-?DAnHAoML_p@n`brlP3C065FVsmfPFD%gsJuG)MpU(<~vwEuc1K;_4Tu6>1&-PpJozIK& zae5%17w6;jKt3B4QSoazkp?D^e%vb&Bw~CY~AJ^?{ z*YbG<5H8raz?g>}sJL4L{R1`)28xukHSnX~*IngbAyVXD)~2`M00000NkvXXu0mjf DWgftY diff --git a/tests/testcommon/face-plain.png b/tests/testcommon/face-plain.png deleted file mode 100644 index 962d70f1bae824b12c0db60e099bdf99be9ec378..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4298 zcmV;*5H;_KP)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01ejw01ejxLMWSf00007bV*G`2ipMz z7CIeRE0xIr01!$^L_t(&-o=`GtYvpq$3N@$`|Z8YIrlO5&P=D%cWFxjDJ?XWP;H1w zG5BagfY=aGDg+f$5{N+zgonW>BK~L8Km-({F=&kiYy^s02nEBVBZWezwb1E2+S_^D zd(UI>qnI1dPhLW-D9u~=fwHdbw7g2Q z#o`#7Ze!&sOOp+B^qA<@G0Ia%jtx(r{Ie_GaL;?65&&O#_p|n`7V!;x*4JLw-+TVK z+4=?ISI#%Td@eHBE7I#&4+97}_#BZ8aSm`;8!TW7q!xfS5G$-1W78p8ZDQpq)6wIk z;R%_ZK0#MIBtRLJLRu2%C_aVJC zAsdK<0(@v)#e+ByXW$e>f!K;P7!6PZ4QPdF1*sKFHI^DNje;f6oh+H<=;5CWPQp0bY*4miej+3DtXUbmSG}-)u0nBjUa7fx&^k4*$}f4W+PyP z$rxmeF$NiR?{8za4Z4k`Ei7(faR@p_tOkcj$Z&bj^8Vne)wQ*M`uf|}p8rEx;I7xX zbN8h%! z-olzqtlq@xZLA()%>-*op((MZ!dbH~2sgg!>gLn$|3WC|;fi zS75b?)o7fE)?4WGBsSe>r8$YEEmX&?Vl)T|6T@V7R1oV#K_W(jS=Cx3ZMN5$ZeZ00 zR-J5trHNou(Au)VW$SB8w}0ukSUOwZu=B;EZ*%_GFuZi7pS?cMd||0FQHM4YaUM)6 zkOFmmB&+%{YcyMEJ;Le=rZrku zSS-a-ZKRq!xJ&l!U-=*mU-6_CIC`3=^)vqmy#Gvtq~vj$Y=TI+rNyFaFQ^aVrhalBQ$Qe zX*QN%wU{*~+T=yA_u_B7DSzd6wZNg*$&xw$#-)CKDb|=s!VnQ{TG~{QBw!A+NI!>< zedaL#a_3RT)&Fq*#TRhxb;}S6%n~xs(9(jkR#BXC=V$KWumA3D_O1l_w#_eIzn9@K z0d1{7>sBnb-xU+H1lZcja{qm|-Bf?{<)5J0Wq~@$(|eiw?JV;~s%d>;Rw)c@b_2yM z5pw0DcYKTe=ROS|miYI(zRvb=h<8n!=PhE^VAga>HMpRhc;pygx#t1)?K?=Nt9$*s%%EYnm2hzT-haTbK#g}qCh zdVIu*jS2VOdoPckIL24+d63a~8>~XC#H>O(u}&azSLy9+FKeFx4!q?j?g>?lm^F&MQysHq0;#R6!&4bc(4$N?=A) zH)u12xZTMRbObg8+XCGJwn+7e)HIm3WTX^{P1P1LO_*s%)DycLL)yd~>#)=>ZUzX! zNuG?GL&(rriOb~dZ!Jzb3utWEGYA9^W{P2~u6TlupgseZVH98i5kWMeO#@RHr6OV=dH3KRCIeO%@3wAliKpL%NhG z)&ek1#3pk7-i-ZgJvKHKoa4$%m+8w0rWr;KmSYky5zqvwfl1=PO60vYz#>N6BbGWlFY3Dv>9k3RJXyk_H z3>c?A<7wh&uUTc;O^BsnE{7Drg*Ka+LTb<|a_KpVYpz`8>kq8sEb;71d+g~OTW4bD zo?Q(w+iCvAxwW+>r6^gRzaS`F<-8}wTH4OY+5&3KFDAAVgn}xQ8g9PvTuzK@ycceG z-Wr7~No7Pr3qYLf%7B3;>e$c=#`RaP@a>}wYkl~+>vASlg{1`A7CUr7pzS=LA0cUU zA%tfKfv4jRHUo_Fl;*uk^}#I|-=>?A3cX8+%cb!6GhBAxOriAGdt zREP+nHYpnuYJ*0h(3zsG(zA<*3YJ_usHj2`#A#b^MCK{4O}n}azzwhlU|+Q@jJkL|3+~n;?MLgGh;D>w;-M-kednk((I_2&nY$=B z0pGUMCfc?avb*1!XAHBp{gy>XGOwf^0G%lqJ4@`a3UOhHR%T$@OjIjO6>7YdjXfNy z#C?;PSjvMq>W zwG`7tO3F0BRE0=LlP294@?dw5%7(RKAZ0A+C+H>cGv=Lua|wBXzqUb1kqZ z17ID1&TV$FpVB;#7t#f9YTc$%s1h_Gvtc#p;v$jLvtQhaiz&?vcEJ{wl7whAZ~qdTU5;9m)5AFWSa9l~_H&rem}jVbc*- z4YBexR&8O`xZOlFZH8I|w9+J_Oi(ITCTM&Sw$XLk*z9nkhCpgK?y5UJXSs@!&F?^Ed=?g0loEBB?EcVsx=!i{iE;K2mIz zA15diRAe$qHhp}v`M?~&&p$)TJHEjmZw71x+gSo6*@rCt5dEN!ww`Iw9^?XOeTpFo1^MA@4P+U^}{@3(*Hij(Y=Fobfw1?p~%mbtmn-IBos(C z5X%N==%c=e`2v#+!vh}a!gWWo>~0lM3nW)iyMo#csKPQ+zs%GRsH9+G-p1-F)yufn zBd4~@Ti$hh^XVVu8CksV1m7{$@9gR8xkctKbXgHh0_Jm*tPlB;SiX#A%V@rg<|}Bv zgl4Uzutdt1N!c4L&w}tAd{;7cjx$Zd^`CESGig4o<2a8MAR#)@>(yHqfJ_w&h3HK8#QQ?wYPO=B(fbYkUr+nwGTeeJHM;=FI0Kr<{QODS5@)Ha3bnI%IRriM~73p se`7lxdg!rq=>Es_;j@;XKhod-0uWR{`Okk+XaE2J07*qoM6N<$g4j@AN&o-= diff --git a/tests/testcommon/test.css b/tests/testcommon/test.css deleted file mode 100644 index b82d2309b..000000000 --- a/tests/testcommon/test.css +++ /dev/null @@ -1,112 +0,0 @@ -@import url("resource:///org/gnome/shell/theme/gnome-shell.css"); - -stage { - font: 16pt serif; - color: black; -} - -.red { - background-color: red; -} - -.green { - background-color: green; -} - -.blue { - background-color: blue; -} - -.bold { - font-weight: bold; -} - -.italic { - font-style: italic; -} - -.big { - font-size: 150%; -} - -.monospace { - font-family: monospace; -} - -.border-image { - border: 15px; - border-image: url('border-image.png') 16; -} - -.background-image-200-200 { - background-image: url('200-200.svg'); -} - -.background-image-100-200 { - background-image: url('100-200.svg'); -} - -.background-image-200-100 { - background-image: url('200-100.svg'); -} - -.background-gradient { - background-gradient-start: rgba(127, 255, 127, .6); - background-gradient-end: rgba(127, 127, 255, .6); -} - -.border-image-with-background-gradient { - border: 15px black solid; - border-image: url('border-image.png') 16; - background-gradient-start: #88ff88; - background-gradient-end: #8888ff; -} - -.background-image { - background-image: url('face-plain.png'); - background-color: white; -} - -.background-repeat { - background-repeat: repeat; -} - -.push-button { - background: #eeddbb; - border: 1px solid black; - border-radius: 8px; - padding: 5px; -} - -.push-button:hover { - background: #ffeecc; -} - -.push-button:active { - background: #ccbb99; -} - -.vfade { - -st-fade-offset: 68px; -} - -#transition-container .transition-label { - color: white; - width: 1em; - height: 1em; - padding: 1em; - background-color: #333; - border: 2px solid black; - border-radius: 8px; - transition-duration: 1s; -} - -#transition-container:hover .transition-label { - background-color: blue; - border: 2px solid red; -} - -#transition-container .transition-label:hover { - background-color: green; - border: 2px solid blue; -} diff --git a/tests/testcommon/ui.js b/tests/testcommon/ui.js deleted file mode 100644 index d98b9f939..000000000 --- a/tests/testcommon/ui.js +++ /dev/null @@ -1,31 +0,0 @@ -// -*- mode: js; js-indent-level: 4; indent-tabs-mode: nil -*- - -const Config = imports.misc.config; - -imports.gi.versions = {Clutter: Config.LIBMUTTER_API_VERSION}; - -const Clutter = imports.gi.Clutter; -const Gio = imports.gi.Gio; -const GLib = imports.gi.GLib; -const St = imports.gi.St; - -const Environment = imports.ui.environment; - -function init(stage) { - Environment.init(); - let themeResource = Gio.Resource.load(global.datadir + '/gnome-shell-theme.gresource'); - themeResource._register(); - - let context = St.ThemeContext.get_for_stage(stage); - let stylesheetPath = GLib.getenv("GNOME_SHELL_TESTSDIR") + "/testcommon/test.css"; - let theme = new St.Theme({ application_stylesheet: Gio.File.new_for_path(stylesheetPath) }); - context.set_theme(theme); -} - -function main(stage) { - stage.show(); - stage.connect('destroy', () => { - Clutter.main_quit(); - }); - Clutter.main(); -}