unit tests
  • Установка Google Test
    • через VS 2022
  • Что тестировать как тестировать
    • Test Suites
  • Google Test примеры
  • Параметризация примеры
  • Функции expect и assert
    • EXPECT_*
  • Пример setUP() TearDown()
  • Тестирование производительности
  • Профилирование
    • ЦП Аналитика
    • Пример
  • пример тестирование записи в файл
  • 📚Tasks
    • Задание на повторение
    • Задание calculate_average
    • Задание
    • Задание 2
    • Задание 3
    • Задание Интеграционное тестирование
    • Задание 4 треугольник интеграция
    • Задание кошелек
    • Кошелек интеграция
    • Задачи профилирование
    • Задание Task
  • Пример
Powered by GitBook
On this page
  1. Tasks

Задание кошелек

Напишите тесты для данного класса при помощи googletest. А также напишите отчет о тестирование сколько успешных тестов, сколько неуспешных и т.д.

  1. Пользователь создает объект класса Wallet, указывая начальный баланс (по умолчанию 0).

  2. Пользователь может добавлять деньги на счет, используя метод add_cash(amount), где amount - сумма для добавления.

  3. Пользователь может расходовать деньги со счета, используя метод spend_cash(spend_sum), где spend_sum - сумма для расходования.

  4. Если на счету недостаточно средств для расходования, метод spend_cash бросает исключение InsufficientAmount.

  5. Пользователь может получать текущий баланс с помощью метода get_balance().

  6. Класс обеспечивает контроль над доступом к данным о балансе, предоставляя только методы для их изменения и получения.

  7. Класс содержит константу для хранения курса конвертации рублей в доллары для упрощения операций с валютой.

#include <iostream>
#include <stdexcept>

// Класс для исключения, которое будет брошено в случае недостаточного количества средств
class InsufficientAmount : public std::exception {
public:
    // Переопределение метода what() для возврата сообщения об ошибке
    const char* what() const noexcept override {
        return "Недостаточно средств на счету.";
    }
};

// Класс для кошелька
class Wallet {
private:
    int balance; // баланс в рублях
    static const int usd = 64; // статическое поле для курса доллара к рублю

public:
    // Конструктор, принимающий начальный баланс (по умолчанию 0)
    Wallet(int balance = 0) : balance(balance) {}

    // Метод для получения текущего баланса
    int get_balance() const {
        return balance;
    }

    // Метод для добавления денег на счет
    void add_cash(int amount) {
        balance += amount;
        std::cout << "Баланс карты: " << balance << std::endl;
    }

    // Метод для расходования средств
    void spend_cash(int spend_sum) {
        // Проверяем, есть ли достаточное количество средств на счету
        if (spend_sum < balance) {
            // Если есть, уменьшаем баланс на сумму расхода
            balance -= spend_sum;
            std::cout << "Баланс карты: " << balance << std::endl;
        } else {
            // Если недостаточно средств, бросаем исключение
            throw InsufficientAmount();
        }
    }
};

// Функция main для демонстрации использования
int main() {
    try {
        // Создаем объект кошелька с начальным балансом 100 рублей
        Wallet wallet(100);
        std::cout << "Текущий баланс: " << wallet.get_balance() << std::endl;

        // Добавляем на счет 50 рублей
        wallet.add_cash(50);

        // Расходуем 70 рублей
        wallet.spend_cash(70);

        // Пытаемся расходовать 1000 рублей (что больше, чем есть на счету)
        wallet.spend_cash(1000);
    } catch (const std::exception& e) {
        // Обрабатываем исключения (например, если недостаточно средств на счету)
        std::cerr << "Ошибка: " << e.what() << std::endl;
    }

    return 0;
}
PreviousЗадание 4 треугольник интеграцияNextКошелек интеграция

Last updated 1 year ago

📚