1 package storagetesting; 2 3 import com.sun.star.uno.XInterface; 4 import com.sun.star.lang.XMultiServiceFactory; 5 import com.sun.star.lang.XSingleServiceFactory; 6 7 import com.sun.star.bridge.XUnoUrlResolver; 8 import com.sun.star.uno.UnoRuntime; 9 import com.sun.star.uno.XInterface; 10 11 import com.sun.star.lang.IllegalArgumentException; 12 import com.sun.star.container.NoSuchElementException; 13 import com.sun.star.container.ElementExistException; 14 15 import com.sun.star.embed.*; 16 17 import storagetesting.TestHelper; 18 import storagetesting.StorageTest; 19 20 public class Test06 implements StorageTest { 21 22 XMultiServiceFactory m_xMSF; 23 XSingleServiceFactory m_xStorageFactory; 24 TestHelper m_aTestHelper; 25 26 public Test06( XMultiServiceFactory xMSF, XSingleServiceFactory xStorageFactory ) 27 { 28 m_xMSF = xMSF; 29 m_xStorageFactory = xStorageFactory; 30 m_aTestHelper = new TestHelper( "Test06: " ); 31 } 32 33 public boolean test() 34 { 35 try 36 { 37 // create temporary storage based on arbitrary medium 38 // after such a storage is closed it is lost 39 Object oTempStorage = m_xStorageFactory.createInstance(); 40 XStorage xTempStorage = (XStorage) UnoRuntime.queryInterface( XStorage.class, oTempStorage ); 41 if ( xTempStorage == null ) 42 { 43 m_aTestHelper.Error( "Can't create temporary storage representation!" ); 44 return false; 45 } 46 47 try 48 { 49 xTempStorage.copyToStorage( null ); 50 m_aTestHelper.Error( "The method must throw an exception because of illegal parameter!" ); 51 return false; 52 } 53 catch( com.sun.star.lang.IllegalArgumentException iae ) 54 {} 55 catch( com.sun.star.uno.Exception ue ) 56 {} 57 catch( Exception e ) 58 { 59 m_aTestHelper.Error( "Unexpected excepion because of illegal parameter : " + e ); 60 return false; 61 } 62 63 // open new substorages 64 XStorage xTempSubStorage1 = m_aTestHelper.openSubStorage( xTempStorage, 65 "SubStorage1", 66 ElementModes.ELEMENT_WRITE ); 67 XStorage xTempSubStorage2 = m_aTestHelper.openSubStorage( xTempStorage, 68 "SubStorage2", 69 ElementModes.ELEMENT_WRITE ); 70 if ( xTempSubStorage1 == null || xTempSubStorage2 == null ) 71 { 72 m_aTestHelper.Error( "Can't create substorage!" ); 73 return false; 74 } 75 76 // in case stream is open for reading it must exist 77 try 78 { 79 xTempSubStorage1.openStreamElement( "NonExistingStream", ElementModes.ELEMENT_READ ); 80 m_aTestHelper.Error( "The method must throw an exception in case of try to open nonexistent stream for reading!" ); 81 return false; 82 } 83 catch( com.sun.star.uno.Exception ue ) 84 {} 85 catch( Exception e ) 86 { 87 m_aTestHelper.Error( "Unexpected excepion in case of try to open nonexistent stream for reading : " + e ); 88 return false; 89 } 90 91 // in case a storage is open for reading it must exist 92 try 93 { 94 xTempSubStorage1.openStreamElement( "NonExistingStorage", ElementModes.ELEMENT_READ ); 95 m_aTestHelper.Error( "The method must throw an exception in case of try to open nonexistent storage for reading!" ); 96 return false; 97 } 98 catch( com.sun.star.uno.Exception ue ) 99 {} 100 catch( Exception e ) 101 { 102 m_aTestHelper.Error( "Unexpected excepion in case of try to open nonexistent storage for reading : " + e ); 103 return false; 104 } 105 106 // in case of removing nonexistent element an exception must be thrown 107 try 108 { 109 xTempSubStorage1.removeElement( "NonExistingElement" ); 110 m_aTestHelper.Error( "An exception must be thrown in case of removing nonexistent element!" ); 111 return false; 112 } 113 catch( com.sun.star.container.NoSuchElementException ne ) 114 {} 115 catch( Exception e ) 116 { 117 m_aTestHelper.Error( "Unexpected excepion in case of try to remove nonexistent element : " + e ); 118 return false; 119 } 120 121 // in case of renaming of nonexistent element an exception must be thrown 122 try 123 { 124 xTempSubStorage1.renameElement( "NonExistingElement", "NewName" ); 125 m_aTestHelper.Error( "An exception must be thrown in case of renaming nonexistent element!" ); 126 return false; 127 } 128 catch( com.sun.star.container.NoSuchElementException ne ) 129 {} 130 catch( Exception e ) 131 { 132 m_aTestHelper.Error( "Unexpected excepion in case of try to rename nonexistent element : " + e ); 133 return false; 134 } 135 136 // in case of renaming to a name of existent element an exception must be thrown 137 try 138 { 139 xTempStorage.renameElement( "SubStorage1", "SubStorage2" ); 140 m_aTestHelper.Error( "An exception must be thrown in case of renaming to the name of existent element!" ); 141 return false; 142 } 143 catch( com.sun.star.container.ElementExistException ee ) 144 {} 145 catch( Exception e ) 146 { 147 m_aTestHelper.Error( "Unexpected excepion in case of try to rename to the name of existent element : " + e ); 148 return false; 149 } 150 151 // in case of copying target storage must be provided 152 try 153 { 154 xTempStorage.copyElementTo( "SubStorage1", null, "SubStorage1" ); 155 m_aTestHelper.Error( "An exception must be thrown in case empty reference is provided as target for copying!" ); 156 return false; 157 } 158 catch( com.sun.star.lang.IllegalArgumentException iae ) 159 {} 160 catch( com.sun.star.uno.Exception ue ) 161 {} 162 catch( Exception e ) 163 { 164 m_aTestHelper.Error( "Unexpected excepion in case empty reference is provieded as target for copying : " + e ); 165 return false; 166 } 167 168 // in case of moving target storage must be provided 169 try 170 { 171 xTempStorage.moveElementTo( "SubStorage1", null, "SubStorage1" ); 172 m_aTestHelper.Error( "An exception must be thrown in case empty reference is provided as target for moving!" ); 173 return false; 174 } 175 catch( com.sun.star.lang.IllegalArgumentException iae ) 176 {} 177 catch( com.sun.star.uno.Exception ue ) 178 {} 179 catch( Exception e ) 180 { 181 m_aTestHelper.Error( "Unexpected excepion in case empty reference is provieded as target for moving : " + e ); 182 return false; 183 } 184 185 186 // prepare target for further testings 187 188 // create new temporary storage based on arbitrary medium 189 Object oTargetStorage = m_xStorageFactory.createInstance(); 190 XStorage xTargetStorage = (XStorage) UnoRuntime.queryInterface( XStorage.class, oTargetStorage ); 191 if ( xTargetStorage == null ) 192 { 193 m_aTestHelper.Error( "Can't create temporary storage representation!" ); 194 return false; 195 } 196 197 // open a new substorage 198 XStorage xTargetSubStorage = m_aTestHelper.openSubStorage( xTargetStorage, 199 "SubStorage1", 200 ElementModes.ELEMENT_WRITE ); 201 if ( xTargetSubStorage == null ) 202 { 203 m_aTestHelper.Error( "Can't create substorage!" ); 204 return false; 205 } 206 207 // in case of copying of nonexistent element an exception must be thrown 208 try 209 { 210 xTempStorage.copyElementTo( "Nonexistent element", xTargetStorage, "Target" ); 211 m_aTestHelper.Error( "An exception must be thrown in case of copying of nonexisting element!" ); 212 return false; 213 } 214 catch( com.sun.star.container.NoSuchElementException ne ) 215 {} 216 catch( Exception e ) 217 { 218 m_aTestHelper.Error( "Unexpected excepion in case of copying of nonexistent element: " + e ); 219 return false; 220 } 221 222 // in case of moving of nonexistent element an exception must be thrown 223 try 224 { 225 xTempStorage.moveElementTo( "Nonexistent element", xTargetStorage, "Target" ); 226 m_aTestHelper.Error( "An exception must be thrown in case of moving of nonexisting element!" ); 227 return false; 228 } 229 catch( com.sun.star.container.NoSuchElementException ne ) 230 {} 231 catch( Exception e ) 232 { 233 m_aTestHelper.Error( "Unexpected excepion in case of moving of nonexistent element: " + e ); 234 return false; 235 } 236 237 // in case target for copying already exists an exception must be thrown 238 try 239 { 240 xTempStorage.copyElementTo( "SubStorage1", xTargetStorage, "SubStorage1" ); 241 m_aTestHelper.Error( "An exception must be thrown in case target for copying already exists!" ); 242 return false; 243 } 244 catch( com.sun.star.container.ElementExistException ee ) 245 {} 246 catch( Exception e ) 247 { 248 m_aTestHelper.Error( "Unexpected excepion in case target for copying already exists: " + e ); 249 return false; 250 } 251 252 // in case target for moving already exists an exception must be thrown 253 try 254 { 255 xTempStorage.moveElementTo( "SubStorage1", xTargetStorage, "SubStorage1" ); 256 m_aTestHelper.Error( "An exception must be thrown in case target for moving already exists!" ); 257 return false; 258 } 259 catch( com.sun.star.container.ElementExistException ee ) 260 {} 261 catch( Exception e ) 262 { 263 m_aTestHelper.Error( "Unexpected excepion in case target for moving already exists: " + e ); 264 return false; 265 } 266 267 268 return true; 269 } 270 catch( Exception e ) 271 { 272 m_aTestHelper.Error( "Exception: " + e ); 273 return false; 274 } 275 } 276 277 } 278 279