[gtk+] Add more icontheme tests



commit 84cf748eae1f21e2b78b8e330a53ee12a308e32f
Author: Matthias Clasen <mclasen redhat com>
Date:   Sat Jun 14 15:06:57 2014 -0400

    Add more icontheme tests
    
    This test is focused on svgs, and how we scale them when
    loading.

 testsuite/gtk/icons/16x16/twosize-fixed.svg |   56 +++++++++++++++++++++++++++
 testsuite/gtk/icons/16x16s/twosize.svg      |   56 +++++++++++++++++++++++++++
 testsuite/gtk/icons/32x32/twosize-fixed.svg |    4 ++
 testsuite/gtk/icons/32x32s/twosize.svg      |    4 ++
 testsuite/gtk/icons/index.theme             |   20 ++++++++-
 testsuite/gtk/icontheme.c                   |   53 +++++++++++++++++++++++--
 6 files changed, 186 insertions(+), 7 deletions(-)
---
diff --git a/testsuite/gtk/icons/16x16/twosize-fixed.svg b/testsuite/gtk/icons/16x16/twosize-fixed.svg
new file mode 100644
index 0000000..3bb8881
--- /dev/null
+++ b/testsuite/gtk/icons/16x16/twosize-fixed.svg
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="32"
+   height="32"
+   version="1.1"
+   id="svg3033"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="only32-svg.svg">
+  <metadata
+     id="metadata3041">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3039" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="640"
+     inkscape:window-height="480"
+     id="namedview3037"
+     showgrid="false"
+     inkscape:zoom="11.313708"
+     inkscape:cx="16"
+     inkscape:cy="16.526174"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg3033" />
+  <text
+     x="16"
+     y="24"
+     font-size="24"
+     id="text3035"
+     style="font-size:24px;text-anchor:middle">16</text>
+</svg>
diff --git a/testsuite/gtk/icons/16x16s/twosize.svg b/testsuite/gtk/icons/16x16s/twosize.svg
new file mode 100644
index 0000000..3bb8881
--- /dev/null
+++ b/testsuite/gtk/icons/16x16s/twosize.svg
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/";
+   xmlns:cc="http://creativecommons.org/ns#";
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
+   xmlns:svg="http://www.w3.org/2000/svg";
+   xmlns="http://www.w3.org/2000/svg";
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd";
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape";
+   width="32"
+   height="32"
+   version="1.1"
+   id="svg3033"
+   inkscape:version="0.48.4 r9939"
+   sodipodi:docname="only32-svg.svg">
+  <metadata
+     id="metadata3041">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage"; />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <defs
+     id="defs3039" />
+  <sodipodi:namedview
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1"
+     objecttolerance="10"
+     gridtolerance="10"
+     guidetolerance="10"
+     inkscape:pageopacity="0"
+     inkscape:pageshadow="2"
+     inkscape:window-width="640"
+     inkscape:window-height="480"
+     id="namedview3037"
+     showgrid="false"
+     inkscape:zoom="11.313708"
+     inkscape:cx="16"
+     inkscape:cy="16.526174"
+     inkscape:window-x="0"
+     inkscape:window-y="27"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg3033" />
+  <text
+     x="16"
+     y="24"
+     font-size="24"
+     id="text3035"
+     style="font-size:24px;text-anchor:middle">16</text>
+</svg>
diff --git a/testsuite/gtk/icons/32x32/twosize-fixed.svg b/testsuite/gtk/icons/32x32/twosize-fixed.svg
new file mode 100644
index 0000000..45b553c
--- /dev/null
+++ b/testsuite/gtk/icons/32x32/twosize-fixed.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" standalone="no"?>
+<svg width="32" height="32" version="1.1" xmlns="http://www.w3.org/2000/svg";>
+  <text x="16" y="24" text-anchor="middle" font-size="24">32</text>
+</svg>
diff --git a/testsuite/gtk/icons/32x32s/twosize.svg b/testsuite/gtk/icons/32x32s/twosize.svg
new file mode 100644
index 0000000..45b553c
--- /dev/null
+++ b/testsuite/gtk/icons/32x32s/twosize.svg
@@ -0,0 +1,4 @@
+<?xml version="1.0" standalone="no"?>
+<svg width="32" height="32" version="1.1" xmlns="http://www.w3.org/2000/svg";>
+  <text x="16" y="24" text-anchor="middle" font-size="24">32</text>
+</svg>
diff --git a/testsuite/gtk/icons/index.theme b/testsuite/gtk/icons/index.theme
index cecd974..20c53bb 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,32x32,scalable
+Directories=16x16,16x16s,32x32,32x32s,scalable
 
 [16x16]
 Context=16x16 icons
