void testTimeSyncData( Test * pTest, BACNET_DATE * my_date, BACNET_TIME * my_time) { uint8_t apdu[480] = { 0 }; int len = 0; int apdu_len = 0; BACNET_DATE test_date; BACNET_TIME test_time; len = timesync_encode_apdu(&apdu[0], my_date, my_time); ct_test(pTest, len != 0); apdu_len = len; len = timesync_decode_apdu(&apdu[0], apdu_len, &test_date, &test_time); ct_test(pTest, len != -1); ct_test(pTest, datetime_compare_time(my_time, &test_time) == 0); ct_test(pTest, datetime_compare_date(my_date, &test_date) == 0); len = timesync_utc_encode_apdu(&apdu[0], my_date, my_time); ct_test(pTest, len != 0); apdu_len = len; len = timesync_utc_decode_apdu(&apdu[0], apdu_len, &test_date, &test_time); ct_test(pTest, len != -1); ct_test(pTest, datetime_compare_time(my_time, &test_time) == 0); ct_test(pTest, datetime_compare_date(my_date, &test_date) == 0); }
/* Auxiliary methods */ static gboolean update_grid_scroll_position (GcalWeekView *self) { g_autoptr(GDateTime) week_start = NULL; g_autoptr(GDateTime) week_end = NULL; g_autoptr(GDateTime) now = NULL; GtkAdjustment *vadjustment; gdouble minutes, real_value; gdouble max, page, page_increment, value; /* While the scrolled window is not mapped, we keep waiting */ if (!gtk_widget_get_realized (self->scrolled_window) || !gtk_widget_get_mapped (self->scrolled_window)) { GCAL_RETURN (G_SOURCE_CONTINUE); } now = g_date_time_new_now_local (); week_start = get_start_of_week (self->date); week_end = get_end_of_week (self->date); /* Don't animate when not today */ if (datetime_compare_date (now, week_start) < 0 || datetime_compare_date (now, week_end) >= 0) GCAL_GOTO (out); vadjustment = gtk_scrolled_window_get_vadjustment (GTK_SCROLLED_WINDOW (self->scrolled_window)); minutes = g_date_time_get_hour (now) * 60 + g_date_time_get_minute (now); page = gtk_adjustment_get_page_size (vadjustment); max = gtk_adjustment_get_upper (vadjustment); real_value = max / MINUTES_PER_DAY * minutes - (page / 2.0); page_increment = gtk_adjustment_get_page_increment (vadjustment); value = gtk_adjustment_get_value (vadjustment); gtk_adjustment_set_page_increment (vadjustment, real_value - value); g_signal_emit_by_name (self->scrolled_window, "scroll-child", GTK_SCROLL_PAGE_FORWARD, FALSE); gtk_adjustment_set_page_increment (vadjustment, page_increment); out: self->scroll_grid_timeout_id = 0; GCAL_RETURN (G_SOURCE_REMOVE); }
/* if the datetime1 is the same as datetime2, return is 0 if datetime1 is before datetime2, returns negative if datetime1 is after datetime2, returns positive */ int datetime_compare( BACNET_DATE_TIME * datetime1, BACNET_DATE_TIME * datetime2) { int diff = 0; diff = datetime_compare_date(&datetime1->date, &datetime2->date); if (diff == 0) { diff = datetime_compare_time(&datetime1->time, &datetime2->time); } return diff; }
static void testDayOfYear( Test * pTest) { uint32_t days = 0; uint8_t month = 0, test_month = 0; uint8_t day = 0, test_day = 0; uint16_t year = 0; BACNET_DATE bdate; BACNET_DATE test_bdate; days = day_of_year(1900, 1, 1); ct_test(pTest, days == 1); day_of_year_into_md(days, 1900, &month, &day); ct_test(pTest, month == 1); ct_test(pTest, day == 1); for (year = 1900; year <= 2154; year++) { for (month = 1; month <= 12; month++) { for (day = 1; day <= datetime_month_days(year, month); day++) { days = day_of_year(year, month, day); day_of_year_into_md(days, year, &test_month, &test_day); ct_test(pTest, month == test_month); ct_test(pTest, day == test_day); } } } for (year = 1900; year <= 2154; year++) { for (month = 1; month <= 12; month++) { for (day = 1; day <= datetime_month_days(year, month); day++) { datetime_set_date(&bdate, year, month, day); days = datetime_day_of_year(&bdate); datetime_day_of_year_into_date(days, year, &test_bdate); ct_test(pTest, datetime_compare_date(&bdate, &test_bdate) == 0); } } } }
void testBACnetDate( Test * pTest) { BACNET_DATE bdate1, bdate2; int diff = 0; datetime_set_date(&bdate1, 1900, 1, 1); datetime_copy_date(&bdate2, &bdate1); diff = datetime_compare_date(&bdate1, &bdate2); ct_test(pTest, diff == 0); datetime_set_date(&bdate2, 1900, 1, 2); diff = datetime_compare_date(&bdate1, &bdate2); ct_test(pTest, diff < 0); datetime_set_date(&bdate2, 1900, 2, 1); diff = datetime_compare_date(&bdate1, &bdate2); ct_test(pTest, diff < 0); datetime_set_date(&bdate2, 1901, 1, 1); diff = datetime_compare_date(&bdate1, &bdate2); ct_test(pTest, diff < 0); /* midpoint */ datetime_set_date(&bdate1, 2007, 7, 15); datetime_copy_date(&bdate2, &bdate1); diff = datetime_compare_date(&bdate1, &bdate2); ct_test(pTest, diff == 0); datetime_set_date(&bdate2, 2007, 7, 14); diff = datetime_compare_date(&bdate1, &bdate2); ct_test(pTest, diff > 0); datetime_set_date(&bdate2, 2007, 7, 1); diff = datetime_compare_date(&bdate1, &bdate2); ct_test(pTest, diff > 0); datetime_set_date(&bdate2, 2007, 7, 31); diff = datetime_compare_date(&bdate1, &bdate2); ct_test(pTest, diff < 0); datetime_set_date(&bdate2, 2007, 8, 15); diff = datetime_compare_date(&bdate1, &bdate2); ct_test(pTest, diff < 0); datetime_set_date(&bdate2, 2007, 12, 15); diff = datetime_compare_date(&bdate1, &bdate2); ct_test(pTest, diff < 0); datetime_set_date(&bdate2, 2007, 6, 15); diff = datetime_compare_date(&bdate1, &bdate2); ct_test(pTest, diff > 0); datetime_set_date(&bdate2, 2007, 1, 15); diff = datetime_compare_date(&bdate1, &bdate2); ct_test(pTest, diff > 0); datetime_set_date(&bdate2, 2006, 7, 15); diff = datetime_compare_date(&bdate1, &bdate2); ct_test(pTest, diff > 0); datetime_set_date(&bdate2, 1900, 7, 15); diff = datetime_compare_date(&bdate1, &bdate2); ct_test(pTest, diff > 0); datetime_set_date(&bdate2, 2008, 7, 15); diff = datetime_compare_date(&bdate1, &bdate2); ct_test(pTest, diff < 0); datetime_set_date(&bdate2, 2154, 7, 15); diff = datetime_compare_date(&bdate1, &bdate2); ct_test(pTest, diff < 0); return; }