void TimeTest::testBasics() { SecondTime timeSec(1); MilliSecTime timeMillis = timeSec.getMillis(); CPPUNIT_ASSERT_EQUAL(uint64_t(1000), timeMillis.getTime()); CPPUNIT_ASSERT_EQUAL(timeSec, timeMillis.getSeconds()); MicroSecTime timeMicros = timeSec.getMicros(); CPPUNIT_ASSERT_EQUAL(timeSec.getMicros(), timeMillis.getMicros()); CPPUNIT_ASSERT_EQUAL(timeMillis, timeMicros.getMillis()); CPPUNIT_ASSERT_EQUAL(timeSec, timeMicros.getSeconds()); MicroSecTime timeMicros2 = timeMicros; CPPUNIT_ASSERT(timeMicros2 == timeMicros); timeMicros2 += MicroSecTime(25000); CPPUNIT_ASSERT(timeMicros2 > timeMicros); CPPUNIT_ASSERT(timeMicros < timeMicros2); timeMicros2 -= MicroSecTime(30000); CPPUNIT_ASSERT(timeMicros2 < timeMicros); CPPUNIT_ASSERT(timeMicros > timeMicros2); timeMicros2 += MicroSecTime(55000); MilliSecTime timeMillis2 = timeMicros2.getMillis(); CPPUNIT_ASSERT(timeMillis2 > timeMillis); CPPUNIT_ASSERT_EQUAL(uint64_t(1050), timeMillis2.getTime()); CPPUNIT_ASSERT_EQUAL(timeSec, timeMillis2.getSeconds()); }
double Geo::avrSpeed_ms(const Geo::PointList &treck) { double speed(0); if(!treck.isEmpty()) { double dist = distance(treck); time_t dSec = timeSec(treck); speed = dSec > 0 ? (dist / dSec) : 0; } return speed; }
double Geo::avrPace(const Geo::PointList &treck) { double pace(0); time_t time = timeSec(treck); double dist = distance(treck); if(time > 0 && dist > 0) { pace = (time / 60) / (dist / 1000); } return pace; }
void saveTimeVector(::NeXus::File * file, TimeSeriesProperty<NumT> * prop) { std::vector<DateAndTime> times = prop->timesAsVector(); DateAndTime start = times[0]; std::vector<double> timeSec(times.size()); for (size_t i=0; i<times.size(); i++) timeSec[i] = double(times[i].totalNanoseconds() - start.totalNanoseconds()) * 1e-9; file->writeData("time", timeSec); file->openData("time"); file->putAttr("start", start.toISO8601String() ); file->closeData(); }