package slash.navigation.download.queue; import org.junit.After; import org.junit.Before; import org.junit.Test; import slash.navigation.download.Checksum; import slash.navigation.download.Download; import slash.navigation.download.FileAndChecksum; import javax.xml.bind.JAXBException; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.List; import static java.io.File.createTempFile; import static java.util.Arrays.asList; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static slash.common.type.CompactCalendar.now; import static slash.navigation.download.Action.Flatten; import static slash.navigation.download.State.Downloading; public class QueuePersisterIT { private final QueuePersister persister = new QueuePersister(); private File queueFile, tempFile, fileTarget, fragmentTarget1, fragmentTarget2; @Before public void setUp() throws IOException { queueFile = createTempFile("queueFile", ".xml"); tempFile = createTempFile("tempFile", ".xml"); fileTarget = createTempFile("fileTarget", ".xml"); fragmentTarget1 = createTempFile("fragmentTarget1", ".xml"); fragmentTarget2 = createTempFile("fragmentTarget2", ".xml"); } @After public void tearDown() { if (queueFile.exists()) assertTrue(queueFile.delete()); if (tempFile.exists()) assertTrue(tempFile.delete()); if (fileTarget.exists()) assertTrue(fileTarget.delete()); if (fragmentTarget1.exists()) assertTrue(fragmentTarget1.delete()); if (fragmentTarget2.exists()) assertTrue(fragmentTarget2.delete()); } @Test public void testSaveAndLoadNow() throws IOException, JAXBException { persister.save(queueFile, new ArrayList<Download>()); QueuePersister.Result result = persister.load(queueFile); assertEquals(new ArrayList<Download>(), result.getDownloads()); } @Test public void testSaveAndLoadDownloads() throws IOException { List<Download> downloads = new ArrayList<>(); downloads.add(new Download("description", "url", Flatten, new FileAndChecksum(fileTarget, createChecksum()), asList(new FileAndChecksum(fragmentTarget1, createChecksum()), new FileAndChecksum(fragmentTarget2, createChecksum())), "etag", Downloading, tempFile)); persister.save(queueFile, downloads); QueuePersister.Result result = persister.load(queueFile); assertEquals(downloads, result.getDownloads()); } private Checksum createChecksum() { return new Checksum(now(), 4711L, "sha1"); } }