package au.gov.ga.earthsci.bookmark.ui;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import org.junit.Test;
import au.gov.ga.earthsci.bookmark.model.Bookmark;
import au.gov.ga.earthsci.bookmark.model.IBookmark;
import au.gov.ga.earthsci.bookmark.ui.BookmarkTransferData;
/**
* Unit tests for the {@link BookmarkTransferData} class
*
* @author James Navin (james.navin@ga.gov.au)
*/
public class BookmarkTransferDataTest
{
@Test
public void testSaveLoadEmpty() throws Exception
{
IBookmark[] bookmarks = new IBookmark[0];
BookmarkTransferData loadedData = doSaveLoad(bookmarks);
assertLoadedDataCorrect(loadedData, bookmarks);
}
@Test
public void testSaveLoadSingle() throws Exception
{
IBookmark[] bookmarks = new IBookmark[] { createBookmark("b1") };
BookmarkTransferData loadedData = doSaveLoad(bookmarks);
assertLoadedDataCorrect(loadedData, bookmarks);
}
@Test
public void testSaveLoadMulti() throws Exception
{
IBookmark[] bookmarks = new IBookmark[] { createBookmark("b1"), createBookmark("b2"), createBookmark("b3") };
BookmarkTransferData loadedData = doSaveLoad(bookmarks);
assertLoadedDataCorrect(loadedData, bookmarks);
}
private BookmarkTransferData doSaveLoad(IBookmark[] bookmarks) throws Exception
{
BookmarkTransferData data = BookmarkTransferData.fromBookmarks(bookmarks);
ByteArrayOutputStream os = new ByteArrayOutputStream();
BookmarkTransferData.save(data, os);
return BookmarkTransferData.load(new ByteArrayInputStream(os.toByteArray()));
}
private void assertLoadedDataCorrect(BookmarkTransferData loadedData, IBookmark[] bookmarks)
{
assertNotNull(loadedData);
assertNotNull(loadedData.getBookmarks());
assertEquals(bookmarks.length, loadedData.getBookmarks().length);
assertArrayEquals(bookmarks, loadedData.getBookmarks());
}
private IBookmark createBookmark(String name)
{
Bookmark result = new Bookmark();
result.setName(name);
return result;
}
}