1*dff3f235SAndrew Rist /**************************************************************
2cdf0e10cSrcweir *
3*dff3f235SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one
4*dff3f235SAndrew Rist * or more contributor license agreements. See the NOTICE file
5*dff3f235SAndrew Rist * distributed with this work for additional information
6*dff3f235SAndrew Rist * regarding copyright ownership. The ASF licenses this file
7*dff3f235SAndrew Rist * to you under the Apache License, Version 2.0 (the
8*dff3f235SAndrew Rist * "License"); you may not use this file except in compliance
9*dff3f235SAndrew Rist * with the License. You may obtain a copy of the License at
10cdf0e10cSrcweir *
11*dff3f235SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir *
13*dff3f235SAndrew Rist * Unless required by applicable law or agreed to in writing,
14*dff3f235SAndrew Rist * software distributed under the License is distributed on an
15*dff3f235SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*dff3f235SAndrew Rist * KIND, either express or implied. See the License for the
17*dff3f235SAndrew Rist * specific language governing permissions and limitations
18*dff3f235SAndrew Rist * under the License.
19cdf0e10cSrcweir *
20*dff3f235SAndrew Rist *************************************************************/
21*dff3f235SAndrew Rist
22*dff3f235SAndrew Rist
23cdf0e10cSrcweir
24cdf0e10cSrcweir #include "jvmaccess/javainfo.hxx"
25cdf0e10cSrcweir
26cdf0e10cSrcweir #include "osl/file.hxx"
27cdf0e10cSrcweir #include "osl/thread.h"
28cdf0e10cSrcweir #include "rtl/ustring.hxx"
29cdf0e10cSrcweir
30cdf0e10cSrcweir #include <stdio.h>
31cdf0e10cSrcweir #include <vector>
32cdf0e10cSrcweir
33cdf0e10cSrcweir using namespace rtl;
34cdf0e10cSrcweir using namespace std;
35cdf0e10cSrcweir using namespace osl;
36cdf0e10cSrcweir
37cdf0e10cSrcweir using jvmaccess::JavaInfo;
38cdf0e10cSrcweir
39cdf0e10cSrcweir #define OUSTR( x ) ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( x ))
40cdf0e10cSrcweir
41cdf0e10cSrcweir #define JAVA_VERSION "1.4.1_01"
42cdf0e10cSrcweir
43cdf0e10cSrcweir bool test_constructor1();
44cdf0e10cSrcweir bool test_constructor2();
45cdf0e10cSrcweir bool test_createAllInfo();
46cdf0e10cSrcweir bool test_compareVersions();
47cdf0e10cSrcweir bool test_createAllInfo();
48cdf0e10cSrcweir bool test_createBestInfo();
49cdf0e10cSrcweir bool test_isEqual();
50cdf0e10cSrcweir bool test_getJarFilePath();
51cdf0e10cSrcweir
52cdf0e10cSrcweir void printInfo(const JavaInfo& info);
53cdf0e10cSrcweir
main(int argc,char * argv[],char * envp[])54cdf0e10cSrcweir int main( int argc, char * argv[], char * envp[])
55cdf0e10cSrcweir {
56cdf0e10cSrcweir const int arSize= 20;
57cdf0e10cSrcweir bool arRet[arSize];
58cdf0e10cSrcweir int i =0;
59cdf0e10cSrcweir arRet[i++]= test_createAllInfo();
60cdf0e10cSrcweir arRet[i++]= test_constructor1();
61cdf0e10cSrcweir arRet[i++]= test_constructor2();
62cdf0e10cSrcweir
63cdf0e10cSrcweir arRet[i++]= test_compareVersions();
64cdf0e10cSrcweir arRet[i++]= test_createBestInfo();
65cdf0e10cSrcweir arRet[i++]= test_isEqual();
66cdf0e10cSrcweir arRet[i++]= test_getJarFilePath();
67cdf0e10cSrcweir bool error= true;
68cdf0e10cSrcweir for(int j= 0; j < i; j++)
69cdf0e10cSrcweir error &= arRet[j];
70cdf0e10cSrcweir
71cdf0e10cSrcweir if( error == false)
72cdf0e10cSrcweir printf("Errors occurred\n");
73cdf0e10cSrcweir return 0;
74cdf0e10cSrcweir }
75cdf0e10cSrcweir
test_constructor1()76cdf0e10cSrcweir bool test_constructor1()
77cdf0e10cSrcweir {
78cdf0e10cSrcweir printf("\ntest JavaInfo::JavaInfo(const OUString& usJavaHome\n" \
79cdf0e10cSrcweir "!Check output for correctness\n\n");
80cdf0e10cSrcweir try{
81cdf0e10cSrcweir JavaInfo info(OUSTR("file:///d:/java/j2sdk1.4.1_01"));
82cdf0e10cSrcweir // JavaInfo info(OUSTR("file:///local/jl/java/j2sdk1.4.0"));
83cdf0e10cSrcweir // JavaInfo info(OUSTR("file:///usr/local2/jl/java/j2sdk1.4.0"));
84cdf0e10cSrcweir
85cdf0e10cSrcweir printInfo(info);
86cdf0e10cSrcweir }catch( JavaInfo::InitException& )
87cdf0e10cSrcweir {
88cdf0e10cSrcweir return false;
89cdf0e10cSrcweir }
90cdf0e10cSrcweir
91cdf0e10cSrcweir return true;
92cdf0e10cSrcweir }
93cdf0e10cSrcweir
test_constructor2()94cdf0e10cSrcweir bool test_constructor2()
95cdf0e10cSrcweir {
96cdf0e10cSrcweir printf("\ntest JavaInfo::JavaInfo(const OUString& usVersion, int requirements)\n" \
97cdf0e10cSrcweir "!Check output for correctness\n\n");
98cdf0e10cSrcweir bool arRet[20];
99cdf0e10cSrcweir int i= 0;
100cdf0e10cSrcweir
101cdf0e10cSrcweir JavaInfo a(OUSTR("file:///d:/java/j2sdk1.4.1_01"));
102cdf0e10cSrcweir // -----------------------------------------------------
103cdf0e10cSrcweir // JavaInfo a(OUSTR("file:///usr/local2/jl/java/j2sdk1.4.0"));
104cdf0e10cSrcweir //------------------------------------------------------------
105cdf0e10cSrcweir // JavaInfo a(OUSTR("file:///local/jl/java/j2sdk1.4.0"));
106cdf0e10cSrcweir try{
107cdf0e10cSrcweir JavaInfo info= JavaInfo(OUString(), 0);
108cdf0e10cSrcweir arRet[i++]= true;
109cdf0e10cSrcweir }
110cdf0e10cSrcweir catch( ...) {
111cdf0e10cSrcweir arRet[i++]= false;
112cdf0e10cSrcweir }
113cdf0e10cSrcweir try{
114cdf0e10cSrcweir // make sure it supports accessibility
115cdf0e10cSrcweir JavaInfo info= JavaInfo(OUString(), JavaInfo::Accessibility);
116cdf0e10cSrcweir arRet[i++]= info.supportsAccessibility();
117cdf0e10cSrcweir }
118cdf0e10cSrcweir catch( ...) {
119cdf0e10cSrcweir arRet[i++]= false;
120cdf0e10cSrcweir }
121cdf0e10cSrcweir
122cdf0e10cSrcweir try{
123cdf0e10cSrcweir JavaInfo info(OUString(OUSTR(JAVA_VERSION)), JavaInfo::EqualVersion);
124cdf0e10cSrcweir arRet[i++]= info.compareVersions(a) == 0;
125cdf0e10cSrcweir }
126cdf0e10cSrcweir catch( ...) {
127cdf0e10cSrcweir arRet[i++]= false;
128cdf0e10cSrcweir }
129cdf0e10cSrcweir try{
130cdf0e10cSrcweir JavaInfo info(OUString(OUSTR(JAVA_VERSION)), 0);
131cdf0e10cSrcweir arRet[i++]= info.compareVersions(a) == 0;
132cdf0e10cSrcweir }
133cdf0e10cSrcweir catch( ...) {
134cdf0e10cSrcweir arRet[i++]= false;
135cdf0e10cSrcweir }
136cdf0e10cSrcweir
137cdf0e10cSrcweir try{
138cdf0e10cSrcweir JavaInfo info(OUString(OUSTR(JAVA_VERSION)), JavaInfo::EqualVersion | JavaInfo::GreaterVersion);
139cdf0e10cSrcweir arRet[i++]= info.compareVersions(a) >= 0;
140cdf0e10cSrcweir }
141cdf0e10cSrcweir catch( ...) {
142cdf0e10cSrcweir arRet[i++]= false;
143cdf0e10cSrcweir }
144cdf0e10cSrcweir try{
145cdf0e10cSrcweir JavaInfo info(OUString(OUSTR(JAVA_VERSION)), JavaInfo::EqualVersion | JavaInfo::SmallerVersion);
146cdf0e10cSrcweir arRet[i++]= info.compareVersions(a) <= 0;
147cdf0e10cSrcweir }
148cdf0e10cSrcweir catch( ...) {
149cdf0e10cSrcweir arRet[i++]= false;
150cdf0e10cSrcweir }
151cdf0e10cSrcweir try{
152cdf0e10cSrcweir JavaInfo info(OUString(OUSTR(JAVA_VERSION)), JavaInfo::SmallerVersion);
153cdf0e10cSrcweir arRet[i++]= info.compareVersions(a) < 0;
154cdf0e10cSrcweir }
155cdf0e10cSrcweir catch( ...) {
156cdf0e10cSrcweir arRet[i++]= false;
157cdf0e10cSrcweir }
158cdf0e10cSrcweir try{
159cdf0e10cSrcweir JavaInfo info(OUString(OUSTR(JAVA_VERSION)), JavaInfo::GreaterVersion);
160cdf0e10cSrcweir arRet[i++]= info.compareVersions(a) > 0;
161cdf0e10cSrcweir }
162cdf0e10cSrcweir catch( ...) {
163cdf0e10cSrcweir arRet[i++]= false;
164cdf0e10cSrcweir }
165cdf0e10cSrcweir
166cdf0e10cSrcweir try{
167cdf0e10cSrcweir JavaInfo info(OUString(OUSTR(JAVA_VERSION)), JavaInfo::EqualVersion | JavaInfo::SmallerVersion
168cdf0e10cSrcweir | JavaInfo::Accessibility);
169cdf0e10cSrcweir arRet[i++]= info.compareVersions(a) <= 0 && info.supportsAccessibility();
170cdf0e10cSrcweir }
171cdf0e10cSrcweir catch( ...) {
172cdf0e10cSrcweir arRet[i++]= false;
173cdf0e10cSrcweir }
174cdf0e10cSrcweir try{
175cdf0e10cSrcweir JavaInfo info(OUString(OUSTR(JAVA_VERSION)), JavaInfo::GreaterVersion | JavaInfo::Accessibility);
176cdf0e10cSrcweir arRet[i++]= info.compareVersions(a) > 0 && info.supportsAccessibility();
177cdf0e10cSrcweir }
178cdf0e10cSrcweir catch( ...) {
179cdf0e10cSrcweir arRet[i++]= false;
180cdf0e10cSrcweir }
181cdf0e10cSrcweir
182cdf0e10cSrcweir
183cdf0e10cSrcweir bool err= true;
184cdf0e10cSrcweir for(int j= 0; j < i; j++)
185cdf0e10cSrcweir err &= arRet[j];
186cdf0e10cSrcweir if( err)
187cdf0e10cSrcweir printf("ok\n");
188cdf0e10cSrcweir else
189cdf0e10cSrcweir printf("failed\n");
190cdf0e10cSrcweir return err;
191cdf0e10cSrcweir
192cdf0e10cSrcweir }
193cdf0e10cSrcweir
test_createAllInfo()194cdf0e10cSrcweir bool test_createAllInfo()
195cdf0e10cSrcweir {
196cdf0e10cSrcweir printf("\ntest JavaInfo::createAllInfo\n" \
197cdf0e10cSrcweir "! Compare output with values in registry, PATH, JAVA_HOME, LD_LIBRARY_PATH !\n\n");
198cdf0e10cSrcweir vector<JavaInfo> vec;
199cdf0e10cSrcweir JavaInfo::createAllInfo(&vec);
200cdf0e10cSrcweir for(vector<JavaInfo>::size_type i= 0; i < vec.size(); i++)
201cdf0e10cSrcweir printInfo(vec[i]);
202cdf0e10cSrcweir return true;
203cdf0e10cSrcweir }
204cdf0e10cSrcweir
test_compareVersions()205cdf0e10cSrcweir bool test_compareVersions()
206cdf0e10cSrcweir {
207cdf0e10cSrcweir bool ret= false;
208cdf0e10cSrcweir printf("\ntest JavaInfo::compareVersions \n" \
209cdf0e10cSrcweir "! Check output for correctness\n\n");
210cdf0e10cSrcweir
211cdf0e10cSrcweir
212cdf0e10cSrcweir JavaInfo a(OUSTR("file:///C:/Program%20Files/JavaSoft/JRE/1.3.1"));
213cdf0e10cSrcweir JavaInfo b(OUSTR("file:///C:/Program%20Files/JavaSoft/JRE/1.3.1_04"));
214cdf0e10cSrcweir JavaInfo c(OUSTR("file:///C:/Program%20Files/Java/j2re1.4.0_03"));
215cdf0e10cSrcweir JavaInfo d(OUSTR("file:///C:/Program%20Files/Java/j2re1.4.2_04"));
216cdf0e10cSrcweir // JavaInfo e(OUSTR("file:///d:/java/j2sdk1.4.0_01"));
217cdf0e10cSrcweir // JavaInfo f(OUSTR("file:///d:/java/j2sdk1.4.0_02"));
218cdf0e10cSrcweir // JavaInfo g(OUSTR("file:///d:/java/j2sdk1.4.1"));
219cdf0e10cSrcweir // JavaInfo h(OUSTR("file:///d:/java/j2sdk1.4.1_01"));
220cdf0e10cSrcweir
221cdf0e10cSrcweir // JavaInfo a(OUSTR("file:///usr/local2/jl/java/j2re1_3_1_02"));
222cdf0e10cSrcweir // JavaInfo b(OUSTR("file:///usr/local2/jl/java/j2sdk1.4.0"));
223cdf0e10cSrcweir // JavaInfo c(OUSTR("file:///usr/local2/jl/java/j2sdk1.4.1"));
224cdf0e10cSrcweir // JavaInfo d(OUSTR("file:///usr/local2/jl/java/j2re1.4.1_01"));
225cdf0e10cSrcweir
226cdf0e10cSrcweir // JavaInfo a(OUSTR("file:///local/jl/java/jre1.3.1"));
227cdf0e10cSrcweir // JavaInfo b(OUSTR("file:///local/jl/java/jdk1.3.1_04"));
228cdf0e10cSrcweir // JavaInfo c(OUSTR("file:///local/jl/java/j2sdk1.4.0"));
229cdf0e10cSrcweir // JavaInfo d(OUSTR("file:///local/jl/java/j2sdk1.4.1"));
230cdf0e10cSrcweir // JavaInfo e(OUSTR("file:///local/jl/java/j2re1.4.1_01"));
231cdf0e10cSrcweir // fprintf(stderr,"###ok1");
232cdf0e10cSrcweir
233cdf0e10cSrcweir if( (a.compareVersions(a) == 0
234cdf0e10cSrcweir && a.compareVersions(b) < 0
235cdf0e10cSrcweir && a.compareVersions(c) < 0
236cdf0e10cSrcweir // && a.compareVersions(d) < 0
237cdf0e10cSrcweir // && a.compareVersions(e) < 0
238cdf0e10cSrcweir // && a.compareVersions(h) < 0
239cdf0e10cSrcweir )
240cdf0e10cSrcweir &&
241cdf0e10cSrcweir (a.compareVersions(a)== 0))
242cdf0e10cSrcweir
243cdf0e10cSrcweir ret= true;
244cdf0e10cSrcweir
245cdf0e10cSrcweir if(ret &&
246cdf0e10cSrcweir (b.compareVersions(a) > 0
247cdf0e10cSrcweir && b.compareVersions(b) == 0
248cdf0e10cSrcweir && b.compareVersions(c) < 0
249cdf0e10cSrcweir && b.compareVersions(d) < 0
250cdf0e10cSrcweir // && b.compareVersions(e) < 0
251cdf0e10cSrcweir // && b.compareVersions(h) < 0))
252cdf0e10cSrcweir ))
253cdf0e10cSrcweir ret= true;
254cdf0e10cSrcweir
255cdf0e10cSrcweir if(ret &&
256cdf0e10cSrcweir ( d.compareVersions(a) > 0
257cdf0e10cSrcweir && d.compareVersions(b) > 0
258cdf0e10cSrcweir && d.compareVersions(c) > 0
259cdf0e10cSrcweir && d.compareVersions(d) == 0
260cdf0e10cSrcweir // && d.compareVersions(e) < 0
261cdf0e10cSrcweir // && d.compareVersions(f) < 0
262cdf0e10cSrcweir // && d.compareVersions(g) < 0
263cdf0e10cSrcweir // && d.compareVersions(h) < 0))
264cdf0e10cSrcweir ))
265cdf0e10cSrcweir ret= true;
266cdf0e10cSrcweir
267cdf0e10cSrcweir // if(ret
268cdf0e10cSrcweir // && e.compareVersions(a) > 0
269cdf0e10cSrcweir // && e.compareVersions(b) > 0
270cdf0e10cSrcweir // && e.compareVersions(c) > 0
271cdf0e10cSrcweir // && e.compareVersions(d) > 0
272cdf0e10cSrcweir // && e.compareVersions(e) == 0
273cdf0e10cSrcweir // )
274cdf0e10cSrcweir
275cdf0e10cSrcweir
276cdf0e10cSrcweir // if(ret &&
277cdf0e10cSrcweir // (f.compareVersions(a) > 0
278cdf0e10cSrcweir // && f.compareVersions(c) > 0
279cdf0e10cSrcweir // && f.compareVersions(d) > 0
280cdf0e10cSrcweir // && f.compareVersions(g) < 0
281cdf0e10cSrcweir // && f.compareVersions(h) < 0))
282cdf0e10cSrcweir // ret= true;
283cdf0e10cSrcweir
284cdf0e10cSrcweir if( ! ret)
285cdf0e10cSrcweir printf("failed\n");
286cdf0e10cSrcweir else
287cdf0e10cSrcweir printf("ok\n");
288cdf0e10cSrcweir
289cdf0e10cSrcweir return ret;
290cdf0e10cSrcweir }
291cdf0e10cSrcweir
test_createBestInfo()292cdf0e10cSrcweir bool test_createBestInfo()
293cdf0e10cSrcweir {
294cdf0e10cSrcweir printf("\ntest JavaInfo::createBestInfo\n" \
295cdf0e10cSrcweir "! Check output for correctness\n\n");
296cdf0e10cSrcweir JavaInfo info= JavaInfo::createBestInfo(false);
297cdf0e10cSrcweir printInfo(info);
298cdf0e10cSrcweir return true;
299cdf0e10cSrcweir }
300cdf0e10cSrcweir
test_isEqual()301cdf0e10cSrcweir bool test_isEqual()
302cdf0e10cSrcweir {
303cdf0e10cSrcweir printf("\ntest JavaInfo::isEqual\n");
304cdf0e10cSrcweir JavaInfo a(OUSTR(JAVA_VERSION)); // accessible
305cdf0e10cSrcweir JavaInfo b(OUSTR(JAVA_VERSION));
306cdf0e10cSrcweir
307cdf0e10cSrcweir JavaInfo c(OUSTR("file:///c:/local/r/j2sdk1.4.0"));// not Accessible
308cdf0e10cSrcweir JavaInfo d(OUSTR("file:///d:/java/copy_j2sdk1.4.0"));
309cdf0e10cSrcweir //-------------------------------------------------------------------
310cdf0e10cSrcweir // JavaInfo a(OUSTR("file:///usr/local2/jl/java/j2re1_3_1_02"));
311cdf0e10cSrcweir // JavaInfo b(OUSTR("file:///usr/local2/jl/java/j2re1_3_1_02"));
312cdf0e10cSrcweir
313cdf0e10cSrcweir // JavaInfo c(OUSTR("file:///usr/local2/jl/java/j2sdk1.4.1"));
314cdf0e10cSrcweir // JavaInfo d(OUSTR("file:///usr/local2/jl/java/copyj2sdk1.4.1"));
315cdf0e10cSrcweir
316cdf0e10cSrcweir // JavaInfo a(OUSTR("file:///local/jl/java/jre1.3.1"));
317cdf0e10cSrcweir // JavaInfo b(OUSTR("file:///local/jl/java/jre1.3.1"));
318cdf0e10cSrcweir // JavaInfo c(OUSTR("file:///local/jl/java/j2sdk1.4.1"));
319cdf0e10cSrcweir // JavaInfo d(OUSTR("file:///local/jl/java/copyj2sdk1.4.1"));
320cdf0e10cSrcweir
321cdf0e10cSrcweir bool arRet[20];
322cdf0e10cSrcweir int i= 0;
323cdf0e10cSrcweir arRet[i++]= a.isEqual(b);
324cdf0e10cSrcweir arRet[i++]= ! a.isEqual(c); //must fail
325cdf0e10cSrcweir arRet[i++]= a.isEqual(d);
326cdf0e10cSrcweir
327cdf0e10cSrcweir bool err= true;
328cdf0e10cSrcweir for(int j= 0; j < i; j++)
329cdf0e10cSrcweir err &= arRet[j];
330cdf0e10cSrcweir if( arRet == false)
331cdf0e10cSrcweir printf("failed\n");
332cdf0e10cSrcweir else
333cdf0e10cSrcweir printf("ok\n");
334cdf0e10cSrcweir return err;
335cdf0e10cSrcweir }
336cdf0e10cSrcweir
test_getJarFilePath()337cdf0e10cSrcweir bool test_getJarFilePath()
338cdf0e10cSrcweir {
339cdf0e10cSrcweir printf("\ntest JavaInfo::getJarFilePath\n");
340cdf0e10cSrcweir JavaInfo info(OUString(OUSTR("1.3.1")), JavaInfo::GreaterVersion | JavaInfo::EqualVersion );
341cdf0e10cSrcweir OUString s= info.getJarFilePath(OUSTR("javaplugin.jar"));
342cdf0e10cSrcweir
343cdf0e10cSrcweir printf("check if this URL is correct:\n");
344cdf0e10cSrcweir OString oPath= OUStringToOString(s, osl_getThreadTextEncoding());
345cdf0e10cSrcweir printf("%s\n", oPath.getStr());
346cdf0e10cSrcweir return true;
347cdf0e10cSrcweir }
348cdf0e10cSrcweir
printInfo(const JavaInfo & info)349cdf0e10cSrcweir void printInfo(const JavaInfo& info)
350cdf0e10cSrcweir {
351cdf0e10cSrcweir OUString usVersion= info.getVersion();
352cdf0e10cSrcweir OString sVersion= OUStringToOString( usVersion, osl_getThreadTextEncoding());
353cdf0e10cSrcweir OUString usHome= info.getInstallationLocation();
354cdf0e10cSrcweir OString sHome= OUStringToOString( usHome, osl_getThreadTextEncoding());
355cdf0e10cSrcweir OUString usType= info.getType();
356cdf0e10cSrcweir OString sType= OUStringToOString(usType, osl_getThreadTextEncoding());
357cdf0e10cSrcweir OUString usLib= info.getRuntimeLibLocation();
358cdf0e10cSrcweir OString sLib= OUStringToOString(usLib, osl_getThreadTextEncoding());
359cdf0e10cSrcweir OUString usLibLocation= info.getLibLocations();
360cdf0e10cSrcweir OString sLibLocation= OUStringToOString(usLibLocation, osl_getThreadTextEncoding());
361cdf0e10cSrcweir sal_Bool baccess= info.supportsAccessibility();
362cdf0e10cSrcweir
363cdf0e10cSrcweir printf("%s %s\n",sType.getStr(), sVersion.getStr());
364cdf0e10cSrcweir printf("\t%s \n",sHome.getStr());
365cdf0e10cSrcweir printf("\t%s \n",sLib.getStr());
366cdf0e10cSrcweir printf("\tLibDir: %s \n", sLibLocation.getStr());
367cdf0e10cSrcweir printf("\t%s\n", baccess ? "accessible" : "not accessible");
368cdf0e10cSrcweir }
369