コード例 #1
0
    def test_publisher(self):
        node = CppParser("test", ["setup.py"])
        code = 'ros::Publisher pub = nh.advertise<std_msgs::String>("topic_name", 5);'
        sub, brackets = node.extract_info(code, Publisher, node.publisher_regex)
        self.assertEqual(sub.name, "topic_name")
        self.assertEqual(sub.namespace, None)
        self.assertEqual(sub.datatype, "std_msgs/String")
        self.assertEqual(brackets, code)

        code = 'ros::Publisher pub = nh.advertise<std_msgs::String>("topic_name", 5, true);'
        sub, brackets = node.extract_info(code, Publisher, node.publisher_regex)
        self.assertEqual(sub.name, "topic_name")
        self.assertEqual(sub.namespace, None)
        self.assertEqual(sub.datatype, "std_msgs/String")
        self.assertEqual(brackets, code)

        code = 'nh.advertise<foo_msgs::Bar>(topic_name, 1,'\
            ' SubscriberConnectCallback,'\
            ' SubscriberDisconnectCallback,'\
            ' VoidConstPtr(),'\
            ' false)'
        sub, brackets = node.extract_info(code, Publisher, node.publisher_regex)
        self.assertEqual(sub.name, "topic_name")
        self.assertEqual(sub.namespace, None)
        self.assertEqual(sub.datatype, "foo_msgs/Bar")
        self.assertEqual(brackets, code)
コード例 #2
0
    def test_extract_params(self):
        # Just add setup.py as file to parse as a file is needed to instance
        # the parser but it is not really used here
        node = CppParser("test", ["setup.py"])
        code = 'ros::param::param<std::string>("param1", param1, "default_value1");'
        param, brackets = node.extract_info(code, Parameter, node.param_regex)
        self.assertEqual(param.name, "param1")
        self.assertEqual(param.namespace, None)
        self.assertEqual(param.default_value, "default_value1")
        self.assertEqual(param.datatype, "std::string")
        self.assertEqual(brackets, code)

        code = 'ros::param::get("/param2", param2)'
        param, brackets = node.extract_info(code, Parameter, node.param_regex)
        self.assertEqual(param.name, "param2")
        self.assertEqual(param.namespace, "/")
        self.assertEqual(brackets, code)

        code = 'nh.getParam("param3", param3)'
        param, brackets = node.extract_info(code, Parameter, node.param_regex)
        self.assertEqual(param.name, "param3")
        self.assertEqual(param.namespace, None)
        self.assertEqual(brackets, code)
        self.assertEqual(param.default_value, None)

        code = 'nh.param<std::string>("param4", param4, defaultGenerator());'
        param, brackets = node.extract_info(code, Parameter, node.param_regex)
        self.assertEqual(param.name, "param4")
        self.assertEqual(param.namespace, None)
        self.assertEqual(param.default_value, "defaultGenerator()")
        self.assertEqual(param.datatype, "std::string")
        self.assertEqual(brackets, code)
コード例 #3
0
ファイル: test_cpp.py プロジェクト: i-tick/catkin_doc
    def test_subscriber(self):
        node = CppParser("test", ["setup.py"])
        code = 'm_start_stop_sub=m_glob_node_handle.subscribe("start_stop", 1,'\
            '&PathLoader::startStopCallback, this) '

        sub, brackets = node.extract_info(code, Subscriber,
                                          node.subscriber_regex)

        self.assertEqual(sub.name, "start_stop")
        self.assertEqual(brackets, code)

        code = 'ros::Subscriber sub = nh.subscribe<std_msgs::String>("my_topic", 1, callback);'
        sub, brackets = node.extract_info(code, Subscriber,
                                          node.subscriber_regex)
        self.assertEqual(sub.name, "my_topic")
        self.assertEqual(sub.namespace, None)
        self.assertEqual(sub.datatype, "std_msgs/String")
        self.assertEqual(brackets, code)

        code = """ros::Subscriber subscruber = nh.subscribe<std_msgs::String>("namespace/"
                                                                              "topic_name",
                                                                              1,
                                                                              callback
                                                                              )"""
        sub, brackets = node.extract_info(code, Subscriber,
                                          node.subscriber_regex)
        self.assertEqual(sub.name, "topic_name")
        self.assertEqual(sub.namespace, "namespace/")
        self.assertEqual(sub.datatype, "std_msgs/String")
        self.assertEqual(brackets, code)
