Skip to content

Commit

Permalink
test-strcmp-offset: created test for strcmp_offset
Browse files Browse the repository at this point in the history
Signed-off-by: Jeff Hostetler <jeffhost@microsoft.com>
  • Loading branch information
jeffhostetler authored and Git for Windows Build Agent committed Mar 24, 2017
1 parent 46cf396 commit 718f869
Show file tree
Hide file tree
Showing 4 changed files with 72 additions and 0 deletions.
1 change: 1 addition & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -629,6 +629,7 @@ TEST_PROGRAMS_NEED_X += test-scrap-cache-tree
TEST_PROGRAMS_NEED_X += test-sha1
TEST_PROGRAMS_NEED_X += test-sha1-array
TEST_PROGRAMS_NEED_X += test-sigchain
TEST_PROGRAMS_NEED_X += test-strcmp-offset
TEST_PROGRAMS_NEED_X += test-string-list
TEST_PROGRAMS_NEED_X += test-submodule-config
TEST_PROGRAMS_NEED_X += test-subprocess
Expand Down
1 change: 1 addition & 0 deletions t/helper/.gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
/test-sha1
/test-sha1-array
/test-sigchain
/test-strcmp-offset
/test-string-list
/test-submodule-config
/test-subprocess
Expand Down
59 changes: 59 additions & 0 deletions t/helper/test-strcmp-offset.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
#include "cache.h"

struct test_data {
const char *s1;
const char *s2;
int first_change;
};

static struct test_data data[] = {
{ "abc", "abc", 0 },
{ "abc", "def", 0 },

{ "abc", "abz", 2 },

{ "abc", "abcdef", 3 },

{ "abc\xF0zzz", "abc\xFFzzz", 3 },

{ NULL, NULL, 0 }
};

int try_pair(const char *sa, const char *sb, int first_change)
{
int failed = 0;
int offset, r_exp, r_tst;

r_exp = strcmp(sa, sb);
r_tst = strcmp_offset(sa, sb, &offset);
if (r_tst != r_exp) {
if ((r_tst < 0 && r_exp < 0) || (r_tst > 0 && r_exp > 0))
warning("'%s' vs '%s', imprecise result: %d != %d",
sa, sb, r_exp, r_tst);
else {
error("'%s' vs '%s', result expect %d, observed %d",
sa, sb, r_exp, r_tst);
failed = 1;
}
}
if (offset != first_change) {
error("'%s' vs '%s', offset expect %d, observed %d",
sa, sb, first_change, offset);
failed = 1;
}

return failed;
}

int cmd_main(int argc, const char **argv)
{
int failed = 0;
int k;

for (k=0; data[k].s1; k++) {
failed += try_pair(data[k].s1, data[k].s2, data[k].first_change);
failed += try_pair(data[k].s2, data[k].s1, data[k].first_change);
}

return failed;
}
11 changes: 11 additions & 0 deletions t/t0065-strcmp-offset.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
#!/bin/sh

test_description='Test strcmp_offset functionality'

. ./test-lib.sh

test_expect_success run_helper '
test-strcmp-offset
'

test_done

0 comments on commit 718f869

Please sign in to comment.