Files
mir_amr/navigations/geographic_info/geodesy/tests/test_props.py
2026-05-28 10:29:58 +07:00

77 lines
2.3 KiB
Python
Executable File

#!/usr/bin/env python
import sys
import unittest
from geodesy.props import * # module being tested
from geographic_msgs.msg import KeyValue
from geographic_msgs.msg import MapFeature
from geographic_msgs.msg import RouteSegment
from geographic_msgs.msg import WayPoint
class TestPythonProps(unittest.TestCase):
"""Unit tests for Python KeyValue property handling.
"""
def test_empty_feature_match(self):
f = MapFeature()
self.assertEqual(match(f, set(['no', 'such', 'property'])), None)
def test_empty_property_set(self):
f = MapFeature()
put(f, 'valid', 'any')
self.assertEqual(match(f, set()), None)
def test_feature_match(self):
f = MapFeature()
put(f, 'different')
put(f, 'valid', 'any')
prop = match(f, set(['a', 'valid', 'property']))
self.assertNotEqual(prop, None)
self.assertEqual(prop, ('valid', 'any'))
k, v = prop
self.assertEqual(k, 'valid')
self.assertEqual(v, 'any')
def test_empty_waypoint_match(self):
p = WayPoint()
self.assertEqual(match(p, set(['nothing', 'defined'])), None)
def test_waypoint_match(self):
p = WayPoint()
put(p, 'another', 'anything')
put(p, 'name', 'myself')
prop = match(p, set(['name']))
self.assertNotEqual(prop, None)
k, v = prop
self.assertEqual(k, 'name')
self.assertEqual(v, 'myself')
def test_segment_value_change(self):
s = RouteSegment()
put(s, 'another', 'anything')
put(s, 'name', 'myself')
self.assertEqual(get(s, 'name'), 'myself')
put(s, 'name', 'alias')
self.assertEqual(get(s, 'name'), 'alias')
def test_segment_null_value(self):
s = RouteSegment()
put(s, 'another', 'anything')
put(s, 'name')
self.assertEqual(get(s, 'name'), '')
put(s, 'name', 'myself')
self.assertEqual(get(s, 'name'), 'myself')
def test_invalid_key_set(self):
f = MapFeature()
put(f, 'notset', 'any')
self.assertEqual(get(f, 'notset'), 'any')
self.assertRaises(ValueError, match, f, 'notset')
if __name__ == '__main__':
import rosunit
PKG='geodesy'
rosunit.unitrun(PKG, 'test_uuid_py', TestPythonProps)