#include "clar_libgit2.h" #include "odb.h" void test_object_raw_compare__succeed_on_copy_oid(void) { git_oid a, b; unsigned char exp[] = { 0x16, 0xa6, 0x77, 0x70, 0xb7, 0xd8, 0xd7, 0x23, 0x17, 0xc4, 0xb7, 0x75, 0x21, 0x3c, 0x23, 0xa8, 0xbd, 0x74, 0xf5, 0xe0, }; memset(&b, 0, sizeof(b)); git_oid_fromraw(&a, exp); git_oid_cpy(&b, &a); cl_git_pass(memcmp(a.id, exp, sizeof(a.id))); } void test_object_raw_compare__succeed_on_oid_comparison_lesser(void) { git_oid a, b; unsigned char a_in[] = { 0x16, 0xa6, 0x77, 0x70, 0xb7, 0xd8, 0xd7, 0x23, 0x17, 0xc4, 0xb7, 0x75, 0x21, 0x3c, 0x23, 0xa8, 0xbd, 0x74, 0xf5, 0xe0, }; unsigned char b_in[] = { 0x16, 0xa6, 0x77, 0x70, 0xb7, 0xd8, 0xd7, 0x23, 0x17, 0xc4, 0xb7, 0x75, 0x21, 0x3c, 0x23, 0xa8, 0xbd, 0x74, 0xf5, 0xf0, }; git_oid_fromraw(&a, a_in); git_oid_fromraw(&b, b_in); cl_assert(git_oid_cmp(&a, &b) < 0); } void test_object_raw_compare__succeed_on_oid_comparison_equal(void) { git_oid a, b; unsigned char a_in[] = { 0x16, 0xa6, 0x77, 0x70, 0xb7, 0xd8, 0xd7, 0x23, 0x17, 0xc4, 0xb7, 0x75, 0x21, 0x3c, 0x23, 0xa8, 0xbd, 0x74, 0xf5, 0xe0, }; git_oid_fromraw(&a, a_in); git_oid_fromraw(&b, a_in); cl_assert(git_oid_cmp(&a, &b) == 0); } void test_object_raw_compare__succeed_on_oid_comparison_greater(void) { git_oid a, b; unsigned char a_in[] = { 0x16, 0xa6, 0x77, 0x70, 0xb7, 0xd8, 0xd7, 0x23, 0x17, 0xc4, 0xb7, 0x75, 0x21, 0x3c, 0x23, 0xa8, 0xbd, 0x74, 0xf5, 0xe0, }; unsigned char b_in[] = { 0x16, 0xa6, 0x77, 0x70, 0xb7, 0xd8, 0xd7, 0x23, 0x17, 0xc4, 0xb7, 0x75, 0x21, 0x3c, 0x23, 0xa8, 0xbd, 0x74, 0xf5, 0xd0, }; git_oid_fromraw(&a, a_in); git_oid_fromraw(&b, b_in); cl_assert(git_oid_cmp(&a, &b) > 0); } void test_object_raw_compare__compare_fmt_oids(void) { const char *exp = "16a0123456789abcdef4b775213c23a8bd74f5e0"; git_oid in; char out[GIT_OID_HEXSZ + 1]; cl_git_pass(git_oid_fromstr(&in, exp)); /* Format doesn't touch the last byte */ out[GIT_OID_HEXSZ] = 'Z'; git_oid_fmt(out, &in); cl_assert(out[GIT_OID_HEXSZ] == 'Z'); /* Format produced the right result */ out[GIT_OID_HEXSZ] = '\0'; cl_assert_equal_s(exp, out); } void test_object_raw_compare__compare_allocfmt_oids(void) { const char *exp = "16a0123456789abcdef4b775213c23a8bd74f5e0"; git_oid in; char *out; cl_git_pass(git_oid_fromstr(&in, exp)); out = git_oid_allocfmt(&in); cl_assert(out); cl_assert_equal_s(exp, out); git__free(out); } void test_object_raw_compare__compare_pathfmt_oids(void) { const char *exp1 = "16a0123456789abcdef4b775213c23a8bd74f5e0"; const char *exp2 = "16/a0123456789abcdef4b775213c23a8bd74f5e0"; git_oid in; char out[GIT_OID_HEXSZ + 2]; cl_git_pass(git_oid_fromstr(&in, exp1)); /* Format doesn't touch the last byte */ out[GIT_OID_HEXSZ + 1] = 'Z'; git_oid_pathfmt(out, &in); cl_assert(out[GIT_OID_HEXSZ + 1] == 'Z'); /* Format produced the right result */ out[GIT_OID_HEXSZ + 1] = '\0'; cl_assert_equal_s(exp2, out); }