diff --git a/configure.ac b/configure.ac
index a05765300e..bf8316eff4 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1912,6 +1912,7 @@ testsuite/css/parser/Makefile
testsuite/gdk/Makefile
testsuite/gtk/Makefile
testsuite/reftests/Makefile
+testsuite/tools/Makefile
docs/Makefile
docs/reference/Makefile
docs/reference/gdk/Makefile
diff --git a/testsuite/Makefile.am b/testsuite/Makefile.am
index 33bbe37652..418aa417ae 100644
--- a/testsuite/Makefile.am
+++ b/testsuite/Makefile.am
@@ -1,6 +1,6 @@
include $(top_srcdir)/Makefile.decl
-SUBDIRS = gdk gtk a11y css reftests
+SUBDIRS = gdk gtk a11y css reftests tools
-include $(top_srcdir)/git.mk
diff --git a/testsuite/tools/Makefile.am b/testsuite/tools/Makefile.am
new file mode 100644
index 0000000000..6ccefc174d
--- /dev/null
+++ b/testsuite/tools/Makefile.am
@@ -0,0 +1,26 @@
+include $(top_srcdir)/Makefile.decl
+
+NULL =
+
+test_simplify = \
+ simplify/test1.ui simplify/test1.expected \
+ simplify/test2.ui simplify/test2.expected \
+ simplify/test3.ui simplify/test3.expected \
+ simplify/test4.ui simplify/test4.expected \
+ simplify/test5.ui simplify/test5.expected \
+ simplify/test6.ui simplify/test6.expected \
+ simplify/test7.ui simplify/test7.expected \
+ simplify/test8.ui simplify/test8.expected \
+ $(NULL)
+
+EXTRA_DIST += \
+ $(test_simplify)
+
+TESTS_ENVIRONMENT = \
+ GTK_BUILDER_TOOL="$(top_builddir)/gtk/gtk-builder-tool"
+
+TEST_PROGS += \
+ test-simplify \
+ $(NULL)
+
+-include $(top_srcdir)/git.mk
diff --git a/testsuite/tools/simplify/test1.expected b/testsuite/tools/simplify/test1.expected
new file mode 100644
index 0000000000..de1472e5cd
--- /dev/null
+++ b/testsuite/tools/simplify/test1.expected
@@ -0,0 +1,5 @@
+
+
+
+
diff --git a/testsuite/tools/simplify/test1.ui b/testsuite/tools/simplify/test1.ui
new file mode 100644
index 0000000000..4f03810de1
--- /dev/null
+++ b/testsuite/tools/simplify/test1.ui
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/testsuite/tools/simplify/test2.expected b/testsuite/tools/simplify/test2.expected
new file mode 100644
index 0000000000..20ffe8d3bb
--- /dev/null
+++ b/testsuite/tools/simplify/test2.expected
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/testsuite/tools/simplify/test2.ui b/testsuite/tools/simplify/test2.ui
new file mode 100644
index 0000000000..20ffe8d3bb
--- /dev/null
+++ b/testsuite/tools/simplify/test2.ui
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/testsuite/tools/simplify/test3.expected b/testsuite/tools/simplify/test3.expected
new file mode 100644
index 0000000000..2490e7900a
--- /dev/null
+++ b/testsuite/tools/simplify/test3.expected
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/testsuite/tools/simplify/test3.ui b/testsuite/tools/simplify/test3.ui
new file mode 100644
index 0000000000..2490e7900a
--- /dev/null
+++ b/testsuite/tools/simplify/test3.ui
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/testsuite/tools/simplify/test4.expected b/testsuite/tools/simplify/test4.expected
new file mode 100644
index 0000000000..41d8ecce20
--- /dev/null
+++ b/testsuite/tools/simplify/test4.expected
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/testsuite/tools/simplify/test4.ui b/testsuite/tools/simplify/test4.ui
new file mode 100644
index 0000000000..eb5b0f0ea6
--- /dev/null
+++ b/testsuite/tools/simplify/test4.ui
@@ -0,0 +1,6 @@
+
+
+
+
diff --git a/testsuite/tools/simplify/test5.expected b/testsuite/tools/simplify/test5.expected
new file mode 100644
index 0000000000..1fb898bc0e
--- /dev/null
+++ b/testsuite/tools/simplify/test5.expected
@@ -0,0 +1,9 @@
+
+
+
+
diff --git a/testsuite/tools/simplify/test5.ui b/testsuite/tools/simplify/test5.ui
new file mode 100644
index 0000000000..e379abdb2c
--- /dev/null
+++ b/testsuite/tools/simplify/test5.ui
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/testsuite/tools/simplify/test6.expected b/testsuite/tools/simplify/test6.expected
new file mode 100644
index 0000000000..8d4495b50e
--- /dev/null
+++ b/testsuite/tools/simplify/test6.expected
@@ -0,0 +1,5 @@
+
+
+
+
+
diff --git a/testsuite/tools/simplify/test6.ui b/testsuite/tools/simplify/test6.ui
new file mode 100644
index 0000000000..e4f394dc21
--- /dev/null
+++ b/testsuite/tools/simplify/test6.ui
@@ -0,0 +1,6 @@
+
+
+
+ -1
+
+
diff --git a/testsuite/tools/simplify/test7.expected b/testsuite/tools/simplify/test7.expected
new file mode 100644
index 0000000000..a75c4d4570
--- /dev/null
+++ b/testsuite/tools/simplify/test7.expected
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
diff --git a/testsuite/tools/simplify/test7.ui b/testsuite/tools/simplify/test7.ui
new file mode 100644
index 0000000000..52e0da2f4b
--- /dev/null
+++ b/testsuite/tools/simplify/test7.ui
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+ False
+
+
+
+
diff --git a/testsuite/tools/simplify/test8.expected b/testsuite/tools/simplify/test8.expected
new file mode 100644
index 0000000000..d5b6825347
--- /dev/null
+++ b/testsuite/tools/simplify/test8.expected
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+ True
+
+
+
+
diff --git a/testsuite/tools/simplify/test8.ui b/testsuite/tools/simplify/test8.ui
new file mode 100644
index 0000000000..1aec7adfea
--- /dev/null
+++ b/testsuite/tools/simplify/test8.ui
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+ True
+
+
+
+
diff --git a/testsuite/tools/test-simplify b/testsuite/tools/test-simplify
new file mode 100755
index 0000000000..2de4366b16
--- /dev/null
+++ b/testsuite/tools/test-simplify
@@ -0,0 +1,27 @@
+#! /bin/sh
+
+GTK_BUILDER_TOOL=${GTK_BUILDER_TOOL:-gtk-builder-tool}
+TEST_DATA_DIR=${TEST_DATA_DIR:-./simplify}
+TEST_RESULT_DIR=${TEST_RESULT_DIR:-/tmp}
+
+shopt -s nullglob
+TESTS=( "$TEST_DATA_DIR"/*.ui )
+
+echo "1..${#TESTS}"
+
+I=1
+for t in ${TESTS[*]}; do
+ name=$(basename $t .ui)
+ expected="$TEST_DATA_DIR/$name.expected"
+ result="$TEST_RESULT_DIR/$name.out"
+
+ $GTK_BUILDER_TOOL simplify $t 2>/dev/null >$result
+
+ if diff "$expected" "$result" > /dev/null; then
+ echo "ok $I $name"
+ else
+ echo "not ok $I $name"
+ fi
+
+ I=$((I+1))
+done