summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Berg <bberg@redhat.com>2018-06-05 00:27:08 +0200
committerBenjamin Berg <bberg@redhat.com>2018-06-05 00:27:08 +0200
commitd0e47290fef374b89b41035c17144f1ec439d65a (patch)
treee4b6591417f43aef0359ee16c612671bf4d3b1cb
parent674f390afc9749574968ed3ffc0fc1ff4f9170a7 (diff)
downloadgnome-settings-daemon-benzea/nightlight-dut-fix.tar.gz
color: Add test for disabled until tomorrow sunrise logicbenzea/nightlight-dut-fix
Disabled until tomorrow needs to detect whether sunrise has passed since it was turned on. Test this logic to be correct in various cases.
-rw-r--r--plugins/color/gcm-self-test.c27
-rw-r--r--plugins/color/gsd-night-light.c3
2 files changed, 30 insertions, 0 deletions
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