/* * Copyright 2015 Canonical Ltd. * Copyright 2021 Robert Tari * * This program is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License version 3, as published * by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranties of * MERCHANTABILITY, SATISFACTORY QUALITY, or FITNESS FOR A PARTICULAR * PURPOSE. See the GNU General Public License for more details. * * You should have received a copy of the GNU General Public License along * with this program. If not, see . * * Authors: * Charles Kerr * Robert Tari */ #include #include "glib-fixture.h" using namespace ayatana::indicator::datetime; /*** **** ***/ class DateTimeFixture: public GlibFixture { public: DateTimeFixture() =default; virtual ~DateTimeFixture() =default; private: typedef GlibFixture super; protected: GRand * m_rand = nullptr; virtual void SetUp() override { super::SetUp(); m_rand = g_rand_new(); } virtual void TearDown() override { g_clear_pointer(&m_rand, g_rand_free); super::TearDown(); } DateTime random_day() { GTimeZone * universal = g_time_zone_new_utc(); DateTime point(universal, g_rand_int_range(m_rand, 1970, 3000), g_rand_int_range(m_rand, 1, 13), g_rand_int_range(m_rand, 1, 29), g_rand_int_range(m_rand, 0, 24), g_rand_int_range(m_rand, 0, 60), g_rand_double_range(m_rand, 0, 60.0)); g_time_zone_unref(universal); return point; } }; /*** **** ***/ TEST_F(DateTimeFixture, StartAndEnd) { const int n_iterations{10000}; for (int i{0}; i