reftests: Add tests that check default-size is computed correctly

Related: #4136
diff --git a/testsuite/reftests/default-size-with-title.ref.ui b/testsuite/reftests/default-size-with-title.ref.ui
new file mode 100644
index 0000000..0c8473f
--- /dev/null
+++ b/testsuite/reftests/default-size-with-title.ref.ui
@@ -0,0 +1,55 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <object class="GtkWindow" id="window">
+    <property name="width_request">600</property>
+    <property name="height_request">400</property>
+    <property name="title">What's my size?</property>
+    <child type="titlebar">
+      <object class="GtkHeaderBar" />
+    </child>
+    <child>
+      <object class="GtkGrid">
+        <property name="valign">center</property>
+        <property name="halign">center</property>
+        <property name="column-spacing">10</property>
+        <property name="row-spacing">10</property>
+        <child>
+          <object class="GtkLabel">
+            <property name="label">default width:</property>
+            <layout>
+              <property name="column">0</property>
+              <property name="row">0</property>
+            </layout>
+          </object>
+        </child>
+        <child>
+          <object class="GtkLabel">
+            <property name="label">600</property>
+            <layout>
+              <property name="column">1</property>
+              <property name="row">0</property>
+            </layout>
+          </object>
+        </child>
+        <child>
+          <object class="GtkLabel">
+            <property name="label">default height:</property>
+            <layout>
+              <property name="column">0</property>
+              <property name="row">1</property>
+            </layout>
+          </object>
+        </child>
+        <child>
+          <object class="GtkLabel">
+            <property name="label">400</property>
+            <layout>
+              <property name="column">1</property>
+              <property name="row">1</property>
+            </layout>
+          </object>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/testsuite/reftests/default-size-with-title.ui b/testsuite/reftests/default-size-with-title.ui
new file mode 100644
index 0000000..8040331
--- /dev/null
+++ b/testsuite/reftests/default-size-with-title.ui
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <object class="GtkWindow" id="window">
+    <property name="width_request">600</property>
+    <property name="height_request">400</property>
+    <property name="title">What's my size?</property>
+    <child type="titlebar">
+      <object class="GtkHeaderBar" />
+    </child>
+    <child>
+      <object class="GtkGrid">
+        <property name="valign">center</property>
+        <property name="halign">center</property>
+        <property name="column-spacing">10</property>
+        <property name="row-spacing">10</property>
+        <child>
+          <object class="GtkLabel">
+            <property name="label">default width:</property>
+            <layout>
+              <property name="column">0</property>
+              <property name="row">0</property>
+            </layout>
+          </object>
+        </child>
+        <child>
+          <object class="GtkLabel">
+            <!-- This binding should never do anything because the text is set to
+                 the correct value from the start, all we do is make sure it doesn't change -->
+            <property name="label" bind-source="window" bind-property="default-width">600</property>
+            <layout>
+              <property name="column">1</property>
+              <property name="row">0</property>
+            </layout>
+          </object>
+        </child>
+        <child>
+          <object class="GtkLabel">
+            <property name="label">default height:</property>
+            <layout>
+              <property name="column">0</property>
+              <property name="row">1</property>
+            </layout>
+          </object>
+        </child>
+        <child>
+          <object class="GtkLabel">
+            <!-- This binding should never do anything because the text is set to
+                 the correct value from the start, all we do is make sure it doesn't change -->
+            <property name="label" bind-source="window" bind-property="default-height">400</property>
+            <layout>
+              <property name="column">1</property>
+              <property name="row">1</property>
+            </layout>
+          </object>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/testsuite/reftests/default-size.ref.ui b/testsuite/reftests/default-size.ref.ui
new file mode 100644
index 0000000..7f1cc49
--- /dev/null
+++ b/testsuite/reftests/default-size.ref.ui
@@ -0,0 +1,52 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <object class="GtkWindow" id="window">
+    <property name="width_request">600</property>
+    <property name="height_request">400</property>
+    <property name="decorated">0</property>
+    <child>
+      <object class="GtkGrid">
+        <property name="valign">center</property>
+        <property name="halign">center</property>
+        <property name="column-spacing">10</property>
+        <property name="row-spacing">10</property>
+        <child>
+          <object class="GtkLabel">
+            <property name="label">default width:</property>
+            <layout>
+              <property name="column">0</property>
+              <property name="row">0</property>
+            </layout>
+          </object>
+        </child>
+        <child>
+          <object class="GtkLabel">
+            <property name="label">600</property>
+            <layout>
+              <property name="column">1</property>
+              <property name="row">0</property>
+            </layout>
+          </object>
+        </child>
+        <child>
+          <object class="GtkLabel">
+            <property name="label">default height:</property>
+            <layout>
+              <property name="column">0</property>
+              <property name="row">1</property>
+            </layout>
+          </object>
+        </child>
+        <child>
+          <object class="GtkLabel">
+            <property name="label">400</property>
+            <layout>
+              <property name="column">1</property>
+              <property name="row">1</property>
+            </layout>
+          </object>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/testsuite/reftests/default-size.ui b/testsuite/reftests/default-size.ui
new file mode 100644
index 0000000..5166d0f
--- /dev/null
+++ b/testsuite/reftests/default-size.ui
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<interface>
+  <object class="GtkWindow" id="window">
+    <property name="width_request">600</property>
+    <property name="height_request">400</property>
+    <property name="decorated">0</property>
+    <child>
+      <object class="GtkGrid">
+        <property name="valign">center</property>
+        <property name="halign">center</property>
+        <property name="column-spacing">10</property>
+        <property name="row-spacing">10</property>
+        <child>
+          <object class="GtkLabel">
+            <property name="label">default width:</property>
+            <layout>
+              <property name="column">0</property>
+              <property name="row">0</property>
+            </layout>
+          </object>
+        </child>
+        <child>
+          <object class="GtkLabel">
+            <!-- This binding should never do anything because the text is set to
+                 the correct value from the start, all we do is make sure it doesn't change -->
+            <property name="label" bind-source="window" bind-property="default-width">600</property>
+            <layout>
+              <property name="column">1</property>
+              <property name="row">0</property>
+            </layout>
+          </object>
+        </child>
+        <child>
+          <object class="GtkLabel">
+            <property name="label">default height:</property>
+            <layout>
+              <property name="column">0</property>
+              <property name="row">1</property>
+            </layout>
+          </object>
+        </child>
+        <child>
+          <object class="GtkLabel">
+            <!-- This binding should never do anything because the text is set to
+                 the correct value from the start, all we do is make sure it doesn't change -->
+            <property name="label" bind-source="window" bind-property="default-height">400</property>
+            <layout>
+              <property name="column">1</property>
+              <property name="row">1</property>
+            </layout>
+          </object>
+        </child>
+      </object>
+    </child>
+  </object>
+</interface>
diff --git a/testsuite/reftests/meson.build b/testsuite/reftests/meson.build
index 5e4d5d0..9584845 100644
--- a/testsuite/reftests/meson.build
+++ b/testsuite/reftests/meson.build
@@ -225,6 +225,10 @@
   'data-url.css',
   'data-url.ref.ui',
   'data-url.ui',
+  'default-size.ui',
+  'default-size.ref.ui',
+  'default-size-with-title.ui',
+  'default-size-with-title.ref.ui',
   'fixed-widget-stacking.ref.ui',
   'fixed-widget-stacking.ui',
   'flipping-icons.ref.ui',