1*b1cdbd2cSJim Jagielski /************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski package complex.junitskeleton; 24*b1cdbd2cSJim Jagielski 25*b1cdbd2cSJim Jagielski import com.sun.star.io.IOException; 26*b1cdbd2cSJim Jagielski import com.sun.star.lang.IllegalArgumentException; 27*b1cdbd2cSJim Jagielski import com.sun.star.lang.XComponent; 28*b1cdbd2cSJim Jagielski import com.sun.star.lang.XMultiServiceFactory; 29*b1cdbd2cSJim Jagielski import com.sun.star.uno.UnoRuntime; 30*b1cdbd2cSJim Jagielski import com.sun.star.util.XCloseable; 31*b1cdbd2cSJim Jagielski import java.io.File; 32*b1cdbd2cSJim Jagielski import java.io.RandomAccessFile; 33*b1cdbd2cSJim Jagielski 34*b1cdbd2cSJim Jagielski import lib.TestParameters; 35*b1cdbd2cSJim Jagielski 36*b1cdbd2cSJim Jagielski import util.SOfficeFactory; 37*b1cdbd2cSJim Jagielski 38*b1cdbd2cSJim Jagielski // ---------- junit imports ----------------- 39*b1cdbd2cSJim Jagielski import org.junit.After; 40*b1cdbd2cSJim Jagielski import org.junit.AfterClass; 41*b1cdbd2cSJim Jagielski import org.junit.Before; 42*b1cdbd2cSJim Jagielski import org.junit.BeforeClass; 43*b1cdbd2cSJim Jagielski import org.junit.Test; 44*b1cdbd2cSJim Jagielski import org.openoffice.test.OfficeConnection; 45*b1cdbd2cSJim Jagielski import static org.junit.Assert.*; 46*b1cdbd2cSJim Jagielski // ------------------------------------------ 47*b1cdbd2cSJim Jagielski 48*b1cdbd2cSJim Jagielski public class Skeleton 49*b1cdbd2cSJim Jagielski { 50*b1cdbd2cSJim Jagielski /** 51*b1cdbd2cSJim Jagielski * The test parameters 52*b1cdbd2cSJim Jagielski */ 53*b1cdbd2cSJim Jagielski private static TestParameters param = null; 54*b1cdbd2cSJim Jagielski check()55*b1cdbd2cSJim Jagielski @Test public void check() { 56*b1cdbd2cSJim Jagielski assertTrue("Couldn't open document", open()); 57*b1cdbd2cSJim Jagielski System.out.println("check"); 58*b1cdbd2cSJim Jagielski assertTrue("Couldn't close document", close()); 59*b1cdbd2cSJim Jagielski String tempDirURL = util.utils.getOfficeTemp/*Dir*/(getMSF()); 60*b1cdbd2cSJim Jagielski System.out.println("temp dir URL is: " + tempDirURL); 61*b1cdbd2cSJim Jagielski String tempDir = graphical.FileHelper.getSystemPathFromFileURL(tempDirURL); 62*b1cdbd2cSJim Jagielski assertTrue("Temp directory doesn't exist.", new File(tempDir).exists()); 63*b1cdbd2cSJim Jagielski } 64*b1cdbd2cSJim Jagielski open()65*b1cdbd2cSJim Jagielski private boolean open() 66*b1cdbd2cSJim Jagielski { 67*b1cdbd2cSJim Jagielski System.out.println("open()"); 68*b1cdbd2cSJim Jagielski // get multiservicefactory ----------------------------------------- 69*b1cdbd2cSJim Jagielski final XMultiServiceFactory xMsf = getMSF(); 70*b1cdbd2cSJim Jagielski 71*b1cdbd2cSJim Jagielski SOfficeFactory SOF = SOfficeFactory.getFactory(xMsf); 72*b1cdbd2cSJim Jagielski 73*b1cdbd2cSJim Jagielski // some Tests need the qadevOOo TestParameters, it is like a Hashmap for Properties. 74*b1cdbd2cSJim Jagielski param = new TestParameters(); 75*b1cdbd2cSJim Jagielski param.put("ServiceFactory", xMsf); // some qadevOOo functions need the ServiceFactory 76*b1cdbd2cSJim Jagielski 77*b1cdbd2cSJim Jagielski return true; 78*b1cdbd2cSJim Jagielski } 79*b1cdbd2cSJim Jagielski close()80*b1cdbd2cSJim Jagielski private boolean close() 81*b1cdbd2cSJim Jagielski { 82*b1cdbd2cSJim Jagielski System.out.println("close()"); 83*b1cdbd2cSJim Jagielski return true; 84*b1cdbd2cSJim Jagielski } 85*b1cdbd2cSJim Jagielski 86*b1cdbd2cSJim Jagielski // marked as test checkDocument()87*b1cdbd2cSJim Jagielski @Test public void checkDocument() 88*b1cdbd2cSJim Jagielski { 89*b1cdbd2cSJim Jagielski System.out.println("checkDocument()"); 90*b1cdbd2cSJim Jagielski final String sREADME = TestDocument.getUrl("README.txt"); 91*b1cdbd2cSJim Jagielski System.out.println("README is in:" + sREADME); 92*b1cdbd2cSJim Jagielski File aFile = new File(sREADME); 93*b1cdbd2cSJim Jagielski if (! aFile.exists()) 94*b1cdbd2cSJim Jagielski { 95*b1cdbd2cSJim Jagielski // It is a little bit stupid that office urls not compatible to java file urls 96*b1cdbd2cSJim Jagielski System.out.println("java.io.File can't access Office file urls."); 97*b1cdbd2cSJim Jagielski String sREADMESystemPath = graphical.FileHelper.getSystemPathFromFileURL(sREADME); 98*b1cdbd2cSJim Jagielski aFile = new File(sREADMESystemPath); 99*b1cdbd2cSJim Jagielski assertTrue("File '" + sREADMESystemPath + "' doesn't exists.", aFile.exists()); 100*b1cdbd2cSJim Jagielski } 101*b1cdbd2cSJim Jagielski 102*b1cdbd2cSJim Jagielski try 103*b1cdbd2cSJim Jagielski { 104*b1cdbd2cSJim Jagielski RandomAccessFile aAccess = new RandomAccessFile(aFile, "r"); 105*b1cdbd2cSJim Jagielski long nLength = aAccess.length(); 106*b1cdbd2cSJim Jagielski System.out.println("File length: " + nLength); 107*b1cdbd2cSJim Jagielski assertTrue("File length wrong", nLength > 0); 108*b1cdbd2cSJim Jagielski String sLine = aAccess.readLine(); 109*b1cdbd2cSJim Jagielski assertTrue("Line must not be empty", sLine.length() > 0); 110*b1cdbd2cSJim Jagielski System.out.println(" Line: '" + sLine + "'"); 111*b1cdbd2cSJim Jagielski System.out.println(" length: " + sLine.length()); 112*b1cdbd2cSJim Jagielski assertTrue("File length not near equal to string length", sLine.length() + 2 >= nLength); 113*b1cdbd2cSJim Jagielski aAccess.close(); 114*b1cdbd2cSJim Jagielski } 115*b1cdbd2cSJim Jagielski catch (java.io.FileNotFoundException e) 116*b1cdbd2cSJim Jagielski { 117*b1cdbd2cSJim Jagielski fail("Can't find file: " + sREADME + " - " + e.getMessage()); 118*b1cdbd2cSJim Jagielski } 119*b1cdbd2cSJim Jagielski catch (java.io.IOException e) 120*b1cdbd2cSJim Jagielski { 121*b1cdbd2cSJim Jagielski fail("IO Exception: " + e.getMessage()); 122*b1cdbd2cSJim Jagielski } 123*b1cdbd2cSJim Jagielski 124*b1cdbd2cSJim Jagielski } 125*b1cdbd2cSJim Jagielski checkOpenDocumentWithOffice()126*b1cdbd2cSJim Jagielski @Test public void checkOpenDocumentWithOffice() 127*b1cdbd2cSJim Jagielski { 128*b1cdbd2cSJim Jagielski // SOfficeFactory aFactory = new SOfficeFactory(getMSF()); 129*b1cdbd2cSJim Jagielski SOfficeFactory SOF = SOfficeFactory.getFactory(getMSF()); 130*b1cdbd2cSJim Jagielski final String sREADME = TestDocument.getUrl("README.txt"); 131*b1cdbd2cSJim Jagielski try 132*b1cdbd2cSJim Jagielski { 133*b1cdbd2cSJim Jagielski XComponent aDocument = SOF.loadDocument(sREADME); 134*b1cdbd2cSJim Jagielski complex.junitskeleton.justatest.shortWait(); 135*b1cdbd2cSJim Jagielski XCloseable xClose = UnoRuntime.queryInterface(XCloseable.class, aDocument); 136*b1cdbd2cSJim Jagielski xClose.close(true); 137*b1cdbd2cSJim Jagielski } 138*b1cdbd2cSJim Jagielski catch (com.sun.star.lang.IllegalArgumentException ex) 139*b1cdbd2cSJim Jagielski { 140*b1cdbd2cSJim Jagielski fail("Illegal argument exception caught: " + ex.getMessage()); 141*b1cdbd2cSJim Jagielski } 142*b1cdbd2cSJim Jagielski catch (com.sun.star.io.IOException ex) 143*b1cdbd2cSJim Jagielski { 144*b1cdbd2cSJim Jagielski fail("IOException caught: " + ex.getMessage()); 145*b1cdbd2cSJim Jagielski } 146*b1cdbd2cSJim Jagielski catch (com.sun.star.uno.Exception ex) 147*b1cdbd2cSJim Jagielski { 148*b1cdbd2cSJim Jagielski fail("Exception caught: " + ex.getMessage()); 149*b1cdbd2cSJim Jagielski } 150*b1cdbd2cSJim Jagielski } 151*b1cdbd2cSJim Jagielski 152*b1cdbd2cSJim Jagielski // marked as prepare for test, will call before every test before()153*b1cdbd2cSJim Jagielski @Before public void before() 154*b1cdbd2cSJim Jagielski { 155*b1cdbd2cSJim Jagielski System.out.println("before()"); 156*b1cdbd2cSJim Jagielski System.setProperty("THIS IS A TEST", "Hallo"); 157*b1cdbd2cSJim Jagielski } 158*b1cdbd2cSJim Jagielski 159*b1cdbd2cSJim Jagielski 160*b1cdbd2cSJim Jagielski // marked as post for test, will call after every test after()161*b1cdbd2cSJim Jagielski @After public void after() 162*b1cdbd2cSJim Jagielski { 163*b1cdbd2cSJim Jagielski System.out.println("after()"); 164*b1cdbd2cSJim Jagielski String sValue = System.getProperty("THIS IS A TEST"); 165*b1cdbd2cSJim Jagielski assertEquals(sValue, "Hallo"); 166*b1cdbd2cSJim Jagielski } 167*b1cdbd2cSJim Jagielski 168*b1cdbd2cSJim Jagielski getMSF()169*b1cdbd2cSJim Jagielski private XMultiServiceFactory getMSF() 170*b1cdbd2cSJim Jagielski { 171*b1cdbd2cSJim Jagielski final XMultiServiceFactory xMSF1 = UnoRuntime.queryInterface(XMultiServiceFactory.class, connection.getComponentContext().getServiceManager()); 172*b1cdbd2cSJim Jagielski return xMSF1; 173*b1cdbd2cSJim Jagielski } 174*b1cdbd2cSJim Jagielski 175*b1cdbd2cSJim Jagielski // setup and close connections setUpConnection()176*b1cdbd2cSJim Jagielski @BeforeClass public static void setUpConnection() throws Exception { 177*b1cdbd2cSJim Jagielski System.out.println("setUpConnection()"); 178*b1cdbd2cSJim Jagielski connection.setUp(); 179*b1cdbd2cSJim Jagielski } 180*b1cdbd2cSJim Jagielski tearDownConnection()181*b1cdbd2cSJim Jagielski @AfterClass public static void tearDownConnection() 182*b1cdbd2cSJim Jagielski throws InterruptedException, com.sun.star.uno.Exception 183*b1cdbd2cSJim Jagielski { 184*b1cdbd2cSJim Jagielski System.out.println("tearDownConnection()"); 185*b1cdbd2cSJim Jagielski connection.tearDown(); 186*b1cdbd2cSJim Jagielski } 187*b1cdbd2cSJim Jagielski 188*b1cdbd2cSJim Jagielski private static final OfficeConnection connection = new OfficeConnection(); 189*b1cdbd2cSJim Jagielski 190*b1cdbd2cSJim Jagielski } 191