/*
* Syncany, www.syncany.org
* Copyright (C) 2011-2015 Philipp C. Heckel <philipp.heckel@gmail.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package org.syncany.tests.unit.util;
import static org.junit.Assert.*;
import java.nio.file.attribute.DosFileAttributes;
import java.nio.file.attribute.FileTime;
import org.junit.Test;
import org.syncany.util.FileUtil;
import org.syncany.util.LimitedDosFileAttributes;
public class LimitedDosFileAttributesTest {
@Test
public void testFileDosAttrs() throws Exception {
DosFileAttributes dosAttrsRHAS = FileUtil.dosAttrsFromString("rhas");
assertTrue(dosAttrsRHAS.isReadOnly());
assertTrue(dosAttrsRHAS.isHidden());
assertTrue(dosAttrsRHAS.isArchive());
assertTrue(dosAttrsRHAS.isSystem());
DosFileAttributes dosAttrsRHA = FileUtil.dosAttrsFromString("rha-");
assertTrue(dosAttrsRHA.isReadOnly());
assertTrue(dosAttrsRHA.isHidden());
assertTrue(dosAttrsRHA.isArchive());
assertFalse(dosAttrsRHA.isSystem());
DosFileAttributes dosAttrsRH = FileUtil.dosAttrsFromString("rh--");
assertTrue(dosAttrsRH.isReadOnly());
assertTrue(dosAttrsRH.isHidden());
assertFalse(dosAttrsRH.isArchive());
assertFalse(dosAttrsRH.isSystem());
DosFileAttributes dosAttrsR = FileUtil.dosAttrsFromString("r---");
assertTrue(dosAttrsR.isReadOnly());
assertFalse(dosAttrsR.isHidden());
assertFalse(dosAttrsR.isArchive());
assertFalse(dosAttrsR.isSystem());
DosFileAttributes dosAttrsNone = FileUtil.dosAttrsFromString("----");
assertFalse(dosAttrsNone.isReadOnly());
assertFalse(dosAttrsNone.isHidden());
assertFalse(dosAttrsNone.isArchive());
assertFalse(dosAttrsNone.isSystem());
DosFileAttributes dosAttrsH = FileUtil.dosAttrsFromString("-h--");
assertFalse(dosAttrsH.isReadOnly());
assertTrue(dosAttrsH.isHidden());
assertFalse(dosAttrsH.isArchive());
assertFalse(dosAttrsH.isSystem());
DosFileAttributes dosAttrsCorrect = FileUtil.dosAttrsFromString("NONO");
assertFalse(dosAttrsCorrect.isReadOnly());
assertFalse(dosAttrsCorrect.isHidden());
assertFalse(dosAttrsCorrect.isArchive());
assertFalse(dosAttrsCorrect.isSystem());
// Can't do all ...
}
@Test
public void testFileDosAttrsToString() throws Exception {
assertEquals("rhas", LimitedDosFileAttributes.toString(FileUtil.dosAttrsFromString("rhas")));
assertEquals("rh--", LimitedDosFileAttributes.toString(new DosFileAttributes() {
public long size() { return 0; }
public FileTime lastModifiedTime() { return null; }
public FileTime lastAccessTime() { return null; }
public boolean isSymbolicLink() { return false; }
public boolean isRegularFile() { return false; }
public boolean isOther() { return false; }
public boolean isDirectory() { return false; }
public Object fileKey() { return null; }
public FileTime creationTime() { return null; }
public boolean isReadOnly() { return true; } // r
public boolean isHidden() { return true; } // h
public boolean isArchive() { return false; } // -
public boolean isSystem() { return false; } // -
}));
}
@Test(expected = IllegalArgumentException.class)
public void testFileDosAttrsInvalid1() throws Exception {
FileUtil.dosAttrsFromString("illegal");
}
@Test(expected = IllegalArgumentException.class)
public void testFileDosAttrsInvalid2() throws Exception {
FileUtil.dosAttrsFromString(null);
}
@Test(expected = RuntimeException.class)
public void testFileDosAttrsIllegalSize() throws Exception {
FileUtil.dosAttrsFromString("rhas").size();
}
@Test(expected = RuntimeException.class)
public void testFileDosAttrsIllegalLastModified() throws Exception {
FileUtil.dosAttrsFromString("rhas").lastModifiedTime();
}
@Test(expected = RuntimeException.class)
public void testFileDosAttrsIllegalLastAccess() throws Exception {
FileUtil.dosAttrsFromString("rhas").lastAccessTime();
}
@Test(expected = RuntimeException.class)
public void testFileDosAttrsIllegalIsSymlink() throws Exception {
FileUtil.dosAttrsFromString("rhas").isSymbolicLink();
}
@Test(expected = RuntimeException.class)
public void testFileDosAttrsIllegalIsRegular() throws Exception {
FileUtil.dosAttrsFromString("rhas").isRegularFile();
}
@Test(expected = RuntimeException.class)
public void testFileDosAttrsIllegalIsDirectory() throws Exception {
FileUtil.dosAttrsFromString("rhas").isDirectory();
}
@Test(expected = RuntimeException.class)
public void testFileDosAttrsIllegalFileKey() throws Exception {
FileUtil.dosAttrsFromString("rhas").fileKey();
}
@Test(expected = RuntimeException.class)
public void testFileDosAttrsIllegalCreationTime() throws Exception {
FileUtil.dosAttrsFromString("rhas").creationTime();
}
}