def test_str_literal(self): self.assertEqual('foo', Expression('"foo"').evaluate({})) self.assertEqual('foo', Expression('"""foo"""').evaluate({})) self.assertEqual(u'foo'.encode('utf-8'), Expression(wrapped_bytes("b'foo'")).evaluate({})) self.assertEqual('foo', Expression("'''foo'''").evaluate({})) self.assertEqual('foo', Expression("u'foo'").evaluate({})) self.assertEqual('foo', Expression("r'foo'").evaluate({}))
def test_str_literal_non_ascii(self): expr = Expression(u"u'\xfe'") self.assertEqual(u'þ', expr.evaluate({})) expr = Expression("u'\xfe'") self.assertEqual(u'þ', expr.evaluate({})) # On Python2 strings are converted to unicode if they contained # non-ASCII characters. # On Py3k, we have no need to do this as non-prefixed strings aren't # raw. expr = Expression(wrapped_bytes(r"b'\xc3\xbe'")) if IS_PYTHON2: self.assertEqual(u'þ', expr.evaluate({})) else: self.assertEqual(u'þ'.encode('utf-8'), expr.evaluate({}))