[gnome-shell] tests: Run each test in a function
- From: Jasper St. Pierre <jstpierre src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] tests: Run each test in a function
- Date: Sun, 24 Jun 2012 23:21:34 +0000 (UTC)
commit c7196a519f3fcc02b3c8056dc27ea8a4f7942b24
Author: Jasper St. Pierre <jstpierre mecheye net>
Date: Sun Jun 24 15:11:41 2012 -0400
tests: Run each test in a function
As the global object of a context is rooted, if we want the GC to act
on these objects we need to take them out of the globals.
https://bugzilla.gnome.org/show_bug.cgi?id=678737
tests/interactive/background-size.js | 185 +++++++++++-----------
tests/interactive/border-radius.js | 107 +++++++-------
tests/interactive/border-width.js | 101 ++++++------
tests/interactive/borders.js | 248 +++++++++++++++---------------
tests/interactive/box-layout.js | 167 ++++++++++----------
tests/interactive/box-shadows.js | 97 ++++++------
tests/interactive/calendar.js | 31 ++--
tests/interactive/css-fonts.js | 66 ++++----
tests/interactive/entry.js | 31 ++--
tests/interactive/icons.js | 134 ++++++++--------
tests/interactive/inline-style.js | 78 +++++-----
tests/interactive/scroll-view-sizing.js | 253 ++++++++++++++++---------------
tests/interactive/scrolling.js | 87 ++++++------
tests/interactive/table.js | 96 ++++++------
tests/interactive/transitions.js | 54 ++++---
tests/testcommon/ui.js | 8 +
16 files changed, 884 insertions(+), 859 deletions(-)
---
diff --git a/tests/interactive/background-size.js b/tests/interactive/background-size.js
index 72112fa..f803260 100644
--- a/tests/interactive/background-size.js
+++ b/tests/interactive/background-size.js
@@ -6,96 +6,97 @@ const St = imports.gi.St;
const UI = imports.testcommon.ui;
-let stage = new Clutter.Stage({ user_resizable: true, width: 1024, height: 768 });
-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 });
-
-let vbox = new St.BoxLayout({ vertical: true,
- style: 'padding: 10px;'
- + 'spacing: 20px;' });
-scroll.add_actor(vbox);
-
-let tbox = null;
-
-function addTestCase(image, size, backgroundSize, useCairo) {
- // Using a border in CSS forces cairo rendering.
- // To get a border using cogl, we paint a border using
- // paint signal hacks.
-
- let obin = new St.Bin();
- if (useCairo)
- obin.style = 'border: 3px solid green;';
- else
- obin.connect_after('paint', function(actor) {
- Cogl.set_source_color4f(0, 1, 0, 1);
-
- let geom = actor.get_allocation_geometry();
- let width = 3;
-
- // clockwise order
- Cogl.rectangle(0, 0, geom.width, width);
- Cogl.rectangle(geom.width - width, width,
- geom.width, geom.height);
- Cogl.rectangle(0, geom.height,
- geom.width - width, geom.height - width);
- Cogl.rectangle(0, geom.height - width,
- width, width);
- });
- tbox.add(obin);
-
- let [width, height] = size;
- let bin = new St.Bin({ style_class: 'background-image-' + image,
- width: width,
- height: height,
- style: '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 test() {
+ let stage = new Clutter.Stage({ user_resizable: true, width: 1024, height: 768 });
+ 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 });
+
+ let vbox = new St.BoxLayout({ vertical: true,
+ style: 'padding: 10px;'
+ + 'spacing: 20px;' });
+ scroll.add_actor(vbox);
+
+ let tbox = null;
+
+ function addTestCase(image, size, backgroundSize, useCairo) {
+ // Using a border in CSS forces cairo rendering.
+ // To get a border using cogl, we paint a border using
+ // paint signal hacks.
+
+ let obin = new St.Bin();
+ if (useCairo)
+ obin.style = 'border: 3px solid green;';
+ else
+ obin.connect_after('paint', function(actor) {
+ Cogl.set_source_color4f(0, 1, 0, 1);
+
+ let geom = actor.get_allocation_geometry();
+ let width = 3;
+
+ // clockwise order
+ Cogl.rectangle(0, 0, geom.width, width);
+ Cogl.rectangle(geom.width - width, width,
+ geom.width, geom.height);
+ Cogl.rectangle(0, geom.height,
+ geom.width - width, geom.height - width);
+ Cogl.rectangle(0, geom.height - width,
+ width, width);
+ });
+ tbox.add(obin);
+
+ let [width, height] = size;
+ let bin = new St.Bin({ style_class: 'background-image-' + image,
+ width: width,
+ height: height,
+ style: '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, useCairo) {
+ 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 each (let s in backgroundSizes)
+ addTestCase(image, size, s, false);
+ for each (let s in backgroundSizes)
+ addTestCase(image, size, s, true);
+ }
+
+ function addTestImage(image) {
+ const containerSizes = [[100, 100], [200, 200], [250, 250], [100, 250], [250, 100]];
+
+ for each (let size in containerSizes)
+ addTestLine(image, size);
+ }
+
+ addTestImage ('200-200');
+ addTestImage ('200-100');
+ addTestImage ('100-200');
+
+ UI.main(stage);
}
-
-function addTestLine(image, size, useCairo) {
- 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 each (let s in backgroundSizes)
- addTestCase(image, size, s, false);
- for each (let s in backgroundSizes)
- addTestCase(image, size, s, true);
-}
-
-function addTestImage(image) {
- const containerSizes = [[100, 100], [200, 200], [250, 250], [100, 250], [250, 100]];
-
- for each (let size in containerSizes)
- addTestLine(image, size);
-}
-
-addTestImage ('200-200');
-addTestImage ('200-100');
-addTestImage ('100-200');
-
-stage.show();
-Clutter.main();
-stage.destroy();
+test();
diff --git a/tests/interactive/border-radius.js b/tests/interactive/border-radius.js
index 1cd3d04..865c512 100644
--- a/tests/interactive/border-radius.js
+++ b/tests/interactive/border-radius.js
@@ -5,57 +5,58 @@ const St = imports.gi.St;
const UI = imports.testcommon.ui;
-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 });
+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);
}
-
-// 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);
-
-stage.show();
-Clutter.main();
-stage.destroy();
+test();
diff --git a/tests/interactive/border-width.js b/tests/interactive/border-width.js
index e575a2f..4ac118c 100644
--- a/tests/interactive/border-width.js
+++ b/tests/interactive/border-width.js
@@ -5,54 +5,55 @@ const St = imports.gi.St;
const UI = imports.testcommon.ui;
-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 });
+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);
}
-
-// 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);
-
-stage.show();
-Clutter.main();
-stage.destroy();
+test();
diff --git a/tests/interactive/borders.js b/tests/interactive/borders.js
index 88825ed..0e27058 100644
--- a/tests/interactive/borders.js
+++ b/tests/interactive/borders.js
@@ -5,129 +5,131 @@ const St = imports.gi.St;
const UI = imports.testcommon.ui;
-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;'
+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;'
+>>>>>>> 2aff593... tests: Run each test in a function
+ 'border-radius: ' + borderRadius + 'px;'
- + 'width: ' + width + 'px;'
- + 'height: ' + height + 'px;'
+ + 'background-gradient-direction: ' + direction + ';'
+ + 'width: 32px;'
+ + 'height: 32px;'
+ extra });
- framedImages.add(imageBox, { x_fill: false, y_fill: false } );
+ 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);
}
-
-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');
-
-stage.show();
-Clutter.main();
-stage.destroy();
+test();
diff --git a/tests/interactive/box-layout.js b/tests/interactive/box-layout.js
index 9e9b211..09ce8c7 100644
--- a/tests/interactive/box-layout.js
+++ b/tests/interactive/box-layout.js
@@ -5,88 +5,87 @@ const St = imports.gi.St;
const UI = imports.testcommon.ui;
-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' }));
-
-b2.add(new St.Label({ x: 50,
- y: 50,
- text: "Fixed",
- style: 'border: 1px solid #aaaaaa;'
- + 'background: #ffffcc' }));
-
-////////////////////////////////////////////////////////////////////////////////
-
-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;
+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' }));
+
+ b2.add(new St.Label({ x: 50,
+ y: 50,
+ text: "Fixed",
+ style: 'border: 1px solid #aaaaaa;'
+ + 'background: #ffffcc' }));
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+ 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);
}
-
-for (let width = 200; width <= 500; width += 60 ) {
- vbox.add(createCollapsableBox (width),
- { x_fill: false,
- x_align: St.Align.MIDDLE });
-}
-
-////////////////////////////////////////////////////////////////////////////////
-
-stage.show();
-Clutter.main();
diff --git a/tests/interactive/box-shadows.js b/tests/interactive/box-shadows.js
index 42ed685..e80cb1b 100644
--- a/tests/interactive/box-shadows.js
+++ b/tests/interactive/box-shadows.js
@@ -5,52 +5,53 @@ const St = imports.gi.St;
const UI = imports.testcommon.ui;
-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 } );
+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);
}
-
-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);
-
-stage.show();
-Clutter.main();
-stage.destroy();
+test();
diff --git a/tests/interactive/calendar.js b/tests/interactive/calendar.js
index a181aa8..18db193 100644
--- a/tests/interactive/calendar.js
+++ b/tests/interactive/calendar.js
@@ -7,21 +7,22 @@ const St = imports.gi.St;
const Calendar = imports.ui.calendar;
const UI = imports.testcommon.ui;
-let stage = new Clutter.Stage({ width: 400, height: 400 });
-UI.init(stage);
+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);
+ 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);
-let calendar = new Calendar.Calendar();
-vbox.add(calendar.actor,
- { expand: true,
- x_fill: false, x_align: St.Align.MIDDLE,
- y_fill: false, y_align: St.Align.START });
+ let calendar = new Calendar.Calendar();
+ vbox.add(calendar.actor,
+ { expand: true,
+ x_fill: false, x_align: St.Align.MIDDLE,
+ y_fill: false, y_align: St.Align.START });
-stage.show();
-Clutter.main();
-stage.destroy();
+ UI.main(stage);
+}
+test();
diff --git a/tests/interactive/css-fonts.js b/tests/interactive/css-fonts.js
index d23396e..89af667 100644
--- a/tests/interactive/css-fonts.js
+++ b/tests/interactive/css-fonts.js
@@ -5,35 +5,37 @@ const St = imports.gi.St;
const UI = imports.testcommon.ui;
-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);
-
-stage.show();
-Clutter.main();
+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
index 852aa99..df93676 100644
--- a/tests/interactive/entry.js
+++ b/tests/interactive/entry.js
@@ -7,21 +7,22 @@ const St = imports.gi.St;
const Calendar = imports.ui.calendar;
const UI = imports.testcommon.ui;
-let stage = new Clutter.Stage({ width: 400, height: 400 });
-UI.init(stage);
+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);
+ 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);
-let entry = new St.Entry({ style: 'border: 1px solid black;' });
-vbox.add(entry,
- { expand: true,
- y_fill: false, y_align: St.Align.MIDDLE });
-entry.grab_key_focus();
+ let entry = new St.Entry({ style: 'border: 1px solid black;' });
+ vbox.add(entry,
+ { expand: true,
+ y_fill: false, y_align: St.Align.MIDDLE });
+ entry.grab_key_focus();
-stage.show();
-Clutter.main();
-stage.destroy();
+ UI.main(stage);
+}
+test();
diff --git a/tests/interactive/icons.js b/tests/interactive/icons.js
index f6b8d4a..0d074e1 100644
--- a/tests/interactive/icons.js
+++ b/tests/interactive/icons.js
@@ -5,81 +5,83 @@ const St = imports.gi.St;
const UI = imports.testcommon.ui;
-let stage = new Clutter.Stage();
-UI.init(stage);
+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 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; ' }));
+ 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;' });
+ 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));
+ 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',
- icon_type: St.IconType.SYMBOLIC,
- icon_size: 48 });
-addTest("Full color",
- { icon_name: 'battery-full',
- icon_type: St.IconType.FULLCOLOR,
- icon_size: 48 });
-addTest("Default size",
- { icon_name: 'battery-full',
- icon_type: St.IconType.SYMBOLIC });
-addTest("Size set by property",
- { icon_name: 'battery-full',
- icon_type: St.IconType.SYMBOLIC,
- icon_size: 32 });
-addTest("Size set by style",
- { icon_name: 'battery-full',
- icon_type: St.IconType.SYMBOLIC,
- style: 'icon-size: 1em;' });
-addTest("16px icon in 48px icon widget",
- { icon_name: 'battery-full',
- icon_type: St.IconType.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 each (let iconName in icons) {
- hb.add(new St.Icon({ icon_name: iconName,
- icon_type: St.IconType.SYMBOLIC,
- icon_size: 48 }));
+ b.add(hb);
}
- b.add(hb);
-}
+ addTest("Symbolic",
+ { icon_name: 'battery-full',
+ icon_type: St.IconType.SYMBOLIC,
+ icon_size: 48 });
+ addTest("Full color",
+ { icon_name: 'battery-full',
+ icon_type: St.IconType.FULLCOLOR,
+ icon_size: 48 });
+ addTest("Default size",
+ { icon_name: 'battery-full',
+ icon_type: St.IconType.SYMBOLIC });
+ addTest("Size set by property",
+ { icon_name: 'battery-full',
+ icon_type: St.IconType.SYMBOLIC,
+ icon_size: 32 });
+ addTest("Size set by style",
+ { icon_name: 'battery-full',
+ icon_type: St.IconType.SYMBOLIC,
+ style: 'icon-size: 1em;' });
+ addTest("16px icon in 48px icon widget",
+ { icon_name: 'battery-full',
+ icon_type: St.IconType.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 each (let iconName in icons) {
+ hb.add(new St.Icon({ icon_name: iconName,
+ icon_type: St.IconType.SYMBOLIC,
+ 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 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',
- 'battery-full',
- 'battery-good',
- 'battery-low',
- 'battery-caution' ];
+ let batteryIcons = ['battery-full-charging',
+ 'battery-full',
+ 'battery-good',
+ 'battery-low',
+ 'battery-caution' ];
-let volumeIcons = ['audio-volume-high',
- 'audio-volume-medium',
- 'audio-volume-low',
- 'audio-volume-muted' ];
+ let volumeIcons = ['audio-volume-high',
+ 'audio-volume-medium',
+ 'audio-volume-low',
+ 'audio-volume-muted' ];
-iconRow(batteryIcons, normalCss);
-iconRow(batteryIcons, reversedCss);
-iconRow(volumeIcons, normalCss);
-iconRow(volumeIcons, reversedCss);
+ iconRow(batteryIcons, normalCss);
+ iconRow(batteryIcons, reversedCss);
+ iconRow(volumeIcons, normalCss);
+ iconRow(volumeIcons, reversedCss);
-stage.show();
-Clutter.main();
+ UI.main(stage);
+}
+test();
diff --git a/tests/interactive/inline-style.js b/tests/interactive/inline-style.js
index e8e533a..b8fe9aa 100644
--- a/tests/interactive/inline-style.js
+++ b/tests/interactive/inline-style.js
@@ -5,43 +5,43 @@ const St = imports.gi.St;
const UI = imports.testcommon.ui;
-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';
+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', function() {
+ size /= 1.2;
+ update_size ();
+ });
+
+ button = new St.Button ({ label: 'Bigger', style_class: 'push-button' });
+ hbox.add (button);
+ button.connect('clicked', function() {
+ size *= 1.2;
+ update_size ();
+ });
+
+ UI.main(stage);
}
-update_size();
-
-let button;
-
-button = new St.Button ({ label: 'Smaller', style_class: 'push-button' });
-hbox.add (button);
-button.connect('clicked', function() {
- size /= 1.2;
- update_size ();
- });
-
-button = new St.Button ({ label: 'Bigger', style_class: 'push-button' });
-hbox.add (button);
-button.connect('clicked', function() {
- size *= 1.2;
- update_size ();
- });
-
-stage.show();
-Clutter.main();
-stage.destroy();
-
+test();
diff --git a/tests/interactive/scroll-view-sizing.js b/tests/interactive/scroll-view-sizing.js
index 7ccd6d8..14a31ee 100644
--- a/tests/interactive/scroll-view-sizing.js
+++ b/tests/interactive/scroll-view-sizing.js
@@ -251,138 +251,139 @@ SizingIllustrator.prototype = {
/****************************************************************************/
-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.actor);
-
-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.actor, { 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 = 'AUTOMATIC';
- break;
+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.actor);
+
+ 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.actor, { 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 = 'AUTOMATIC';
+ break;
+ }
+ scrollView.set_policy(Gtk.PolicyType[hpolicy.label], Gtk.PolicyType[vpolicy.label]);
}
- scrollView.set_policy(Gtk.PolicyType[hpolicy.label], Gtk.PolicyType[vpolicy.label]);
-}
-
-hpolicy.connect('clicked', function() { togglePolicy(hpolicy); });
-vpolicy.connect('clicked', function() { 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);
-function togglePadding(button) {
- switch(button.label) {
- case 'No':
- button.label = 'Yes';
- break;
- case 'Yes':
- button.label = 'No';
- break;
+ hpolicy.connect('clicked', function() { togglePolicy(hpolicy); });
+ vpolicy.connect('clicked', function() { 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);
+
+ 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;');
}
- 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', function() { togglePadding(paddingButton); });
-function toggleBorders(button) {
- switch(button.label) {
- case 'No':
- button.label = 'Yes';
- break;
- case 'Yes':
- button.label = 'No';
- break;
+ paddingButton.connect('clicked', function() { 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;');
}
- 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', function() { toggleBorders(borderButton); });
-
-function toggleFade(button) {
- switch(button.label) {
- case 'No':
- button.label = 'Yes';
- break;
- case 'Yes':
- button.label = 'No';
- break;
+ borderButton.connect('clicked', function() { 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' : '');
}
- scrollView.set_style_class_name(button.label == 'Yes' ? 'vfade' : '');
-}
-vfade.connect('clicked', function() { toggleFade(vfade); });
+ vfade.connect('clicked', function() { toggleFade(vfade); });
-stage.show();
-Clutter.main();
-stage.destroy();
+ UI.main(stage);
+}
+test();
diff --git a/tests/interactive/scrolling.js b/tests/interactive/scrolling.js
index 3050f57..1c39646 100644
--- a/tests/interactive/scrolling.js
+++ b/tests/interactive/scrolling.js
@@ -6,47 +6,48 @@ const St = imports.gi.St;
const UI = imports.testcommon.ui;
-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', function () {
- v.set_policy(toggle.checked ? Gtk.PolicyType.AUTOMATIC
- : Gtk.PolicyType.NEVER,
- Gtk.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);
+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', function () {
+ v.set_policy(toggle.checked ? Gtk.PolicyType.AUTOMATIC
+ : Gtk.PolicyType.NEVER,
+ Gtk.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);
}
-
-stage.show();
-Clutter.main();
-stage.destroy();
+test();
diff --git a/tests/interactive/table.js b/tests/interactive/table.js
index b0ba369..a18ea2b 100644
--- a/tests/interactive/table.js
+++ b/tests/interactive/table.js
@@ -5,51 +5,53 @@ const St = imports.gi.St;
const UI = imports.testcommon.ui;
-let stage = new Clutter.Stage({ width: 600, height: 600 });
-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);
-
-function L(text, color) {
- return new St.Label({ text: text,
- style: "background: " + color + ";"
- + "border: 1px solid rgba(0,0,0,0.5);"
- + "padding: 1em;" });
+function test() {
+ let stage = new Clutter.Stage({ width: 600, height: 600 });
+ 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);
+
+ function L(text, color) {
+ return new St.Label({ text: text,
+ style: "background: " + color + ";"
+ + "border: 1px solid rgba(0,0,0,0.5);"
+ + "padding: 1em;" });
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+ let table = new St.Table({ style: "border: 10px solid #888888;"
+ + "padding: 10px;"
+ + "spacing-rows: 5px;"
+ + "spacing-columns: 15px;" });
+ vbox.add(table, { expand: true });
+
+ table.add(L("1", "#ff0000"),
+ { row: 0, col: 0, col_span: 3 });
+ table.add(L("2", "#00ff00"),
+ { row: 1, col: 0, row_span: 2 });
+ table.add(L("3", "#0000ff"),
+ { row: 1, col: 1,
+ x_expand: 0 });
+ table.add(L("4", "#ffff00"),
+ { row: 1, col: 2,
+ y_expand: 0, y_fill: 0
+ });
+ table.add(L("5", "#ff00ff"),
+ { row: 2, col: 1, x_expand: 0 });
+ table.add(L("6", "#00ffff"),
+ { row: 2, col: 2,
+ x_expand: 0, x_fill: 0, x_align: St.Align.END,
+ y_expand: 0, y_fill: 0, y_align: St.Align.END });
+
+ ////////////////////////////////////////////////////////////////////////////////
+
+ UI.main(stage);
}
-
-////////////////////////////////////////////////////////////////////////////////
-
-let table = new St.Table({ style: "border: 10px solid #888888;"
- + "padding: 10px;"
- + "spacing-rows: 5px;"
- + "spacing-columns: 15px;" });
-vbox.add(table, { expand: true });
-
-table.add(L("1", "#ff0000"),
- { row: 0, col: 0, col_span: 3 });
-table.add(L("2", "#00ff00"),
- { row: 1, col: 0, row_span: 2 });
-table.add(L("3", "#0000ff"),
- { row: 1, col: 1,
- x_expand: 0 });
-table.add(L("4", "#ffff00"),
- { row: 1, col: 2,
- y_expand: 0, y_fill: 0
- });
-table.add(L("5", "#ff00ff"),
- { row: 2, col: 1, x_expand: 0 });
-table.add(L("6", "#00ffff"),
- { row: 2, col: 2,
- x_expand: 0, x_fill: 0, x_align: St.Align.END,
- y_expand: 0, y_fill: 0, y_align: St.Align.END });
-
-////////////////////////////////////////////////////////////////////////////////
-
-stage.show();
-Clutter.main();
+test();
diff --git a/tests/interactive/transitions.js b/tests/interactive/transitions.js
index ec6fc81..6855a5f 100644
--- a/tests/interactive/transitions.js
+++ b/tests/interactive/transitions.js
@@ -5,30 +5,32 @@ const St = imports.gi.St;
const UI = imports.testcommon.ui;
-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 });
+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);
}
-
-////////////////////////////////////////////////////////////////////////////////
-
-stage.show();
-Clutter.main();
+test();
diff --git a/tests/testcommon/ui.js b/tests/testcommon/ui.js
index bc88db8..4813d76 100644
--- a/tests/testcommon/ui.js
+++ b/tests/testcommon/ui.js
@@ -13,3 +13,11 @@ function init(stage) {
let theme = new St.Theme({ application_stylesheet: stylesheetPath });
context.set_theme(theme);
}
+
+function main(stage) {
+ stage.show();
+ stage.connect('destroy', function() {
+ Clutter.main_quit();
+ });
+ Clutter.main();
+}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]