params_basic.py
Go to the documentation of this file.
00001 #!/usr/bin/env python
00002 # Software License Agreement (BSD License)
00003 #
00004 # Copyright (c) 2008, Willow Garage, Inc.
00005 # All rights reserved.
00006 #
00007 # Redistribution and use in source and binary forms, with or without
00008 # modification, are permitted provided that the following conditions
00009 # are met:
00010 #
00011 #  * Redistributions of source code must retain the above copyright
00012 #    notice, this list of conditions and the following disclaimer.
00013 #  * Redistributions in binary form must reproduce the above
00014 #    copyright notice, this list of conditions and the following
00015 #    disclaimer in the documentation and/or other materials provided
00016 #    with the distribution.
00017 #  * Neither the name of Willow Garage, Inc. nor the names of its
00018 #    contributors may be used to endorse or promote products derived
00019 #    from this software without specific prior written permission.
00020 #
00021 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
00022 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
00023 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
00024 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
00025 # COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
00026 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
00027 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
00028 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
00029 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
00030 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
00031 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
00032 # POSSIBILITY OF SUCH DAMAGE.
00033 
00034 PKG = 'test_roslaunch'
00035 
00036 import os, sys, unittest
00037 
00038 import xmlrpclib
00039 import rostest
00040 import rospkg
00041 
00042 import rosgraph
00043 master = rosgraph.Master('params_basic')
00044 def get_param(*args):
00045     return master.getParam(*args)
00046     
00047 ## Test Roslaunch 'param' tags
00048 class TestParamsBasic(unittest.TestCase):
00049 
00050     ## test primitive values
00051     def test_values(self):
00052         ## Test roslaunch string params
00053         self.assertEquals(get_param('stringempty'), '')
00054         print get_param('stringbar')
00055         self.assertEquals(get_param('stringbar'), 'bar')
00056         self.assertEquals(get_param('str10'), '10')
00057         self.assertEquals(get_param('string10'), '10')        
00058         self.assertEquals(get_param('stringentity'), '<stringentity/>')        
00059         ## Test roslaunch integer params
00060         self.assertEquals(get_param("integerneg1"), -1)
00061         self.assertEquals(get_param("integer0"), 0)
00062         self.assertEquals(get_param("integer1"), 1)
00063         self.assertEquals(get_param("integernoop1"), 1)
00064         self.assertEquals(get_param("integer12345"), 12345)
00065         ## Test roslaunch float params
00066         self.assertEquals(get_param("floatpi"),3.14159)
00067         self.assertEquals(get_param("floatnooppi"),3.14159)
00068         self.assertEquals(get_param("float3"),3.0)
00069         self.assertEquals(get_param("floatneg1"),-1.0)
00070         ## Test roslaunch boolean params
00071         for p in ['true', 'TRUE', 'True']:
00072             self.assertTrue(get_param(p), "[%s] is not false: %s"%(p, get_param(p)))
00073         for p in ['false', "FALSE", 'False']:
00074             self.assertFalse(get_param(p), "[%s] is not false: %s"%(p, get_param(p)))
00075             
00076     ## Test roslaunch ns attribute (namespace) on params
00077     def test_ns(self):
00078         self.assertEquals(get_param("/wg/childparam"),"wg")
00079         self.assertEquals(get_param("/wg2/childparam"),"wg2")
00080         self.assertEquals(get_param("/wg3/childparam"),"wg3")
00081         self.assertEquals(get_param("/wg/wg4/childparam"),"wg4")
00082         self.assertEquals(get_param("/wg/wg4/wg5/childparam"),"wg5")          
00083         ## Test roslaunch <group> tag with and without ns attribute
00084         self.assertEquals(get_param("/wga/wg/childparam"),"wg")
00085         self.assertEquals(get_param("/wga/wg2/childparam"),"wg2")
00086         self.assertEquals(get_param("/wga/wg3/childparam"),"wg3")
00087         self.assertEquals(get_param("/wga/wg/wg4/childparam"),"wg4")
00088         self.assertEquals(get_param("/wga/wg/wg4/wg5/childparam"),"wg5")          
00089         # test second-level group
00090         self.assertEquals(get_param("/wga/wgb/wg/childparam"),"bwg")
00091         self.assertEquals(get_param("/wga/wgb/wg2/childparam"),"bwg2")
00092         self.assertEquals(get_param("/wga/wgb/wg3/childparam"),"bwg3")
00093         self.assertEquals(get_param("/wga/wgb/wg/wg4/childparam"),"bwg4")
00094         self.assertEquals(get_param("/wga/wgb/wg/wg4/wg5/childparam"),"bwg5")
00095         # test unscoped group
00096         self.assertEquals(get_param("/wgc/childparam"),"wg")
00097         self.assertEquals(get_param("/wgc2/childparam"),"wg2")
00098         self.assertEquals(get_param("/wgc3/childparam"),"wg3")
00099         self.assertEquals(get_param("/wgc/wg4/childparam"),"wg4")
00100         self.assertEquals(get_param("/wgc/wg4/wg5/childparam"),"wg5")          
00101         
00102     ## test 'command' attribute
00103     def test_commandandfile(self):
00104         dir = rospkg.RosPack().get_path('roslaunch')
00105         with open(os.path.join(dir, 'resources', 'example.launch'), 'r') as f:
00106             data = f.read()
00107         test_file = data
00108         self.assertEquals(get_param("commandoutput"),test_file)
00109         self.assertEquals(get_param("textfile"),test_file)
00110         ## test 'binfile' attribute
00111         bindata = get_param("binaryfile")
00112         self.assertTrue(isinstance(bindata, xmlrpclib.Binary))
00113         self.assertEquals(bindata.data,test_file)
00114     
00115 if __name__ == '__main__':
00116     rostest.rosrun(PKG, sys.argv[0], TestParamsBasic, sys.argv)
00117     


test_roslaunch
Author(s): Ken Conley
autogenerated on Mon Oct 6 2014 11:47:02