@@ -15,17 +15,107 @@ function setup_path(tc)
1515methods (Test )
1616
1717function test_expanduser(tc )
18- import matlab .unittest .constraints .EndsWithSubstring
19- import matlab .unittest .constraints .StartsWithSubstring
2018
2119tc .verifyEmpty(stdlib .expanduser(string .empty ))
2220tc .verifyEqual(stdlib .expanduser(" " ), " " )
2321
2422tc .verifyEqual(stdlib .expanduser(" ~abc" ), " ~abc" )
2523
26- tc .verifyThat(stdlib .expanduser(' ~/foo' ), ~StartsWithSubstring(" ~" ))
24+ h = stdlib .fileio .homedir();
25+ tc .verifyEqual(stdlib .expanduser(" ~" ), h )
26+
27+ e = stdlib .expanduser(" ~/foo" );
28+ tc .verifyEqual(e , stdlib .posix(fullfile(h , " foo" )))
29+
30+ end
31+
32+
33+ function test_canonical(tc )
34+ import matlab .unittest .fixtures .TemporaryFolderFixture
35+ import matlab .unittest .fixtures .CurrentFolderFixture
36+ import matlab .unittest .constraints .StartsWithSubstring
37+
38+ td = tc .applyFixture(TemporaryFolderFixture ).Folder;
39+ tc .applyFixture(CurrentFolderFixture(td ))
40+
41+ % all non-existing files
42+ tc .verifyEmpty(stdlib .canonical(string .empty ))
43+ tc .verifyEqual(stdlib .canonical(" " ), " " )
44+
45+ pabs = stdlib .canonical(' 2foo' );
46+ tc .verifyThat(pabs , StartsWithSubstring(" 2foo" ))
47+
48+ par1 = stdlib .canonical(" ../2foo" );
49+ tc .verifyNotEmpty(par1 )
50+ tc .verifyThat(par1 , StartsWithSubstring(" .." ))
51+
52+ pt1 = stdlib .canonical(" bar/../2foo" );
53+ tc .verifyEqual(pt1 , " 2foo" )
54+
55+ % test existing file
56+ r = stdlib .parent(mfilename(' fullpath' ));
57+ rp = fullfile(r , " .." );
58+ tc .verifyEqual(stdlib .canonical(rp ), stdlib .parent(r ))
59+
60+ h = stdlib .fileio .homedir ;
61+ tc .verifyEqual(stdlib .canonical(" ~" ), h )
62+ tc .verifyEqual(stdlib .canonical(" ~/" ), h )
63+ tc .verifyEqual(stdlib .canonical(" ~/.." ), stdlib .parent(h ))
64+
65+ tc .verifyEqual(stdlib .canonical(" nobody.txt" ), " nobody.txt" )
66+ tc .verifyEqual(stdlib .canonical(" ../nobody.txt" ), " ../nobody.txt" )
67+
68+ end
69+
70+
71+ function test_resolve(tc )
72+ import matlab .unittest .fixtures .TemporaryFolderFixture
73+ import matlab .unittest .fixtures .CurrentFolderFixture
74+ import matlab .unittest .constraints .StartsWithSubstring
75+ import matlab .unittest .constraints .EndsWithSubstring
76+ import matlab .unittest .constraints .ContainsSubstring
77+
78+ td = tc .applyFixture(TemporaryFolderFixture ).Folder;
79+ tc .applyFixture(CurrentFolderFixture(td ))
80+
81+ % all non-existing files
82+ tc .verifyEmpty(stdlib .resolve(string .empty ))
83+ tc .verifyEqual(stdlib .resolve(" " ), stdlib .fileio .posix(pwd ))
84+
85+ pabs = stdlib .resolve(' 2foo' );
86+ pabs2 = stdlib .resolve(' 4foo' );
87+ tc .verifyThat(pabs , ~StartsWithSubstring(" 2" ))
88+ tc .verifyTrue(strncmp(pabs , pabs2 , 2 ))
89+
90+ par1 = stdlib .resolve(" ../2foo" );
91+ tc .verifyNotEmpty(par1 )
92+ tc .verifyThat(par1 , ~ContainsSubstring(" .." ))
93+
94+ par2 = stdlib .resolve(" ../4foo" );
95+ tc .verifyTrue(strncmp(par2 , pabs2 , 2 ))
96+
97+ pt1 = stdlib .resolve(" bar/../2foo" );
98+ tc .verifyNotEmpty(pt1 )
99+ tc .verifyThat(pt1 , ~ContainsSubstring(" .." ))
100+
101+ va = stdlib .resolve(" 2foo" );
102+ vb = stdlib .resolve(" 4foo" );
103+ tc .verifyThat(va , ~StartsWithSubstring(" 2" ))
104+ tc .verifyTrue(strncmp(va , vb , 2 ))
105+
106+ % test existing file
107+ r = stdlib .parent(mfilename(' fullpath' ));
108+ rp = fullfile(r , " .." );
109+ tc .verifyEqual(stdlib .resolve(rp ), stdlib .parent(r ))
110+
111+ h = stdlib .fileio .homedir ;
112+ tc .verifyEqual(stdlib .resolve(" ~" ), h )
113+ tc .verifyEqual(stdlib .resolve(" ~/" ), h )
114+ tc .verifyEqual(stdlib .resolve(" ~/.." ), stdlib .parent(h ))
115+
116+ tc .verifyEqual(stdlib .resolve(" nobody.txt" ), fullfile(td , " nobody.txt" ))
117+ tc .verifyEqual(stdlib .resolve(" ../nobody.txt" ), fullfile(stdlib .parent(td ), " nobody.txt" ))
27118
28- tc .verifyThat(stdlib .expanduser(' ~/foo' ), EndsWithSubstring(" foo" ))
29119end
30120
31121
0 commit comments