/*
* Copyright 2010-2015 Amazon.com, Inc. or its affiliates. All Rights Reserved.
*
* Licensed 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://aws.amazon.com/apache2.0
*
* This file 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.
*/
package com.amazonaws.mobileconnectors.kinesis.kinesisrecorder;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
public class FileManagerTest {
private static final File ROOT_DIRECTORY = new File("testDirectory");
private static final String SUB_DIRECTORY_PATH = "subDirectory";
private static final String FILE_PATH = "testFile";
private FileManager fileManager;
@Before
public void setup() {
if (!ROOT_DIRECTORY.exists()) {
assertTrue(ROOT_DIRECTORY.mkdir());
}
fileManager = new FileManager(ROOT_DIRECTORY);
}
@After
public void tearDown() {
File subDirectory = new File(ROOT_DIRECTORY, SUB_DIRECTORY_PATH);
if (subDirectory.exists()) {
assertTrue(subDirectory.delete());
}
if (ROOT_DIRECTORY.exists()) {
for (File file : ROOT_DIRECTORY.listFiles()) {
assertTrue(file.delete());
}
assertTrue(ROOT_DIRECTORY.delete());
}
}
@Test
public void testCreateAndDeleteDirectory() {
File subDirectory = new File(ROOT_DIRECTORY, SUB_DIRECTORY_PATH);
assertFalse(subDirectory.exists());
String originalPath = subDirectory.getAbsolutePath();
subDirectory = fileManager.createDirectory(SUB_DIRECTORY_PATH);
assertTrue(subDirectory.exists());
assertTrue(subDirectory.isDirectory());
assertEquals(subDirectory.listFiles().length, 0);
assertTrue(originalPath.equalsIgnoreCase(subDirectory.getAbsolutePath()));
fileManager.deleteFile(subDirectory);
assertFalse(subDirectory.exists());
}
@Test
public void testCreateAndDeleteFileFromPath() throws IOException {
File file = new File(ROOT_DIRECTORY, FILE_PATH);
assertFalse(file.exists());
String originalPath = file.getAbsolutePath();
file = fileManager.createFile(FILE_PATH);
assertTrue(file.exists());
assertEquals(file.length(), 0);
assertTrue(originalPath.equalsIgnoreCase(file.getAbsolutePath()));
assertTrue(fileManager.deleteFile(FILE_PATH));
assertFalse(file.exists());
}
@Test
public void testCreateAndDeleteFileFromFile() throws IOException {
File subDirectory = new File(ROOT_DIRECTORY, SUB_DIRECTORY_PATH);
subDirectory.mkdir();
File file = new File(subDirectory, FILE_PATH);
assertFalse(file.exists());
String originalPath = file.getAbsolutePath();
file = fileManager.createFile(file);
assertTrue(file.exists());
assertEquals(file.length(), 0);
assertTrue(originalPath.equalsIgnoreCase(file.getAbsolutePath()));
assertTrue(fileManager.deleteFile(file));
assertFalse(file.exists());
}
@Test
public void testListFilesInDirectoryFromPath() throws IOException {
File subDirectory = new File(ROOT_DIRECTORY, SUB_DIRECTORY_PATH);
assertFalse(subDirectory.exists());
subDirectory.mkdir();
File file1 = new File(subDirectory, FILE_PATH + "_1");
file1.createNewFile();
File file2 = new File(subDirectory, FILE_PATH + "_2");
file2.createNewFile();
File file3 = new File(subDirectory, FILE_PATH + "_3");
file3.createNewFile();
assertEquals(fileManager.listFilesInDirectory(SUB_DIRECTORY_PATH).size(), 3);
assertTrue(file1.delete());
assertTrue(file2.delete());
assertTrue(file3.delete());
}
@Test
public void testListFilesInDirectoryFromFile() throws IOException {
File subDirectory = new File(ROOT_DIRECTORY, SUB_DIRECTORY_PATH);
assertFalse(subDirectory.exists());
subDirectory.mkdir();
File file1 = new File(subDirectory, FILE_PATH + "_1");
file1.createNewFile();
File file2 = new File(subDirectory, FILE_PATH + "_2");
file2.createNewFile();
File file3 = new File(subDirectory, FILE_PATH + "_3");
file3.createNewFile();
assertEquals(fileManager.listFilesInDirectory(subDirectory).size(), 3);
assertTrue(file1.delete());
assertTrue(file2.delete());
assertTrue(file3.delete());
}
@Test
public void testNewInputStreamFromFile() throws IOException {
File file = new File(ROOT_DIRECTORY, FILE_PATH);
assertFalse(file.exists());
file.createNewFile();
FileOutputStream fos = new FileOutputStream(file);
fos.write(5);
fos.flush();
fos.close();
InputStream is = fileManager.newInputStream(file);
assertEquals(is.read(), 5);
assertEquals(is.read(), -1);
is.close();
}
@Test
public void testNewInputStreamFromPath() throws IOException {
File file = new File(ROOT_DIRECTORY, FILE_PATH);
assertFalse(file.exists());
file.createNewFile();
FileOutputStream fos = new FileOutputStream(file);
fos.write(5);
fos.flush();
fos.close();
InputStream is = fileManager.newInputStream(FILE_PATH);
assertEquals(is.read(), 5);
assertEquals(is.read(), -1);
is.close();
}
@Test
public void testNewOutputStreamFromPath() throws IOException {
File file = new File(ROOT_DIRECTORY, FILE_PATH);
assertFalse(file.exists());
file.createNewFile();
OutputStream os = fileManager.newOutputStream(FILE_PATH, true);
os.write(5);
os.flush();
os.close();
InputStream is = new FileInputStream(file);
assertEquals(is.read(), 5);
assertEquals(is.read(), -1);
is.close();
}
@Test
public void testNewOutputStreamFromFile() throws IOException {
File file = new File(ROOT_DIRECTORY, FILE_PATH);
assertFalse(file.exists());
file.createNewFile();
OutputStream os = fileManager.newOutputStream(file, true);
os.write(5);
os.flush();
os.close();
InputStream is = new FileInputStream(file);
assertEquals(is.read(), 5);
assertEquals(is.read(), -1);
is.close();
}
}