Skip to content

Commit 6a94c9d

Browse files
committed
Add toMsg method to Time class (osrf#44)
Signed-off-by: Jacob Perron <jacob@openrobotics.org>
1 parent 9787870 commit 6a94c9d

File tree

2 files changed

+43
-0
lines changed

2 files changed

+43
-0
lines changed

rcljava/src/main/java/org/ros2/rcljava/Time.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,14 @@ public Time(final long secs, final long nanos, final ClockType ct) {
6060
this.nanoseconds = TimeUnit.SECONDS.toNanos(secs) + nanos;
6161
}
6262

63+
public builtin_interfaces.msg.Time toMsg() {
64+
long seconds = this.nanoseconds / 1000000000;
65+
long nanos = this.nanoseconds % 1000000000;
66+
builtin_interfaces.msg.Time msg = new builtin_interfaces.msg.Time();
67+
msg.setSec((int)seconds);
68+
msg.setNanosec((int)nanos);
69+
return msg;
70+
}
6371

6472
public long nanoseconds() {
6573
return nanoseconds;

rcljava/src/test/java/org/ros2/rcljava/TimeTest.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,16 @@ public final void testTimeNoArgConstructor() {
5050
assertEquals(ClockType.SYSTEM_TIME, time.clockType());
5151
}
5252

53+
@Test
54+
public final void testTimeFromMsgConstructor() {
55+
builtin_interfaces.msg.Time timeMsg = new builtin_interfaces.msg.Time();
56+
timeMsg.setSec(42);
57+
timeMsg.setNanosec(100);
58+
Time time = new Time(timeMsg, ClockType.SYSTEM_TIME);
59+
assertEquals(42000000100L, time.nanoseconds());
60+
assertEquals(ClockType.SYSTEM_TIME, time.clockType());
61+
}
62+
5363
@Test
5464
public final void testTimeNanos() {
5565
Time time = new Time(45, ClockType.SYSTEM_TIME);
@@ -73,4 +83,29 @@ public final void testTimeBadSecs() {
7383
public final void testTimeBadNanos() {
7484
Time time = new Time(0, -45, ClockType.SYSTEM_TIME);
7585
}
86+
87+
@Test
88+
public final void testTimeToMsg() {
89+
{
90+
Time time = new Time();
91+
builtin_interfaces.msg.Time timeMsgOut = time.toMsg();
92+
assertEquals(0, timeMsgOut.getSec());
93+
assertEquals(0, timeMsgOut.getNanosec());
94+
}
95+
{
96+
builtin_interfaces.msg.Time timeMsg = new builtin_interfaces.msg.Time();
97+
timeMsg.setSec(42);
98+
timeMsg.setNanosec(100);
99+
Time time = new Time(timeMsg, ClockType.SYSTEM_TIME);
100+
builtin_interfaces.msg.Time timeMsgOut = time.toMsg();
101+
assertEquals(42, timeMsgOut.getSec());
102+
assertEquals(100, timeMsgOut.getNanosec());
103+
}
104+
{
105+
Time time = new Time(0, 45, ClockType.SYSTEM_TIME);
106+
builtin_interfaces.msg.Time timeMsgOut = time.toMsg();
107+
assertEquals(0, timeMsgOut.getSec());
108+
assertEquals(45, timeMsgOut.getNanosec());
109+
}
110+
}
76111
}

0 commit comments

Comments
 (0)