SupyML: add test cases (on not yet implemented features)

master
Valentin Lorentz 2010-11-03 12:03:29 +01:00
parent 82db7e49ff
commit 0121d337f9
2 changed files with 26 additions and 5 deletions

View File

@ -96,6 +96,8 @@ class SupyMLParser:
return self._processLoop(node, proxify)
elif node.nodeName == 'if':
return self._processId(node, proxify)
elif node.nodeName == 'var':
return self._processVar(node, proxify)
output = node.nodeName + ' '
for childNode in node.childNodes:
if childNode.__class__ == minidom.Text:
@ -105,9 +107,11 @@ class SupyMLParser:
value = self._run(str(output), proxify)
return value
def _processLoop(self, node):
def _processLoop(self, node, proxify=True):
raise NotImplemented
def _processIf(self, node):
def _processIf(self, node, proxify=True):
raise NotImplemented
def _processVar(self, node, proxify=True):
raise NotImplemented
class SupyML(callbacks.Plugin):

View File

@ -32,7 +32,7 @@ import time
from supybot.test import *
class SupyMLTestCase(ChannelPluginTestCase):
plugins = ('SupyML', 'Utilities')
plugins = ('SupyML', 'Utilities', 'Conditional')
#################################
# Utilities
def _getIfAnswerIsEqual(self, msg):
@ -44,17 +44,34 @@ class SupyMLTestCase(ChannelPluginTestCase):
m = self.irc.takeMsg()
return False
_tell = '<tell><echo>ProgVal</echo> <echo>foo</echo></tell>'
def testBasic(self):
self.assertError('SupyML eval')
self.assertResponse('SupyML eval <echo>foo</echo>', 'foo')
msg = ircmsgs.privmsg(self.channel, '@SupyML eval %s' % self._tell,
msg = ircmsgs.privmsg(self.channel, '@SupyML eval ' \
'<tell><echo>ProgVal</echo> <echo>foo</echo></tell>',
prefix=self.prefix)
self.irc.feedMsg(msg)
answer = ircmsgs.IrcMsg(prefix="", command="PRIVMSG",
args=('ProgVal', 'test wants me to tell you: foo'))
self.failIf(self._getIfAnswerIsEqual(answer) == False)
def testNoMoreThanOneAnswer(self):
self.assertResponse('SupyML eval <echo><echo>foo</echo>'
'<echo>bar</echo></echo>',
'foobar')
def testVar(self):
self.assertResponse('SupyML eval <echo><var>foo<set>bar</set></var>'
'<echo><var>foo</var></echo></echo>',
'bar')
def testWhile(self):
self.assertResponse('SupyML eval <echo>'
'<var>foo<set>1</set></var>'
'<loop><while><nne><var>foo</var> 5</nne></while>'
'<echo>bar</echo></loop></echo>',
'bar'*5)
# vim:set shiftwidth=4 tabstop=4 expandtab textwidth=79: