[gtk+] reftests: Add a shell script to create tests



commit c2f23ccd230a0dce89848cee987974f277b2aa06
Author: Benjamin Otte <otte redhat com>
Date:   Fri May 13 02:41:21 2011 +0200

    reftests: Add a shell script to create tests
    
    See the documentation in the script.
    Tests are not yet added as the output from the 2 included scripts
    doesn't match and the intended reference output first needs to be agreed
    on.

 tests/reftests/Makefile.am     |    1 +
 tests/reftests/align-expand.sh |  222 ++++++++++++++++++++++++++++++++++++++++
 2 files changed, 223 insertions(+), 0 deletions(-)
---
diff --git a/tests/reftests/Makefile.am b/tests/reftests/Makefile.am
index fe8c390..463e45d 100644
--- a/tests/reftests/Makefile.am
+++ b/tests/reftests/Makefile.am
@@ -25,6 +25,7 @@ clean-local:
 	rm -rf output/ || true
 
 EXTRA_DIST += \
+	align-expand.sh \
 	box-packing.css \
 	box-packing.ref.ui \
 	box-packing.ui \
diff --git a/tests/reftests/align-expand.sh b/tests/reftests/align-expand.sh
new file mode 100755
index 0000000..4e61f4a
--- /dev/null
+++ b/tests/reftests/align-expand.sh
@@ -0,0 +1,222 @@
+#!/bin/bash
+#
+# align-expand.sh [METHOD]
+#
+# This is the script used to create the align-expand tests. These tests
+# put a 20x20 size-requested GtkTreeView into a 40x40 size-requested
+# container and try to achieve multiple combinations of expand and align
+# flags. The resulting GtkBuilder file is written to stdout. All of the
+# resulting files should render identical.
+#
+# METHOD is one of:
+# * flags (default)
+#   Uses expand flags to align and expand the treeview inside a GtkGrid.
+#   You should use this as the reference when adding tests for other
+#   methods
+# * alignment
+#   Aligns and expands the treeview in a GtkAlignment using its scale
+#   and align properties.
+
+
+if test $# -lt 1; then
+  method="flags"
+else
+  method=$1
+fi
+
+cat << EOF
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <!-- interface-requires gtk+ 3.0 -->
+  <object class="GtkWindow" id="window">
+    <property name="can_focus">False</property>
+    <property name="type">popup</property>
+    <child>
+      <object class="GtkGrid" id="grid">
+        <property name="visible">True</property>
+        <property name="can_focus">False</property>
+        <property name="row_spacing">2</property>
+        <property name="column_spacing">2</property>
+EOF
+
+
+y=2
+for hexpand in False True; do
+for halign in "start" center end fill; do
+
+cat << EOF
+        <child>
+          <object class="GtkLabel" id="hexpand-$halign-$hexpand">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label">$hexpand</property>
+            <property name="angle">90</property>
+          </object>
+          <packing>
+            <property name="left_attach">$y</property>
+            <property name="top_attach">0</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="halign-$halign-$hexpand">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label">$halign</property>
+            <property name="angle">90</property>
+          </object>
+          <packing>
+            <property name="left_attach">$y</property>
+            <property name="top_attach">1</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+EOF
+x=2
+for vexpand in False True; do
+for valign in "start" center end fill; do
+
+if test $y = "2"; then
+cat << EOF
+        <child>
+          <object class="GtkLabel" id="vexpand-$valign-$vexpand">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label">$vexpand</property>
+          </object>
+          <packing>
+            <property name="left_attach">0</property>
+            <property name="top_attach">$x</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+        <child>
+          <object class="GtkLabel" id="valign-$valign-$vexpand">
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="label">$valign</property>
+          </object>
+          <packing>
+            <property name="left_attach">1</property>
+            <property name="top_attach">$x</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+EOF
+fi
+
+if test $method = "flags"; then
+
+cat << EOF
+        <child>
+          <object class="GtkGrid" id="grid-$valign-$halign-$vexpand-$hexpand">
+            <property name="width_request">40</property>
+            <property name="height_request">40</property>
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <child>
+              <object class="GtkTreeView" id="treeview-$valign-$halign-$vexpand-$hexpand">
+                <property name="width_request">20</property>
+                <property name="height_request">20</property>
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+                <property name="halign">$halign</property>
+                <property name="valign">$valign</property>
+                <property name="hexpand">$hexpand</property>
+                <property name="vexpand">$vexpand</property>
+              </object>
+              <packing>
+                <property name="left_attach">0</property>
+                <property name="top_attach">0</property>
+                <property name="width">1</property>
+                <property name="height">1</property>
+              </packing>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">$x</property>
+            <property name="top_attach">$y</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+EOF
+  
+elif test $method = "alignment"; then
+
+xscale=0.0
+case "$halign" in
+  "start") xalign=0.0 ;;
+  "center") xalign=0.5 ;;
+  "end") xalign=1.0 ;;
+  "fill") xalign=0.5; xscale=1.0 ;;
+esac
+if test $hexpand = "True"; then
+  xscale=1.0
+fi
+
+yscale=0.0
+case "$valign" in
+  "start") yalign=0.0 ;;
+  "center") yalign=0.5 ;;
+  "end") yalign=1.0 ;;
+  "fill") yalign=0.5; yscale=1.0 ;;
+esac
+if test $vexpand = "True"; then
+  yscale=1.0
+fi
+
+cat << EOF
+        <child>
+          <object class="GtkAlignment" id="align-$valign-$halign-$vexpand-$hexpand">
+            <property name="width_request">40</property>
+            <property name="height_request">40</property>
+            <property name="visible">True</property>
+            <property name="can_focus">False</property>
+            <property name="xalign">$xalign</property>
+            <property name="yalign">$yalign</property>
+            <property name="xscale">$xscale</property>
+            <property name="yscale">$yscale</property>
+            <child>
+              <object class="GtkTreeView" id="treeview-$valign-$halign-$vexpand-$hexpand">
+                <property name="width_request">20</property>
+                <property name="height_request">20</property>
+                <property name="visible">True</property>
+                <property name="can_focus">False</property>
+              </object>
+            </child>
+          </object>
+          <packing>
+            <property name="left_attach">$x</property>
+            <property name="top_attach">$y</property>
+            <property name="width">1</property>
+            <property name="height">1</property>
+          </packing>
+        </child>
+EOF
+
+else
+
+  exit 1
+
+fi
+
+x=`expr $x + 1`
+done
+done
+
+y=`expr $y + 1`
+x=0
+done
+done
+
+cat << EOF
+      </object>
+    </child>
+  </object>
+</interface>
+EOF



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]