Skip to content

Commit

Permalink
Merge pull request #72 from otamachan/color-and-texture-are-optional
Browse files Browse the repository at this point in the history
Color and texture in link material are optional
  • Loading branch information
jacquelinekay committed Feb 4, 2016
2 parents 07bdda0 + 6f1ffde commit 0d809e8
Show file tree
Hide file tree
Showing 3 changed files with 41 additions and 2 deletions.
2 changes: 1 addition & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ compiler:
script: "./.travis/build"
before_install:
- sudo apt-get update -qq
- sudo apt-get install -qq libboost-system-dev libboost-thread-dev libboost-test-dev libtinyxml-dev python-yaml
- sudo apt-get install -qq libboost-system-dev libboost-thread-dev libboost-test-dev libtinyxml-dev python-yaml python-mock
matrix:
allow_failures:
- compiler: clang
5 changes: 4 additions & 1 deletion urdf_parser_py/src/urdf_parser_py/urdf.py
Original file line number Diff line number Diff line change
Expand Up @@ -169,6 +169,9 @@ def check_valid(self):
xmlr.Element('texture', Texture, False)
])

class LinkMaterial(Material):
def check_valid(self):
pass

class Visual(xmlr.Object):
def __init__(self, geometry = None, material = None, origin = None):
Expand All @@ -179,7 +182,7 @@ def __init__(self, geometry = None, material = None, origin = None):
xmlr.reflect(Visual, params = [
origin_element,
xmlr.Element('geometry', 'geometric'),
xmlr.Element('material', Material, False)
xmlr.Element('material', LinkMaterial, False)
])


Expand Down
36 changes: 36 additions & 0 deletions urdf_parser_py/test/test_urdf.py
Original file line number Diff line number Diff line change
@@ -1,11 +1,17 @@
from __future__ import print_function

import unittest
import mock
from xml.dom import minidom
from xml_matching import xml_matches
from urdf_parser_py import urdf

class ParseException(Exception):
pass

class TestURDFParser(unittest.TestCase):
@mock.patch('urdf_parser_py.xml_reflection.on_error',
mock.Mock(side_effect=ParseException))
def parse(self, xml):
return urdf.Robot.from_xml_string(xml)

Expand Down Expand Up @@ -97,6 +103,36 @@ def test_old_transmission(self):
</robot>'''
self.parse_and_compare(xml)

def test_link_material_missing_color_and_texture(self):
xml = '''<?xml version="1.0"?>
<robot name="test">
<link name="link">
<visual>
<geometry>
<cylinder length="1" radius="1"/>
</geometry>
<material name="mat"/>
</visual>
</link>
</robot>'''
self.parse_and_compare(xml)

def test_robot_material(self):
xml = '''<?xml version="1.0"?>
<robot name="test">
<material name="mat">
<color rgba="0.0 0.0 0.0 1.0"/>
</material>
</robot>'''
self.parse_and_compare(xml)

def test_robot_material_missing_color_and_texture(self):
xml = '''<?xml version="1.0"?>
<robot name="test">
<material name="mat"/>
</robot>'''
self.assertRaises(ParseException, self.parse, xml)


if __name__ == '__main__':
unittest.main()

0 comments on commit 0d809e8

Please sign in to comment.