package br.uff.ic.oceano.util; import br.uff.ic.oceano.util.file.FileUtils; import java.io.File; import java.util.Collection; import java.util.Collections; import java.util.LinkedList; import java.util.List; import java.util.Set; import static org.testng.Assert.*; import org.testng.annotations.Test; /** * * @author Daniel */ public class HashUtilNGTest { public HashUtilNGTest() { System.out.println("Testing " + HashUtil.class.getCanonicalName()); } /** * Teste de método sha1, da classe HashUtil. */ @Test(expectedExceptions = Exception.class) public void testSha1_null() throws Exception { Object object = null; String expResult = ""; String result = HashUtil.sha1(object); assertEquals(result, expResult); } /** * Teste de método getFileMD5, da classe HashUtil. */ @Test(expectedExceptions = Exception.class) public void testGetFileMD5_null() throws Exception { String filename = null; String expResult = ""; String result = HashUtil.getFileMD5(filename); assertEquals(result, expResult); } @Test public void testGetFileMD5_emptyFile() throws Exception { String tempDir = SystemUtil.getTempDirectory() + SystemUtil.FILESEPARATOR; tempDir += "hashtest-" + DateUtil.currentDate().getTime() + ".txt"; File file = new File(tempDir); assertTrue(file.createNewFile()); String result = HashUtil.getFileMD5(tempDir); assertNotNull(result); String checkResult = HashUtil.getFileMD5(tempDir); assertEquals(result, checkResult); } @Test public void testGetFileMD5_emptyFiles() throws Exception { String tempDir = SystemUtil.getTempDirectory() + SystemUtil.FILESEPARATOR; tempDir += "hashtest-" + DateUtil.currentDate().getTime() + ".txt"; File file = new File(tempDir); assertTrue(file.createNewFile()); String result = HashUtil.getFileMD5(tempDir); assertNotNull(result); Thread.sleep(500); //to change date tempDir = SystemUtil.getTempDirectory() + SystemUtil.FILESEPARATOR; tempDir += "hashtest2-" + DateUtil.currentDate().getTime() + ".txt"; file = new File(tempDir); assertTrue(file.createNewFile()); String result2 = HashUtil.getFileMD5(tempDir); assertNotNull(result2); assertEquals(result, result2); } /** * Teste de método getMD5, da classe HashUtil. */ @Test(expectedExceptions = Exception.class) public void testGetMD5_null() throws Exception { Collection<String> paths = null; String expResult = ""; String result = HashUtil.getMD5(paths); assertEquals(result, expResult); } @Test public void testTempDirectoryMD5() { try { String tempPath = SystemUtil.getTempDirectory(); assertNotNull(tempPath,"Temp directory not found!"); File tempDir = new File(tempPath); final Set<String> allFiles = FileUtils.getAllFilesInFolderAndSubFolders(tempDir); //limit to 100 files List<String> files = new LinkedList<String>(); for (final String buffer : allFiles) { files.add(buffer); if(files.size()>=100){ break; } } //Check MD5 is not random String result = HashUtil.getMD5(files); String resultCheck = HashUtil.getMD5(files); assertEquals(result, resultCheck, "MD5 is creating random results!"); //Check MD% is not random, even for unordered values final List<String> ordered = new LinkedList<String>(files); final List<String> shuffled = new LinkedList<String>(files); Collections.shuffle(ordered); result = HashUtil.getMD5(ordered); resultCheck = HashUtil.getMD5(shuffled); assertNotEquals(result, resultCheck, "MD5 is altering input collection!"); } catch (Exception ex) { fail(ex.getMessage(),ex); } } }