annotate scripts/strings/startsWith.m @ 31239:dd6b37f67db2

Accept negative inputs to -2^63 for dec2bin and dec2hex (bug #63089) dec2bin.m: Accept negative inputs lower than -flintmax down to -2^63 Return 64-bit string in certain cases for Matlab compatibility Activate BISTs commented out earlier dec2hex.m: Remove repeated code and call dec2bin instead Accept negative inputs lower than -flintmax down to -2^63 Update and activate BISTs commented out earlier
author Arun Giridhar <arungiridhar@gmail.com>
date Sun, 25 Sep 2022 06:22:25 -0400
parents 796f54d4ddbf
children 597f3ee61a48
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 ##
30564
796f54d4ddbf update Octave Project Developers copyright for the new year
John W. Eaton <jwe@octave.org>
parents: 29359
diff changeset
3 ## Copyright (C) 2020-2022 The Octave Project Developers
28212
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
28 ## @deftypefnx {} {@var{retval} =} startsWith (@var{str}, @var{pattern}, "IgnoreCase", @var{ignore_case})
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
31 ## Return an array of logical values that indicates which string(s) in the
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
32 ## input @var{str} (a single string or cell array of strings) begin with
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
35 ## If the value of the parameter @qcode{"IgnoreCase"} is true, then the
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
36 ## function will ignore the letter case of @var{str} and @var{pattern}. By
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
79 function retval = startsWith (str, pattern, IgnoreCase, ignore_case)
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
80
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
85 ## Validate input str and pattern
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
86 if (! (iscellstr (str) || ischar (str)))
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
87 error ("startsWith: STR must be a string or cell array of strings");
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
88 endif
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
89 if (! (iscellstr (pattern) || ischar (pattern)))
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
93 str = cellstr (str);
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
97 ignore_case = false;
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
98 else
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
99 ## For Matlab compatibility accept any abbreviation of 3rd argument
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
100 if (! ischar (IgnoreCase) || isempty (IgnoreCase)
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
105 if (! isscalar (ignore_case) || ! isreal (ignore_case))
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
111 retval = false (size (str));
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
133 %! str = {"data science", "dataSheet.ods", "myFunc.m"; "foundations.ppt", ...
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
134 %! "results.txt", "myFile.odt"};
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
135 %! pattern = "data";
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
136 %! expected = [true, true, false; false, false, false];
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
141 %! str = {"lab work.pptx", "myFile.odt", "data.txt", "foundations.ppt"};
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
142 %! pattern = {"lab", "data"};
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
143 %! expected = [true, false, true, false];
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
148 %! str = {"DATASHEET.ods", "myFile.odt", "data.txt", "foundations.ppt"};
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
149 %! pattern = "data";
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
150 %! expected_ignore = [true, false, true, false];
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
151 %! expected_wo_ignore = [false, false, true, false];
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
152 %! assert (startsWith (str, pattern, "IgnoreCase", true), expected_ignore);
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
153 %! assert (startsWith (str, pattern, "IgnoreCase", false), expected_wo_ignore);
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
154 %! assert (startsWith (str, pattern, "I", 500), expected_ignore);
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
159 %!error startsWith ("A")
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
160 %!error startsWith ("A", "B", "C")
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
161 %!error startsWith ("A", "B", "C", "D", "E")
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
162 %!error <STR must be a string> startsWith (152, "hi")
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
163 %!error <STR must be a .* cell array of strings> startsWith ({152}, "hi")
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
164 %!error <PATTERN must be a string> startsWith ("hi", 152)
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
165 %!error <PATTERN must be a .* cell array of strings> startsWith ("hi", {152})
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
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
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
168 %!error <third input must be "IgnoreCase"> startsWith ("hello", "he", "foo", 1)
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
169 %!error <"IgnoreCase" value must be a logical scalar>
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
170 %! startsWith ("hello", "hi", "i", "true");
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
171 %!error <"IgnoreCase" value must be a logical scalar>
cbcf6c064622 startsWith.m: overhaul function.
Rik <rik@octave.org>
parents: 28212
diff changeset
172 %! startsWith ("hello", "hi", "i", {true});