-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathtest_fstring.py
More file actions
79 lines (53 loc) · 1.6 KB
/
test_fstring.py
File metadata and controls
79 lines (53 loc) · 1.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
"""
Test our 'implementation' of f-string behavior as seen in PEP 750.
"""
from string.templatelib import Template
import pytest
from .fstring import f
def test_empty():
template: Template = t""
assert f(template) == f""
def test_simple():
template: Template = t"hello"
assert f(template) == f"hello"
def test_only_interpolation():
template: Template = t"{42}"
assert f(template) == f"{42}"
def test_mixed():
v = 99
template: Template = t"hello{42}world{v}goodbye"
assert f(template) == f"hello{42}world{v}goodbye"
def test_conv_a():
template: Template = t"{'🎉'!a}"
assert f(template) == f"{'🎉'!a}"
def test_conv_r():
template: Template = t"{42!r}"
assert f(template) == f"{42!r}"
def test_conv_s():
template: Template = t"{42!s}"
assert f(template) == f"{42!s}"
def test_format_spec():
template: Template = t"{42:04d}"
assert f(template) == f"{42:04d}"
def test_format_spec_and_conv():
template: Template = t"{42!r:>8}"
assert f(template) == f"{42!r:>8}"
def test_pep_example():
name = "World"
value = 42.0
template: Template = t"Hello {name!r}, value: {value:.2f}"
assert f(template) == "Hello 'World', value: 42.00"
def test_raises_the_same_exception():
invalid_template: Template = t"{42!s:04d}"
try:
f(invalid_template)
except ValueError as e:
expected_message = str(e)
else:
assert False, "Expected ValueError"
try:
_ = f"{42!s:04d}"
except ValueError as e:
assert str(e) == expected_message
else:
assert False, "Expected ValueError"