Mercurial > octave
annotate scripts/strings/startsWith.m @ 28886:d8318c12d903
test: remove unnecessary BIST tests in m-files checking for excessive number of inputs.
Remove BIST tests now that interpreter enforces calling function with no more than
the number of arguments defined in the function prototype.
* makeUniqueStrings.m, makeValidName.m, base64decode.m, base64encode.m,
record.m, sound.m, soundsc.m, acosd.m, acot.m, acotd.m, acoth.m, acsc.m,
acscd.m, acsch.m, asec.m, asecd.m, asech.m, asind.m, atan2d.m, atand.m, cosd.m,
cot.m, cotd.m, coth.m, csc.m, cscd.m, csch.m, sec.m, secd.m, sech.m, sind.m,
tand.m, accumdim.m, bincoeff.m, bitget.m, bitset.m, cell2mat.m, circshift.m,
cplxpair.m, cumtrapz.m, deg2rad.m, flip.m, fliplr.m, flipud.m, int2str.m,
interpft.m, logspace.m, num2str.m, postpad.m, prepad.m, rad2deg.m, rot90.m,
rotdim.m, shift.m, subsindex.m, trapz.m, rotx.m, roty.m, rotz.m, getappdata.m,
getpixelposition.m, guidata.m, isappdata.m, waitforbuttonpress.m,
__gripe_missing_component__.m, bessel.m, hsv2rgb.m, ind2gray.m, rgb2gray.m,
rgb2hsv.m, rgbplot.m, fileread.m, javachk.m, usejava.m, findstr.m,
genvarname.m, isdir.m, vectorize.m, cond.m, cross.m, duplication_matrix.m,
expm.m, isbanded.m, isdefinite.m, isdiag.m, ishermitian.m, issymmetric.m,
istril.m, istriu.m, trace.m, vech.m, vecnorm.m, cast.m, citation.m,
compare_versions.m, grabcode.m, inputname.m, isfile.m, isfolder.m, ismac.m,
ispc.m, isunix.m, list_primes.m, methods.m, news.m, open.m, run.m, swapbytes.m,
tar.m, verLessThan.m, zip.m, odeget.m, optimget.m, stemleaf.m, allchild.m,
ancestor.m, close.m, groot.m, hgsave.m, isaxes.m, isfigure.m, isgraphics.m,
ishandle.m, isprop.m, linkaxes.m, rotate.m, saveas.m, conv.m, poly.m,
polyint.m, polyreduce.m, ppval.m, roots.m, addpref.m, getpref.m, ispref.m,
rmpref.m, setpref.m, profile.m, profshow.m, powerset.m, autoreg_matrix.m,
bartlett.m, blackman.m, detrend.m, fftconv.m, fftfilt.m, fftshift.m, hamming.m,
hanning.m, ifftshift.m, sinewave.m, spectral_adf.m, spectral_xdf.m, unwrap.m,
nonzeros.m, spconvert.m, sprand.m, sprandn.m, beta.m, betainc.m, betaln.m,
cosint.m, expint.m, factorial.m, legendre.m, nchoosek.m, nthroot.m, perms.m,
pow2.m, primes.m, reallog.m, realpow.m, realsqrt.m, sinint.m, hankel.m, hilb.m,
invhilb.m, magic.m, pascal.m, toeplitz.m, vander.m, wilkinson.m, center.m,
corr.m, cov.m, discrete_cdf.m, discrete_inv.m, discrete_pdf.m, empirical_cdf.m,
empirical_inv.m, empirical_pdf.m, iqr.m, kendall.m, kurtosis.m, mad.m,
meansq.m, median.m, moment.m, prctile.m, quantile.m, range.m, run_count.m,
skewness.m, spearman.m, statistics.m, std.m, var.m, base2dec.m, bin2dec.m,
blanks.m, dec2base.m, dec2bin.m, dec2hex.m, endsWith.m, erase.m, hex2dec.m,
index.m, isletter.m, isstring.m, isstrprop.m, mat2str.m, ostrsplit.m, rindex.m,
startsWith.m, strtrunc.m, substr.m, fail.m, addtodate.m, asctime.m, ctime.m,
date.m, datestr.m, eomday.m, etime.m, is_leap_year.m, now.m:
remove unnecessary BIST tests in m-files checking for excessive number of inputs.
author | Rik <rik@octave.org> |
---|---|
date | Fri, 09 Oct 2020 13:28:53 -0700 |
parents | cbcf6c064622 |
children | 7854d5752dd2 |
rev | line source |
---|---|
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
1 ######################################################################## |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
2 ## |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
3 ## Copyright (C) 2020 The Octave Project Developers |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
4 ## |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
5 ## See the file COPYRIGHT.md in the top-level directory of this |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
6 ## distribution or <https://octave.org/copyright/>. |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
7 ## |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
8 ## This file is part of Octave. |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
9 ## |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
10 ## Octave is free software: you can redistribute it and/or modify it |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
11 ## under the terms of the GNU General Public License as published by |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
12 ## the Free Software Foundation, either version 3 of the License, or |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
13 ## (at your option) any later version. |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
14 ## |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
15 ## Octave is distributed in the hope that it will be useful, but |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
16 ## WITHOUT ANY WARRANTY; without even the implied warranty of |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
18 ## GNU General Public License for more details. |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
19 ## |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
20 ## You should have received a copy of the GNU General Public License |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
21 ## along with Octave; see the file COPYING. If not, see |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
22 ## <https://www.gnu.org/licenses/>. |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
23 ## |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
24 ######################################################################## |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
25 |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
26 ## -*- texinfo -*- |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
27 ## @deftypefn {} {@var{retval} =} startsWith (@var{str}, @var{pattern}) |
28231 | 28 ## @deftypefnx {} {@var{retval} =} startsWith (@var{str}, @var{pattern}, "IgnoreCase", @var{ignore_case}) |
29 ## Check whether string(s) start with pattern(s). | |
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
30 ## |
28231 | 31 ## Return an array of logical values that indicates which string(s) in the |
32 ## input @var{str} (a single string or cell array of strings) begin with | |
33 ## the input @var{pattern} (a single string or cell array of strings). | |
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
34 ## |
28231 | 35 ## If the value of the parameter @qcode{"IgnoreCase"} is true, then the |
36 ## function will ignore the letter case of @var{str} and @var{pattern}. By | |
37 ## default, the comparison is case sensitive. | |
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
38 ## |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
39 ## Examples: |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
40 ## |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
41 ## @example |
28231 | 42 ## @group |
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
43 ## ## one string and one pattern while considering case |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
44 ## startsWith ("hello", "he") |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
45 ## @result{} 1 |
28231 | 46 ## @end group |
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
47 ## |
28231 | 48 ## @group |
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
49 ## ## one string and one pattern while ignoring case |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
50 ## startsWith ("hello", "HE", "IgnoreCase", true) |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
51 ## @result{} 1 |
28231 | 52 ## @end group |
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
53 ## |
28231 | 54 ## @group |
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
55 ## ## multiple strings and multiple patterns while considering case |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
56 ## startsWith (@{"lab work.pptx", "data.txt", "foundations.ppt"@}, |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
57 ## @{"lab", "data"@}) |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
58 ## @result{} 1 1 0 |
28231 | 59 ## @end group |
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
60 ## |
28231 | 61 ## @group |
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
62 ## ## multiple strings and one pattern while considering case |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
63 ## startsWith (@{"DATASHEET.ods", "data.txt", "foundations.ppt"@}, |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
64 ## "data", "IgnoreCase", false) |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
65 ## @result{} 0 1 0 |
28231 | 66 ## @end group |
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
67 ## |
28231 | 68 ## @group |
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
69 ## ## multiple strings and one pattern while ignoring case |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
70 ## startsWith (@{"DATASHEET.ods", "data.txt", "foundations.ppt"@}, |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
71 ## "data", "IgnoreCase", true) |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
72 ## @result{} 1 1 0 |
28231 | 73 ## @end group |
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
74 ## @end example |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
75 ## |
28231 | 76 ## @seealso{endsWith, regexp, strncmp, strncmpi} |
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
77 ## @end deftypefn |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
78 |
28231 | 79 function retval = startsWith (str, pattern, IgnoreCase, ignore_case) |
80 | |
81 if (nargin != 2 && nargin != 4) | |
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
82 print_usage (); |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
83 endif |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
84 |
28231 | 85 ## Validate input str and pattern |
86 if (! (iscellstr (str) || ischar (str))) | |
87 error ("startsWith: STR must be a string or cell array of strings"); | |
88 endif | |
89 if (! (iscellstr (pattern) || ischar (pattern))) | |
90 error ("startsWith: PATTERN must be a string or cell array of strings"); | |
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
91 endif |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
92 |
28231 | 93 str = cellstr (str); |
94 pattern = cellstr (pattern); | |
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
95 |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
96 if (nargin == 2) |
28231 | 97 ignore_case = false; |
98 else | |
99 ## For Matlab compatibility accept any abbreviation of 3rd argument | |
100 if (! ischar (IgnoreCase) || isempty (IgnoreCase) | |
101 || ! strncmpi (IgnoreCase, "IgnoreCase", length (IgnoreCase))) | |
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
102 error ('startsWith: third input must be "IgnoreCase"'); |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
103 endif |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
104 |
28231 | 105 if (! isscalar (ignore_case) || ! isreal (ignore_case)) |
106 error ('startsWith: "IgnoreCase" value must be a logical scalar'); | |
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
107 endif |
28231 | 108 ignore_case = logical (ignore_case); |
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
109 endif |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
110 |
28231 | 111 retval = false (size (str)); |
112 if (ignore_case) | |
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
113 for j = 1:numel (pattern) |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
114 retval |= strncmpi (str, pattern{j}, length (pattern{j})); |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
115 endfor |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
116 else |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
117 for j = 1:numel (pattern) |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
118 retval |= strncmp (str, pattern{j}, length (pattern{j})); |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
119 endfor |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
120 endif |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
121 |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
122 endfunction |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
123 |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
124 |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
125 ## Test simple use with one string and one pattern |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
126 %!assert (startsWith ("hello", "he")) |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
127 %!assert (! startsWith ("hello", "HE")) |
28231 | 128 %!assert (startsWith ("hello", "HE", "i", 5)) |
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
129 %!assert (! startsWith ("hello", "no")) |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
130 |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
131 ## Test multiple strings with a single pattern |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
132 %!test |
28231 | 133 %! str = {"data science", "dataSheet.ods", "myFunc.m"; "foundations.ppt", ... |
134 %! "results.txt", "myFile.odt"}; | |
135 %! pattern = "data"; | |
136 %! expected = [true, true, false; false, false, false]; | |
137 %! assert (startsWith (str, pattern), expected); | |
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
138 |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
139 ## Test multiple strings with multiple patterns |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
140 %!test |
28231 | 141 %! str = {"lab work.pptx", "myFile.odt", "data.txt", "foundations.ppt"}; |
142 %! pattern = {"lab", "data"}; | |
143 %! expected = [true, false, true, false]; | |
144 %! assert (startsWith (str, pattern), expected); | |
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
145 |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
146 ## Test IgnoreCase |
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
147 %!test |
28231 | 148 %! str = {"DATASHEET.ods", "myFile.odt", "data.txt", "foundations.ppt"}; |
149 %! pattern = "data"; | |
150 %! expected_ignore = [true, false, true, false]; | |
151 %! expected_wo_ignore = [false, false, true, false]; | |
152 %! assert (startsWith (str, pattern, "IgnoreCase", true), expected_ignore); | |
153 %! assert (startsWith (str, pattern, "IgnoreCase", false), expected_wo_ignore); | |
154 %! assert (startsWith (str, pattern, "I", 500), expected_ignore); | |
155 %! assert (startsWith (str, pattern, "iG", 0), expected_wo_ignore); | |
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
156 |
28231 | 157 ## Test input validation |
28886
d8318c12d903
test: remove unnecessary BIST tests in m-files checking for excessive number of inputs.
Rik <rik@octave.org>
parents:
28231
diff
changeset
|
158 %!error <Invalid call> startsWith () |
28231 | 159 %!error startsWith ("A") |
160 %!error startsWith ("A", "B", "C") | |
161 %!error startsWith ("A", "B", "C", "D", "E") | |
162 %!error <STR must be a string> startsWith (152, "hi") | |
163 %!error <STR must be a .* cell array of strings> startsWith ({152}, "hi") | |
164 %!error <PATTERN must be a string> startsWith ("hi", 152) | |
165 %!error <PATTERN must be a .* cell array of strings> startsWith ("hi", {152}) | |
166 %!error <third input must be "IgnoreCase"> startsWith ("hello", "he", 1, 1) | |
28212
d052c11d47c6
Add new functions startsWith and endsWith (bug #57041).
Abdallah Elshamy <abdallah.k.elshamy@gmail.com>
parents:
diff
changeset
|
167 %!error <third input must be "IgnoreCase"> startsWith ("hello", "he", "", 1) |
28231 | 168 %!error <third input must be "IgnoreCase"> startsWith ("hello", "he", "foo", 1) |
169 %!error <"IgnoreCase" value must be a logical scalar> | |
170 %! startsWith ("hello", "hi", "i", "true"); | |
171 %!error <"IgnoreCase" value must be a logical scalar> | |
172 %! startsWith ("hello", "hi", "i", {true}); |