#include #include "traffic.h" using namespace roro::net; void setUp() { resetTraffic(); } void tearDown() {} void test_counts_per_service() { received(User::Irc, 100); received(User::Irc, 20); sent(User::Irc, 7); sent(User::Gemini, 40); TEST_ASSERT_EQUAL_UINT32(120, traffic(User::Irc).in); TEST_ASSERT_EQUAL_UINT32(7, traffic(User::Irc).out); TEST_ASSERT_EQUAL_UINT32(0, traffic(User::Gemini).in); TEST_ASSERT_EQUAL_UINT32(40, traffic(User::Gemini).out); TEST_ASSERT_EQUAL_UINT32(0, traffic(User::Updates).in); } void test_names() { TEST_ASSERT_EQUAL_STRING("IRC", userName(User::Irc)); TEST_ASSERT_EQUAL_STRING("Gemini", userName(User::Gemini)); TEST_ASSERT_EQUAL_STRING("Debug Console", userName(User::DebugConsole)); TEST_ASSERT_EQUAL_STRING("Updates", userName(User::Updates)); } // Bytes a second between two readings; the counter wraps at 4 GB like any uint32. void test_rate() { TEST_ASSERT_EQUAL_UINT32(1000, bytesPerSecond(5000, 6000, 1000)); TEST_ASSERT_EQUAL_UINT32(500, bytesPerSecond(0, 1000, 2000)); TEST_ASSERT_EQUAL_UINT32(0, bytesPerSecond(7, 7, 1000)); TEST_ASSERT_EQUAL_UINT32(20, bytesPerSecond(0xFFFFFFF6u, 10, 1000)); TEST_ASSERT_EQUAL_UINT32(0, bytesPerSecond(1, 2, 0)); } void test_sizes_for_humans() { TEST_ASSERT_EQUAL_STRING("0 B", formatTraffic(0).c_str()); TEST_ASSERT_EQUAL_STRING("999 B", formatTraffic(999).c_str()); TEST_ASSERT_EQUAL_STRING("1.5 KB", formatTraffic(1536).c_str()); TEST_ASSERT_EQUAL_STRING("12 KB", formatTraffic(12 * 1024 + 100).c_str()); TEST_ASSERT_EQUAL_STRING("1.7 MB", formatTraffic(1774688).c_str()); TEST_ASSERT_EQUAL_STRING("48 MB", formatTraffic(48u * 1024 * 1024).c_str()); } int main() { UNITY_BEGIN(); RUN_TEST(test_counts_per_service); RUN_TEST(test_names); RUN_TEST(test_rate); RUN_TEST(test_sizes_for_humans); return UNITY_END(); }