Форум программистов, компьютерный форум CyberForum.ru

Как проверять и тестировать входные аргументы конструктора? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Перегрузка скобок для указателя http://www.cyberforum.ru/cpp-beginners/thread1156245.html
Здраствуйте. Написал небольшой код, всё работает, но не знаю как при динамическом вызове можно было просто использовать a, a... вместо (*a), (*a) .... Вот сам код: #include <iostream> #include <cstdlib> using std::cin; using std::cout; using std::endl;
C++ В массиве структур студент с полями "ИМЯ" "ВОЗРАСТ" "УСПЕВАЕМОСТЬ" выполнить сортировку по успеваемости по возрастанию в массиве структур студент с полями "ИМЯ" "ВОЗРАСТ" "УСПЕВАЕМОСТЬ" выполнить сортировку по успеваемости по возрастанию. Использовать сортировку пузырьком. #include<stdio.h> #include <conio.h> #include <stdlib.h> #include<time.h> struct student { char Name; int Old; int ycp; http://www.cyberforum.ru/cpp-beginners/thread1156240.html
Сведение к двум дифференциальным уравнениям, Рунге-Кутта-Мерсона C++
Здравствуйте. В общем имеется функция y = x(t) y''=g(sin\alpha - \eta cos\alpha) Ее нужно свести к двум дифференциальным уравнениям первого порядка и применить метод Рунге-Кутта-Мерсона. t0 <= t <= t1, h = 0.1 Так же дано x0, y(x0). В интернете нашел мало информации об этом методе, а на википедии не смог разобраться. Буду рад помощи, спасибо.
C++ Перевод из русской раскладки клавиатуры в латинскую
Зравствуйте! Столкнулся с такой проблемой: необходимо реализовать класс для считывания текста из файла, сохранения его в памяти и перевода из русской раскладки клавиатуры в латинскую (замена букв й->q, ц->w, у->e, к->r и т.д.) сохраненного текста. И на оборот, но наоборот сейчас не так важно. Подскажите пожалуйста, если можно блоком кода, как это реализовать? Я предполагаю, что нужно создать 2...
C++ Создать линейный односвязный список, упорядоченный по фамилиям продавцов в алфавитном порядке http://www.cyberforum.ru/cpp-beginners/thread1156209.html
Друзья, подскажите, пожалуйста, в чем может быть ошибка? Задача такова: создать линейный односвязный список, упорядоченный по фамилиям продавцов в алфавитном порядке Вот код: struct prodavec { char FIO; int ipr; //nomer pr-ca int kol_ves; int kol_shtuk; float time; //obchee vremya na obsluz.odnim pr-om vseh pokupatele
C++ Организовать двунаправленный список для хранения элементов структуры, содержащей сведения о фамилии, дате рождения Организовать двунаправленный список для хранения элементов структуры, содержащей сведения о фамилии, дате рождения. Предусмотреть добавление элементов в конец списка, поиск по дате рождения, удаление по фамилии. Предусмотреть удаление списка перед выходом из программы. Вот все что смог сделать. Надеюсь на вашу помощь #include <iostream> #include <conio.h> #include <stdio.h> #include... подробнее

Показать сообщение отдельно
R_e_n
0 / 0 / 0
Регистрация: 30.07.2012
Сообщений: 35
24.04.2014, 15:48     Как проверять и тестировать входные аргументы конструктора?
Подскажите, пожалуйста, как проверять и тестировать входные аргументы конструктора?

Пусть есть некоторый класс. И в конструкторе один входной аргумент - строка. Я делаю так:
в конструкторе проверяю, если строка не корректная, я кидаю исключение std::invalid_argument("").

Когда я тестирую я создаю штук 15 объектов, которым передаю в конструкторе разные строки. Если какая-то
строка некорректная, я отлавливаю исключение и проверяю должно ли оно было появиться на этой строке или нет.

Но у меня такое чувство, что нормальные люди так не делают.

Набросал примерный код.
Кликните здесь для просмотра всего текста
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#include <iostream>
#include <stdexcept>
#include <assert.h>
 
 
class SomeClass {
public:
    SomeClass(const std::string &line) {
        if (line[0] != 'a') {
            // ok
        }
        else
        {
            throw std::invalid_argument("The First character is 'a'! ");
        }
    }
};
 
 
class SomeClassTest {
public:
    void ConstructorTest() {
        bool hasErrorBeen = false;
        try
        {
            SomeClass object1("Hello");
        }
        catch(std::invalid_argument& error)
        {
            hasErrorBeen = true;
        }
        assert(hasErrorBeen == false);
 
        hasErrorBeen = false;
        try
        {
            SomeClass object2("aHello");
        }
        catch(std::invalid_argument& error)
        {
            hasErrorBeen = true;
        }
        assert(hasErrorBeen == true);
 
        // И тут еще 15 таких тестов
    }
};
 
int main() {
 
    SomeClassTest someClassTest;
    someClassTest.ConstructorTest();
 
    return 0;
}


http://ideone.com/cK0b9b
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 10:54. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru