Mercurial > hg > octave-nkf
comparison libinterp/corefcn/utils.cc @ 19330:ebeb3defae37
codesprint: Add tests to various interpreter utility functions
* utils.cc: Add tests and input validation for isvarname, file_in_loadpath,
file_in_path, do_string_escapes, undo_string_escapes, dir_in_loadpath, and
isindex.
author | Mike Miller <mtmiller@ieee.org> |
---|---|
date | Sun, 21 Sep 2014 15:42:09 -0400 |
parents | 4990d5988cf5 |
children | 0f9c5a15c8fa |
comparison
equal
deleted
inserted
replaced
19329:cfe8ec7650a1 | 19330:ebeb3defae37 |
---|---|
119 %!assert (isvarname ("_foo"), true) | 119 %!assert (isvarname ("_foo"), true) |
120 %!assert (isvarname ("_1"), true) | 120 %!assert (isvarname ("_1"), true) |
121 %!assert (isvarname ("1foo"), false) | 121 %!assert (isvarname ("1foo"), false) |
122 %!assert (isvarname (""), false) | 122 %!assert (isvarname (""), false) |
123 %!assert (isvarname (12), false) | 123 %!assert (isvarname (12), false) |
124 %!assert (isvarname ("foo+bar"), false) | |
124 | 125 |
125 %!error isvarname () | 126 %!error isvarname () |
126 %!error isvarname ("foo", "bar"); | 127 %!error isvarname ("foo", "bar"); |
127 */ | 128 */ |
128 | 129 |
353 %! lst = file_in_loadpath ("$$probably_!!_not_&&_a_!!_file$$", "all"); | 354 %! lst = file_in_loadpath ("$$probably_!!_not_&&_a_!!_file$$", "all"); |
354 %! assert (lst, {}); | 355 %! assert (lst, {}); |
355 | 356 |
356 %!error file_in_loadpath () | 357 %!error file_in_loadpath () |
357 %!error file_in_loadpath ("foo", "bar", 1) | 358 %!error file_in_loadpath ("foo", "bar", 1) |
359 %!error file_in_loadpath ([]) | |
360 %!error file_in_loadpath ("plot.m", "bar") | |
358 */ | 361 */ |
359 | 362 |
360 DEFUN (file_in_path, args, , | 363 DEFUN (file_in_path, args, , |
361 "-*- texinfo -*-\n\ | 364 "-*- texinfo -*-\n\ |
362 @deftypefn {Built-in Function} {} file_in_path (@var{path}, @var{file})\n\ | 365 @deftypefn {Built-in Function} {} file_in_path (@var{path}, @var{file})\n\ |
437 %! assert (lst, {}); | 440 %! assert (lst, {}); |
438 | 441 |
439 %!error file_in_path () | 442 %!error file_in_path () |
440 %!error file_in_path ("foo") | 443 %!error file_in_path ("foo") |
441 %!error file_in_path ("foo", "bar", "baz", 1) | 444 %!error file_in_path ("foo", "bar", "baz", 1) |
445 %!error file_in_path ([]) | |
446 %!error file_in_path (path (), []) | |
447 %!error file_in_path (path (), "plot.m", "bar") | |
442 */ | 448 */ |
443 | 449 |
444 std::string | 450 std::string |
445 file_in_path (const std::string& name, const std::string& suffix) | 451 file_in_path (const std::string& name, const std::string& suffix) |
446 { | 452 { |
716 %!assert (do_string_escapes ('foo\nbar'), "foo\nbar") | 722 %!assert (do_string_escapes ('foo\nbar'), "foo\nbar") |
717 %!assert (do_string_escapes ("foo\\nbar"), "foo\nbar") | 723 %!assert (do_string_escapes ("foo\\nbar"), "foo\nbar") |
718 %!assert (do_string_escapes ("foo\\nbar"), ["foo", char(10), "bar"]) | 724 %!assert (do_string_escapes ("foo\\nbar"), ["foo", char(10), "bar"]) |
719 %!assert ("foo\nbar", ["foo", char(10), "bar"]) | 725 %!assert ("foo\nbar", ["foo", char(10), "bar"]) |
720 | 726 |
721 %!assert (do_string_escapes ('\a\b\f\n\r\t\v'), "\a\b\f\n\r\t\v") | 727 %!assert (do_string_escapes ('\0\a\b\f\n\r\t\v'), "\0\a\b\f\n\r\t\v") |
722 %!assert (do_string_escapes ("\\a\\b\\f\\n\\r\\t\\v"), "\a\b\f\n\r\t\v") | 728 %!assert (do_string_escapes ("\\0\\a\\b\\f\\n\\r\\t\\v"), "\0\a\b\f\n\r\t\v") |
723 %!assert (do_string_escapes ("\\a\\b\\f\\n\\r\\t\\v"), | 729 %!assert (do_string_escapes ("\\0\\a\\b\\f\\n\\r\\t\\v"), |
724 %! char ([7, 8, 12, 10, 13, 9, 11])) | 730 %! char ([0, 7, 8, 12, 10, 13, 9, 11])) |
725 %!assert ("\a\b\f\n\r\t\v", char ([7, 8, 12, 10, 13, 9, 11])) | 731 %!assert ("\0\a\b\f\n\r\t\v", char ([0, 7, 8, 12, 10, 13, 9, 11])) |
732 | |
733 %!assert (do_string_escapes ('\\'), "\\") | |
734 %!assert (do_string_escapes ("\\\\"), "\\") | |
735 %!assert (do_string_escapes ("\\\\"), char (92)) | |
736 | |
737 %!assert (do_string_escapes ('\''single-quoted\'''), "'single-quoted'") | |
738 %!assert (do_string_escapes ("\\'single-quoted\\'"), "'single-quoted'") | |
739 %!assert (do_string_escapes ('\"double-quoted\"'), "\"double-quoted\"") | |
740 %!assert (do_string_escapes ("\\\"double-quoted\\\""), "\"double-quoted\"") | |
726 | 741 |
727 %!error do_string_escapes () | 742 %!error do_string_escapes () |
728 %!error do_string_escapes ("foo", "bar") | 743 %!error do_string_escapes ("foo", "bar") |
744 %!error do_string_escapes (3) | |
729 */ | 745 */ |
730 | 746 |
731 const char * | 747 const char * |
732 undo_string_escape (char c) | 748 undo_string_escape (char c) |
733 { | 749 { |
842 %!assert (undo_string_escapes ("\a\b\f\n\r\t\v"), '\a\b\f\n\r\t\v') | 858 %!assert (undo_string_escapes ("\a\b\f\n\r\t\v"), '\a\b\f\n\r\t\v') |
843 %!assert (undo_string_escapes ("\a\b\f\n\r\t\v"), "\\a\\b\\f\\n\\r\\t\\v") | 859 %!assert (undo_string_escapes ("\a\b\f\n\r\t\v"), "\\a\\b\\f\\n\\r\\t\\v") |
844 %!assert (undo_string_escapes (char ([7, 8, 12, 10, 13, 9, 11])), | 860 %!assert (undo_string_escapes (char ([7, 8, 12, 10, 13, 9, 11])), |
845 %! "\\a\\b\\f\\n\\r\\t\\v") | 861 %! "\\a\\b\\f\\n\\r\\t\\v") |
846 | 862 |
863 %!assert (undo_string_escapes ("\\"), '\\') | |
864 %!assert (undo_string_escapes ("\\"), "\\\\") | |
865 %!assert (undo_string_escapes (char (92)), "\\\\") | |
866 | |
867 %!assert (undo_string_escapes ("\"double-quoted\""), '\"double-quoted\"') | |
868 %!assert (undo_string_escapes ("\"double-quoted\""), "\\\"double-quoted\\\"") | |
869 | |
847 %!error undo_string_escapes () | 870 %!error undo_string_escapes () |
848 %!error undo_string_escapes ("foo", "bar") | 871 %!error undo_string_escapes ("foo", "bar") |
872 %!error undo_string_escapes (3) | |
849 */ | 873 */ |
850 | 874 |
851 DEFUN (is_absolute_filename, args, , | 875 DEFUN (is_absolute_filename, args, , |
852 "-*- texinfo -*-\n\ | 876 "-*- texinfo -*-\n\ |
853 @deftypefn {Built-in Function} {} is_absolute_filename (@var{file})\n\ | 877 @deftypefn {Built-in Function} {} is_absolute_filename (@var{file})\n\ |
971 | 995 |
972 return retval; | 996 return retval; |
973 } | 997 } |
974 | 998 |
975 /* | 999 /* |
976 ## FIXME: We need system-dependent tests here. | 1000 %!test |
1001 %! f = dir_in_loadpath ("plot"); | |
1002 %! assert (ischar (f)); | |
1003 %! assert (! isempty (f)); | |
1004 | |
1005 %!test | |
1006 %! f = dir_in_loadpath ("$$probably_!!_not_&&_a_!!_dir$$"); | |
1007 %! assert (f, ""); | |
1008 | |
1009 %!test | |
1010 %! lst = dir_in_loadpath ("$$probably_!!_not_&&_a_!!_dir$$", "all"); | |
1011 %! assert (lst, {}); | |
977 | 1012 |
978 %!error dir_in_loadpath () | 1013 %!error dir_in_loadpath () |
979 %!error dir_in_loadpath ("foo", "bar", 1) | 1014 %!error dir_in_loadpath ("foo", "bar", 1) |
980 */ | 1015 */ |
981 | 1016 |
1373 } | 1408 } |
1374 | 1409 |
1375 /* | 1410 /* |
1376 %!assert (isindex ([1, 2, 3])) | 1411 %!assert (isindex ([1, 2, 3])) |
1377 %!assert (isindex (1:3)) | 1412 %!assert (isindex (1:3)) |
1413 %!assert (isindex (1:3, 2), false) | |
1378 %!assert (isindex ([1, 2, -3]), false) | 1414 %!assert (isindex ([1, 2, -3]), false) |
1379 | 1415 |
1380 %!error isindex () | 1416 %!error isindex () |
1417 %!error isindex (1:3, 2, 3) | |
1381 */ | 1418 */ |
1382 | 1419 |
1383 octave_value_list | 1420 octave_value_list |
1384 do_simple_cellfun (octave_value_list (*fun) (const octave_value_list&, int), | 1421 do_simple_cellfun (octave_value_list (*fun) (const octave_value_list&, int), |
1385 const char *fun_name, const octave_value_list& args, | 1422 const char *fun_name, const octave_value_list& args, |