package edu.sc.seis.sod.subsetter.eventStation;
import java.io.StringReader;
import java.util.Properties;
import junit.framework.TestCase;
import org.junit.Test;
import org.xml.sax.InputSource;
import edu.iris.Fissures.model.QuantityImpl;
import edu.iris.Fissures.model.UnitImpl;
import edu.iris.Fissures.network.ChannelImpl;
import edu.iris.Fissures.network.StationImpl;
import edu.sc.seis.fissuresUtil.hibernate.NetworkDB;
import edu.sc.seis.fissuresUtil.mockFissures.IfEvent.MockEventAccessOperations;
import edu.sc.seis.fissuresUtil.mockFissures.IfNetwork.MockChannel;
import edu.sc.seis.fissuresUtil.mockFissures.IfNetwork.MockStation;
import edu.sc.seis.sod.Args;
import edu.sc.seis.sod.EventChannelPair;
import edu.sc.seis.sod.EventStationPair;
import edu.sc.seis.sod.Stage;
import edu.sc.seis.sod.Standing;
import edu.sc.seis.sod.Start;
import edu.sc.seis.sod.Status;
import edu.sc.seis.sod.hibernate.SodDB;
import edu.sc.seis.sod.hibernate.StatefulEvent;
import edu.sc.seis.sod.hibernate.StatefulEventDB;
public class RemoveStationDuplicateTest extends TestCase {
Start start;
StationImpl mockOne = MockStation.createStation();
StationImpl mockClose = MockStation.createCloseStation(mockOne);
StationImpl mockFar = MockStation.createOtherStation();
StatefulEvent event;
@Override
protected void setUp() throws Exception {
Properties props = new Properties();
props.put("fissuresUtil.database.url", "jdbc:hsqldb:mem:SodDB");
Start s = new Start(new Args(new String[] {"-f", "<stream>","-q"}),
new Start.InputSourceCreator() {
public InputSource create() {
return new InputSource(new StringReader("<sod></sod>\n"));
}
},
props,
true);
s.setupDatabaseForUnitTests();
NetworkDB netdb = NetworkDB.getSingleton();
netdb.put(mockOne);
netdb.put(mockClose);
netdb.put(mockFar);
SodDB sodDb = SodDB.getSingleton();
event = new StatefulEvent(MockEventAccessOperations.createEvent(),
Status.get(Stage.EVENT_CHANNEL_POPULATION,
Standing.SUCCESS));
StatefulEventDB eventdb = StatefulEventDB.getSingleton();
eventdb.put(event);
EventStationPair esp = sodDb.createEventStationPair(event, mockOne);
esp.update(Status.get(Stage.EVENT_CHANNEL_POPULATION, Standing.SUCCESS));
ChannelImpl chan = MockChannel.createChannel(mockOne);
netdb.put(chan);
EventChannelPair ecp = sodDb.createEventChannelPair(event, chan, esp);
ecp.update(Status.get(Stage.PROCESSOR, Standing.SUCCESS));
SodDB.commit();
}
@Test
public void testCloseStation() throws Exception {
RemoveStationDuplicate rsd = new RemoveStationDuplicate(new QuantityImpl(1, UnitImpl.DEGREE));
assertTrue("far station", rsd.accept(event, mockFar, null).isSuccess());
assertFalse("close station", rsd.accept(event, mockClose, null).isSuccess());
}
}