package au.gov.amsa.ihs.reader; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import java.io.File; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.junit.Test; import au.gov.amsa.ihs.model.Ship; import au.gov.amsa.streams.Strings; import rx.Observable; public class IhsReaderTest { private static final double PRECISION = 0.000001; @Test public void testReaderFromInputStream() { IhsReader r = new IhsReader(); Observable<Ship> o = r .from(IhsReaderTest.class.getResourceAsStream("/ShipData.xml"), "ShipData") .map(IhsReader::toShip); Ship ship = o.last().toBlocking().single(); System.out.println(ship); assertEquals("4544107", ship.getImo()); assertEquals("235101211", ship.getMmsi().get()); assertEquals("Miscellaneous", ship.getType2().get()); assertEquals("Other Activities", ship.getType3().get()); assertEquals("Patrol Vessel", ship.getType4().get()); assertEquals("Patrol Vessel", ship.getType5().get()); assertEquals(525, (long) ship.getGrossTonnage().get()); assertEquals("RI", ship.getClassificationSocietyCode().get()); assertEquals("GBI", ship.getFlagCode().get()); assertEquals("0860230", ship.getGroupBeneficialOwnerCompanyCode().get()); assertEquals("GBI", ship.getGroupBeneficialOwnerCountryOfDomicileCode().get()); assertEquals("FIN", ship.getCountryOfBuildCode().get()); assertEquals(2002, (int) ship.getYearOfBuild().get()); assertEquals(1, (int) ship.getMonthOfBuild().get()); assertEquals(1445.0, ship.getDeadweightTonnage().get(), PRECISION); assertEquals("B34H2SQ", ship.getStatCode5().get()); assertEquals(49.7, ship.getLengthOverallMetres().get(), PRECISION); assertEquals(7.5, ship.getBreadthMetres().get(), PRECISION); assertFalse(ship.getDisplacementTonnage().isPresent()); assertEquals(3.7, ship.getDraughtMetres().get(), PRECISION); assertEquals(22.0, ship.getSpeedKnots().get(), PRECISION); assertEquals("2014-01-16T14:47:29.780Z", ship.getLastUpdateTime().get().toString()); assertEquals("PROTECTOR", ship.getName().get()); assertEquals("FIN020050", ship.getShipBuilderCompanyCode().get()); } @Test public void testReaderFromZip() { Observable<Ship> o = IhsReader.fromZip(new File("src/test/resources/ShipData.xml.zip")) .map(x -> IhsReader.toShip(x)); Ship ship = o.last().toBlocking().single(); assertEquals("4544107", ship.getImo()); } public static void main(String[] args) { // Pattern pattern = Pattern.compile("^.*\\<([^\\>/]*)\\>.*$"); Pattern pattern = Pattern.compile("^.*name=\"([^\"]*)\".*$"); System.out.println("public enum Key {"); Strings.lines(new File("/home/dxm/test.txt")) // .filter(line -> line.trim().length() > 0) // .map(line -> { Matcher m = pattern.matcher(line); if (m.find()) return m.group(1); else return null; }) // .filter(value -> value != null) // .filter(x -> !x.equals("NewDataSet")) // .filter(x -> !x.equals("ShipData")) // .doOnNext(line -> System.out.println("//\n" + line + ",")) // .subscribe(); System.out.println("}"); } }