Go to the documentation of this file.00001 
00002 import ros.*;
00003 import ros.communication.*;
00004 import ros.pkg.test_rosjava_jni.msg.*;
00005 import ros.pkg.test_rosjava_jni.srv.*;
00006 import ros.pkg.std_msgs.msg.ByteMultiArray;
00007 import ros.pkg.std_msgs.msg.MultiArrayLayout;
00008 import ros.pkg.std_msgs.msg.MultiArrayDimension;
00009 
00010 class Testee {
00011         public static void main(String [] args) throws InterruptedException, RosException{
00012                 System.out.println("Starting rosjava.");
00013                 Ros ros = Ros.getInstance();
00014                 ros.init("testNode");
00015                 
00016                 
00017                 ros.logDebug("DEBUG");
00018                 ros.logInfo("INFO");
00019                 ros.logWarn("WARN");
00020                 ros.logError("ERROR");
00021                 ros.logFatal("FATAL");
00022                 
00023                 System.out.println("Initialized");              
00024                 NodeHandle n = ros.createNodeHandle();
00025 
00026                 
00027                 
00028                 System.out.println(ros.now());
00029                 
00030                 ros.pkg.std_msgs.msg.String msg = new ros.pkg.std_msgs.msg.String();
00031                 msg.data = "go";
00032                 Publisher<ros.pkg.std_msgs.msg.String> pub = n.advertise("/talk", msg, 1);
00033                 
00034                 Publisher<TestDataTypes> pub2 = n.advertise("/test_talk", new TestDataTypes(), 1);
00035                 
00036                 Publisher<TestBadDataTypes> pub3 = n.advertise("/test_bad", new TestBadDataTypes(), 1);
00037                 
00038                 
00039                 Subscriber.QueueingCallback<ros.pkg.std_msgs.msg.String> cb = new Subscriber.QueueingCallback<ros.pkg.std_msgs.msg.String>(); 
00040                 Subscriber<ros.pkg.std_msgs.msg.String> sub = n.subscribe("/listen", new ros.pkg.std_msgs.msg.String(), cb, 10);
00041                 
00042                 Subscriber.QueueingCallback<TestDataTypes> cb2 = new Subscriber.QueueingCallback<TestDataTypes>(); 
00043                 Subscriber<TestDataTypes> sub2 = n.subscribe("/test_listen", new TestDataTypes(), cb2, 10);
00044                 
00045                 Subscriber.QueueingCallback<TestBadDataTypes> cb3 = new Subscriber.QueueingCallback<TestBadDataTypes>(); 
00046                 Subscriber<TestBadDataTypes> sub3 = n.subscribe("/test_bad", new TestBadDataTypes(), cb3, 10);
00047                 
00048                 System.out.println("Waiting for roscpp...");
00049                 for(int i = 0; i < 60 && cb.size() == 0; i++) {
00050                         pub.publish(msg);
00051                         n.spinOnce();
00052                         Thread.sleep(1000);
00053                 }
00054                 System.out.println("Started");
00055                 
00057                 msg.data = "good";
00058                 if (n.getIntParam("int_param") != 1) msg.data="fail_int_param";
00059                 n.setParam("int_param2", n.getIntParam("int_param"));
00060                 if (n.getDoubleParam("double_param") != 1.0) msg.data="fail_double_param";
00061                 n.setParam("double_param2", n.getDoubleParam("double_param"));
00062                 if (n.getStringParam("string_param") == "hello") msg.data = "fail_string_param";
00063                 n.setParam("string_param2", n.getStringParam("string_param"));
00064                 
00065 
00066                 
00067                 ServiceServer.Callback<TestTwoInts.Request,TestTwoInts.Response> scb = 
00068                         new ServiceServer.Callback<TestTwoInts.Request,TestTwoInts.Response>() {
00069                                 public TestTwoInts.Response call(TestTwoInts.Request request) {
00070                                         TestTwoInts.Response res = new TestTwoInts.Response();
00071                                         res.sum = request.a + request.b;
00072                                         return res;
00073                                 }
00074                         };                      
00075                         
00076                 ServiceServer<TestTwoInts.Request,TestTwoInts.Response,TestTwoInts> srv = n.advertiseService("add_two_ints_java", new TestTwoInts(), scb);
00077                 
00078                 pub.publish(msg);
00079 
00080                 ServiceClient<TestTwoInts.Request, TestTwoInts.Response, TestTwoInts> sc = n.serviceClient("add_two_ints_cpp" , new TestTwoInts(), false);
00081                 TestTwoInts.Request rq = new TestTwoInts.Request();
00082                 rq.a = 12;
00083                 rq.b = 17;
00084                 msg.data="good";
00085                 if (sc.call(rq).sum != 29) {
00086                         System.out.println("Got incorrect sum!");
00087                         msg.data="bad";
00088                 }
00089                 pub.publish(msg);
00090 
00091                 
00092                 while(cb2.size() == 0) {
00093                         n.spinOnce();
00094                         Thread.sleep(1000);
00095                 }
00096 
00097                 msg.data="good";
00098                 TestDataTypes test = cb2.pop();
00099                 if ((0xff&(int)test.byte_) != 0xab)   msg.data="fail_byte";
00100                 if ((0xff&(int)test.char_) != 0xbc)   msg.data="fail_char";
00101                 if ((0xff&(int)test.uint8_) != 0xcd)  msg.data="fail_ui8";
00102                 if ((0xff&(int)test.int8_) != 0xde)    msg.data="fail_i8";
00103                 if ((0xffff&(int)test.uint16_) != 0xabcd) msg.data="fail_ui16";
00104                 if ((0xffff&(int)test.int16_) != 0xbcde)   msg.data="fail_i16:" + test.int16_;
00105                 if (test.uint32_ != 0xdeadbeef) msg.data="fail_ui32";
00106                 if (test.int32_ != 0xcabcabbe)   msg.data="fail_i32";
00107                 if (test.uint64_ != 0xbeefcabedeaddeedL) msg.data="fail_ui64";
00108                 if (test.int64_ != 0xfeedbabedeadbeefL)   msg.data="fail_i64";
00109                 if (test.float32_ != 1.0)   msg.data="fail_f32";
00110                 if (test.float64_ != -1.0)  msg.data="fail_f64";
00111                 if (!test.string_.equals("hello")) msg.data="fail_string";
00112                 if (test.time_.secs != 123) msg.data="fail_time";
00113                 if (test.time_.nsecs != 456) msg.data="fail_time";
00114                 if (test.duration_.secs != 789) msg.data="fail_duration";
00115                 if (test.duration_.nsecs != 987) msg.data="fail_duration";
00116                 
00117                 if (test.byte_v.length != 1) msg.data="fail_byte_v_len";
00118                 if (test.byte_v[0] != 11) msg.data="fail_byte_v[0]";
00119                 if (test.byte_f[0] != 22) msg.data="fail_byte_f[0]";
00120                 if (test.byte_f[1] != 33) msg.data="fail_byte_f[1]";
00121                 
00122                 if (test.float64_v.length != 1) msg.data="fail_float64_v_len";
00123                 if (test.float64_v[0] != 1.0) msg.data="fail_float64_v[0]";
00124                 if (test.float64_f[0] != 2.0) msg.data="fail_float64_f[0]";
00125                 if (test.float64_f[1] != 3.0) msg.data="fail_float64_f[1]";
00126                 
00127                 if (test.string_v.size() != 1) msg.data="fail_string_v_len";
00128                 if (!test.string_v.get(0).equals("test1")) msg.data="fail_string_v[0]";
00129                 if (!test.string_f[0].equals("")) msg.data="fail_string_f[0]";
00130                 if (!test.string_f[1].equals("test3")) msg.data="fail_string_f[1]";
00131                 
00132                 if (test.time_v.size() != 1) msg.data="fail_time_v_len";
00133                 if (test.time_v.get(0).secs != 222) msg.data="fail_time_v[0]";
00134                 if (test.time_f[0].secs != 444) msg.data="fail_time_f[0]";
00135                 if (test.time_f[1].secs != 666) msg.data="fail_time_f[1]";
00136                 if (test.time_v.get(0).nsecs != 333) msg.data="fail_time_v[0]";
00137                 if (test.time_f[0].nsecs != 555) msg.data="fail_time_f[0]";
00138                 if (test.time_f[1].nsecs != 777) msg.data="fail_time_f[1]";
00139                 
00140                 if (test.Byte_.data != 1) msg.data="fail_Byte_";
00141                 if (test.Byte_v.size() != 2) msg.data="fail_Byte_v_length";
00142                 if (test.Byte_v.get(0).data != (byte)2) msg.data="fail_Byte_v[0]";
00143                 if (test.Byte_v.get(1).data != (byte)3) msg.data="fail_Byte_v[1]";
00144 
00145                 if (test.ByteMultiArray_.layout.dim.size() != 1) msg.data="fail_ByteMultiArray_layout_dims";
00146                 if (!test.ByteMultiArray_.layout.dim.get(0).label.equals("test")) msg.data="fail_ByteMultiArray_layout_dim[0]_label";
00147                 if (test.ByteMultiArray_.layout.dim.get(0).size != 1) msg.data="fail_ByteMultiArray_layout_dim[0]_size";
00148                 if (test.ByteMultiArray_.layout.dim.get(0).stride != 1) msg.data="fail_ByteMultiArray_layout_dim[0]_stride";
00149                 if (test.ByteMultiArray_.layout.data_offset != 0) msg.data="fail_ByteMultiArray_layout_data_offset";
00150                 if (test.ByteMultiArray_.data.length != 1) msg.data="fail_ByteMultiArray_data_length";
00151                 if (test.ByteMultiArray_.data[0] != (byte)11) msg.data="fail_ByteMultiArray_data[0]";
00152 
00153                 if (test.ByteMultiArray_v.size() != 1) msg.data="fail_ByteMultiArray_v_length";
00154                 if (test.ByteMultiArray_v.get(0).layout.dim.size() != 1) msg.data="fail_ByteMultiArray_v[0]layout_dims";
00155                 if (!test.ByteMultiArray_v.get(0).layout.dim.get(0).label.equals("test")) msg.data="fail_ByteMultiArray_v.get(0)layout_dim.get(0)_label:" + test.ByteMultiArray_v.get(0).layout.dim.get(0).label;
00156                 if (test.ByteMultiArray_v.get(0).layout.dim.get(0).size != 1) msg.data="fail_ByteMultiArray_v.get(0)layout_dim.get(0)_size";
00157                 if (test.ByteMultiArray_v.get(0).layout.dim.get(0).stride != 1) msg.data="fail_ByteMultiArray_v.get(0)layout_dim.get(0)_stride";
00158                 if (test.ByteMultiArray_v.get(0).layout.data_offset != 0) msg.data="fail_ByteMultiArray_v.get(0)layout_data_offset";
00159                 if (test.ByteMultiArray_v.get(0).data.length != 1) msg.data="fail_ByteMultiArray_v.get(0)data_length";
00160                 if (test.ByteMultiArray_v.get(0).data[0] != (byte)11) msg.data="fail_ByteMultiArray_v.get(0)data.get(0)";
00161 
00162 
00163 
00164                 
00165                 System.out.println("Result of good msg test: " + msg.data);
00166                 pub2.publish(test);
00167                 
00168                 
00169                 TestBadDataTypes tbdt = new TestBadDataTypes();
00170                 tbdt.Byte_f[0].data = 0xfe;
00171                 tbdt.Byte_f[1].data = 0xcd;
00172                 tbdt.ByteMultiArray_f[0].layout.dim.add(new MultiArrayDimension());
00173                 tbdt.ByteMultiArray_f[0].layout.dim.get(0).label="test";
00174                 tbdt.ByteMultiArray_f[0].layout.dim.get(0).size=2;
00175                 tbdt.ByteMultiArray_f[0].layout.dim.get(0).stride=1;
00176     tbdt.ByteMultiArray_f[0].layout.data_offset=0;
00177     tbdt.ByteMultiArray_f[0].data = new short[2];
00178                 tbdt.ByteMultiArray_f[0].data[0] = (short)0xab;
00179                 tbdt.ByteMultiArray_f[0].data[1] = (short)0xdc;
00180 
00181                 
00182                 TestBadDataTypes temp = new TestBadDataTypes();
00183                 temp.deserialize(tbdt.serialize(0)); 
00184                 pub3.publish(temp);
00185 
00186 
00187                 
00188                 while(cb3.size() == 0) {
00189                         n.spinOnce();
00190                 }
00191                 tbdt = cb3.pop();
00192                 if (tbdt.Byte_f.length != 2) msg.data="fail_Byte_f_len";
00193                 if (tbdt.Byte_f[0].data != 0xfe) msg.data="fail_Byte_f[0]";
00194                 if (tbdt.Byte_f[1].data != 0xcd) msg.data="fail_Byte_f[1]";
00195                 if (tbdt.ByteMultiArray_f.length != 1) msg.data="fail_ByteMultiArray_f_length";
00196                 if (tbdt.ByteMultiArray_f[0].layout.dim.size() != 1) msg.data="fail_ByteMultiArray_f_dims";
00197                 if (!tbdt.ByteMultiArray_f[0].layout.dim.get(0).label.equals("test")) msg.data="fail_ByteMultiArray_f_dim[0]_label";
00198                 if (tbdt.ByteMultiArray_f[0].layout.dim.get(0).size != 2) msg.data="fail_ByteMultiArray_f_dim[0]_size";
00199                 if (tbdt.ByteMultiArray_f[0].layout.dim.get(0).stride != 1) msg.data="fail_ByteMultiArray_f_dim[0]_stride";
00200                 if (tbdt.ByteMultiArray_f[0].layout.data_offset != 0) msg.data="fail_ByteMultiArray_f_data_offset";
00201                 if (tbdt.ByteMultiArray_f[0].data.length != 2) msg.data="fail_ByteMultiArray_f_data_length";
00202                 if (tbdt.ByteMultiArray_f[0].data[0] != 0xab) msg.data="fail_ByteMultiArray_f_data[0]";
00203                 if (tbdt.ByteMultiArray_f[0].data[1] != 0xdc) msg.data="fail_ByteMultiArray_f_data[1]";
00204                 
00205                 System.out.println("Result of bad msg test: " + msg.data);
00206                 
00207 
00208                 pub.publish(msg);
00209                 
00210         
00211                 
00212 
00213 
00214 
00215 
00216 
00217 
00218 
00219 
00220 
00221 
00222 
00223 
00224 
00225 
00226 
00227 
00228 
00229 
00230 
00231 
00232 
00233 
00234 
00235 
00236 
00237 
00238 
00239 
00240 
00241 
00242 
00243 
00244 
00245 
00246 
00247 
00248 
00249 
00250 
00251 
00252 
00253 
00254 
00255 
00256 
00257 
00258 
00259               
00260         }
00261 }