/******************************************************************************* * Copyright (c) 2012-2017 Codenvy, S.A. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.api.vfs.impl.file; import com.google.common.io.Files; import org.eclipse.che.api.vfs.Path; import java.io.File; import java.io.IOException; import static org.junit.Assert.assertArrayEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertTrue; public class LocalVirtualFileAssertionHelper { private final File testDirectory; public LocalVirtualFileAssertionHelper(File testDirectory) { this.testDirectory = testDirectory; } public void assertThatIoFileExists(Path virtualFilePath) { File ioFile = getIoFile(virtualFilePath); assertTrue(String.format("Expected %s but not found", ioFile), ioFile.exists()); } public void assertThatIoFileDoesNotExist(Path vfsPath) { File ioFile = getIoFile(vfsPath); assertFalse(String.format("Not expected %s but found", ioFile), ioFile.exists()); } public void assertThatIoFilesHaveSameContent(Path fileOne, Path fileTwo) throws IOException { assertArrayEquals(String.format("Same content expected for files %s and %s", fileOne, fileTwo), Files.toByteArray(getIoFile(fileOne)), Files.toByteArray(getIoFile(fileTwo))); } public void assertThatIoFileHasContent(Path virtualFilePath, byte[] bytes) throws IOException { assertArrayEquals(bytes, Files.toByteArray(getIoFile(virtualFilePath))); } public void assertThatMetadataIoFileDoesNotExist(Path virtualFilePath) { File metadataIoFile = getMetadataIoFile(virtualFilePath); assertFalse(metadataIoFile.exists()); } public void assertThatMetadataIoFilesHaveSameContent(Path fileOne, Path fileTwo) throws IOException { assertArrayEquals(String.format("Same content expected for files %s and %s", fileOne, fileTwo), Files.toByteArray(getMetadataIoFile(fileOne)), Files.toByteArray(getMetadataIoFile(fileTwo))); } public void assertThatMetadataIoFileHasContent(Path virtualFilePath, byte[] bytes) throws IOException { assertArrayEquals(bytes, Files.toByteArray(getMetadataIoFile(virtualFilePath))); } public void assertThatLockIoFileExists(Path virtualFilePath) { File ioFile = getLockIoFile(virtualFilePath); assertTrue(ioFile.exists()); } public void assertThatLockIoFileDoesNotExist(Path virtualFilePath) { File lockIoFile = getLockIoFile(virtualFilePath); assertFalse(lockIoFile.exists()); } private File getIoFile(Path virtualFilePath) { return new File(testDirectory, toIoPath(virtualFilePath)); } private File getMetadataIoFile(Path virtualFilePath) { Path metadataFilePath; if (virtualFilePath.isRoot()) { metadataFilePath = virtualFilePath.newPath(".vfs", "props", virtualFilePath.getName() + "_props"); } else { metadataFilePath = virtualFilePath.getParent().newPath(".vfs", "props", virtualFilePath.getName() + "_props"); } return new File(testDirectory, toIoPath(metadataFilePath)); } private File getLockIoFile(Path virtualFilePath) { Path lockFilePath; if (virtualFilePath.isRoot()) { lockFilePath = virtualFilePath.newPath(".vfs", "locks", virtualFilePath.getName() + "_lock"); } else { lockFilePath = virtualFilePath.getParent().newPath(".vfs", "locks", virtualFilePath.getName() + "_lock"); } return new File(testDirectory, toIoPath(lockFilePath)); } private String toIoPath(Path vfsPath) { if (vfsPath.isRoot()) { return ""; } if ('/' == File.separatorChar) { return vfsPath.toString(); } return vfsPath.join(File.separatorChar); } }