commit
f1c13749a8
@ -1,14 +1,93 @@
|
||||
x:int = 1
|
||||
x:int = 2
|
||||
# class defs
|
||||
class A_CLASS(object):
|
||||
a_class_i:int = 0
|
||||
def __init__(self:"A_CLASS", x:int):
|
||||
self.x = x
|
||||
|
||||
x
|
||||
# Bad, self param is missing
|
||||
def add(y:int) -> int:
|
||||
y = y+self.x
|
||||
return y
|
||||
|
||||
def fun_1() -> bool:
|
||||
if True:
|
||||
if True:
|
||||
class B_CLASS(object):
|
||||
b_class_i:int = 0
|
||||
|
||||
class C_CLASS(B_CLASS):
|
||||
pass
|
||||
|
||||
# Bad, duplicate class def
|
||||
class A_CLASS(object):
|
||||
pass
|
||||
|
||||
# Bad, E_CLASS is not declared
|
||||
class D_CLASS(E_CLASS):
|
||||
pass
|
||||
|
||||
|
||||
# var defs
|
||||
a_s:str = "a_s"
|
||||
b_s:str = "b_s"
|
||||
c_s:str = "c_s"
|
||||
|
||||
a_i:int = 0
|
||||
b_i:int = 0
|
||||
c_i:int = 0
|
||||
|
||||
a_b:bool = False
|
||||
b_b:bool = False
|
||||
c_b:bool = False
|
||||
|
||||
a_list:[int] = None
|
||||
b_list:[int] = None
|
||||
c_list:[int] = None
|
||||
|
||||
a_class:A_CLASS = None
|
||||
b_class:B_CLASS = None
|
||||
c_class:C_CLASS = None
|
||||
|
||||
|
||||
# fun defs
|
||||
def f_1() -> object:
|
||||
def f_f_1() -> object:
|
||||
# a_s:int = 0 Fails if we uncomment this line
|
||||
global a_s # Bad, duplicate declarion
|
||||
print(a_s)
|
||||
pass
|
||||
pass
|
||||
|
||||
def f_2() -> object:
|
||||
f_a_s:str = "s"
|
||||
def f_f_2() -> object:
|
||||
nonlocal f_a_s
|
||||
print(f_a_s)
|
||||
pass
|
||||
pass
|
||||
|
||||
def f_3(x:int) -> bool:
|
||||
f_b_s:int = 3
|
||||
if (x + f_b_s > 3):
|
||||
return True
|
||||
# All path should return, not just one
|
||||
elif (x + f_b_s == 3):
|
||||
print("Equal") # Bad, this path should return
|
||||
return False
|
||||
|
||||
def f_4() -> object:
|
||||
f_a_i:int = 2
|
||||
a_i = f_a_i + 1 # Bad, cant assign to a_i without declaring it as global or nonlocal
|
||||
return f_a_i
|
||||
|
||||
# NEGATIVE TEST CASES - SEMANTIC
|
||||
# Bad, f_2 cannot be redefined in the same scope
|
||||
def f_2() -> object:
|
||||
pass
|
||||
|
||||
# Bad, print cannot be redefined in the same scope
|
||||
def print(val:object) -> object:
|
||||
pass
|
||||
|
||||
# Bad, a_i cannot be redefined in the same scope
|
||||
a_i:int = 2
|
||||
|
||||
fun_1()
|
||||
# Bad return
|
||||
return a_i
|
||||
|
||||
|
@ -1,83 +1,109 @@
|
||||
# Below this point we have all the same test cases from PA1 for validation purposes.
|
||||
class Foo(object):
|
||||
x:int = 0
|
||||
|
||||
def __init__(self:"Foo", x:int):
|
||||
# class defs
|
||||
class A_CLASS(object):
|
||||
a_class_i:int = 0
|
||||
def __init__(self:"A_CLASS", x:int):
|
||||
self.x = x
|
||||
|
||||
def bar(y:int):
|
||||
print("Hello World!",self.x+y)
|
||||
y = 10
|
||||
|
||||
def get_stones(name:str)->str:
|
||||
def map_name(nm:str)->str:
|
||||
return stones[color.index(nm)]
|
||||
color=["Red","Blue"]
|
||||
stones=["Mind","Soul"]
|
||||
return map_name(name)
|
||||
|
||||
def funa():
|
||||
def funb():
|
||||
print("Hello")
|
||||
funb()
|
||||
|
||||
def fund():
|
||||
def fune():
|
||||
print("Hello")
|
||||
c = 4 + 5
|
||||
|
||||
def funf():
|
||||
def fung():
|
||||
print("Hello")
|
||||
c = 6
|
||||
c = 4 + 5
|
||||
|
||||
|
||||
if True:
|
||||
if True:
|
||||
if True:
|
||||
print("Hello")
|
||||
print("World")
|
||||
|
||||
if True:
|
||||
if True:
|
||||
if True:
|
||||
print("Hello")
|
||||
print("World")
|
||||
|
||||
if True:
|
||||
if True:
|
||||
if True:
|
||||
print("Hello")
|
||||
print("World")
|
||||
|
||||
if True:
|
||||
if True:
|
||||
if True:
|
||||
print("Hello")
|
||||
else:
|
||||
print("World")
|
||||
|
||||
if True:
|
||||
if True:
|
||||
if True:
|
||||
print("Hello")
|
||||
else:
|
||||
print("World")
|
||||
|
||||
|
||||
|
||||
f = Foo(1)
|
||||
print(f.x)
|
||||
f.bar(4)
|
||||
|
||||
a=[[[1],[2]],[[3],[4]]]
|
||||
print(a[0][0][1]*a[1][1][0])
|
||||
|
||||
multiline_string="Hi World,\
|
||||
Here I am"
|
||||
|
||||
expr_precedence = -a + b * (c + d)
|
||||
|
||||
stone="Blue"
|
||||
print(get_stones(stone))
|
||||
def add(self:"A_CLASS", y:int) -> int:
|
||||
y = y+self.x
|
||||
return y
|
||||
|
||||
class B_CLASS(object):
|
||||
b_class_i:int = 0
|
||||
|
||||
class C_CLASS(B_CLASS):
|
||||
pass
|
||||
|
||||
# var defs
|
||||
a_s:str = "a_s"
|
||||
b_s:str = "b_s"
|
||||
c_s:str = "c_s"
|
||||
|
||||
a_i:int = 0
|
||||
b_i:int = 0
|
||||
c_i:int = 0
|
||||
|
||||
a_b:bool = False
|
||||
b_b:bool = False
|
||||
c_b:bool = False
|
||||
|
||||
a_list:[int] = None
|
||||
b_list:[int] = None
|
||||
c_list:[int] = None
|
||||
|
||||
a_class:A_CLASS = None
|
||||
b_class:B_CLASS = None
|
||||
c_class:C_CLASS = None
|
||||
|
||||
|
||||
# fun defs
|
||||
def f_1() -> object:
|
||||
def f_f_1() -> object:
|
||||
global a_s
|
||||
print(a_s)
|
||||
pass
|
||||
pass
|
||||
|
||||
def f_2() -> object:
|
||||
f_a_s:str = "s"
|
||||
def f_f_2() -> object:
|
||||
nonlocal f_a_s
|
||||
print(f_a_s)
|
||||
pass
|
||||
pass
|
||||
|
||||
def f_3(x:int) -> int:
|
||||
f_b_s:int = 3
|
||||
return x*f_b_s
|
||||
|
||||
# Declarations
|
||||
a_list = [1, 2, 3]
|
||||
b_list = [0, 0, 0]
|
||||
c_list = [-1, -2, -3]
|
||||
|
||||
a_class = A_CLASS(5)
|
||||
b_class = B_CLASS()
|
||||
c_class = C_CLASS()
|
||||
|
||||
|
||||
# POSITIVE TEST CASES
|
||||
|
||||
#-------------------
|
||||
# String operations
|
||||
# String addition and assignment operations
|
||||
a_s = a_s + b_s
|
||||
print(a_s)
|
||||
|
||||
# Assigning to a string with string indexing operation
|
||||
c_s = a_s[0]
|
||||
print(c_s)
|
||||
|
||||
|
||||
# --------------------
|
||||
# Boolean operations
|
||||
a_b = a_i == b_i and not b_b
|
||||
print(a_b)
|
||||
|
||||
|
||||
# --------------------
|
||||
# List operations
|
||||
a_list = a_list + b_list
|
||||
c_i = a_list[0]
|
||||
a_list[1] = 2
|
||||
|
||||
|
||||
# --------------------
|
||||
# function operations
|
||||
a_i = f_3(3) + 5
|
||||
f_1()
|
||||
f_2()
|
||||
|
||||
|
||||
# --------------------
|
||||
# class operations
|
||||
a_i = a_class.add(2)
|
||||
print(a_i)
|
||||
|
||||
|
||||
a_i = a_class.add(c_class.b_class_i)
|
||||
print(a_i)
|
||||
|
Loading…
Reference in new issue