1+ % These tests are to ensure graceful degradation with missing (or no)
2+ % available backends. Ideally, run this test with all these disabled
3+ % * Java: matlab -nojvm
4+ % * dotnet: setenv('DOTNET_ROOT') right upon starting Matlab on non-Windows system
5+ % * python: seems one needs a Matlab install that never had Python setup.
6+ % * Alternative: install a temporary Python environment, set pyenv to that, then delete that Python install
7+
8+ classdef (SharedTestFixtures = { matlab .unittest .fixtures .PathFixture(fileparts(fileparts(mfilename(' fullpath' ))))}, ...
9+ TestTags = {' impure' }) ...
10+ TestBackend < matlab .unittest .TestCase
11+
12+ properties
13+ root = fileparts(fileparts(mfilename(' fullpath' )))
14+ end
15+
16+ methods (TestClassSetup )
17+ function test_dirs(tc )
18+ tc .applyFixture(matlab .unittest .fixtures .WorkingFolderFixture())
19+ end
20+ end
21+
22+ methods (Test )
23+ function test_backend(tc )
24+ import matlab .unittest .constraints .IsSubsetOf
25+ import matlab .unittest .constraints .IsFile
26+
27+ readme = tc .root + " /Readme.md" ;
28+ tc .assertThat(readme , IsFile )
29+
30+ [i , b ] = stdlib .cpu_load();
31+ tc .assertThat(b , IsSubsetOf(stdlib .Backend(' cpu_load' ).backends))
32+ tc .verifyGreaterThan(i , 0 )
33+
34+ [i , b ] = stdlib .create_symlink(readme , " Readme.lnk" );
35+ tc .assertThat(b , IsSubsetOf(stdlib .Backend(' create_symlink' ).backends))
36+ tc .verifyTrue(i )
37+
38+ [i , b ] = stdlib .device(' .' );
39+ tc .assertThat(b , IsSubsetOf(stdlib .Backend(' device' ).backends))
40+ tc .verifyGreaterThan(i , 0 )
41+
42+ [i , b ] = stdlib .disk_available(' .' );
43+ tc .assertThat(b , IsSubsetOf(stdlib .Backend(' disk_available' ).backends))
44+ tc .verifyGreaterThan(i , 0 )
45+
46+ [i , b ] = stdlib .disk_capacity(' .' );
47+ tc .assertThat(b , IsSubsetOf(stdlib .Backend(' disk_capacity' ).backends))
48+ tc .verifyGreaterThan(i , 0 )
49+
50+ [i , b ] = stdlib .file_checksum(readme , ' sha256' );
51+ tc .assertThat(b , IsSubsetOf(stdlib .Backend(' file_checksum' ).backends))
52+ tc .verifyEqual(strlength(i ), 64 )
53+
54+ [i , b ] = stdlib .filesystem_type(' .' );
55+ tc .assertThat(b , IsSubsetOf(stdlib .Backend(' filesystem_type' ).backends))
56+ tc .verifyGreaterThan(strlength(i ), 0 )
57+
58+ [i , b ] = stdlib .get_owner(' .' );
59+ tc .assertThat(b , IsSubsetOf(stdlib .Backend(' get_owner' ).backends))
60+ tc .verifyGreaterThan(strlength(i ), 0 )
61+
62+ [i , b ] = stdlib .get_process_priority();
63+ tc .assertThat(b , IsSubsetOf(stdlib .Backend(' get_process_priority' ).backends))
64+ tc .verifyNotEmpty(i )
65+
66+ [i , b ] = stdlib .get_uid();
67+ tc .assertThat(b , IsSubsetOf(stdlib .Backend(' get_uid' ).backends))
68+ tc .verifyGreaterThanOrEqual(i , 0 )
69+
70+ [i , b ] = stdlib .get_username();
71+ tc .assertThat(b , IsSubsetOf(stdlib .Backend(' get_username' ).backends))
72+ tc .verifyNotEmpty(i )
73+
74+ [i , b ] = stdlib .hard_link_count(' .' );
75+ tc .assertThat(b , IsSubsetOf(stdlib .Backend(' hard_link_count' ).backends))
76+ tc .verifyGreaterThan(i , 0 )
77+
78+ [i , b ] = stdlib .hostname();
79+ tc .assertThat(b , IsSubsetOf(stdlib .Backend(' hostname' ).backends))
80+ tc .verifyNotEmpty(i )
81+
82+ [i , b ] = stdlib .inode(readme );
83+ tc .assertThat(b , IsSubsetOf(stdlib .Backend(' inode' ).backends))
84+ tc .verifyGreaterThan(i , 0 )
85+
86+ [i ,b ] = stdlib .is_admin();
87+ tc .assertThat(b , IsSubsetOf(stdlib .Backend(' is_admin' ).backends))
88+ tc .verifyNotEmpty(i )
89+
90+ [i ,b ] = stdlib .is_char_device(' .' );
91+ tc .assertThat(b , IsSubsetOf(stdlib .Backend(' is_char_device' ).backends));
92+ tc .verifyNotEmpty(i );
93+
94+ [i , b ] = stdlib .is_dev_drive(' .' );
95+ tc .assertThat(b , IsSubsetOf(stdlib .Backend(' is_dev_drive' ).backends))
96+ tc .verifyNotEmpty(i )
97+
98+ [i , b ] = stdlib .is_mount(' .' );
99+ tc .assertThat(b , IsSubsetOf(stdlib .Backend(' is_mount' ).backends))
100+ tc .verifyNotEmpty(i )
101+
102+ [i , b ] = stdlib .is_removable(' .' );
103+ tc .assertThat(b , IsSubsetOf(stdlib .Backend(' is_removable' ).backends))
104+ tc .verifyNotEmpty(i )
105+
106+ [i , b ] = stdlib .is_symlink(readme );
107+ tc .assertThat(b , IsSubsetOf(stdlib .Backend(' is_symlink' ).backends))
108+ tc .verifyClass(i , ' logical' )
109+ tc .verifyNotEmpty(i )
110+
111+ [os , version , b ] = stdlib .os_version();
112+ tc .assertThat(b , IsSubsetOf(stdlib .Backend(' os_version' ).backends))
113+ tc .verifyNotEmpty(os )
114+ tc .verifyNotEmpty(version )
115+
116+ [i , b ] = stdlib .ram_free();
117+ tc .assertThat(b , IsSubsetOf(stdlib .Backend(' ram_free' ).backends))
118+ tc .verifyGreaterThan(i , 0 )
119+
120+ [i , b ] = stdlib .ram_total();
121+ tc .assertThat(b , IsSubsetOf(stdlib .Backend(' ram_total' ).backends))
122+ tc .verifyGreaterThan(i , 0 )
123+
124+ [i , b ] = stdlib .read_symlink(' Readme.lnk' );
125+ tc .assertThat(b , IsSubsetOf(stdlib .Backend(' read_symlink' ).backends))
126+ tc .verifyThat(i , IsFile )
127+
128+ [i , b ] = stdlib .samepath(readme , readme );
129+ tc .assertThat(b , IsSubsetOf(stdlib .Backend(' samepath' ).backends))
130+ tc .verifyTrue(i )
131+
132+ [i , b ] = stdlib .set_modtime(" nobody" , datetime());
133+ tc .assertThat(b , IsSubsetOf(stdlib .Backend(' set_modtime' ).backends))
134+ tc .verifyNotEmpty(i )
135+
136+
137+ end
138+
139+ end
140+
141+
142+ end
0 commit comments