64 lines
1.8 KiB
C
64 lines
1.8 KiB
C
#include <criterion/criterion.h>
|
|
#include <stdint.h>
|
|
#include <math.h>
|
|
#include "internal/ping/stats.h"
|
|
|
|
Test(ping_stats, init_neutral)
|
|
{
|
|
struct ping_stats s;
|
|
double min_ms, max_ms, avg_ms, mdev_ms;
|
|
|
|
ping_stats_init(&s);
|
|
cr_assert_eq(s.count, (size_t)0);
|
|
ping_stats_get(&s, &min_ms, &max_ms, &avg_ms, &mdev_ms);
|
|
cr_assert_float_eq(min_ms, 0.0, 1e-9);
|
|
cr_assert_float_eq(max_ms, 0.0, 1e-9);
|
|
cr_assert_float_eq(avg_ms, 0.0, 1e-9);
|
|
cr_assert_float_eq(mdev_ms, 0.0, 1e-9);
|
|
}
|
|
|
|
Test(ping_stats, single_update)
|
|
{
|
|
struct ping_stats s;
|
|
double min_ms, max_ms, avg_ms, mdev_ms;
|
|
|
|
ping_stats_init(&s);
|
|
ping_stats_update(&s, 10000000LL); /* 10 ms */
|
|
ping_stats_get(&s, &min_ms, &max_ms, &avg_ms, &mdev_ms);
|
|
cr_assert_float_eq(min_ms, 10.0, 1e-6);
|
|
cr_assert_float_eq(max_ms, 10.0, 1e-6);
|
|
cr_assert_float_eq(avg_ms, 10.0, 1e-6);
|
|
cr_assert_float_eq(mdev_ms, 0.0, 1e-3);
|
|
}
|
|
|
|
Test(ping_stats, multiple_updates)
|
|
{
|
|
struct ping_stats s;
|
|
double min_ms, max_ms, avg_ms, mdev_ms;
|
|
|
|
ping_stats_init(&s);
|
|
ping_stats_update(&s, 10000000LL); /* 10 ms */
|
|
ping_stats_update(&s, 20000000LL); /* 20 ms */
|
|
ping_stats_update(&s, 30000000LL); /* 30 ms */
|
|
ping_stats_get(&s, &min_ms, &max_ms, &avg_ms, &mdev_ms);
|
|
cr_assert_float_eq(min_ms, 10.0, 1e-6);
|
|
cr_assert_float_eq(max_ms, 30.0, 1e-6);
|
|
cr_assert_float_eq(avg_ms, 20.0, 1e-6);
|
|
cr_assert(mdev_ms > 0.0, "mdev should be > 0 for different values");
|
|
}
|
|
|
|
Test(ping_stats, identical_values_mdev_zero)
|
|
{
|
|
struct ping_stats s;
|
|
double min_ms, max_ms, avg_ms, mdev_ms;
|
|
|
|
ping_stats_init(&s);
|
|
ping_stats_update(&s, 15000000LL);
|
|
ping_stats_update(&s, 15000000LL);
|
|
ping_stats_update(&s, 15000000LL);
|
|
ping_stats_get(&s, &min_ms, &max_ms, &avg_ms, &mdev_ms);
|
|
cr_assert_float_eq(min_ms, 15.0, 1e-6);
|
|
cr_assert_float_eq(max_ms, 15.0, 1e-6);
|
|
cr_assert_float_eq(avg_ms, 15.0, 1e-6);
|
|
cr_assert_float_eq(mdev_ms, 0.0, 1e-3);
|
|
}
|