[gnome-settings-daemon/benzea/nightlight-fixes: 3/5] color: Add test for disabled until tomorrow sunrise logic



commit 9ddf480a07bbbe3eec7bb8a76e3160dad772f28c
Author: Benjamin Berg <bberg redhat com>
Date:   Tue Jun 5 00:27:08 2018 +0200

    color: Add test for disabled until tomorrow sunrise logic
    
    Disabled until tomorrow needs to detect whether sunrise has passed since
    it was turned on. Test this logic to be correct in various cases.

 plugins/color/gcm-self-test.c   | 27 +++++++++++++++++++++++++++
 plugins/color/gsd-night-light.c |  3 +++
 2 files changed, 30 insertions(+)
---
diff --git a/plugins/color/gcm-self-test.c b/plugins/color/gcm-self-test.c
index f2971e87..f26e8b04 100644
--- a/plugins/color/gcm-self-test.c
+++ b/plugins/color/gcm-self-test.c
@@ -189,6 +189,33 @@ gcm_test_night_light (void)
 
         /* Ensure that the color temperature is still the default one.*/
         g_assert_cmpint (gsd_night_light_get_temperature (nlight), ==, GSD_COLOR_TEMPERATURE_DEFAULT);
+
+
+        /* Check that disabled until tomorrow resets again correctly. */
+        g_settings_set_double (settings, "night-light-schedule-from", 17.0);
+        g_settings_set_double (settings, "night-light-schedule-to", 7.f);
+        g_settings_set_boolean (settings, "night-light-enabled", TRUE);
+        gsd_night_light_set_disabled_until_tmw (nlight, TRUE);
+
+        /* Move time past midnight */
+        g_clear_pointer (&datetime_override, g_date_time_unref);
+        datetime_override = g_date_time_new_utc (2017, 2, 9, 1, 0, 0);
+        gsd_night_light_set_date_time_now (nlight, datetime_override);
+        g_assert_true (gsd_night_light_get_disabled_until_tmw (nlight));
+
+        /* Move past sunrise */
+        g_clear_pointer (&datetime_override, g_date_time_unref);
+        datetime_override = g_date_time_new_utc (2017, 2, 9, 8, 0, 0);
+        gsd_night_light_set_date_time_now (nlight, datetime_override);
+        g_assert_false (gsd_night_light_get_disabled_until_tmw (nlight));
+
+        gsd_night_light_set_disabled_until_tmw (nlight, TRUE);
+
+        /* Move into night more than 24h in the future */
+        g_clear_pointer (&datetime_override, g_date_time_unref);
+        datetime_override = g_date_time_new_utc (2017, 2, 10, 20, 0, 0);
+        gsd_night_light_set_date_time_now (nlight, datetime_override);
+        g_assert_false (gsd_night_light_get_disabled_until_tmw (nlight));
 }
 
 static void
diff --git a/plugins/color/gsd-night-light.c b/plugins/color/gsd-night-light.c
index cc602dff..2fd4c2eb 100644
--- a/plugins/color/gsd-night-light.c
+++ b/plugins/color/gsd-night-light.c
@@ -75,6 +75,7 @@ enum {
 
 static void poll_timeout_destroy (GsdNightLight *self);
 static void poll_timeout_create (GsdNightLight *self);
+static void night_light_recheck (GsdNightLight *self);
 
 G_DEFINE_TYPE (GsdNightLight, gsd_night_light, G_TYPE_OBJECT);
 
@@ -92,6 +93,8 @@ gsd_night_light_set_date_time_now (GsdNightLight *self, GDateTime *datetime)
         if (self->datetime_override != NULL)
                 g_date_time_unref (self->datetime_override);
         self->datetime_override = g_date_time_ref (datetime);
+
+        night_light_recheck (self);
 }
 
 static void


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