Changeset: 031d83efcbf9 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/031d83efcbf9 Added Files: monetdb5/modules/atoms/Tests/endswith.test monetdb5/modules/atoms/Tests/startswith.test monetdb5/modules/kernel/Tests/batstartswith.test Modified Files: monetdb5/modules/atoms/Tests/All monetdb5/modules/atoms/str.c Branch: txtsim Log Message:
Fix endsWith function and add atom testing. diffs (188 lines): diff --git a/monetdb5/modules/atoms/Tests/All b/monetdb5/modules/atoms/Tests/All --- a/monetdb5/modules/atoms/Tests/All +++ b/monetdb5/modules/atoms/Tests/All @@ -33,3 +33,6 @@ jsonrender uuid00 strappend + +startswith +endswith diff --git a/monetdb5/modules/atoms/Tests/endswith.test b/monetdb5/modules/atoms/Tests/endswith.test new file mode 100644 --- /dev/null +++ b/monetdb5/modules/atoms/Tests/endswith.test @@ -0,0 +1,56 @@ +statement ok +create function endswith(x string, y string) returns bool external name str."endsWith" + +statement ok +create function iendswith(x string, y string, i bool) returns bool external name str."endsWith" + +query T rowsort +select endsWith(NULL, '') +---- +NULL + +query T rowsort +select endsWith('', NULL) +---- +NULL + +query T rowsort +select endsWith('', '') +---- +True + +query T rowsort +select endsWith('johndoe', '') +---- +True + +query T rowsort +select endsWith('', 'johndoe') +---- +False + +query T rowsort +select endsWith('johndoe', 'doe') +---- +True + +query T rowsort +select iendswith('one two three', 'three', true) +---- +True + +query T rowsort +select iendswith('Thomas Müller', 'müller', true) +---- +True + +query T rowsort +select iendswith('Thomas Müller', 'müller', false) +---- +False + +statement ok +drop function endswith + +statement ok +drop function iendswith diff --git a/monetdb5/modules/atoms/Tests/startswith.test b/monetdb5/modules/atoms/Tests/startswith.test new file mode 100644 --- /dev/null +++ b/monetdb5/modules/atoms/Tests/startswith.test @@ -0,0 +1,56 @@ +statement ok +create function startswith(x string, y string) returns bool external name str."startsWith" + +statement ok +create function istartswith(x string, y string, i bool) returns bool external name str."startsWith" + +query T rowsort +select startswith(NULL, '') +---- +NULL + +query T rowsort +select startswith('', NULL) +---- +NULL + +query T rowsort +select startswith('', '') +---- +True + +query T rowsort +select startswith('johndoe', '') +---- +True + +query T rowsort +select startswith('', 'johndoe') +---- +False + +query T rowsort +select startswith('johndoe', 'john') +---- +True + +query T rowsort +select istartswith('one two three', 'three', true) +---- +False + +query T rowsort +select istartswith('Müller Thomas', 'müller', true) +---- +True + +query T rowsort +select istartswith('Müller Thomas', 'müller', false) +---- +False + +statement ok +drop function startswith + +statement ok +drop function istartswith diff --git a/monetdb5/modules/atoms/str.c b/monetdb5/modules/atoms/str.c --- a/monetdb5/modules/atoms/str.c +++ b/monetdb5/modules/atoms/str.c @@ -3669,13 +3669,11 @@ STRendsWith(Client cntxt, MalBlkPtr mb, const str *arg1 = getArgReference(stk, pci, 1); const str *arg2 = getArgReference(stk, pci, 2); bit icase = pci->argc == 4 && *getArgReference_bit(stk, pci, 3) ? true : false; - - str s = *arg1, suffix = *arg2; - str s_lower, suffix_lower, msg = MAL_SUCCEED; + str s = *arg1, suffix = *arg2, msg = MAL_SUCCEED; if (icase) { - if ((msg = STRlower(&s, &s_lower)) != MAL_SUCCEED || - (msg = STRlower(&suffix, &suffix_lower)) != MAL_SUCCEED) + if ((msg = STRlower(&s, &s)) != MAL_SUCCEED || + (msg = STRlower(&suffix, &suffix)) != MAL_SUCCEED) goto bail; } *res = (strNil(s) || strNil(suffix)) ? bit_nil :str_is_suffix(s, suffix) ; diff --git a/monetdb5/modules/kernel/Tests/batstartswith.test b/monetdb5/modules/kernel/Tests/batstartswith.test new file mode 100644 --- /dev/null +++ b/monetdb5/modules/kernel/Tests/batstartswith.test @@ -0,0 +1,31 @@ +statement ok +create table foo(x string) + +statement ok +insert into stringtest values ('johndoe'),('janedoe'),('robertdoe') + +statement ok +create function startsWith(x string, y string) returns bool external name str."startsWith" + +query T rowsort +select startsWith('', '') +---- +true + +query T rowsort +select startsWith('johndoe', '') + +query T rowsort +select startsWith('johndoe', 'john') + +query T rowsort +select startsWith(x, '') + +query T rowsort +select startsWith('', x) + +statement ok +drop function startsWith + +statement ok +drop table stringtest _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org