/* * Copyright 2015 (c) Anna Schumaker. * Test the string formatting functions. */ #include #include #include #define str_test_equal(lhs, rhs) \ test_strings_equal(lhs, g_strdup(rhs), __LINE__) void test_sec2str() { str_test_equal(string_sec2str(0), "0:00"); str_test_equal(string_sec2str(5), "0:05"); str_test_equal(string_sec2str(10), "0:10"); str_test_equal(string_sec2str(60), "1:00"); str_test_equal(string_sec2str(65), "1:05"); str_test_equal(string_sec2str(75), "1:15"); str_test_equal(string_sec2str(600), "10:00"); str_test_equal(string_sec2str(605), "10:05"); str_test_equal(string_sec2str(615), "10:15"); str_test_equal(string_sec2str(660), "11:00"); str_test_equal(string_sec2str(665), "11:05"); str_test_equal(string_sec2str(675), "11:15"); } void test_sec2str_long() { unsigned int minute = 60; unsigned int hour = 3600; unsigned int day = 86400; str_test_equal(string_sec2str_long(day), "1 day"); str_test_equal(string_sec2str_long(2 * day), "2 days"); str_test_equal(string_sec2str_long(day + hour), "1 day, 1 hour"); str_test_equal(string_sec2str_long(hour), "1 hour"); str_test_equal(string_sec2str_long(2 * hour), "2 hours"); str_test_equal(string_sec2str_long(hour + minute), "1 hour, 1 minute"); str_test_equal(string_sec2str_long(minute), "1 minute"); str_test_equal(string_sec2str_long(2 * minute), "2 minutes"); str_test_equal(string_sec2str_long(minute + 1), "1 minute, 1 second"); str_test_equal(string_sec2str_long(0), ""); str_test_equal(string_sec2str_long(1), "1 second"); str_test_equal(string_sec2str_long(2), "2 seconds"); str_test_equal( string_sec2str_long((22 * day) + (4 * hour) + (12 * minute) + 32), "22 days, 4 hours, 12 minutes, 32 seconds"); } void test_date() { struct tm tm = { .tm_year = 92, .tm_mon = 9, .tm_mday = 5, }; gchar *str; setlocale(LC_TIME, "C"); str = string_tm2str(&tm); test_equal(str, "10/05/92"); g_free(str); setlocale(LC_TIME, "en_US"); str = string_tm2str(&tm); test_equal(str, "10/05/1992"); g_free(str); } void test_lowercase() { str_test_equal(string_lowercase(""), ""); str_test_equal(string_lowercase(" "), ""); str_test_equal(string_lowercase("5:02 PM"), "502 pm"); str_test_equal(string_lowercase("T.N.T."), "tnt"); str_test_equal(string_lowercase("#1 Zero"), "1 zero"); str_test_equal(string_lowercase("Don't Stop"), "dont stop"); str_test_equal(string_lowercase("100,000 Years"), "100000 years"); str_test_equal(string_lowercase("Les Misérable"), "les miserable"); str_test_equal(string_lowercase("Kryptonite (live)"), "kryptonite live"); str_test_equal(string_lowercase("This Time [Hidden]"), "this time hidden"); } void test_compare() { test_equal(string_compare("A", "A"), 0); test_equal(string_compare("a", "a"), 0); test_equal(string_compare("A", "B"), -1); test_equal(string_compare("B", "A"), 1); test_equal(string_compare("", ""), 0); test_equal(string_compare("", "A"), 1); test_equal(string_compare("A", ""), -1); } void test_match() { test_equal(string_match(NULL, NULL), (bool)false); test_equal(string_match(NULL, "A"), (bool)false); test_equal(string_match("A", NULL), (bool)false); test_equal(string_match("A", "A"), (bool)true); test_equal(string_match("A", "B"), (bool)false); } void test_length() { test_equal(string_length(NULL), 0); test_equal(string_length(""), 0); test_equal(string_length("a"), 1); test_equal(string_length("abcdefghijklmnopqrstuvwxyz"), 26); } DECLARE_UNIT_TESTS( UNIT_TEST("Seconds to String", test_sec2str), UNIT_TEST("Seconds to String (Long)", test_sec2str_long), UNIT_TEST("Date to String", test_date), UNIT_TEST("String Lowercase", test_lowercase), UNIT_TEST("String Comparison", test_compare), UNIT_TEST("String Match", test_match), UNIT_TEST("String Length", test_length), );