コード例 #4
0
    def test_service(self):
        node = CppParser("test", ["setup.py"])
        code = 'ros::ServiceServer srv = nh.advertiseService<std_srvs::Empty::Request, '\
            'std_srvs::Empty::Response>("my_service", Foo);'
        service, brackets = node.extract_info(code, Service, node.service_regex)
        self.assertEqual(service.name, "my_service")
        self.assertEqual(service.namespace, None)
        self.assertEqual(service.datatype, "std_srvs/Empty")
        self.assertEqual(brackets, code)

        code = 'ros::ServiceServer service = nh.advertiseService("my_service", '\
            '&Foo::callback, &foo_object);'
        service, brackets = node.extract_info(code, Service, node.service_regex)
        self.assertEqual(service.name, "my_service")
        self.assertEqual(brackets, code)
コード例 #5
0
 def test_extract_params_false(self):
     node = CppParser("test", ["setup.py"])
     self.assertFalse(
         node.extract_info(
             ' ros_control_action_service = m_nh.resolveName(ros_control_action_service);',
             Parameter,
             node.param_regex)[0])
コード例 #6
0
    def test_service_clients(self):
        node = CppParser("test", ["setup.py"])
        code = 'm_accept_path_client = '\
            'm_nh.serviceClient<follow_me_msgs::SetAdjustedPath>("/move_base/adjusted_plan");'
        service, brackets = node.extract_info(code, ServiceClient, node.service_client_regex)
        self.assertEqual(service.name, "adjusted_plan")
        self.assertEqual(service.namespace, "/move_base/")
        self.assertEqual(service.datatype, "follow_me_msgs/SetAdjustedPath")
        self.assertEqual(brackets, code)

        code = 'ros::service::call("my_service_name", std_srvs::Empty)'
        service, brackets = node.extract_info(code, ServiceClient, node.service_client_regex_alt)
        self.assertEqual(service.name, "my_service_name")
        self.assertEqual(service.namespace, None)
        self.assertEqual(service.datatype, "std_srvs/Empty")
        self.assertEqual(brackets, code)
コード例 #7
0
 def test_action_server(self):
     node = CppParser("test", ["setup.py"])
     code = 'm_action_server = '\
         'new actionlib::SimpleActionServer<fzi_manipulation_msgs::PlayTrajectoryAction>'\
         '("execute_trajectory", boost::bind(&PathLoader::executeCB, this), false);'
     action, brackets = node.extract_info(code, Action, node.action_regex)
     self.assertEqual(action.name, "execute_trajectory")
     self.assertEqual(action.namespace, None)
     self.assertEqual(action.datatype, "fzi_manipulation_msgs/PlayTrajectoryAction")
     self.assertEqual(brackets, code)
コード例 #8
0
 def test_action_client(self):
     node = CppParser("test", ["setup.py"])
     code = 'm_ros_control_action_client = '\
         'new actionlib::SimpleActionClient<control_msgs::FollowJointTrajectoryAction>'\
         '("controller_topic", true);'
     action, brackets = node.extract_info(code, ActionClient, node.action_client_regex)
     self.assertEqual(action.name, "controller_topic")
     self.assertEqual(action.namespace, None)
     self.assertEqual(action.datatype, "control_msgs/FollowJointTrajectoryAction")
     self.assertEqual(brackets, code)
コード例 #9
0
 def test_action_client_false(self):
     node = CppParser("test", ["setup.py"])
     self.assertFalse(
         node.extract_info(
             ' ros_control_action_service = m_nh.resolveName(ros_control_action_service);', ActionClient, node.action_client_regex)[0])
コード例 #10
0
 def test_subscriber_false(self):
     node = CppParser("test", ["setup.py"])
     self.assertFalse(
         node.extract_info(
             ' ros_control_action_service = m_nh.resolveName(ros_control_action_service);', Subscriber, node.subscriber_regex)[0])