@@ -94,18 +94,22 @@ describe('Rclnodejs message translation: primitive types', function () {
9494 const MessageType = 'std_msgs/msg/' + testData . type ;
9595 const publisher = node . createPublisher ( MessageType , topic ) ;
9696 return new Promise ( ( resolve , reject ) => {
97+ let timer ;
9798 const sub = node . createSubscription ( MessageType , topic , ( value ) => {
9899 // For primitive types, msgs are defined as a single `.data` field
99100 if ( value . data === v ) {
101+ clearInterval ( timer ) ;
100102 node . destroy ( ) ;
101103 resolve ( ) ;
102104 } else {
105+ clearInterval ( timer ) ;
103106 node . destroy ( ) ;
104107 reject (
105108 'case ' + i + '. Expected: ' + v + ', Got: ' + value . data
106109 ) ;
107110 }
108111 } ) ;
112+ timer = setInterval ( ( ) => publisher . publish ( v ) , 100 ) ;
109113 publisher . publish ( v ) ; // Short-cut form of publishing primitive types
110114 rclnodejs . spin ( node ) ;
111115 } ) ;
@@ -119,18 +123,22 @@ describe('Rclnodejs message translation: primitive types', function () {
119123 const MessageType = 'std_msgs/msg/' + testData . type ;
120124 const publisher = node . createPublisher ( MessageType , topic ) ;
121125 return new Promise ( ( resolve , reject ) => {
126+ let timer ;
122127 const sub = node . createSubscription ( MessageType , topic , ( value ) => {
123128 // For primitive types, msgs are defined as a single `.data` field
124129 if ( value . data === v ) {
130+ clearInterval ( timer ) ;
125131 node . destroy ( ) ;
126132 resolve ( ) ;
127133 } else {
134+ clearInterval ( timer ) ;
128135 node . destroy ( ) ;
129136 reject (
130137 'case ' + i + '. Expected: ' + v + ', Got: ' + value . data
131138 ) ;
132139 }
133140 } ) ;
141+ timer = setInterval ( ( ) => publisher . publish ( { data : v } ) , 100 ) ;
134142 publisher . publish ( { data : v } ) ; // Ensure the original form of the message can be used
135143 rclnodejs . spin ( node ) ;
136144 } ) ;
@@ -221,27 +229,32 @@ describe('Rclnodejs message translation: primitive types array', function () {
221229 const MessageType = 'std_msgs/msg/' + testData . type ;
222230 const publisher = node . createPublisher ( MessageType , topic ) ;
223231 return new Promise ( ( resolve , reject ) => {
232+ let timer ;
224233 const sub = node . createSubscription ( MessageType , topic , ( value ) => {
225234 // For primitive types, msgs are defined as a single `.data` field
226235 if (
227236 ( isTypedArray ( value . data ) &&
228237 deepEqual ( Array . from ( value . data ) , testData . values ) ) ||
229238 deepEqual ( value . data , testData . values )
230239 ) {
240+ clearInterval ( timer ) ;
231241 node . destroy ( ) ;
232242 resolve ( ) ;
233243 } else {
244+ clearInterval ( timer ) ;
234245 node . destroy ( ) ;
235246 reject ( 'Expected: ' + testData . values + ', Got: ' + value . data ) ;
236247 }
237248 } ) ;
238- publisher . publish ( {
249+ const msg = {
239250 layout : {
240251 dim : [ { label : 'length' , size : 0 , stride : 0 } ] ,
241252 data_offset : 0 ,
242253 } ,
243254 data : testData . values ,
244- } ) ;
255+ } ;
256+ timer = setInterval ( ( ) => publisher . publish ( msg ) , 100 ) ;
257+ publisher . publish ( msg ) ;
245258 rclnodejs . spin ( node ) ;
246259 } ) ;
247260 }
@@ -478,16 +491,19 @@ describe('Rclnodejs message translation: TypedArray large data', function () {
478491 const MessageType = 'std_msgs/msg/' + testData . type ;
479492 const publisher = node . createPublisher ( MessageType , topic ) ;
480493 return new Promise ( ( resolve , reject ) => {
494+ let timer ;
481495 const sub = node . createSubscription ( MessageType , topic , ( value ) => {
482496 // For primitive types, msgs are defined as a single `.data` field
483497 if (
484498 ( isTypedArray ( value . data ) &&
485499 deepEqual ( Array . from ( value . data ) , testData . values ) ) ||
486500 deepEqual ( value . data , testData . values )
487501 ) {
502+ clearInterval ( timer ) ;
488503 node . destroy ( ) ;
489504 resolve ( ) ;
490505 } else {
506+ clearInterval ( timer ) ;
491507 node . destroy ( ) ;
492508 reject (
493509 'Expected: ' +
@@ -497,13 +513,15 @@ describe('Rclnodejs message translation: TypedArray large data', function () {
497513 ) ;
498514 }
499515 } ) ;
500- publisher . publish ( {
516+ const msg = {
501517 layout : {
502518 dim : [ { label : 'length' , size : 0 , stride : 0 } ] ,
503519 data_offset : 0 ,
504520 } ,
505521 data : testData . values ,
506- } ) ;
522+ } ;
523+ timer = setInterval ( ( ) => publisher . publish ( msg ) , 100 ) ;
524+ publisher . publish ( msg ) ;
507525 rclnodejs . spin ( node ) ;
508526 } ) ;
509527 }
0 commit comments