package com.levelup.java.io;

import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;

import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.nio.file.StandardCopyOption;

import org.apache.commons.io.FileUtils;
import org.junit.Before;
import org.junit.Test;

/**
 * This java example will demonstrate how to delete a file using
 * JDK 1.7 above and below along with apache commons FileUtils.
 * 
 * @author Justin Musgrove
 * @see <a href='http://www.leveluplunch.com/java/examples/delete-file/'>Delete a file</a>
 */
public class DeleteFile {

	private static final String SOURCE = "com/levelup/java/io/file-to-delete.txt";
										
	private static final String DEST = "output/FileToDelete.txt";
	
	@Before
	public void setUp () throws IOException, URISyntaxException {
	
		// copy file over to delete
		Path source = Paths.get(this.getClass().getClassLoader().getResource(SOURCE).toURI());
		Path destination = Paths.get(DEST);
		
		// could of used Files.create
		java.nio.file.Files.copy(source, destination, StandardCopyOption.REPLACE_EXISTING);
	}
	
	@Test
	public void delete_file_java_legacy () {
		
		File fileToDelete = new File(DEST);
		
		fileToDelete.delete();
		
		//check that files doesn't exists
		assertFalse(fileToDelete.exists());
	}

	@Test
	public void delete_file_java_nio () throws IOException {
		
		Path path = Paths.get(DEST);
		
		java.nio.file.Files.delete(path);
		
		assertTrue(Files.notExists(path));
	}

	@Test
	public void delete_file_java_apache () {

		Path path = Paths.get(DEST);

		FileUtils.deleteQuietly(path.toFile());
		
		assertTrue(Files.notExists(path));
	}
	
}

@@ -1304,16 +1304,41 @@
 );%0A%09%09%0A%09%09
+boolean hasBeenDeleted = 
 fileToDe
@@ -1409,29 +1409,22 @@
 lse(
-fileToDelete.exists()
+hasBeenDeleted
 );%0A%09

update return type