123 lines
2.3 KiB
Python
123 lines
2.3 KiB
Python
try:
|
|
'' % ()
|
|
except TypeError:
|
|
print("SKIP")
|
|
raise SystemExit
|
|
|
|
print("%%" % ())
|
|
print("=%s=" % 1)
|
|
print("=%s=%s=" % (1, 2))
|
|
print("=%s=" % (1,))
|
|
print("=%s=" % [1, 2])
|
|
|
|
print("=%s=" % "str")
|
|
print("=%r=" % "str")
|
|
|
|
# test calling __int__
|
|
class A:
|
|
def __int__(self):
|
|
return 123
|
|
print("%d" % A())
|
|
|
|
try:
|
|
print("=%s=%s=" % 1)
|
|
except TypeError:
|
|
print("TypeError")
|
|
|
|
try:
|
|
print("=%s=%s=%s=" % (1, 2))
|
|
except TypeError:
|
|
print("TypeError")
|
|
|
|
try:
|
|
print("=%s=" % (1, 2))
|
|
except TypeError:
|
|
print("TypeError")
|
|
|
|
print("%s" % True)
|
|
print("%s" % 1)
|
|
print("%.1s" % "ab")
|
|
|
|
print("%r" % True)
|
|
print("%r" % 1)
|
|
|
|
print("%c" % 48)
|
|
print("%c" % 'a')
|
|
print("%10s" % 'abc')
|
|
print("%-10s" % 'abc')
|
|
|
|
print('%c' % False)
|
|
print('%c' % True)
|
|
|
|
# Should be able to print dicts; in this case they aren't used
|
|
# to lookup keywords in formats like %(foo)s
|
|
print('%s' % {}) # dict treated as the single (positional) arg to %
|
|
print('%s' % ({},)) # dict is the first (and only) arg in the positional arg tuple
|
|
print('foo' % {}) # no error, dict treated as an empty map of named args
|
|
|
|
# Cases when "*" used and there's not enough values total
|
|
try:
|
|
print("%*s" % 5)
|
|
except TypeError:
|
|
print("TypeError")
|
|
try:
|
|
print("%*.*s" % (1, 15))
|
|
except TypeError:
|
|
print("TypeError")
|
|
|
|
print("%(foo)s" % {"foo": "bar", "baz": False})
|
|
print("%s %(foo)s %(foo)s" % {"foo": 1}) # dict consumed positionally, then used as map - ok
|
|
try:
|
|
print("%(foo)s %s %(foo)s" % {"foo": 1}) # used as map, then positionally - not enough args
|
|
except TypeError:
|
|
print("TypeError")
|
|
try:
|
|
print("%(foo)s" % {})
|
|
except KeyError:
|
|
print("KeyError")
|
|
# Using in "*" with dict got to fail
|
|
try:
|
|
print("%(foo)*s" % {"foo": "bar"})
|
|
except TypeError:
|
|
print("TypeError")
|
|
|
|
# When using %(foo)s format the single argument must be a dict
|
|
try:
|
|
'%(foo)s' % 1
|
|
except TypeError:
|
|
print('TypeError')
|
|
try:
|
|
'%(foo)s' % ({},)
|
|
except TypeError:
|
|
print('TypeError')
|
|
|
|
try:
|
|
'%(a' % {'a':1}
|
|
except ValueError:
|
|
print('ValueError')
|
|
|
|
try:
|
|
'%.*d %.*d' % (20, 5)
|
|
except TypeError:
|
|
print('TypeError')
|
|
|
|
try:
|
|
a = '%*' % 1
|
|
except (ValueError):
|
|
print('ValueError')
|
|
|
|
try:
|
|
'%c' % 'aa'
|
|
except TypeError:
|
|
print('TypeError')
|
|
|
|
try:
|
|
'%l' % 1
|
|
except ValueError:
|
|
print('ValueError')
|
|
|
|
try:
|
|
'a%' % 1
|
|
except ValueError:
|
|
print('ValueError')
|