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,