1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package eu.simuline.octave;
17
18 import java.io.File;
19 import java.util.Collection;
20 import java.util.Map;
21
22 import static org.junit.Assert.assertEquals;
23 import static org.junit.Assert.assertTrue;
24 import static org.junit.Assert.assertNull;
25 import static org.junit.Assert.assertNotNull;
26
27
28 import org.junit.Test;
29
30 import eu.simuline.octave.OctaveEngine.PackageDesc;
31 import eu.simuline.octave.OctaveEngine.NameDesc;
32 import eu.simuline.octave.type.Octave;
33
34
35
36
37
38 public class TestMetaInfo {
39
40
41 private final static String PKG_INTERVAL = "interval";
42 private final static String CLS_INTERVAL = "infsup";
43
44
45
46
47 @Test public void testVersion() {
48 final OctaveEngine octave = new OctaveEngineFactory().getScriptEngine();
49 octave.getOctaveVersion();
50 }
51
52
53
54
55
56
57 @Test public void testKnownVersion() {
58 final OctaveEngine octave = new OctaveEngineFactory().getScriptEngine();
59 assertTrue("Version '" + octave.getOctaveVersion() + "' is not known",
60 octave.isOctaveVersionAllowed());
61 assertEquals("Wrong octave version",
62 "6.2.0",
63 octave.getOctaveVersion());
64 }
65
66
67
68 @Test public void testOctaveJavaVersion() {
69 final OctaveEngine octave = new OctaveEngineFactory().getScriptEngine();
70 octave.getOctaveInJavaVersion();
71
72
73
74 }
75
76
77
78 @Test public void testMeta() {
79 final OctaveEngine octave = new OctaveEngineFactory().getScriptEngine();
80 octave.getVendor();
81
82
83
84 }
85
86 @Test public void testPackageInstalled() {
87 final OctaveEngine octave = new OctaveEngineFactory().getScriptEngine();
88 Collection<String> names = octave.getNamesOfPackagesInstalled();
89 assertTrue(names.contains(PKG_INTERVAL));
90 }
91
92 @Test public void testPackageLoading() {
93 final OctaveEngine octave = new OctaveEngineFactory().getScriptEngine();
94 Map<String, PackageDesc> name2pkg = octave.getPackagesInstalled();
95 assertTrue(name2pkg.keySet().contains(PKG_INTERVAL));
96 assertTrue(!name2pkg.get(PKG_INTERVAL).isLoaded);
97 octave.eval(String.format("pkg('load', '%s')", PKG_INTERVAL));
98 name2pkg = octave.getPackagesInstalled();
99 assertTrue( name2pkg.get(PKG_INTERVAL).isLoaded);
100 octave.eval(String.format("pkg('unload', '%s')", PKG_INTERVAL));
101 name2pkg = octave.getPackagesInstalled();
102 assertTrue(!name2pkg.get(PKG_INTERVAL).isLoaded);
103 }
104
105
106
107
108 @Test public void testListVarsEmpty() {
109 final OctaveEngine octave = new OctaveEngineFactory().getScriptEngine();
110 final Collection<String> collection = octave.getVarNames();
111 assertEquals(collection.toString(), 0, collection.size());
112 octave.close();
113 }
114
115
116
117
118
119 @Test public void testListVarsOneTwo() {
120 final OctaveEngine octave = new OctaveEngineFactory().getScriptEngine();
121
122 octave.eval("my_var = 42;");
123 final Collection<String> collection1 = octave.getVarNames();
124 assertEquals(collection1.toString(), 1, collection1.size());
125
126 octave.eval("1 + 2;");
127 octave.eval("my_other_var = 42;");
128 final Collection<String> collection2 = octave.getVarNames();
129 assertEquals(collection2.toString(), 2, collection2.size());
130
131 octave.close();
132 }
133
134 @Test public void testOnOS() {
135 final OctaveEngine octave = new OctaveEngineFactory().getScriptEngine();
136 assertEquals(File.separator, octave.getFilesep());
137 }
138
139
140
141
142
143 @Test public void testBasedOnWhich() {
144 final OctaveEngine octave = new OctaveEngineFactory().getScriptEngine();
145
146
147 String name = "someVar";
148 octave.put(name, Octave.scalar(1));
149 OctaveEngine.NameDesc desc = octave.getDescForName(name);
150 assertEquals(NameDesc.Category.Variable, desc.category);
151 assertEquals(name, desc.name);
152 assertNull(desc.type);
153 assertNull(desc.file);
154
155
156
157
158
159 name = "cos";
160 desc = octave.getDescForName(name);
161 assertEquals(NameDesc.Category.TypedDefInFile, desc.category);
162 assertEquals(name, desc.name);
163 assertEquals("built-in function", desc.type);
164
165 File fileCmp = new File("libinterp", "corefcn");
166 fileCmp = new File(fileCmp, "mappers.cc");
167 assertEquals(fileCmp, desc.file);
168
169
170 name = "pkg";
171 desc = octave.getDescForName(name);
172 assertEquals(NameDesc.Category.TypedDefInFile, desc.category);
173 assertEquals(name, desc.name);
174 assertEquals("function", desc.type);
175
176 fileCmp = new File(octave.getInstHomeDir(), "share");
177 fileCmp = new File(fileCmp, "octave");
178 fileCmp = new File(fileCmp, octave.getOctaveVersion());
179 fileCmp = new File(fileCmp, "m");
180 fileCmp = new File(fileCmp, "pkg");
181 fileCmp = new File(fileCmp, "pkg.m");
182 assertEquals(fileCmp, desc.file);
183 assertTrue(desc.file.exists());
184
185
186 PackageDesc pkgDesc = octave.getPackagesInstalled().get(PKG_INTERVAL);
187 assertNotNull(pkgDesc);
188 assertTrue(!pkgDesc.isLoaded);
189 octave.eval(String.format("pkg('load', '%s')", PKG_INTERVAL));
190 assertTrue(octave.getPackagesInstalled().get(PKG_INTERVAL).isLoaded);
191 name = String.format("@%s/abs", CLS_INTERVAL);
192 desc = octave.getDescForName(name);
193 assertEquals(NameDesc.Category.TypedDefInFile, desc.category);
194 assertEquals(name, desc.name);
195 assertEquals("function", desc.type);
196 fileCmp = new File(pkgDesc.dir, "@"+CLS_INTERVAL);
197 fileCmp = new File(fileCmp, "abs.m");
198 assertEquals(fileCmp, desc.file);
199 assertTrue(desc.file.exists());
200 octave.eval(String.format("pkg('unload', '%s')", PKG_INTERVAL));
201 assertTrue(!octave.getPackagesInstalled().get(PKG_INTERVAL).isLoaded);
202 desc = octave.getDescForName(name);
203 assertEquals(NameDesc.Category.Unknown, desc.category);
204 assertEquals(name, desc.name);
205 assertNull(desc.type);
206 assertNull(desc.file);
207
208
209
210 name = octave.getDescForName("pkg").file.toString();
211 desc = octave.getDescForName(name);
212 assertEquals(NameDesc.Category.FileEx, desc.category);
213 assertEquals(name, desc.name);
214 assertNull(desc.type);
215 assertEquals(new File(name), desc.file);
216 assertTrue(desc.file.exists());
217 assertTrue(desc.file.isFile());
218
219
220 name = octave.getDescForName("pkg").file.getParent();
221 desc = octave.getDescForName(name);
222 assertEquals(NameDesc.Category.FileEx, desc.category);
223 assertEquals(name, desc.name);
224 assertNull(desc.type);
225 assertEquals(new File(name), desc.file);
226 assertTrue(desc.file.exists());
227 assertTrue(desc.file.isDirectory());
228
229
230 name = "foo";
231 desc = octave.getDescForName(name);
232 assertEquals(NameDesc.Category.Unknown, desc.category);
233 assertEquals(name, desc.name);
234 assertNull(desc.type);
235 assertNull(desc.file);
236 }
237
238
239
240
241 @Test public void testJavaDir() {
242 final OctaveEngine octave = new OctaveEngineFactory().getScriptEngine();
243 String name = "javaaddpath";
244 OctaveEngine.NameDesc desc = octave.getDescForName(name);
245 assertEquals(name, desc.name);
246 assertEquals("function", desc.type);
247 assertEquals(octave.getJavaHomeDir(), desc.file.getParentFile());
248 }
249
250 }