Merge pull request #14 from OverloadUT/fix-command-formatting

Fix for commands that need to be CamelCased
This commit is contained in:
William Pietri
2017-12-09 13:16:33 -08:00
committed by GitHub
2 changed files with 24 additions and 8 deletions
+10 -8
View File
@@ -195,6 +195,7 @@ class VacBot(ClientXMPP):
def send_command(self, xml):
c = self.wrap_command(xml)
logging.debug('Sending command {0}'.format(c))
c.send()
def wrap_command(self, ctl):
@@ -228,7 +229,7 @@ class VacBot(ClientXMPP):
class VacBotCommand:
def __init__(self, name, args, wait=None, terminal=False):
def __init__(self, name, args=None, wait=None, terminal=False):
self.name = name
self.args = args
self.wait = wait
@@ -240,9 +241,10 @@ class VacBotCommand:
time.sleep(self.wait)
def to_xml(self):
ctl = ET.Element('ctl', {'td': self.name.capitalize()})
inner = ET.Element(self.name, self.args)
ctl.append(inner)
ctl = ET.Element('ctl', {'td': self.name})
if self.args:
inner = ET.Element(self.name.lower(), self.args)
ctl.append(inner)
return ctl
def __str__(self, *args, **kwargs):
@@ -254,17 +256,17 @@ class VacBotCommand:
class Clean(VacBotCommand):
def __init__(self, wait):
super().__init__('clean', {'type': 'auto', 'speed': 'standard'}, wait)
super().__init__('Clean', {'type': 'auto', 'speed': 'standard'}, wait)
class Edge(VacBotCommand):
def __init__(self, wait):
super().__init__('clean', {'type': 'border', 'speed': 'strong'}, wait)
super().__init__('Clean', {'type': 'border', 'speed': 'strong'}, wait)
class Charge(VacBotCommand):
def __init__(self):
super().__init__('charge', {'type': 'go'}, terminal=True)
super().__init__('Charge', {'type': 'go'}, terminal=True)
def wait_for_completion(self, bot):
logging.debug("waiting in " + self.name)
@@ -276,7 +278,7 @@ class Charge(VacBotCommand):
class Stop(VacBotCommand):
def __init__(self):
super().__init__('clean', {'type': 'stop', 'speed': 'standard'}, terminal=True)
super().__init__('Clean', {'type': 'stop', 'speed': 'standard'}, terminal=True)
def wait_for_completion(self, bot):
logging.debug("waiting in " + self.name)
+14
View File
@@ -10,6 +10,20 @@ from sucks import *
# the library's design and its multithreaded nature, and b) I'm manually testing every change anyhow,
# as it's not clear how the robot really behaves.
def test_custom_command():
# Ensure a custom-built command generates the expected XML payload
c = VacBotCommand('CustomCommand', {'type': 'customtype'})
assert_equals(ElementTree.tostring(c.to_xml()),
b'<ctl td="CustomCommand"><customcommand type="customtype" /></ctl>')
def test_custom_command_noargs():
# Ensure a custom-built command with no args generates XML without an args element
c = VacBotCommand('CustomCommand')
assert_equals(ElementTree.tostring(c.to_xml()),
b'<ctl td="CustomCommand" />')
def test_clean_command():
c = Clean(10)
assert_equals(c.terminal, False)