90 lines
1.6 KiB
Python
90 lines
1.6 KiB
Python
# Test REPL paste mode functionality
|
|
|
|
# Basic paste mode with a simple function
|
|
{\x05}
|
|
def hello():
|
|
print('Hello from paste mode!')
|
|
hello()
|
|
{\x04}
|
|
|
|
# Paste mode with multiple indentation levels
|
|
{\x05}
|
|
def calculate(n):
|
|
if n > 0:
|
|
for i in range(n):
|
|
if i % 2 == 0:
|
|
print(f'Even: {i}')
|
|
else:
|
|
print(f'Odd: {i}')
|
|
else:
|
|
print('n must be positive')
|
|
|
|
calculate(5)
|
|
{\x04}
|
|
|
|
# Paste mode with blank lines
|
|
{\x05}
|
|
def function_with_blanks():
|
|
print('First line')
|
|
|
|
print('After blank line')
|
|
|
|
|
|
print('After two blank lines')
|
|
|
|
function_with_blanks()
|
|
{\x04}
|
|
|
|
# Paste mode with class definition and multiple methods
|
|
{\x05}
|
|
class TestClass:
|
|
def __init__(self, value):
|
|
self.value = value
|
|
|
|
def display(self):
|
|
print(f'Value is: {self.value}')
|
|
|
|
def double(self):
|
|
self.value *= 2
|
|
return self.value
|
|
|
|
obj = TestClass(21)
|
|
obj.display()
|
|
print(f'Doubled: {obj.double()}')
|
|
obj.display()
|
|
{\x04}
|
|
|
|
# Paste mode with exception handling
|
|
{\x05}
|
|
try:
|
|
x = 1 / 0
|
|
except ZeroDivisionError:
|
|
print('Caught division by zero')
|
|
finally:
|
|
print('Finally block executed')
|
|
{\x04}
|
|
|
|
# Cancel paste mode with Ctrl-C
|
|
{\x05}
|
|
print('This should not execute')
|
|
{\x03}
|
|
|
|
# Normal REPL still works after cancelled paste
|
|
print('Back to normal REPL')
|
|
|
|
# Paste mode with syntax error
|
|
{\x05}
|
|
def bad_syntax(:
|
|
print('Missing parameter')
|
|
{\x04}
|
|
|
|
# Paste mode with runtime error
|
|
{\x05}
|
|
def will_error():
|
|
undefined_variable
|
|
|
|
will_error()
|
|
{\x04}
|
|
|
|
# Final test to show REPL is still functioning
|
|
1 + 2 + 3
|