[gnome-color-manager] Use the GcmProfile luminance functionality in the GcmCieWidget self test, and compare against a know



commit d5bd0a6efc144ed9ceda22a06a82fda48f55ef61
Author: Richard Hughes <richard hughsie com>
Date:   Wed Dec 2 08:57:05 2009 +0000

    Use the GcmProfile luminance functionality in the GcmCieWidget self test, and compare against a known image

 data/tests/Makefile.am    |    1 +
 data/tests/cie-widget.png |  Bin 0 -> 23406 bytes
 src/gcm-cie-widget.c      |   64 ++++++++++++++++++++++++++++++++++++++++++--
 3 files changed, 62 insertions(+), 3 deletions(-)
---
diff --git a/data/tests/Makefile.am b/data/tests/Makefile.am
index 95501ea..9aa20f1 100644
--- a/data/tests/Makefile.am
+++ b/data/tests/Makefile.am
@@ -1,4 +1,5 @@
 TEST_FILES =						\
+	cie-widget.png					\
 	Lenovo-T61-Internal.bin				\
 	LG-L225W-External.bin
 
diff --git a/data/tests/cie-widget.png b/data/tests/cie-widget.png
new file mode 100644
index 0000000..f65f9a3
Binary files /dev/null and b/data/tests/cie-widget.png differ
diff --git a/src/gcm-cie-widget.c b/src/gcm-cie-widget.c
index 950e6c2..a0cec95 100644
--- a/src/gcm-cie-widget.c
+++ b/src/gcm-cie-widget.c
@@ -1141,14 +1141,26 @@ gcm_cie_widget_new (void)
 #ifdef EGG_TEST
 #include "egg-test.h"
 
+#include "gcm-profile.h"
+#include "gcm-xyz.h"
+
 void
 gcm_cie_widget_test (EggTest *test)
 {
 	GtkWidget *widget;
+	GtkWidget *image;
 	GtkWidget *dialog;
 	GtkWidget *vbox;
 	gboolean ret;
 	GError *error = NULL;
+	GcmProfile *profile;
+	GcmXyz *white;
+	GcmXyz *red;
+	GcmXyz *green;
+	GcmXyz *blue;
+	gint response;
+	gchar *filename_profile;
+	gchar *filename_image;
 
 	if (!egg_test_start (test, "GcmCieWidget"))
 		return;
@@ -1158,17 +1170,63 @@ gcm_cie_widget_test (EggTest *test)
 	widget = gcm_cie_widget_new ();
 	egg_test_assert (test, widget != NULL);
 
+	/************************************************************/
+	egg_test_title (test, "get filename of image file");
+	filename_image = egg_test_get_data_file ("cie-widget.png");
+	egg_test_assert (test, (filename_image != NULL));
+
+	/************************************************************/
+	egg_test_title (test, "get filename of data file");
+	filename_profile = egg_test_get_data_file ("bluish.icc");
+	egg_test_assert (test, (filename_profile != NULL));
+
+	profile = gcm_profile_new ();
+	gcm_profile_parse (profile, filename_profile, NULL);
+	g_object_get (profile,
+		      "white-point", &white,
+		      "luminance-red", &red,
+		      "luminance-green", &green,
+		      "luminance-blue", &blue,
+		      NULL);
+
+	g_object_set (widget,
+		      "red-x", gcm_xyz_get_x (red),
+		      "red-y", gcm_xyz_get_y (red),
+		      "green-x", gcm_xyz_get_x (green),
+		      "green-y", gcm_xyz_get_y (green),
+		      "blue-x", gcm_xyz_get_x (blue),
+		      "blue-y", gcm_xyz_get_y (blue),
+		      "white-x", gcm_xyz_get_x (white),
+		      "white-y", gcm_xyz_get_y (white),
+		      NULL);
+
 	/* show in a dialog as an example */
-	dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_INFO, GTK_BUTTONS_CLOSE, "CIE widget");
+	dialog = gtk_message_dialog_new (NULL, GTK_DIALOG_DESTROY_WITH_PARENT, GTK_MESSAGE_QUESTION, GTK_BUTTONS_YES_NO, "Does CIE widget match\nthe picture below?");
+	image = gtk_image_new_from_file (filename_image);
 	vbox = gtk_dialog_get_content_area (GTK_DIALOG (dialog));
 	gtk_box_pack_end (GTK_BOX(vbox), widget, TRUE, TRUE, 12);
-	gtk_widget_set_size_request (widget, 200, 200);
+	gtk_box_pack_end (GTK_BOX(vbox), image, TRUE, TRUE, 12);
+	gtk_widget_set_size_request (widget, 300, 300);
 	gtk_window_set_resizable (GTK_WINDOW (dialog), TRUE);
 	gtk_widget_show (widget);
+	gtk_widget_show (image);
+
+	response = gtk_dialog_run (GTK_DIALOG (dialog));
+
+	/************************************************************/
+	egg_test_title (test, "plotted as expected?");
+	egg_test_assert (test, (response == GTK_RESPONSE_YES));
 
-	gtk_dialog_run (GTK_DIALOG (dialog));
 	gtk_widget_destroy (dialog);
 
+	g_object_unref (profile);
+	g_object_unref (white);
+	g_object_unref (red);
+	g_object_unref (green);
+	g_object_unref (blue);
+	g_free (filename_profile);
+	g_free (filename_image);
+
 	egg_test_end (test);
 }
 #endif



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