1// ============================================================================= 2// Scilab ( http://www.scilab.org/ ) - This file is part of Scilab 3// Copyright (C) 2008 - INRIA 4// Copyright (C) 2019 - Samuel GOUGEON 5// 6// This file is distributed under the same license as the Scilab package. 7// ============================================================================= 8 9// <-- CLI SHELL MODE --> 10// <-- NO CHECK REF --> 11 12//=============================== 13// Tests fileparts 14//=============================== 15 16// Error messages 17// ============== 18errmsg1 = msprintf(_("%s: Wrong number of input argument(s): %d to %d expected.\n"), "fileparts", 1, 2); 19assert_checkerror("fileparts(SCI+''/etc/scilab.start'', ""extension"", ""extension"")", errmsg1); 20 21errmsg2 = msprintf(_("%s: Wrong number of output arguments: %d expected.\n"), "fileparts", 1); 22assert_checkerror("[a,b] = fileparts(SCI+''/etc/scilab.start'',""extension"")", errmsg2); 23 24errmsg3 = msprintf(_("%s: Wrong type for input argument #%d: string expected.\n"), "fileparts", 1); 25assert_checkerror("[path,fname,extension] = fileparts([]);", errmsg3); 26 27errmsg4 = msprintf(_("%s: Wrong value for input argument #%d.\n"), "fileparts", 2); 28assert_checkerror("extension = fileparts(SCI+''/etc/scilab.start'',''rpr'');", errmsg4); 29 30errmsg5 = msprintf(_("%s: Wrong type for input argument #%d: string expected.\n"), "fileparts", 2); 31assert_checkerror("extension = fileparts(SCI+''/etc/scilab.start'',10);", errmsg5); 32 33errmsg6 = msprintf(_("%s: Wrong type for input argument #%d: string expected.\n"), "fileparts", 1); 34assert_checkerror("extension = fileparts(10,10);", errmsg6); 35 36errmsg7 = msprintf(_("%s: Wrong size for input argument #%d: string expected.\n"), "fileparts", 2); 37assert_checkerror("fileparts(SCI+''/etc/scilab.start'', [""extension"", ""extension""])", errmsg7); 38 39// On the root directory 40// --------------------- 41// fileparts("c:") => "": WRONG. "c:/" expected : http://bugzilla.scilab.org/16063 42pathfiles = ["c:/", "c:/abc" "c:/.abc" "/" "/abc" "/.abc"]; 43[path, fname, ext] = fileparts(pathfiles); 44pathref = ['c:/','c:/','c:/','/','/','/']; 45if getos()=="Windows" 46 pathref = strsubst(pathref, "/", "\"); 47end 48assert_checkequal(path, pathref); 49assert_checkequal(fname, ["" "abc" ".abc" "" "abc" ".abc"]); 50assert_checkequal(ext, emptystr(1,6)); 51 52// With the "." directory 53// ---------------------- 54// With absolute paths 55pathfiles = ["c:/.", "c:/./", "c:/./.", "c:/abc/.", "c:/abc/./", "c:/abc/./.tmp"]; 56[path, fname, ext] = fileparts(pathfiles); 57pathref = ['c:/','c:/./','c:/./','c:/abc/','c:/abc/./', 'c:/abc/./']; 58if getos()=="Windows" 59 pathref = strsubst(pathref, "/", "\"); 60end 61assert_checkequal(path, pathref); 62assert_checkequal(fname, ["." "" "." "." "" ".tmp"]); 63assert_checkequal(ext, emptystr(1,6)); 64 65pathfiles = ["/.", "/./", "/./.", "/abc/.", "/abc/./", "/abc/./.tmp"]; 66[path, fname, ext] = fileparts(pathfiles); 67pathref = pathconvert(['/','/./','/./','/abc/','/abc/./', '/abc/./'],%t,%t); 68assert_checkequal(path, pathref); 69assert_checkequal(fname, ["." "" "." "." "" ".tmp"]); 70assert_checkequal(ext, emptystr(1,6)); 71 72// With relative paths 73pathfiles = ["./abc", "./." "./.abc", "./abc/./def"]; 74[path, fname, ext] = fileparts(pathfiles); 75pathref = ['./' './' './' './abc/./']; 76if getos()=="Windows" 77 pathref = strsubst(pathref, "/", "\"); 78end 79assert_checkequal(path, pathref); 80assert_checkequal(fname, ["abc" "." ".abc" "def"]); 81assert_checkequal(ext, emptystr(1,4)); 82 83// With the ".." directory 84// ----------------------- 85// With absolute paths 86pathfiles = ["c:/..", "c:/abc/..", "c:/abc/../efg", "/..", "/abc/..", "/abc/../efg"]; 87 88[path, fname, ext] = fileparts(pathfiles); 89pathref = ['c:/','c:/abc/','c:/abc/../', '/','/abc/','/abc/../']; 90if getos()=="Windows" 91 pathref = strsubst(pathref, "/", "\"); 92end 93assert_checkequal(path, pathref); 94//assert_checkequal(fname, ["." "." "efg" "." "." "efg"]); // WRONG 95//assert_checkequal(ext, ["." "." "" "." "." ""]); // WRONG 96// => http://bugzilla.scilab.org/16063 97 98// With relative paths 99pathfiles = ["abc/..", "./..", "./../", "abc/../def", "abc/../.."]; 100 101[path, fname, ext] = fileparts(pathfiles); 102pathref = pathconvert(['abc/','./','./../','abc/../','abc/../'],%t,%t); 103assert_checkequal(path, pathref); 104//assert_checkequal(fname, ["." "." "" "def" "."]); // WRONG 105//assert_checkequal(ext, ["." "." "" "" "."]); // WRONG 106// => http://bugzilla.scilab.org/16063 107 108// For SCI+'/etc/scilab.start' 109// -------------------------- 110[path,fname,extension] = fileparts(SCI+'/etc/scilab.start'); 111assert_checkequal(path, pathconvert(SCI+'/etc/',%t,%t)); 112assert_checkequal(fname, 'scilab'); 113assert_checkequal(extension, '.start'); 114r = fileparts(SCI+'/etc/scilab.start','path'); 115assert_checkequal(r, pathconvert(SCI+'/etc/',%t,%f)); 116r = fileparts(SCI+'/etc/scilab.start','fname'); 117assert_checkequal(r, 'scilab'); 118r = fileparts(SCI+'/etc/scilab.start','extension'); 119assert_checkequal(r, '.start'); 120 121// Filename starting with "." 122// -------------------------- 123[path,fname,extension] = fileparts('/tmp/.scilab'); 124assert_checkequal(path, pathconvert('/tmp/',%t,%t)); 125assert_checkequal(fname, '.scilab'); 126assert_checkequal(extension, ''); 127r = fileparts('/tmp/.scilab','path'); 128assert_checkequal(r, pathconvert('/tmp/',%t,%f)); 129r = fileparts('/tmp/.scilab','fname'); 130assert_checkequal(r, '.scilab'); 131r = fileparts('/tmp/.scilab','extension'); 132assert_checkequal(r, ''); 133 134// Filename with multiple "." 135// -------------------------- 136pathfile = '/tmp/scilab.inc.txt' 137[path,fname,extension] = fileparts(pathfile); 138assert_checkequal(path, pathconvert('/tmp/',%t,%t)); 139assert_checkequal(fname, 'scilab.inc'); 140assert_checkequal(extension, '.txt'); 141r = fileparts(pathfile,'path'); 142assert_checkequal(r, pathconvert('/tmp/',%t,%f)); 143r = fileparts(pathfile,'fname'); 144assert_checkequal(r, 'scilab.inc'); 145r = fileparts(pathfile,'extension'); 146assert_checkequal(r, '.txt'); 147 148// For the empty string 149// -------------------- 150[path,fname,extension] = fileparts(""); 151assert_checkequal(path, ""); 152assert_checkequal(fname, ""); 153assert_checkequal(extension, ""); 154 155r = fileparts("", 'path'); 156assert_checkequal(r, ""); 157r = fileparts("", 'fname'); 158assert_checkequal(fname, ""); 159r = fileparts("", 'extension'); 160assert_checkequal(extension, ""); 161 162// For a row of strings 163// -------------------- 164[path,fname,extension] = fileparts([SCI+'/etc/scilab.start', SCI+'/etc/scilab.start']); 165assert_checkequal(path, [pathconvert(SCI+'/etc/',%t,%t), pathconvert(SCI+'/etc/',%t,%t)]); 166assert_checkequal(fname, ['scilab', 'scilab']); 167assert_checkequal(extension, ['.start', '.start']); 168 169r = fileparts([SCI+'/etc/scilab.start', SCI+'/etc/scilab.start'],'path'); 170assert_checkequal(r, [pathconvert(SCI+'/etc/',%t,%f), pathconvert(SCI+'/etc/',%t,%f)]); 171r = fileparts([SCI+'/etc/scilab.start', SCI+'/etc/scilab.start'],'fname'); 172assert_checkequal(r, ['scilab', 'scilab']); 173r = fileparts([SCI+'/etc/scilab.start', SCI+'/etc/scilab.start'],'extension'); 174assert_checkequal(r, ['.start', '.start']); 175 176// For a column of strings 177// ----------------------- 178[path,fname,extension] = fileparts([SCI+'/etc/scilab.start'; SCI+'/etc/scilab.start']); 179assert_checkequal(path, [pathconvert(SCI+'/etc/',%t,%t); pathconvert(SCI+'/etc/',%t,%t)]); 180assert_checkequal(fname, ['scilab'; 'scilab']); 181assert_checkequal(extension, ['.start'; '.start']); 182 183r = fileparts([SCI+'/etc/scilab.start'; SCI+'/etc/scilab.start'],'path'); 184assert_checkequal(r, [pathconvert(SCI+'/etc/',%t,%f); pathconvert(SCI+'/etc/',%t,%f)]); 185r = fileparts([SCI+'/etc/scilab.start'; SCI+'/etc/scilab.start'],'fname'); 186assert_checkequal(r, ['scilab'; 'scilab']); 187r = fileparts([SCI+'/etc/scilab.start'; SCI+'/etc/scilab.start'],'extension'); 188assert_checkequal(r, ['.start'; '.start']); 189 190// For a matrix of strings with no extension 191// ----------------------------------------- 192[path,fname,extension] = fileparts([SCI+'/etc/scilab.start', SCI+'/etc/scilab']); 193assert_checkequal(path, [pathconvert(SCI+'/etc/',%t,%t), pathconvert(SCI+'/etc/',%t,%t)]); 194assert_checkequal(fname, ['scilab', 'scilab']); 195assert_checkequal(extension, ['.start', ""]); 196 197r = fileparts([SCI+'/etc/scilab.start', SCI+'/etc/scilab'],'path'); 198assert_checkequal(r, [pathconvert(SCI+'/etc/',%t,%f), pathconvert(SCI+'/etc/',%t,%f)]); 199r = fileparts([SCI+'/etc/scilab.start', SCI+'/etc/scilab'],'fname'); 200assert_checkequal(r, ['scilab', 'scilab']); 201r = fileparts([SCI+'/etc/scilab.start', SCI+'/etc/scilab'],'extension'); 202assert_checkequal(r, ['.start', ""]); 203 204// For a matrix of strings with no path 205// ==================================== 206[path,fname,extension] = fileparts([SCI+'/etc/scilab.start', 'scilab.start']); 207assert_checkequal(path, [pathconvert(SCI+'/etc/',%t,%t), ""]); 208assert_checkequal(fname, ['scilab', 'scilab']); 209assert_checkequal(extension, ['.start', ".start"]); 210 211r = fileparts([SCI+'/etc/scilab.start', 'scilab.start'], 'path'); 212assert_checkequal(r, [pathconvert(SCI+'/etc/',%t,%f), ""]); 213r = fileparts([SCI+'/etc/scilab.start', 'scilab.start'], 'fname'); 214assert_checkequal(r, ['scilab', 'scilab']); 215r = fileparts([SCI+'/etc/scilab.start', 'scilab.start'], 'extension'); 216assert_checkequal(r, ['.start', '.start']); 217