GCC Code Coverage Report


Directory: ./
File: test/unit-tests/mocks/MockTicketService.h
Date: 2025-12-16 19:41:02
Exec Total Coverage
Lines: 34 44 77.3%
Functions: 7 9 77.8%
Branches: 16 28 57.1%

Line Branch Exec Source
1 #pragma once
2
3 #include "ITicketService.h"
4 #include <map>
5
6 /**
7 * @brief Mock ticket service for testing
8 *
9 * Controllable ticket service for unit tests.
10 */
11 class MockTicketService : public ITicketService {
12 public:
13 10 explicit MockTicketService(uint32_t capacity)
14 20 : m_capacity(capacity)
15 10 , m_nextTicketId(1) {}
16
17 10 [[nodiscard]] uint32_t getNewTicket() override {
18
1/2
✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
10 uint32_t activeCount = getActiveTicketCount();
19
1/2
✗ Branch 0 not taken.
✓ Branch 1 taken 10 times.
10 if (activeCount >= m_capacity) {
20 ✗ return 0; // Capacity reached
21 }
22
23 10 uint32_t ticketId = m_nextTicketId++;
24
1/2
✓ Branch 2 taken 10 times.
✗ Branch 3 not taken.
10 m_tickets[ticketId] = Ticket(ticketId, 0);
25 10 return ticketId;
26 }
27
28 3 bool payTicket(uint32_t ticketId) override {
29
1/2
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
3 auto it = m_tickets.find(ticketId);
30
1/2
✗ Branch 2 not taken.
✓ Branch 3 taken 3 times.
3 if (it == m_tickets.end()) {
31 ✗ return false;
32 }
33
34 3 it->second.isPaid = true;
35 3 it->second.paymentTimestamp = 123456; // Mock timestamp
36 3 return true;
37 }
38
39 2 bool validateAndUseTicket(uint32_t ticketId) override {
40
1/2
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
2 auto it = m_tickets.find(ticketId);
41
4/8
✓ Branch 2 taken 2 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 2 times.
✗ Branch 6 not taken.
✗ Branch 8 not taken.
✓ Branch 9 taken 2 times.
✗ Branch 10 not taken.
✓ Branch 11 taken 2 times.
2 if (it == m_tickets.end() || it->second.isUsed || !it->second.isPaid) {
42 ✗ return false;
43 }
44
45 2 it->second.isUsed = true;
46 2 return true;
47 }
48
49 5 [[nodiscard]] bool getTicketInfo(uint32_t ticketId, Ticket& ticket) const override {
50
1/2
✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
5 auto it = m_tickets.find(ticketId);
51
2/2
✓ Branch 2 taken 4 times.
✓ Branch 3 taken 1 times.
5 if (it != m_tickets.end()) {
52 4 ticket = it->second;
53 4 return true;
54 }
55 1 return false;
56 }
57
58 17 [[nodiscard]] uint32_t getActiveTicketCount() const override {
59 17 uint32_t count = 0;
60
2/2
✓ Branch 7 taken 6 times.
✓ Branch 8 taken 17 times.
23 for (const auto& [id, ticket] : m_tickets) {
61
1/2
✓ Branch 0 taken 6 times.
✗ Branch 1 not taken.
6 if (!ticket.isUsed) {
62 6 count++;
63 }
64 }
65 17 return count;
66 }
67
68 5 [[nodiscard]] uint32_t getCapacity() const override {
69 5 return m_capacity;
70 }
71
72 ✗ void reset() override {
73 ✗ m_tickets.clear();
74 ✗ m_nextTicketId = 1;
75 ✗ }
76
77 ✗ void setCapacity(uint32_t capacity) override {
78 ✗ m_capacity = capacity;
79 ✗ }
80
81 private:
82 uint32_t m_capacity;
83 uint32_t m_nextTicketId;
84 std::map<uint32_t, Ticket> m_tickets;
85 };
86