Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions rcljava/src/main/java/org/ros2/rcljava/Time.java
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,14 @@ public Time(final long secs, final long nanos, final ClockType ct) {
this.nanoseconds = TimeUnit.SECONDS.toNanos(secs) + nanos;
}

public builtin_interfaces.msg.Time toMsg() {
long seconds = this.nanoseconds / 1000000000;
long nanos = this.nanoseconds % 1000000000;
builtin_interfaces.msg.Time msg = new builtin_interfaces.msg.Time();
msg.setSec((int)seconds);
msg.setNanosec((int)nanos);
return msg;
}

public long nanoseconds() {
return nanoseconds;
Expand Down
35 changes: 35 additions & 0 deletions rcljava/src/test/java/org/ros2/rcljava/TimeTest.java
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,16 @@ public final void testTimeNoArgConstructor() {
assertEquals(ClockType.SYSTEM_TIME, time.clockType());
}

@Test
public final void testTimeFromMsgConstructor() {
builtin_interfaces.msg.Time timeMsg = new builtin_interfaces.msg.Time();
timeMsg.setSec(42);
timeMsg.setNanosec(100);
Time time = new Time(timeMsg, ClockType.SYSTEM_TIME);
assertEquals(42000000100L, time.nanoseconds());
assertEquals(ClockType.SYSTEM_TIME, time.clockType());
}

@Test
public final void testTimeNanos() {
Time time = new Time(45, ClockType.SYSTEM_TIME);
Expand All @@ -60,4 +70,29 @@ public final void testTimeBadSecs() {
public final void testTimeBadNanos() {
Time time = new Time(0, -45, ClockType.SYSTEM_TIME);
}

@Test
public final void testTimeToMsg() {
{
Time time = new Time();
builtin_interfaces.msg.Time timeMsgOut = time.toMsg();
assertEquals(0, timeMsgOut.getSec());
assertEquals(0, timeMsgOut.getNanosec());
}
{
builtin_interfaces.msg.Time timeMsg = new builtin_interfaces.msg.Time();
timeMsg.setSec(42);
timeMsg.setNanosec(100);
Time time = new Time(timeMsg, ClockType.SYSTEM_TIME);
builtin_interfaces.msg.Time timeMsgOut = time.toMsg();
assertEquals(42, timeMsgOut.getSec());
assertEquals(100, timeMsgOut.getNanosec());
}
{
Time time = new Time(0, 45, ClockType.SYSTEM_TIME);
builtin_interfaces.msg.Time timeMsgOut = time.toMsg();
assertEquals(0, timeMsgOut.getSec());
assertEquals(45, timeMsgOut.getNanosec());
}
}
}