Add __mod__ operator to UntypedAtomic class

This commit is contained in:
Davide Brunato 2019-08-04 07:33:41 +02:00
parent aeba3aab05
commit 3f50cfd962
3 changed files with 12 additions and 2 deletions

View File

@ -1001,6 +1001,9 @@ class UntypedAtomic(object):
def __abs__(self):
return abs(self.value)
def __mod__(self, other):
return operator.mod(*self._get_operands(other))
if PY3:
def __str__(self):
return str(self.value)

View File

@ -449,11 +449,11 @@ def evaluate(self, context=None):
if varname in self.parser.variables:
return self.parser.variables[varname]
elif context is None:
return None
return
elif varname in context.variables:
return context.variables[varname]
elif isinstance(context, XPathSchemaContext):
return None
return
else:
raise ElementPathNameError('unknown variable', token=self)

View File

@ -97,6 +97,13 @@ class UntypedAtomicTest(unittest.TestCase):
self.assertEqual(9.0 / UntypedAtomic('3'), 3.0)
self.assertEqual(UntypedAtomic('15') * UntypedAtomic('4'), 60)
def test_abs(self):
self.assertEqual(abs(UntypedAtomic(-10)), 10)
def test_mod(self):
self.assertEqual(UntypedAtomic(1) % 2, 1)
self.assertEqual(UntypedAtomic('1') % 2, 1.0)
class DateTimeTypesTest(unittest.TestCase):