@@ -15,9 +15,23 @@ Context=32x32 icons
 Size=32
 Type=Fixed
 
+[16x16s]
+Context=scalable 16x16 icons
+Size=16
+MinSize=12
+MaxSize=24
+Type=Scalable
+
+[32x32s]
+Context=scalable 32x32 icons
+Size=32
+MinSize=24
+MaxSize=48
+Type=Scalable
+
 [scalable]
 Context=scalable icons
 Type=Scalable
 Size=128
-Min-Size=1
-Max-Size=256
+MinSize=1
+MaxSize=256
diff --git a/testsuite/gtk/icontheme.c b/testsuite/gtk/icontheme.c
index 17fe6a0..01eac23 100644
--- a/testsuite/gtk/icontheme.c
+++ b/testsuite/gtk/icontheme.c
@@ -45,10 +45,11 @@ lookup_flags_to_string (GtkIconLookupFlags flags)
 }
 
 static void
-assert_icon_lookup (const char         *icon_name,
-                    gint                size,
-                    GtkIconLookupFlags  flags,
-                    const char         *filename)
+assert_icon_lookup_size (const char         *icon_name,
+                         gint                size,
+                         GtkIconLookupFlags  flags,
+                         const char         *filename,
+                         gint                pixbuf_size)
 {
   GtkIconInfo *info;
 
@@ -68,10 +69,30 @@ assert_icon_lookup (const char         *icon_name,
       return;
     }
 
+  if (pixbuf_size > 0)
+    {
+      GdkPixbuf *pixbuf;
+      GError *error = NULL;
+
+      pixbuf = gtk_icon_info_load_icon (info, &error);
+      g_assert_no_error (error);
+      g_assert_cmpint (gdk_pixbuf_get_width (pixbuf), ==, pixbuf_size);
+      g_object_unref (pixbuf);
+    }
+
   g_object_unref (info);
 }
 
 static void
+assert_icon_lookup (const char         *icon_name,
+                    gint                size,
+                    GtkIconLookupFlags  flags,
+                    const char         *filename)
+{
+  assert_icon_lookup_size (icon_name, size, flags, filename, -1);
+}
+
+static void
 assert_icon_lookup_fails (const char         *icon_name,
                           gint                size,
                           GtkIconLookupFlags  flags)
@@ -424,6 +445,29 @@ test_symbolic_single_size (void)
                       "/icons/32x32/only32-symbolic.svg");
 }
 
+static void
+test_svg_size (void)
+{
+   /* To understand these results, keep in mind that we never allow upscaling,
+   * and don't respect min/max size for scaling (though we do take it into
+   * account for choosing).
+   */
+  /* Check we properly load a svg icon from a sized directory */
+  assert_icon_lookup_size ("twosize-fixed", 48, 0, "/icons/32x32/twosize-fixed.svg", 32);
+  assert_icon_lookup_size ("twosize-fixed", 32, 0, "/icons/32x32/twosize-fixed.svg", 32);
+  assert_icon_lookup_size ("twosize-fixed", 20, 0, "/icons/32x32/twosize-fixed.svg", 32);
+  assert_icon_lookup_size ("twosize-fixed", 16, 0, "/icons/16x16/twosize-fixed.svg", 16);
+
+  /* Check that we still properly load it even if a different size is requested */
+  assert_icon_lookup_size ("twosize", 64, 0, "/icons/32x32s/twosize.svg", 64);
+  assert_icon_lookup_size ("twosize", 48, 0, "/icons/32x32s/twosize.svg", 48);
+  assert_icon_lookup_size ("twosize", 32, 0, "/icons/32x32s/twosize.svg", 32);
+  assert_icon_lookup_size ("twosize", 24, 0, "/icons/32x32s/twosize.svg", 24);
+  assert_icon_lookup_size ("twosize", 16, 0, "/icons/16x16s/twosize.svg", 16);
+  assert_icon_lookup_size ("twosize", 12, 0, "/icons/16x16s/twosize.svg", 12);
+  assert_icon_lookup_size ("twosize",  8, 0, "/icons/16x16s/twosize.svg",  8);
+}
+
 int
 main (int argc, char *argv[])
 {
@@ -436,6 +480,7 @@ main (int argc, char *argv[])
   g_test_add_func ("/icontheme/force-regular", test_force_regular);
   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);
 
   return g_test_run();
 }


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