diff --git a/testsuite/gtk/icons/15/size-test.png b/testsuite/gtk/icons/15/size-test.png
new file mode 100644
index 0000000000..a4061a5ace
Binary files /dev/null and b/testsuite/gtk/icons/15/size-test.png differ
diff --git a/testsuite/gtk/icons/16-22/size-test.png b/testsuite/gtk/icons/16-22/size-test.png
new file mode 100644
index 0000000000..fed0c268b1
Binary files /dev/null and b/testsuite/gtk/icons/16-22/size-test.png differ
diff --git a/testsuite/gtk/icons/25+/size-test.svg b/testsuite/gtk/icons/25+/size-test.svg
new file mode 100644
index 0000000000..ce0bbe1b11
--- /dev/null
+++ b/testsuite/gtk/icons/25+/size-test.svg
@@ -0,0 +1,87 @@
+
+
+
+
diff --git a/testsuite/gtk/icons/35+/size-test.svg b/testsuite/gtk/icons/35+/size-test.svg
new file mode 100644
index 0000000000..e6019934e0
--- /dev/null
+++ b/testsuite/gtk/icons/35+/size-test.svg
@@ -0,0 +1,87 @@
+
+
+
+
diff --git a/testsuite/gtk/icons/index.theme b/testsuite/gtk/icons/index.theme
index 20c53bb7c0..dbe538c5da 100644
--- a/testsuite/gtk/icons/index.theme
+++ b/testsuite/gtk/icons/index.theme
@@ -3,7 +3,7 @@ Name=Icons
Comment=Testing of the Icon theme code
Example=16x16/simple.png
-Directories=16x16,16x16s,32x32,32x32s,scalable
+Directories=16x16,16x16s,32x32,32x32s,scalable,15,16-22,25+,35+
[16x16]
Context=16x16 icons
@@ -35,3 +35,28 @@ Type=Scalable
Size=128
MinSize=1
MaxSize=256
+
+[15]
+Context=none
+Type=Fixed
+Size=15
+
+[16-22]
+Context=none
+Type=Threshold
+Size=19
+Threshold=3
+
+[25+]
+Context=none
+Type=Scalable
+Size=30
+MinSize=25
+MaxSize=35
+
+[35+]
+Context=none
+Type=Scalable
+Size=40
+MinSize=35
+MaxSize=1000
diff --git a/testsuite/gtk/icontheme.c b/testsuite/gtk/icontheme.c
index cef4ca855b..f57d5aa1a7 100644
--- a/testsuite/gtk/icontheme.c
+++ b/testsuite/gtk/icontheme.c
@@ -484,6 +484,52 @@ test_builtin (void)
assert_icon_lookup_size ("gtk-caps-lock-warning", 30, GTK_ICON_LOOKUP_USE_BUILTIN, NULL, 30);
}
+static void
+test_size (void)
+{
+ assert_icon_lookup_size ("size-test", 12, 0, "/icons/15/size-test.png", 15);
+ assert_icon_lookup_size ("size-test", 13, 0, "/icons/15/size-test.png", 15);
+ assert_icon_lookup_size ("size-test", 14, 0, "/icons/15/size-test.png", 15);
+ assert_icon_lookup_size ("size-test", 15, 0, "/icons/15/size-test.png", 15);
+ assert_icon_lookup_size ("size-test", 16, 0, "/icons/16-22/size-test.png", 19);
+ assert_icon_lookup_size ("size-test", 17, 0, "/icons/16-22/size-test.png", 19);
+ assert_icon_lookup_size ("size-test", 18, 0, "/icons/16-22/size-test.png", 19);
+ assert_icon_lookup_size ("size-test", 19, 0, "/icons/16-22/size-test.png", 19);
+ //assert_icon_lookup_size ("size-test", 20, 0, "/icons/16-22/size-test.png", 19);
+ //assert_icon_lookup_size ("size-test", 21, 0, "/icons/16-22/size-test.png", 19);
+ //assert_icon_lookup_size ("size-test", 22, 0, "/icons/16-22/size-test.png", 19);
+ assert_icon_lookup_size ("size-test", 23, 0, "/icons/25+/size-test.svg", 23);
+ assert_icon_lookup_size ("size-test", 24, 0, "/icons/25+/size-test.svg", 24);
+ assert_icon_lookup_size ("size-test", 25, 0, "/icons/25+/size-test.svg", 25);
+ assert_icon_lookup_size ("size-test", 28, 0, "/icons/25+/size-test.svg", 28);
+ //assert_icon_lookup_size ("size-test", 31, 0, "/icons/25+/size-test.svg", 31);
+ //assert_icon_lookup_size ("size-test", 34, 0, "/icons/25+/size-test.svg", 34);
+ assert_icon_lookup_size ("size-test", 37, 0, "/icons/35+/size-test.svg", 37);
+ assert_icon_lookup_size ("size-test", 40, 0, "/icons/35+/size-test.svg", 40);
+ assert_icon_lookup_size ("size-test", 45, 0, "/icons/35+/size-test.svg", 45);
+
+ assert_icon_lookup_size ("size-test", 12, GTK_ICON_LOOKUP_FORCE_SIZE, "/icons/15/size-test.png", 12);
+ assert_icon_lookup_size ("size-test", 13, GTK_ICON_LOOKUP_FORCE_SIZE, "/icons/15/size-test.png", 13);
+ assert_icon_lookup_size ("size-test", 14, GTK_ICON_LOOKUP_FORCE_SIZE, "/icons/15/size-test.png", 14);
+ assert_icon_lookup_size ("size-test", 15, GTK_ICON_LOOKUP_FORCE_SIZE, "/icons/15/size-test.png", 15);
+ assert_icon_lookup_size ("size-test", 16, GTK_ICON_LOOKUP_FORCE_SIZE, "/icons/16-22/size-test.png", 16);
+ assert_icon_lookup_size ("size-test", 17, GTK_ICON_LOOKUP_FORCE_SIZE, "/icons/16-22/size-test.png", 17);
+ assert_icon_lookup_size ("size-test", 18, GTK_ICON_LOOKUP_FORCE_SIZE, "/icons/16-22/size-test.png", 18);
+ assert_icon_lookup_size ("size-test", 19, GTK_ICON_LOOKUP_FORCE_SIZE, "/icons/16-22/size-test.png", 19);
+ //assert_icon_lookup_size ("size-test", 20, GTK_ICON_LOOKUP_FORCE_SIZE, "/icons/16-22/size-test.png", 20);
+ //assert_icon_lookup_size ("size-test", 21, GTK_ICON_LOOKUP_FORCE_SIZE, "/icons/16-22/size-test.png", 21);
+ //assert_icon_lookup_size ("size-test", 22, GTK_ICON_LOOKUP_FORCE_SIZE, "/icons/16-22/size-test.png", 22);
+ assert_icon_lookup_size ("size-test", 23, GTK_ICON_LOOKUP_FORCE_SIZE, "/icons/25+/size-test.svg", 23);
+ assert_icon_lookup_size ("size-test", 24, GTK_ICON_LOOKUP_FORCE_SIZE, "/icons/25+/size-test.svg", 24);
+ assert_icon_lookup_size ("size-test", 25, GTK_ICON_LOOKUP_FORCE_SIZE, "/icons/25+/size-test.svg", 25);
+ assert_icon_lookup_size ("size-test", 28, GTK_ICON_LOOKUP_FORCE_SIZE, "/icons/25+/size-test.svg", 28);
+ //assert_icon_lookup_size ("size-test", 31, GTK_ICON_LOOKUP_FORCE_SIZE, "/icons/25+/size-test.svg", 31);
+ //assert_icon_lookup_size ("size-test", 34, GTK_ICON_LOOKUP_FORCE_SIZE, "/icons/25+/size-test.svg", 34);
+ assert_icon_lookup_size ("size-test", 37, GTK_ICON_LOOKUP_FORCE_SIZE, "/icons/35+/size-test.svg", 37);
+ assert_icon_lookup_size ("size-test", 40, GTK_ICON_LOOKUP_FORCE_SIZE, "/icons/35+/size-test.svg", 40);
+ assert_icon_lookup_size ("size-test", 45, GTK_ICON_LOOKUP_FORCE_SIZE, "/icons/35+/size-test.svg", 45);
+}
+
int
main (int argc, char *argv[])
{
@@ -497,6 +543,7 @@ main (int argc, char *argv[])
g_test_add_func ("/icontheme/rtl", test_rtl);
g_test_add_func ("/icontheme/symbolic-single-size", test_symbolic_single_size);
g_test_add_func ("/icontheme/svg-size", test_svg_size);
+ g_test_add_func ("/icontheme/size", test_size);
g_test_add_func ("/icontheme/builtin", test_builtin);
return g_test_run();