movee(モビー) オノデラのブログ

(株)movee代表。週末は自社サービスを作っています。

Ticket Class Test Case

チケットクラスのテストコードのサンプル

Test Code

function testTotalTicketsInitialization() {
    $ticketSystem = new Ticket(10);
    assertSame($ticketSystem->getTotalTickets(), 10, "Total tickets initialization");
}

function testRemainingTicketsInitialization() {
    $ticketSystem = new Ticket(10);
    assertSame($ticketSystem->getRemainingTickets(), 10, "Remaining tickets initialization");
}

function testTicketInstance() {
    $ticketSystem = new Ticket(10);
    assertInstanceOf($ticketSystem, 'Ticket', "Ticket instance check");
}

function testBuyTicketSuccess() {
    $ticketSystem = new Ticket(10);
    assertSame($ticketSystem->buyTicket(), true, "Buy ticket success");
}

function testRemainingTicketsAfterPurchase() {
    $ticketSystem = new Ticket(10);
    $ticketSystem->buyTicket();
    assertSame($ticketSystem->getRemainingTickets(), 9, "Remaining tickets after purchase");
}

function testBuyTicketAtMaxCapacity() {
    $ticketSystem = new Ticket(10);
    for ($i = 0; $i < 9; $i++) {
        $ticketSystem->buyTicket();
    }
    assertSame($ticketSystem->buyTicket(), true, "Buy ticket success at max capacity");
}

function testRemainingTicketsAfterMaxCapacityPurchase() {
    $ticketSystem = new Ticket(10);
    for ($i = 0; $i < 10; $i++) {
        $ticketSystem->buyTicket();
    }
    assertSame($ticketSystem->getRemainingTickets(), 0, "Remaining tickets after max capacity purchase");
}

function testBuyTicketWhenSoldOut() {
    $ticketSystem = new Ticket(10);
    for ($i = 0; $i < 10; $i++) {
        $ticketSystem->buyTicket();
    }
    assertSame($ticketSystem->buyTicket(), false, "Buy ticket failure when sold out");
}

function testRemainingTicketsAfterSoldOut() {
    $ticketSystem = new Ticket(10);
    for ($i = 0; $i < 10; $i++) {
        $ticketSystem->buyTicket();
    }
    $ticketSystem->buyTicket();
    assertSame($ticketSystem->getRemainingTickets(), 0, "Remaining tickets after sold out");
}