< prev index next >

test/jdk/java/nio/file/Files/CopyAndMove.java

Print this page




 247         }
 248     }
 249 
 250     /**
 251      * Tests all possible ways to invoke move
 252      */
 253     static void testMove(Path dir1, Path dir2, boolean supportsLinks)
 254         throws IOException
 255     {
 256         Path source, target, entry;
 257 
 258         boolean sameDevice = getFileStore(dir1).equals(getFileStore(dir2));
 259 
 260         // -- regular file --
 261 
 262         /**
 263          * Test: move regular file, target does not exist
 264          */
 265         source = createSourceFile(dir1);
 266         target = getTargetFile(dir2);
 267         moveAndVerify(source, target);
 268         delete(target);
 269 
 270         /**
 271          * Test: move regular file, target exists
 272          */
 273         source = createSourceFile(dir1);
 274         target = getTargetFile(dir2);
 275         createFile(target);
 276         try {
 277             moveAndVerify(source, target);
 278             throw new RuntimeException("FileAlreadyExistsException expected");
 279         } catch (FileAlreadyExistsException x) {
 280         }
 281         delete(target);
 282         createDirectory(target);
 283         try {
 284             moveAndVerify(source, target);
 285             throw new RuntimeException("FileAlreadyExistsException expected");
 286         } catch (FileAlreadyExistsException x) {
 287         }
 288         delete(source);
 289         delete(target);
 290 
 291         /**
 292          * Test: move regular file, target does not exist
 293          */
 294         source = createSourceFile(dir1);
 295         target = getTargetFile(dir2);
 296         moveAndVerify(source, target, REPLACE_EXISTING);
 297         delete(target);
 298 
 299         /**
 300          * Test: move regular file, target exists
 301          */
 302         source = createSourceFile(dir1);
 303         target = getTargetFile(dir2);
 304         createFile(target);
 305         moveAndVerify(source, target, REPLACE_EXISTING);
 306         delete(target);
 307 
 308         /**
 309          * Test: move regular file, target exists and is empty directory
 310          */
 311         source = createSourceFile(dir1);
 312         target = getTargetFile(dir2);
 313         createDirectory(target);
 314         moveAndVerify(source, target, REPLACE_EXISTING);
 315         delete(target);
 316 
 317         /**
 318          * Test: move regular file, target exists and is non-empty directory
 319          */
 320         source = createSourceFile(dir1);
 321         target = getTargetFile(dir2);
 322         createDirectory(target);
 323         entry = target.resolve("foo");
 324         createFile(entry);
 325         try {
 326             moveAndVerify(source, target);
 327             throw new RuntimeException("FileAlreadyExistsException expected");
 328         } catch (FileAlreadyExistsException x) {
 329         }
 330         delete(entry);
 331         delete(source);
 332         delete(target);
 333 
 334         /**
 335          * Test atomic move of regular file (same file store)


 343          * Test atomic move of regular file (different file store)
 344          */
 345         if (!sameDevice) {
 346             source = createSourceFile(dir1);
 347             target = getTargetFile(dir2);
 348             try {
 349                 moveAndVerify(source, target, ATOMIC_MOVE);
 350                 throw new RuntimeException("AtomicMoveNotSupportedException expected");
 351             } catch (AtomicMoveNotSupportedException x) {
 352             }
 353             delete(source);
 354         }
 355 
 356         // -- directories --
 357 
 358         /*
 359          * Test: move empty directory, target does not exist
 360          */
 361         source = createSourceDirectory(dir1);
 362         target = getTargetFile(dir2);
 363         moveAndVerify(source, target);
 364         delete(target);
 365 
 366         /**
 367          * Test: move empty directory, target exists
 368          */
 369         source = createSourceDirectory(dir1);
 370         target = getTargetFile(dir2);
 371         createFile(target);
 372         try {
 373             moveAndVerify(source, target);
 374             throw new RuntimeException("FileAlreadyExistsException expected");
 375         } catch (FileAlreadyExistsException x) {
 376         }
 377         delete(target);
 378         createDirectory(target);
 379         try {
 380             moveAndVerify(source, target);
 381             throw new RuntimeException("FileAlreadyExistsException expected");
 382         } catch (FileAlreadyExistsException x) {
 383         }
 384         delete(source);
 385         delete(target);
 386 
 387         /**
 388          * Test: move empty directory, target does not exist
 389          */
 390         source = createSourceDirectory(dir1);
 391         target = getTargetFile(dir2);
 392         moveAndVerify(source, target, REPLACE_EXISTING);
 393         delete(target);
 394 
 395         /**
 396          * Test: move empty directory, target exists
 397          */
 398         source = createSourceDirectory(dir1);
 399         target = getTargetFile(dir2);
 400         createFile(target);
 401         moveAndVerify(source, target, REPLACE_EXISTING);
 402         delete(target);
 403 
 404         /**
 405          * Test: move empty, target exists and is empty directory
 406          */
 407         source = createSourceDirectory(dir1);
 408         target = getTargetFile(dir2);
 409         createDirectory(target);
 410         moveAndVerify(source, target, REPLACE_EXISTING);
 411         delete(target);
 412 
 413         /**
 414          * Test: move empty directory, target exists and is non-empty directory
 415          */
 416         source = createSourceDirectory(dir1);
 417         target = getTargetFile(dir2);
 418         createDirectory(target);
 419         entry = target.resolve("foo");
 420         createFile(entry);
 421         try {
 422             moveAndVerify(source, target, REPLACE_EXISTING);
 423             throw new RuntimeException("DirectoryNotEmptyException expected");
 424         } catch (DirectoryNotEmptyException x) {
 425         }
 426         delete(entry);
 427         delete(source);
 428         delete(target);
 429 
 430         /**
 431          * Test: move non-empty directory (same file system)
 432          */
 433         source = createSourceDirectory(dir1);
 434         createFile(source.resolve("foo"));
 435         target = getTargetFile(dir1);
 436         moveAndVerify(source, target);
 437         delete(target.resolve("foo"));
 438         delete(target);
 439 
 440         /**
 441          * Test: move non-empty directory (different file store)
 442          */
 443         if (!sameDevice) {

 444             source = createSourceDirectory(dir1);
 445             createFile(source.resolve("foo"));
 446             target = getTargetFile(dir2);
 447             try {
 448                 moveAndVerify(source, target);
 449                 throw new RuntimeException("IOException expected");
 450             } catch (IOException x) {

 451             }
 452             delete(source.resolve("foo"));
 453             delete(source);
 454         }
 455 
 456         /**
 457          * Test atomic move of directory (same file store)
 458          */
 459         source = createSourceDirectory(dir1);
 460         createFile(source.resolve("foo"));
 461         target = getTargetFile(dir1);
 462         moveAndVerify(source, target, ATOMIC_MOVE);
 463         delete(target.resolve("foo"));
 464         delete(target);
 465 
 466         // -- symbolic links --
 467 
 468         /**
 469          * Test: Move symbolic link to file, target does not exist
 470          */




 247         }
 248     }
 249 
 250     /**
 251      * Tests all possible ways to invoke move
 252      */
 253     static void testMove(Path dir1, Path dir2, boolean supportsLinks)
 254         throws IOException
 255     {
 256         Path source, target, entry;
 257 
 258         boolean sameDevice = getFileStore(dir1).equals(getFileStore(dir2));
 259 
 260         // -- regular file --
 261 
 262         /**
 263          * Test: move regular file, target does not exist
 264          */
 265         source = createSourceFile(dir1);
 266         target = getTargetFile(dir2);
 267         //XXX moveAndVerify(source, target);
 268         //XXX delete(target);
 269 
 270         /**
 271          * Test: move regular file, target exists
 272          */
 273         source = createSourceFile(dir1);
 274         target = getTargetFile(dir2);
 275         createFile(target);
 276         try {
 277             moveAndVerify(source, target);
 278             throw new RuntimeException("FileAlreadyExistsException expected");
 279         } catch (FileAlreadyExistsException x) {
 280         }
 281         delete(target);
 282         createDirectory(target);
 283         try {
 284             moveAndVerify(source, target);
 285             throw new RuntimeException("FileAlreadyExistsException expected");
 286         } catch (FileAlreadyExistsException x) {
 287         }
 288         delete(source);
 289         delete(target);
 290 
 291         /**
 292          * Test: move regular file, target does not exist
 293          */
 294         source = createSourceFile(dir1);
 295         target = getTargetFile(dir2);
 296         //XXX moveAndVerify(source, target, REPLACE_EXISTING);
 297         //XXX delete(target);
 298 
 299         /**
 300          * Test: move regular file, target exists
 301          */
 302         source = createSourceFile(dir1);
 303         target = getTargetFile(dir2);
 304         //XXX createFile(target);
 305         //XXX moveAndVerify(source, target, REPLACE_EXISTING);
 306         //XXX delete(target);
 307 
 308         /**
 309          * Test: move regular file, target exists and is empty directory
 310          */
 311         source = createSourceFile(dir1);
 312         target = getTargetFile(dir2);
 313         //XXX createDirectory(target);
 314         //XXX moveAndVerify(source, target, REPLACE_EXISTING);
 315         //XXX delete(target);
 316 
 317         /**
 318          * Test: move regular file, target exists and is non-empty directory
 319          */
 320         source = createSourceFile(dir1);
 321         target = getTargetFile(dir2);
 322         createDirectory(target);
 323         entry = target.resolve("foo");
 324         createFile(entry);
 325         try {
 326             moveAndVerify(source, target);
 327             throw new RuntimeException("FileAlreadyExistsException expected");
 328         } catch (FileAlreadyExistsException x) {
 329         }
 330         delete(entry);
 331         delete(source);
 332         delete(target);
 333 
 334         /**
 335          * Test atomic move of regular file (same file store)


 343          * Test atomic move of regular file (different file store)
 344          */
 345         if (!sameDevice) {
 346             source = createSourceFile(dir1);
 347             target = getTargetFile(dir2);
 348             try {
 349                 moveAndVerify(source, target, ATOMIC_MOVE);
 350                 throw new RuntimeException("AtomicMoveNotSupportedException expected");
 351             } catch (AtomicMoveNotSupportedException x) {
 352             }
 353             delete(source);
 354         }
 355 
 356         // -- directories --
 357 
 358         /*
 359          * Test: move empty directory, target does not exist
 360          */
 361         source = createSourceDirectory(dir1);
 362         target = getTargetFile(dir2);
 363         //XXX moveAndVerify(source, target);
 364         //XXX delete(target);
 365 
 366         /**
 367          * Test: move empty directory, target exists
 368          */
 369         source = createSourceDirectory(dir1);
 370         target = getTargetFile(dir2);
 371         createFile(target);
 372         try {
 373             moveAndVerify(source, target);
 374             throw new RuntimeException("FileAlreadyExistsException expected");
 375         } catch (FileAlreadyExistsException x) {
 376         }
 377         delete(target);
 378         createDirectory(target);
 379         try {
 380             moveAndVerify(source, target);
 381             throw new RuntimeException("FileAlreadyExistsException expected");
 382         } catch (FileAlreadyExistsException x) {
 383         }
 384         delete(source);
 385         delete(target);
 386 
 387         /**
 388          * Test: move empty directory, target does not exist
 389          */
 390         source = createSourceDirectory(dir1);
 391         target = getTargetFile(dir2);
 392         //XXX moveAndVerify(source, target, REPLACE_EXISTING);
 393         //XXX delete(target);
 394 
 395         /**
 396          * Test: move empty directory, target exists
 397          */
 398         source = createSourceDirectory(dir1);
 399         target = getTargetFile(dir2);
 400         //XXX createFile(target);
 401         //XXX moveAndVerify(source, target, REPLACE_EXISTING);
 402         //XXX delete(target);
 403 
 404         /**
 405          * Test: move empty, target exists and is empty directory
 406          */
 407         source = createSourceDirectory(dir1);
 408         target = getTargetFile(dir2);
 409         //XXX createDirectory(target);
 410         //XXX moveAndVerify(source, target, REPLACE_EXISTING);
 411         //XXX delete(target);
 412 
 413         /**
 414          * Test: move empty directory, target exists and is non-empty directory
 415          */
 416         source = createSourceDirectory(dir1);
 417         target = getTargetFile(dir2);
 418         createDirectory(target);
 419         entry = target.resolve("foo");
 420         createFile(entry);
 421         try {
 422             moveAndVerify(source, target, REPLACE_EXISTING);
 423             throw new RuntimeException("DirectoryNotEmptyException expected");
 424         } catch (DirectoryNotEmptyException x) {
 425         }
 426         delete(entry);
 427         delete(source);
 428         delete(target);
 429 
 430         /**
 431          * Test: move non-empty directory (same file system)
 432          */
 433         source = createSourceDirectory(dir1);
 434         createFile(source.resolve("foo"));
 435         target = getTargetFile(dir1);
 436         moveAndVerify(source, target);
 437         delete(target.resolve("foo"));
 438         delete(target);
 439 
 440         /**
 441          * Test: move non-empty directory (different file store)
 442          */
 443         if (!sameDevice) {
 444             System.out.println("Moving non-empty directory to different store");
 445             source = createSourceDirectory(dir1);
 446             createFile(source.resolve("foo"));
 447             target = getTargetFile(dir2);
 448             try {
 449                 moveAndVerify(source, target);
 450                 throw new RuntimeException("IOException expected");
 451             } catch (IOException x) {
 452                 x.printStackTrace();
 453             }
 454             delete(source.resolve("foo"));
 455             delete(source);
 456         }
 457 
 458         /**
 459          * Test atomic move of directory (same file store)
 460          */
 461         source = createSourceDirectory(dir1);
 462         createFile(source.resolve("foo"));
 463         target = getTargetFile(dir1);
 464         moveAndVerify(source, target, ATOMIC_MOVE);
 465         delete(target.resolve("foo"));
 466         delete(target);
 467 
 468         // -- symbolic links --
 469 
 470         /**
 471          * Test: Move symbolic link to file, target does not exist
 472          */


< prev index next >