xrdp/tests/common/test_guid.c

115 lines
2.6 KiB
C

#if defined(HAVE_CONFIG_H)
#include "config_ac.h"
#endif
#include "guid.h"
#include "ms-rdpbcgr.h"
#include "os_calls.h"
#include "test_common.h"
/******************************************************************************/
START_TEST(test_guid_to_str_remotefx)
{
/* setup */
char dest[GUID_STR_SIZE];
struct guid guid;
g_memcpy(guid.g, XR_CODEC_GUID_REMOTEFX, GUID_SIZE);
/* test */
guid_to_str(&guid, dest);
/* verify */
ck_assert_str_eq(dest, "76772F12-BD72-4463-AFB3-B73C9C6F7886");
}
END_TEST
START_TEST(test_guid_to_str_nscodec)
{
/* setup */
char dest[GUID_STR_SIZE];
struct guid guid;
g_memcpy(guid.g, XR_CODEC_GUID_NSCODEC, GUID_SIZE);
/* test */
guid_to_str(&guid, dest);
/* verify */
ck_assert_str_eq(dest, "CA8D1BB9-000F-154F-589F-AE2D1A87E2D6");
}
END_TEST
START_TEST(test_guid_to_str_ignore)
{
/* setup */
char dest[GUID_STR_SIZE];
struct guid guid;
g_memcpy(guid.g, XR_CODEC_GUID_IGNORE, GUID_SIZE);
/* test */
guid_to_str(&guid, dest);
/* verify */
ck_assert_str_eq(dest, "0C4351A6-3535-42AE-910C-CDFCE5760B58");
}
END_TEST
START_TEST(test_guid_to_str_random)
{
/* setup */
char dest[GUID_STR_SIZE];
struct guid guid;
unsigned int i;
for (i = 0 ; i < 100; ++i)
{
guid = guid_new();
/* test */
guid_to_str(&guid, dest);
/* Check all the '-' signs are in the right places */
ck_assert_int_eq(dest[8], '-');
ck_assert_int_eq(dest[13], '-');
ck_assert_int_eq(dest[18], '-');
ck_assert_int_eq(dest[23], '-');
/* Check the variant is RFC4122 */
char c = dest[18 + 1]; /* char after 3rd dash */
if (c != '8' && c != '9' && c != 'A' && c != 'B')
{
ck_abort_msg("Generated UUID is not RFC4122 compliant");
}
/* Check the version is 'randomly generated' */
c = dest[13 + 1]; /* char after 2nd dash */
if (c != '4')
{
ck_abort_msg("Generated UUID is not RFC4122 randomly-generated");
}
}
}
END_TEST
/******************************************************************************/
Suite *
make_suite_test_guid(void)
{
Suite *s;
TCase *tc_guid;
s = suite_create("GUID");
tc_guid = tcase_create("guid_to_str");
suite_add_tcase(s, tc_guid);
tcase_add_test(tc_guid, test_guid_to_str_remotefx);
tcase_add_test(tc_guid, test_guid_to_str_nscodec);
tcase_add_test(tc_guid, test_guid_to_str_ignore);
tcase_add_test(tc_guid, test_guid_to_str_random);
return s;
}