package org.atomnuke.atom.io.writer.stax;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import org.atomnuke.atom.io.AtomReader;
import org.atomnuke.atom.io.AtomWriter;
import org.atomnuke.atom.io.ReaderResult;
import org.atomnuke.atom.io.reader.sax.SaxAtomReaderFactory;
import org.atomnuke.atom.model.Entry;
import org.atomnuke.atom.model.Feed;
import org.atomnuke.atom.model.Source;
import org.junit.Test;
import org.junit.experimental.runners.Enclosed;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
import org.junit.Before;
import org.junit.Ignore;
/**
*
* @author zinic
*/
@RunWith(Enclosed.class)
public class AtomWriterTest {
@Ignore
public static class TestParent {
protected Feed originalFeed, rereadFeed;
protected Entry originalEntry, rereadEntry;
protected Source originalSource, rereadSource;
@Before
public void beforeAny() throws Exception {
final AtomReader reader = new SaxAtomReaderFactory().getInstance();
final ReaderResult originalResult = reader.read(AtomWriterTest.class.getResourceAsStream("/META-INF/examples/atom/PerformanceTestContents.xml"));
originalFeed = originalResult.getFeed();
final AtomWriter writer = new StaxAtomWriterFactory().getInstance();
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
writer.write(baos, originalFeed);
rereadFeed = reader.read(new ByteArrayInputStream(baos.toByteArray())).getFeed();
baos.reset();
originalEntry = originalFeed.entries().get(0);
writer.write(baos, originalEntry);
rereadEntry = reader.read(new ByteArrayInputStream(baos.toByteArray())).getEntry();
for (Entry checkEntry : originalFeed.entries()) {
if (rereadEntry.equals(checkEntry)) {
originalEntry = checkEntry;
break;
}
}
originalSource = originalEntry.source();
rereadSource = rereadEntry.source();
}
}
public static class WhenWritingFeeds extends TestParent {
@Test
public void shouldWriteFeeds() {
assertNotNull(rereadFeed.base());
assertNotNull(rereadFeed.generator());
assertNotNull(rereadFeed.icon());
assertNotNull(rereadFeed.id());
assertNotNull(rereadFeed.lang());
assertNotNull(rereadFeed.logo());
assertNotNull(rereadFeed.rights());
assertNotNull(rereadFeed.subtitle());
assertNotNull(rereadFeed.title());
assertNotNull(rereadFeed.updated());
assertEquals(originalFeed, rereadFeed);
}
}
public static class WhenWritingEntries extends TestParent {
@Test
public void shouldWriteEntries() {
assertNotNull(rereadEntry.base());
assertNotNull(rereadEntry.content());
assertNotNull(rereadEntry.id());
assertNotNull(rereadEntry.lang());
assertNotNull(rereadEntry.published());
assertNotNull(rereadEntry.rights());
assertNotNull(rereadEntry.source());
assertNotNull(rereadEntry.summary());
assertNotNull(rereadEntry.title());
assertNotNull(rereadEntry.updated());
assertEquals(originalEntry, rereadEntry);
}
}
public static class WhenWritingSources extends TestParent {
@Test
public void shouldWriteSources() {
assertNotNull(rereadSource.base());
assertNotNull(rereadSource.generator());
assertNotNull(rereadSource.icon());
assertNotNull(rereadSource.id());
assertNotNull(rereadSource.lang());
assertNotNull(rereadSource.logo());
assertNotNull(rereadSource.rights());
assertNotNull(rereadSource.subtitle());
assertNotNull(rereadSource.title());
assertNotNull(rereadSource.updated());
assertEquals(originalSource, rereadSource);
}
}
}