// Function prototypes
+// Override time function
+static time_t fake_time = 0;
+time_t time(time_t *__timer) {
+ return fake_time;
+}
+
// Function definitions
START_TEST (check_base64) {
ck_assert(result);
contrac_get_proximity_id_base64(contrac, rpi_base64);
ck_assert_int_eq(strlen(rpi_base64), RPI_SIZE_BASE64);
- ck_assert_str_eq(rpi_base64, "++ucH9hoIkGwCzM+J09faQ==");
+ ck_assert_str_eq(rpi_base64, "yStiu899O+6xvdLiUdrpsA==");
result = contrac_set_time_interval_number(contrac, 82);
ck_assert(result);
contrac_get_proximity_id_base64(contrac, rpi_base64);
ck_assert_int_eq(strlen(rpi_base64), RPI_SIZE_BASE64);
- ck_assert_str_eq(rpi_base64, "GrqeroryZQ+Uvhx10zfKWw==");
+ ck_assert_str_eq(rpi_base64, "aFTYIeEUGYKELi8TUUql+Q==");
result = contrac_set_time_interval_number(contrac, 143);
ck_assert(result);
contrac_get_proximity_id_base64(contrac, rpi_base64);
ck_assert_int_eq(strlen(rpi_base64), RPI_SIZE_BASE64);
- ck_assert_str_eq(rpi_base64, "+9eL1UlYZ9buUCFF5qRDUA==");
+ ck_assert_str_eq(rpi_base64, "MK9mDdgTsgsh6Vxp0XhasA==");
contrac_set_tracing_key_base64(contrac, tracing_key_base64[1]);
ck_assert(result);
contrac_get_proximity_id_base64(contrac, rpi_base64);
ck_assert_int_eq(strlen(rpi_base64), RPI_SIZE_BASE64);
- ck_assert_str_eq(rpi_base64, "XmePWi0HlgHyBcVUb0KhjQ==");
+ ck_assert_str_eq(rpi_base64, "layNswS/rQxovfYnBhjXJg==");
result = contrac_set_time_interval_number(contrac, 27);
ck_assert(result);
contrac_get_proximity_id_base64(contrac, rpi_base64);
ck_assert_int_eq(strlen(rpi_base64), RPI_SIZE_BASE64);
- ck_assert_str_eq(rpi_base64, "LlPznz6D044ZKYsY3sHJew==");
+ ck_assert_str_eq(rpi_base64, "BJyzAC3hyVfcWOhQ9paEFA==");
result = contrac_set_time_interval_number(contrac, 143);
ck_assert(result);
contrac_get_proximity_id_base64(contrac, rpi_base64);
ck_assert_int_eq(strlen(rpi_base64), RPI_SIZE_BASE64);
- ck_assert_str_eq(rpi_base64, "QDG50cy9NTXZ3zDAUGkePQ==");
+ ck_assert_str_eq(rpi_base64, "ItETUQc372fOzJKHvF8z6w==");
// Clean up
contrac_delete(contrac);
int pos;
const unsigned char * rpi_bytes;
const unsigned char * dtk_bytes;
- Rpi * rpi;
- Dtk * dtk;
MatchList * matches;
MatchListItem const * match;
ck_assert(result);
rpi_bytes = contrac_get_proximity_id(contrac);
- rpi = rpi_new();
- rpi_assign(rpi, rpi_bytes, beacon_times[pos]);
-
- rpi_list_append(beacon_list, rpi);
+ rpi_list_add_beacon(beacon_list, rpi_bytes, beacon_times[pos]);
}
// Generate some diagnosis data (as if provided by a diagnosis server)
ck_assert(result);
dtk_bytes = contrac_get_daily_key(contrac);
- dtk = dtk_new();
- dtk_assign(dtk, dtk_bytes, diagnosis_days[pos]);
-
- dtk_list_append(diagnosis_list, dtk);
+ dtk_list_add_diagnosis(diagnosis_list, dtk_bytes, diagnosis_days[pos]);
}
// Check that the matching algorithm identifies the beacons that match
}
END_TEST
+START_TEST (check_time) {
+ bool result;
+ char const *tracing_key_base64 = "3UmKrtcQ2tfLE8UPSXHb4PtgRfE0E2xdSs+PGVIS8cc=";
+ uint32_t dn;
+ uint8_t tn;
+ time_t base = 1587415596;
+ time_t check;
+ Contrac * contrac;
+ char dtk_base64[DTK_SIZE_BASE64 + 1];
+ char rpi_base64[RPI_SIZE_BASE64 + 1];
+
+ check = base;
+ dn = epoch_to_day_number(check);
+ ck_assert_int_eq(dn, 18372);
+ tn = epoch_to_time_interval_number(check);
+ ck_assert_int_eq(tn, 124);
+
+ check = base + (24 * 60 * 60);
+ dn = epoch_to_day_number(check);
+ ck_assert_int_eq(dn, 18372 + 1);
+ tn = epoch_to_time_interval_number(check);
+ ck_assert_int_eq(tn, 124);
+
+ check = base - 675 * (24 * 60 * 60);
+ dn = epoch_to_day_number(check);
+ ck_assert_int_eq(dn, 18372 - 675);
+ tn = epoch_to_time_interval_number(check);
+ ck_assert_int_eq(tn, 124);
+
+ check = base + 15 * (10 * 60);
+ dn = epoch_to_day_number(check);
+ ck_assert_int_eq(dn, 18372);
+ tn = epoch_to_time_interval_number(check);
+ ck_assert_int_eq(tn, 124 + 15);
+
+ fake_time = 1587415596;
+
+ contrac = contrac_new();
+ contrac_set_tracing_key_base64(contrac, tracing_key_base64);
+
+ contrac_update_current_time(contrac);
+ result = contrac_get_initialised(contrac);
+ ck_assert(result);
+
+ contrac_get_daily_key_base64(contrac, dtk_base64);
+ ck_assert_str_eq(dtk_base64, "6GMXmeDAR5XU0AEtZQJ+tA==");
+
+ contrac_get_proximity_id_base64(contrac, rpi_base64);
+ ck_assert_str_eq(rpi_base64, "ysbjVuF7xf9eDH2y2T8VpQ==");
+
+ contrac_delete(contrac);
+}
+END_TEST
+
int main(void) {
int failed;
Suite * s;
tcase_add_test(tc, check_dtk);
tcase_add_test(tc, check_rpi);
tcase_add_test(tc, check_match);
+ tcase_add_test(tc, check_time);
suite_add_tcase(s, tc);
sr = srunner_create(s);