Skip to content

Commit a18ea21

Browse files
authored
Create test_basics.py
1 parent 428fa22 commit a18ea21

1 file changed

Lines changed: 133 additions & 0 deletions

File tree

‎tests/test_basics.py‎

Lines changed: 133 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,133 @@
1+
"""Tests for basic Python functionality."""
2+
3+
import sys
4+
import io
5+
from contextlib import redirect_stdout
6+
7+
8+
def test_hello_world():
9+
"""Test that hello world script runs without errors."""
10+
# Just verify the file exists and can be imported conceptually
11+
assert True
12+
13+
14+
def test_variables_assignment():
15+
"""Test variable assignment works correctly."""
16+
name = "Python"
17+
age = 33
18+
assert name == "Python"
19+
assert age == 33
20+
21+
22+
def test_basic_arithmetic():
23+
"""Test basic arithmetic operations."""
24+
assert 10 + 3 == 13
25+
assert 10 - 3 == 7
26+
assert 10 * 3 == 30
27+
assert 10 / 2 == 5.0
28+
assert 10 // 3 == 3
29+
assert 10 % 3 == 1
30+
assert 2**3 == 8
31+
32+
33+
def test_string_operations():
34+
"""Test string operations."""
35+
text = "Hello, World!"
36+
assert text.lower() == "hello, world!"
37+
assert text.upper() == "HELLO, WORLD!"
38+
assert text.startswith("Hello")
39+
assert text.endswith("!")
40+
assert len(text) == 13
41+
42+
43+
def test_list_operations():
44+
"""Test list operations."""
45+
fruits = ["apple", "banana", "cherry"]
46+
assert len(fruits) == 3
47+
assert fruits[0] == "apple"
48+
assert fruits[-1] == "cherry"
49+
assert "banana" in fruits
50+
51+
fruits.append("date")
52+
assert len(fruits) == 4
53+
54+
fruits.remove("banana")
55+
assert "banana" not in fruits
56+
57+
58+
def test_dictionary_operations():
59+
"""Test dictionary operations."""
60+
person = {"name": "Alice", "age": 25}
61+
assert person["name"] == "Alice"
62+
assert person.get("age") == 25
63+
assert "name" in person
64+
65+
person["city"] = "New York"
66+
assert person["city"] == "New York"
67+
68+
69+
def test_conditional_logic():
70+
"""Test conditional logic."""
71+
x = 10
72+
if x > 5:
73+
result = "greater"
74+
else:
75+
result = "smaller"
76+
assert result == "greater"
77+
78+
79+
def test_loop_functionality():
80+
"""Test loop functionality."""
81+
numbers = []
82+
for i in range(5):
83+
numbers.append(i)
84+
assert numbers == [0, 1, 2, 3, 4]
85+
86+
# Test while loop
87+
count = 0
88+
while count < 3:
89+
count += 1
90+
assert count == 3
91+
92+
93+
def test_function_definition():
94+
"""Test function definition and calling."""
95+
96+
def add(a, b):
97+
return a + b
98+
99+
assert add(2, 3) == 5
100+
assert add(-1, 1) == 0
101+
102+
103+
def test_class_basic():
104+
"""Test basic class functionality."""
105+
106+
class SimpleClass:
107+
def __init__(self, value):
108+
self.value = value
109+
110+
def get_value(self):
111+
return self.value
112+
113+
obj = SimpleClass(42)
114+
assert obj.get_value() == 42
115+
116+
117+
def test_exception_handling():
118+
"""Test exception handling."""
119+
try:
120+
result = 10 / 0
121+
assert False, "Should have raised ZeroDivisionError"
122+
except ZeroDivisionError:
123+
pass # Expected
124+
125+
# Test with else and finally
126+
try:
127+
result = 10 / 2
128+
except ZeroDivisionError:
129+
assert False
130+
else:
131+
assert result == 5.0
132+
finally:
133+
pass # Always executes

0 commit comments

Comments
 (0)