// Check trajectory stuff.
List trajNames = trajDs.getTrajectoryIds();
assertTrue( "Number of trajectory names <" + trajNames.size() + "> more than expected <" + trajDsInfo.getNumTrajs() + ">.",
trajNames.size() == trajDsInfo.getNumTrajs() );
TrajectoryObsDatatype traj1 = trajDs.getTrajectory( trajDsInfo.getExTrajId() );
assertTrue( "Trajectory name <" + traj1.getId() + "> not as expected <" + trajDsInfo.getExTrajId() + ">.",
( trajDsInfo.getExTrajId() == null
? traj1.getId() == null
: trajDsInfo.getExTrajId().equals( traj1.getId() ) ) );
assertTrue( "Trajectory description <" + traj1.getDescription() + "> not as expected <" + trajDsInfo.getExTrajDesc() + ">.",
( trajDsInfo.getExTrajDesc() == null
? traj1.getDescription() == null
: trajDsInfo.getExTrajDesc().equals( traj1.getDescription() ) ) );
assertTrue( "Number of points in trajectory <" + traj1.getNumberPoints() + "> not as expected <" + trajDsInfo.getExTrajNumPoints() + ">.",
traj1.getNumberPoints() == trajDsInfo.getExTrajNumPoints() );
// Check start and end values of time, lat, lon, and elev.
Date startDate = null, endDate = null;
double startLat = 0, startLon = 0, startElev = 0;
double endLat = 0, endLon = 0, endElev = 0;
try
{
startDate = traj1.getTime( 0 );
startLat = traj1.getLatitude( 0 );
startLon = traj1.getLongitude( 0 );
startElev = traj1.getElevation( 0 );
endDate = traj1.getTime( traj1.getNumberPoints() - 1 );
endLat = traj1.getLatitude( traj1.getNumberPoints() - 1 );
endLon = traj1.getLongitude( traj1.getNumberPoints() - 1 );
endElev = traj1.getElevation( traj1.getNumberPoints() - 1 );
}
catch ( IOException e )
{
assertTrue( "Couldn't read first/last time, lat, lon, elev from trajectory.", false );
}
assertTrue( "Traj start date <" + startDate + " - " + startDate.getTime() + "> not as expected <" + trajDsInfo.getStartDateLong() + ">.",
startDate.getTime() == trajDsInfo.getStartDateLong() );
assertTrue( "Traj end date <" + endDate + " - " + endDate.getTime() + "> not as expected <" + trajDsInfo.getEndDateLong() + ">.",
endDate.getTime() == trajDsInfo.getEndDateLong() );
assertTrue( "Start latitude <" + startLat + "> not as expected <" + trajDsInfo.getExampleTrajStartLat() + ">.",
doubleWithinEpsilon( startLat, trajDsInfo.getExampleTrajStartLat(), 0.0001 ) );
assertTrue( "End latitude <" + endLat + "> not as expected <" + trajDsInfo.getExampleTrajEndLat() + ">.",
doubleWithinEpsilon( endLat, trajDsInfo.getExampleTrajEndLat(), 0.0001 ) );
assertTrue( "Start longitude <" + startLon + "> not as expected <" + trajDsInfo.getExampleTrajStartLon() + ">.",
doubleWithinEpsilon( startLon, trajDsInfo.getExampleTrajStartLon(), 0.0001 ) );
assertTrue( "End longitude <" + endLon + "> not as expected <" + trajDsInfo.getExampleTrajEndLon() + ">.",
doubleWithinEpsilon( endLon, trajDsInfo.getExampleTrajEndLon(), 0.0001 ) );
assertTrue( "Start elevation <" + startElev + "> not as expected <" + trajDsInfo.getExampleTrajStartElev() + ">.",
doubleWithinEpsilon( startElev, trajDsInfo.getExampleTrajStartElev(), 0.0001 ) );
assertTrue( "End elevation <" + endElev + "> not as expected <" + trajDsInfo.getExampleTrajEndElev() + ">.",
doubleWithinEpsilon( endElev, trajDsInfo.getExampleTrajEndElev(), 0.0001 ) );
// Check the first and last values of the example variable.
Object exampleVarStartVal = null;
Object exampleVarEndVal = null;
try
{
Array array = traj1.getData( 0, trajDsInfo.getExampleVarName() );
exampleVarStartVal = array.getObject( array.getIndex());
array = traj1.getData( traj1.getNumberPoints() - 1, trajDsInfo.getExampleVarName() );
exampleVarEndVal = array.getObject( array.getIndex());
}
catch ( Exception e )
{
assertTrue( "Failed to read start and end values of " + trajDsInfo.getExampleVarName() + ": " + e.getMessage(),
false );
}
assertTrue( "Example variable \"" + trajDsInfo.getExampleVarName()
+ "\" start value <" + exampleVarStartVal + "> not as expected <" + trajDsInfo.getExampleVarStartVal() + "> or " +
"end value <" + exampleVarEndVal + "> not as expected <" + trajDsInfo.getExampleVarEndVal() + ">.",
doubleWithinEpsilon( ((Float) trajDsInfo.getExampleVarStartVal()).doubleValue(), ((Float) exampleVarStartVal).doubleValue(), 0.0001)
&& doubleWithinEpsilon( ((Float) trajDsInfo.getExampleVarEndVal()).doubleValue(), ((Float) exampleVarEndVal).doubleValue(), 0.0001 ) );
// assertTrue( "Variables' first two values <" + windSpd[0] + "," + windSpd[1] + "> not as expected <" + varVals[0] + "," + varVals[1] + ">.",
// windSpd[0] == varVals[0] && windSpd[1] == varVals[1] );
// Test with getPointObsData()
PointObsDatatype pointOb;
try
{
pointOb = (PointObsDatatype) traj1.getPointObsData( 0 );
}
catch ( IOException e )
{
assertTrue( "IOException on call to getPointObsData(0): " + e.getMessage(),
false);
return;
}
assertTrue( "Start time (getPointObsData) <" + pointOb.getNominalTimeAsDate().getTime() + "> not as expected <" + trajDsInfo.getStartDateLong() + ">.",
pointOb.getNominalTimeAsDate().getTime() == trajDsInfo.getStartDateLong() );
assertTrue( "Start lat (getPointObsData) <" + pointOb.getLocation().getLatitude() + "> not as expected <" + trajDsInfo.getExampleTrajStartLat() + ">.",
doubleWithinEpsilon( pointOb.getLocation().getLatitude(), trajDsInfo.getExampleTrajStartLat(), 0.0001 ) );
assertTrue( "Start lon (getPointObsData) <" + pointOb.getLocation().getLongitude() + "> not as expected <" + trajDsInfo.getExampleTrajStartLon() + ">.",
doubleWithinEpsilon( pointOb.getLocation().getLongitude(), trajDsInfo.getExampleTrajStartLon(), 0.0001 ) );
assertTrue( "Start alt (getPointObsData) <" + pointOb.getLocation().getAltitude() + "> not as expected <" + trajDsInfo.getExampleTrajStartElev() + ">.",
doubleWithinEpsilon( pointOb.getLocation().getAltitude(), trajDsInfo.getExampleTrajStartElev(), 0.0001 ) );
// Test with
StructureData sdata;
try
{
sdata = traj1.getData( 0);
}
catch ( IOException e )
{
assertTrue( "IOException on getData(0): " + e.getMessage(),
false);
return;
}
catch ( InvalidRangeException e )
{
assertTrue( "InvalidRangeException on getData(0): " + e.getMessage(),
false );
return;
}
assertTrue( "Null StructureData from getData(0).",
sdata != null);
// Test with getDataIterator()
DataIterator it;
try
{
it = traj1.getDataIterator( 0);
}
catch ( IOException e )
{
assertTrue( "IOException on call to trajectory.getDataIterator(): " + e.getMessage(),
false);