public class OrderServiceTest {
public static void main(String[] args) {
OrderService service = new InMemoryOrderService();
service.createOrder("o1", 100);
assert service.getOrderState("o1") == OrderState.CREATED;
boolean paid = service.processPayment("o1");
if (paid) {
assert service.getOrderState("o1") == OrderState.PAID;
assert service.fulfillOrder("o1");
assert service.getOrderState("o1") == OrderState.FULFILLED;
} else {
assert service.getOrderState("o1") == OrderState.PAYMENT_FAILED;
assert !service.fulfillOrder("o1");
}
// Idempotency
assert !service.processPayment("o1");
assert !service.fulfillOrder("o1");
System.out.println("✅ OrderService tests passed");
}
}