from solution import Seat
def test_lock_ownership():
print("Running lock ownership tests...")
seat = Seat("E1", lock_duration=5)
assert seat.lock(10, "user1") is True
assert seat.lock(11, "user2") is False
print("✅ Lock ownership tests passed")
def test_booking_by_owner_only():
print("Running booking ownership tests...")
seat = Seat("E2", lock_duration=5)
seat.lock(10, "user1")
assert seat.book(12, "user2") is False
assert seat.book(12, "user1") is True
assert seat.get_state() == "BOOKED"
print("✅ Booking ownership tests passed")
def test_force_unlock():
print("Running force unlock tests...")
seat = Seat("E3", lock_duration=5)
seat.lock(10, "user1")
assert seat.force_unlock("user2") is False
assert seat.force_unlock("user1") is True
assert seat.get_state() == "FREE"
print("✅ Force unlock tests passed")
def test_expiry_ignores_owner():
print("Running expiry ignores ownership tests...")
seat = Seat("E4", lock_duration=5)
seat.lock(10, "user1")
assert seat.unlock_if_expired(16) is True
assert seat.get_state() == "FREE"
print("✅ Expiry tests passed")
def test_no_actions_after_booked():
print("Running booked state tests...")
seat = Seat("E5", lock_duration=5)
seat.lock(10, "user1")
seat.book(12, "user1")
assert seat.force_unlock("user1") is False
assert seat.unlock_if_expired(20) is False
assert seat.lock(21, "user2") is False
print("✅ Booked state tests passed")
if __name__ == "__main__":
test_lock_ownership()
test_booking_by_owner_only()
test_force_unlock()
test_expiry_ignores_owner()
test_no_actions_after_booked()
print("\n🎉 ALL DAY 9 EXTENSION TESTS PASSED SUCCESSFULLY")