Skip to content

Commit 4c6cb47

Browse files
authored
Add more concatenation tests (python#71)
1 parent 58b7e5c commit 4c6cb47

File tree

1 file changed

+49
-0
lines changed

1 file changed

+49
-0
lines changed

Lib/test/test_tstring.py

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -333,6 +333,55 @@ def test_literal_concatenation(self):
333333
self.assertEqual(t.interpolations[0].format_spec, "")
334334
self.assertEqual(f(t), "Hello, Pythonand welcome!")
335335

336+
# Test concatenation with Unicode literal
337+
name = "Python"
338+
t = t"Hello, {name}" u"and welcome!"
339+
self.assertEqual(t.strings, ("Hello, ", "and welcome!"))
340+
self.assertEqual(t.interpolations[0].value, name)
341+
self.assertEqual(t.interpolations[0].expression, "name")
342+
self.assertEqual(t.interpolations[0].conversion, None)
343+
self.assertEqual(t.interpolations[0].format_spec, "")
344+
self.assertEqual(f(t), "Hello, Pythonand welcome!")
345+
346+
# Test concatenation with f-string literal
347+
tab = '\t'
348+
t = t"Tab: {tab}. " f"f-tab: {tab}."
349+
self.assertEqual(t.strings, ("Tab: ", ". f-tab: \t."))
350+
self.assertEqual(t.interpolations[0].value, tab)
351+
self.assertEqual(t.interpolations[0].expression, "tab")
352+
self.assertEqual(t.interpolations[0].conversion, None)
353+
self.assertEqual(t.interpolations[0].format_spec, "")
354+
self.assertEqual(f(t), "Tab: \t. f-tab: \t.")
355+
356+
# Test concatenation with raw string literal
357+
tab = '\t'
358+
t = t"Tab: {tab}. " r"Raw tab: \t."
359+
self.assertEqual(t.strings, ("Tab: ", r". Raw tab: \t."))
360+
self.assertEqual(t.interpolations[0].value, tab)
361+
self.assertEqual(t.interpolations[0].expression, "tab")
362+
self.assertEqual(t.interpolations[0].conversion, None)
363+
self.assertEqual(t.interpolations[0].format_spec, "")
364+
self.assertEqual(f(t), "Tab: \t. Raw tab: \\t.")
365+
366+
# Test concatenation with raw f-string literal
367+
tab = '\t'
368+
t = t"Tab: {tab}. " rf"f-tab: {tab}. Raw tab: \t."
369+
self.assertEqual(t.strings, ("Tab: ", ". f-tab: \t. Raw tab: \\t."))
370+
self.assertEqual(t.interpolations[0].value, tab)
371+
self.assertEqual(t.interpolations[0].expression, "tab")
372+
self.assertEqual(t.interpolations[0].conversion, None)
373+
self.assertEqual(t.interpolations[0].format_spec, "")
374+
self.assertEqual(f(t), "Tab: \t. f-tab: \t. Raw tab: \\t.")
375+
376+
what = 't'
377+
expected_msg = 'cannot mix bytes and nonbytes literals'
378+
for case in (
379+
"t'{what}-string literal' b'bytes literal'",
380+
"t'{what}-string literal' br'raw bytes literal'",
381+
):
382+
with self.assertRaisesRegex(SyntaxError, expected_msg):
383+
eval(case)
384+
336385
def test_triple_quoted(self):
337386
# Test triple-quoted t-strings
338387
t = t"""

0 commit comments

Comments
 (0)