blob: 79d19670ee93f1b83d5d87bbde9d43df3a643f11 [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#include "jvmaccess/javainfo.hxx"
#include "osl/file.hxx"
#include "osl/thread.h"
#include "rtl/ustring.hxx"
#include <stdio.h>
#include <vector>
using namespace rtl;
using namespace std;
using namespace osl;
using jvmaccess::JavaInfo;
#define OUSTR( x ) ::rtl::OUString(RTL_CONSTASCII_USTRINGPARAM( x ))
#define JAVA_VERSION "1.4.1_01"
bool test_constructor1();
bool test_constructor2();
bool test_createAllInfo();
bool test_compareVersions();
bool test_createAllInfo();
bool test_createBestInfo();
bool test_isEqual();
bool test_getJarFilePath();
void printInfo(const JavaInfo& info);
int main( int argc, char * argv[], char * envp[])
{
const int arSize= 20;
bool arRet[arSize];
int i =0;
arRet[i++]= test_createAllInfo();
arRet[i++]= test_constructor1();
arRet[i++]= test_constructor2();
arRet[i++]= test_compareVersions();
arRet[i++]= test_createBestInfo();
arRet[i++]= test_isEqual();
arRet[i++]= test_getJarFilePath();
bool error= true;
for(int j= 0; j < i; j++)
error &= arRet[j];
if( error == false)
printf("Errors occurred\n");
return 0;
}
bool test_constructor1()
{
printf("\ntest JavaInfo::JavaInfo(const OUString& usJavaHome\n" \
"!Check output for correctness\n\n");
try{
JavaInfo info(OUSTR("file:///d:/java/j2sdk1.4.1_01"));
// JavaInfo info(OUSTR("file:///local/jl/java/j2sdk1.4.0"));
// JavaInfo info(OUSTR("file:///usr/local2/jl/java/j2sdk1.4.0"));
printInfo(info);
}catch( JavaInfo::InitException& )
{
return false;
}
return true;
}
bool test_constructor2()
{
printf("\ntest JavaInfo::JavaInfo(const OUString& usVersion, int requirements)\n" \
"!Check output for correctness\n\n");
bool arRet[20];
int i= 0;
JavaInfo a(OUSTR("file:///d:/java/j2sdk1.4.1_01"));
// -----------------------------------------------------
// JavaInfo a(OUSTR("file:///usr/local2/jl/java/j2sdk1.4.0"));
//------------------------------------------------------------
// JavaInfo a(OUSTR("file:///local/jl/java/j2sdk1.4.0"));
try{
JavaInfo info= JavaInfo(OUString(), 0);
arRet[i++]= true;
}
catch( ...) {
arRet[i++]= false;
}
try{
// make sure it supports accessibility
JavaInfo info= JavaInfo(OUString(), JavaInfo::Accessibility);
arRet[i++]= info.supportsAccessibility();
}
catch( ...) {
arRet[i++]= false;
}
try{
JavaInfo info(OUString(OUSTR(JAVA_VERSION)), JavaInfo::EqualVersion);
arRet[i++]= info.compareVersions(a) == 0;
}
catch( ...) {
arRet[i++]= false;
}
try{
JavaInfo info(OUString(OUSTR(JAVA_VERSION)), 0);
arRet[i++]= info.compareVersions(a) == 0;
}
catch( ...) {
arRet[i++]= false;
}
try{
JavaInfo info(OUString(OUSTR(JAVA_VERSION)), JavaInfo::EqualVersion | JavaInfo::GreaterVersion);
arRet[i++]= info.compareVersions(a) >= 0;
}
catch( ...) {
arRet[i++]= false;
}
try{
JavaInfo info(OUString(OUSTR(JAVA_VERSION)), JavaInfo::EqualVersion | JavaInfo::SmallerVersion);
arRet[i++]= info.compareVersions(a) <= 0;
}
catch( ...) {
arRet[i++]= false;
}
try{
JavaInfo info(OUString(OUSTR(JAVA_VERSION)), JavaInfo::SmallerVersion);
arRet[i++]= info.compareVersions(a) < 0;
}
catch( ...) {
arRet[i++]= false;
}
try{
JavaInfo info(OUString(OUSTR(JAVA_VERSION)), JavaInfo::GreaterVersion);
arRet[i++]= info.compareVersions(a) > 0;
}
catch( ...) {
arRet[i++]= false;
}
try{
JavaInfo info(OUString(OUSTR(JAVA_VERSION)), JavaInfo::EqualVersion | JavaInfo::SmallerVersion
| JavaInfo::Accessibility);
arRet[i++]= info.compareVersions(a) <= 0 && info.supportsAccessibility();
}
catch( ...) {
arRet[i++]= false;
}
try{
JavaInfo info(OUString(OUSTR(JAVA_VERSION)), JavaInfo::GreaterVersion | JavaInfo::Accessibility);
arRet[i++]= info.compareVersions(a) > 0 && info.supportsAccessibility();
}
catch( ...) {
arRet[i++]= false;
}
bool err= true;
for(int j= 0; j < i; j++)
err &= arRet[j];
if( err)
printf("ok\n");
else
printf("failed\n");
return err;
}
bool test_createAllInfo()
{
printf("\ntest JavaInfo::createAllInfo\n" \
"! Compare output with values in registry, PATH, JAVA_HOME, LD_LIBRARY_PATH !\n\n");
vector<JavaInfo> vec;
JavaInfo::createAllInfo(&vec);
for(vector<JavaInfo>::size_type i= 0; i < vec.size(); i++)
printInfo(vec[i]);
return true;
}
bool test_compareVersions()
{
bool ret= false;
printf("\ntest JavaInfo::compareVersions \n" \
"! Check output for correctness\n\n");
JavaInfo a(OUSTR("file:///C:/Program%20Files/JavaSoft/JRE/1.3.1"));
JavaInfo b(OUSTR("file:///C:/Program%20Files/JavaSoft/JRE/1.3.1_04"));
JavaInfo c(OUSTR("file:///C:/Program%20Files/Java/j2re1.4.0_03"));
JavaInfo d(OUSTR("file:///C:/Program%20Files/Java/j2re1.4.2_04"));
// JavaInfo e(OUSTR("file:///d:/java/j2sdk1.4.0_01"));
// JavaInfo f(OUSTR("file:///d:/java/j2sdk1.4.0_02"));
// JavaInfo g(OUSTR("file:///d:/java/j2sdk1.4.1"));
// JavaInfo h(OUSTR("file:///d:/java/j2sdk1.4.1_01"));
// JavaInfo a(OUSTR("file:///usr/local2/jl/java/j2re1_3_1_02"));
// JavaInfo b(OUSTR("file:///usr/local2/jl/java/j2sdk1.4.0"));
// JavaInfo c(OUSTR("file:///usr/local2/jl/java/j2sdk1.4.1"));
// JavaInfo d(OUSTR("file:///usr/local2/jl/java/j2re1.4.1_01"));
// JavaInfo a(OUSTR("file:///local/jl/java/jre1.3.1"));
// JavaInfo b(OUSTR("file:///local/jl/java/jdk1.3.1_04"));
// JavaInfo c(OUSTR("file:///local/jl/java/j2sdk1.4.0"));
// JavaInfo d(OUSTR("file:///local/jl/java/j2sdk1.4.1"));
// JavaInfo e(OUSTR("file:///local/jl/java/j2re1.4.1_01"));
// fprintf(stderr,"###ok1");
if( (a.compareVersions(a) == 0
&& a.compareVersions(b) < 0
&& a.compareVersions(c) < 0
// && a.compareVersions(d) < 0
// && a.compareVersions(e) < 0
// && a.compareVersions(h) < 0
)
&&
(a.compareVersions(a)== 0))
ret= true;
if(ret &&
(b.compareVersions(a) > 0
&& b.compareVersions(b) == 0
&& b.compareVersions(c) < 0
&& b.compareVersions(d) < 0
// && b.compareVersions(e) < 0
// && b.compareVersions(h) < 0))
))
ret= true;
if(ret &&
( d.compareVersions(a) > 0
&& d.compareVersions(b) > 0
&& d.compareVersions(c) > 0
&& d.compareVersions(d) == 0
// && d.compareVersions(e) < 0
// && d.compareVersions(f) < 0
// && d.compareVersions(g) < 0
// && d.compareVersions(h) < 0))
))
ret= true;
// if(ret
// && e.compareVersions(a) > 0
// && e.compareVersions(b) > 0
// && e.compareVersions(c) > 0
// && e.compareVersions(d) > 0
// && e.compareVersions(e) == 0
// )
// if(ret &&
// (f.compareVersions(a) > 0
// && f.compareVersions(c) > 0
// && f.compareVersions(d) > 0
// && f.compareVersions(g) < 0
// && f.compareVersions(h) < 0))
// ret= true;
if( ! ret)
printf("failed\n");
else
printf("ok\n");
return ret;
}
bool test_createBestInfo()
{
printf("\ntest JavaInfo::createBestInfo\n" \
"! Check output for correctness\n\n");
JavaInfo info= JavaInfo::createBestInfo(false);
printInfo(info);
return true;
}
bool test_isEqual()
{
printf("\ntest JavaInfo::isEqual\n");
JavaInfo a(OUSTR(JAVA_VERSION)); // accessible
JavaInfo b(OUSTR(JAVA_VERSION));
JavaInfo c(OUSTR("file:///c:/local/r/j2sdk1.4.0"));// not Accessible
JavaInfo d(OUSTR("file:///d:/java/copy_j2sdk1.4.0"));
//-------------------------------------------------------------------
// JavaInfo a(OUSTR("file:///usr/local2/jl/java/j2re1_3_1_02"));
// JavaInfo b(OUSTR("file:///usr/local2/jl/java/j2re1_3_1_02"));
// JavaInfo c(OUSTR("file:///usr/local2/jl/java/j2sdk1.4.1"));
// JavaInfo d(OUSTR("file:///usr/local2/jl/java/copyj2sdk1.4.1"));
// JavaInfo a(OUSTR("file:///local/jl/java/jre1.3.1"));
// JavaInfo b(OUSTR("file:///local/jl/java/jre1.3.1"));
// JavaInfo c(OUSTR("file:///local/jl/java/j2sdk1.4.1"));
// JavaInfo d(OUSTR("file:///local/jl/java/copyj2sdk1.4.1"));
bool arRet[20];
int i= 0;
arRet[i++]= a.isEqual(b);
arRet[i++]= ! a.isEqual(c); //must fail
arRet[i++]= a.isEqual(d);
bool err= true;
for(int j= 0; j < i; j++)
err &= arRet[j];
if( arRet == false)
printf("failed\n");
else
printf("ok\n");
return err;
}
bool test_getJarFilePath()
{
printf("\ntest JavaInfo::getJarFilePath\n");
JavaInfo info(OUString(OUSTR("1.3.1")), JavaInfo::GreaterVersion | JavaInfo::EqualVersion );
OUString s= info.getJarFilePath(OUSTR("javaplugin.jar"));
printf("check if this URL is correct:\n");
OString oPath= OUStringToOString(s, osl_getThreadTextEncoding());
printf("%s\n", oPath.getStr());
return true;
}
void printInfo(const JavaInfo& info)
{
OUString usVersion= info.getVersion();
OString sVersion= OUStringToOString( usVersion, osl_getThreadTextEncoding());
OUString usHome= info.getInstallationLocation();
OString sHome= OUStringToOString( usHome, osl_getThreadTextEncoding());
OUString usType= info.getType();
OString sType= OUStringToOString(usType, osl_getThreadTextEncoding());
OUString usLib= info.getRuntimeLibLocation();
OString sLib= OUStringToOString(usLib, osl_getThreadTextEncoding());
OUString usLibLocation= info.getLibLocations();
OString sLibLocation= OUStringToOString(usLibLocation, osl_getThreadTextEncoding());
sal_Bool baccess= info.supportsAccessibility();
printf("%s %s\n",sType.getStr(), sVersion.getStr());
printf("\t%s \n",sHome.getStr());
printf("\t%s \n",sLib.getStr());
printf("\tLibDir: %s \n", sLibLocation.getStr());
printf("\t%s\n", baccess ? "accessible" : "not accessible");
}