mirror of
https://github.com/SpaceVim/SpaceVim.git
synced 2025-02-03 22:10:05 +08:00
193 lines
2.7 KiB
Python
Vendored
193 lines
2.7 KiB
Python
Vendored
"""
|
|
Test Jedi's operation understanding. Jedi should understand simple additions,
|
|
multiplications, etc.
|
|
"""
|
|
# -----------------
|
|
# numbers
|
|
# -----------------
|
|
x = [1, 'a', 1.0]
|
|
|
|
#? int() str() float()
|
|
x[12]
|
|
|
|
#? float()
|
|
x[1 + 1]
|
|
|
|
index = 0 + 1
|
|
|
|
#? str()
|
|
x[index]
|
|
|
|
#? int()
|
|
x[1 + (-1)]
|
|
|
|
def calculate(number):
|
|
return number + constant
|
|
|
|
constant = 1
|
|
|
|
#? float()
|
|
x[calculate(1)]
|
|
|
|
def calculate(number):
|
|
return number + constant
|
|
|
|
# -----------------
|
|
# strings
|
|
# -----------------
|
|
|
|
x = 'upp' + 'e'
|
|
|
|
#? str.upper
|
|
getattr(str, x + 'r')
|
|
|
|
a = "a"*3
|
|
#? str()
|
|
a
|
|
a = 3 * "a"
|
|
#? str()
|
|
a
|
|
|
|
a = 3 * "a"
|
|
#? str()
|
|
a
|
|
|
|
#? int()
|
|
(3 ** 3)
|
|
#? int()
|
|
(3 ** 'a')
|
|
#? int()
|
|
(3 + 'a')
|
|
#? bool()
|
|
(3 == 'a')
|
|
#? bool()
|
|
(3 >= 'a')
|
|
|
|
class X():
|
|
foo = 2
|
|
#? int()
|
|
(X.foo ** 3)
|
|
|
|
# -----------------
|
|
# assignments
|
|
# -----------------
|
|
|
|
x = [1, 'a', 1.0]
|
|
|
|
i = 0
|
|
i += 1
|
|
i += 1
|
|
#? float()
|
|
x[i]
|
|
|
|
i = 1
|
|
i += 1
|
|
i -= 3
|
|
i += 1
|
|
#? int()
|
|
x[i]
|
|
|
|
# -----------------
|
|
# in
|
|
# -----------------
|
|
|
|
if 'X' in 'Y':
|
|
a = 3
|
|
else:
|
|
a = ''
|
|
# For now don't really check for truth values. So in should return both
|
|
# results.
|
|
#? str() int()
|
|
a
|
|
|
|
if 'X' not in 'Y':
|
|
b = 3
|
|
else:
|
|
b = ''
|
|
# For now don't really check for truth values. So in should return both
|
|
# results.
|
|
#? str() int()
|
|
b
|
|
|
|
# -----------------
|
|
# for flow assignments
|
|
# -----------------
|
|
|
|
class FooBar(object):
|
|
fuu = 0.1
|
|
raboof = 'fourtytwo'
|
|
|
|
# targets should be working
|
|
target = ''
|
|
for char in ['f', 'u', 'u']:
|
|
target += char
|
|
#? float()
|
|
getattr(FooBar, target)
|
|
|
|
# github #24
|
|
target = u''
|
|
for char in reversed(['f', 'o', 'o', 'b', 'a', 'r']):
|
|
target += char
|
|
|
|
#? str()
|
|
getattr(FooBar, target)
|
|
|
|
|
|
# -----------------
|
|
# repetition problems -> could be very slow and memory expensive - shouldn't
|
|
# be.
|
|
# -----------------
|
|
|
|
b = [str(1)]
|
|
l = list
|
|
for x in [l(0), l(1), l(2), l(3), l(4), l(5), l(6), l(7), l(8), l(9), l(10),
|
|
l(11), l(12), l(13), l(14), l(15), l(16), l(17), l(18), l(19), l(20),
|
|
l(21), l(22), l(23), l(24), l(25), l(26), l(27), l(28), l(29)]:
|
|
b += x
|
|
|
|
#? str()
|
|
b[1]
|
|
|
|
|
|
# -----------------
|
|
# undefined names
|
|
# -----------------
|
|
a = foobarbaz + 'hello'
|
|
|
|
#? int() float()
|
|
{'hello': 1, 'bar': 1.0}[a]
|
|
|
|
# -----------------
|
|
# stubs
|
|
# -----------------
|
|
|
|
from datetime import datetime, timedelta
|
|
|
|
#?
|
|
(datetime - timedelta)
|
|
#? datetime()
|
|
(datetime() - timedelta())
|
|
#? timedelta()
|
|
(datetime() - datetime())
|
|
#? timedelta()
|
|
(timedelta() - datetime())
|
|
#? timedelta()
|
|
(timedelta() - timedelta())
|
|
|
|
# -----------------
|
|
# magic methods
|
|
# -----------------
|
|
|
|
class C:
|
|
def __sub__(self, other) -> int: ...
|
|
def __radd__(self, other) -> float: ...
|
|
|
|
#? int()
|
|
(C() - object())
|
|
#? C() object()
|
|
(object() - C())
|
|
#? C() object()
|
|
(C() + object())
|
|
#? float()
|
|
(object() + C())
|