package au.gov.amsa.util.nmea.saver; import static org.junit.Assert.assertEquals; import java.io.File; import java.io.IOException; import java.util.Collection; import org.junit.Test; import org.openjdk.jmh.util.FileUtils; import rx.Observable; import rx.schedulers.Schedulers; public class NmeaSaverTest { @Test public void testSaving() throws InterruptedException, IOException { String line = "\\s:rEV02,d:1334337321*5A\\!AIVDM,1,1,,B,33:JeT0OjtVls<;fDlbl5CFH2000,0*71"; String amendedLine = "\\s:rEV02,d:1334337321,c:1234567,a:1234567890*69\\!AIVDM,1,1,,B,33:JeT0OjtVls<;fDlbl5CFH2000,0*71"; Clock clock = new Clock() { @Override public long getTimeMs() { return 1234567890; } }; File file = new File("target/1970-01-15.txt"); file.delete(); new NmeaSaver(Observable.just(line), new FileFactoryPerDay(new File("target")), clock) .start(Schedulers.immediate()); Collection<String> lines = FileUtils.readAllLines(file); assertEquals(1, lines.size()); assertEquals(amendedLine, lines.iterator().next()); } @Test public void testNewGroupingHasTime() throws InterruptedException, IOException { String line = "\\1G4:53958,s:Gantheaume Pt,c:1481700261,a:10*7D\\"; String amendedLine = line; Clock clock = new Clock() { @Override public long getTimeMs() { return 1234567890; } }; File file = new File("target/1970-01-15.txt"); file.delete(); new NmeaSaver(Observable.just(line), new FileFactoryPerDay(new File("target")), clock) .start(Schedulers.immediate()); Collection<String> lines = FileUtils.readAllLines(file); assertEquals(1, lines.size()); assertEquals(amendedLine, lines.iterator().next()); } @Test public void testNewGroupingHasTimeEndsInCarriageReturn() throws InterruptedException, IOException { String line = "\\1G4:53958,s:Gantheaume Pt,c:1481700261,a:13*7D\\\r"; String amendedLine = line.trim(); Clock clock = new Clock() { @Override public long getTimeMs() { return 1234567890; } }; File file = new File("target/1970-01-15.txt"); file.delete(); new NmeaSaver(Observable.just(line), new FileFactoryPerDay(new File("target")), clock) .start(Schedulers.immediate()); Collection<String> lines = FileUtils.readAllLines(file); assertEquals(1, lines.size()); assertEquals(amendedLine, lines.iterator().next()); } @Test public void testNewGroupingSecondaryLineWithoutTimeIsGivenTime() throws InterruptedException, IOException { String line = "\\2G2:53958,s:Gantheaume Pt*7D\\"; String amendedLine = "\\2G2:53958,s:Gantheaume Pt,c:1234567,a:1234567890*30\\"; Clock clock = new Clock() { @Override public long getTimeMs() { return 1234567890; } }; File file = new File("target/1970-01-15.txt"); file.delete(); new NmeaSaver(Observable.just(line), new FileFactoryPerDay(new File("target")), clock) .start(Schedulers.immediate()); Collection<String> lines = FileUtils.readAllLines(file); assertEquals(1, lines.size()); assertEquals(amendedLine, lines.iterator().next()); } }