Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 67
1

Юнит тесты

18.04.2015, 21:07. Показов 1519. Ответов 11
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите разобраться, не проходят два теста, я уже не знаю почему.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//Проверка на ввод числа
BOOST_AUTO_TEST_CASE(isNumbers)
{
    char actual[5]={5,0,1,1,8};
    bool truth=true;
    BOOST_CHECK(isNumber(actual,5) == truth);
}
//Первый символ "-"
BOOST_AUTO_TEST_CASE(FirstCharacter_is_Negative)
{
    char actual[5]={'-',1,1,1,1};
    bool truth=true;
    BOOST_CHECK(isNumber(actual,5) == truth);
}
Функция:

//Проверка на ввод посторонних символов
C++
1
2
3
4
5
6
7
8
9
10
11
12
bool isNumber (char *str, int size)
{
   for (int i = 0; i < size; i++)
   {
      if(i==0 && str[i]=='-')
            continue;
        if (str[i] <'0' || str[i]>'9')
            return false;
        else if (str[i] >'0' || str[i]<'9') return true;
    }
 //return true;
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.04.2015, 21:07
Ответы с готовыми решениями:

Юнит-тесты
Всем доброго время суток! У меня возникли траблы с написанием юнит-тестов к функциям сортировки...

Юнит-тесты
Разбираюсь с юнит тестами. Надо обложить тестами функцию пузырьковой сортировки. Бьюсь несколько...

А что вообще такое юнит тесты?
Товарищи... А вот все говорят, юнит тесты, юнит тесты... Что дескать, оно тестирует отдельно...

Написать юнит-тесты и реализовать следующую функцию: Заполняет квадратную подматрицу заданным числом
Функция самостоятельно контролирует выход подматрицы за пределы массива, т.е. обрезает подматрицу...

11
Ушел с форума
Эксперт С++
16473 / 7436 / 1187
Регистрация: 02.05.2013
Сообщений: 11,617
Записей в блоге: 1
18.04.2015, 21:13 2
isNumber - какая-то ну очень уж странная функция.
Логика работы непонятна, несмотря на то, что всего несколько строк.
И почему "return true" закомментирована ?..
0
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 67
18.04.2015, 21:36  [ТС] 3
Цитата Сообщение от Убежденный Посмотреть сообщение
ну очень уж странная функция.
Я понимаю
Сама убедилась. А так надо ввести длинное число. И чтобы отрицательные распознавала. В общем, походу я сделала какую-то фигню))
C++
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
void InputNumbers(char *ar, int n)
{
    int i=0, j=0;
    int r1=0; // если введен минус
    bool l=true;
    bool u=true;
    while(true)
    {
        int i=0, j=0,r1=0;
        cout << "\n Введите число: ";
        ar[i]=getchar();
        if(ar[i]=='-')
        {   
            ar[0]=r1;
        }
        while(ar[i]!='\n')
        {
            i++;
            ar[i]=getchar();    
        }
        n=i;
        l= isNumber(ar,n);
        u= RangeForNumber(ar,n);
        if (!l||!u) 
            cout <<"\n Некорректное значение. Повторите ввод. \n";
        else break; 
    }
    if(ar[0]==0)
    {
        for(i=1; i<n; i++) 
        ar[i]-=48;
    }
    else {
            for(i=0; i<n; i++) 
            ar[i]-=48;
         }   
}
В дальнейшем мне надо умножать числа, не знаю как запоминать ,если "-" знак ввели.

Добавлено через 5 минут
Убежденный, Хотя при компиляции никаких проблем, число 50118 проходит, почему же тест не хочет?
0
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
18.04.2015, 21:36 4
Цитата Сообщение от Убежденный Посмотреть сообщение
Логика работы непонятна
А там и нет логики. Это catch сущности "целое со знаком" из массива ASCII байт.
flo, Проверка знака (которым кстати может быть и +) выносится из цикла, дальше пока isdigit(str[i]) крутим цикл, потом вовзращаем isDelimiter(str[i]). В таком варианте просто минус или плюс тоже будут числом (равным нулю), ну или обработать на своё усмотрение.
0
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 67
18.04.2015, 21:41  [ТС] 5
castorsky, будем пробовать. У меня с программированием не очень и это мягко сказано
0
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
18.04.2015, 21:50 6
flo, кстати по опыту говорю что булева проверка любой сущности, которую мы формируем из потока это занятие бессмысленное. Обработчик терма должен возвращать два значения, в первом будет результат обработки если она прошла успешно, во втором будет флаг истинности проверки. А то получается так что Вы пробегаете по всему потоку и фозвращаете только флаг, и если флаг - истина, то надо опять бегать по потоку и собирать значение. Это делается всё сразу.

Добавлено через 4 минуты
вот это надо выпилить else if (str[i] >'0' || str[i]<'9') return true;
возвращаемое значение раскомментировать
0
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 67
18.04.2015, 21:53  [ТС] 7
castorsky, я Вас очень плохо понимаю, как и программирование)

Добавлено через 1 минуту
Цитата Сообщение от castorsky Посмотреть сообщение
вот это надо выпилить else if (str[i] >'0' || str[i]<'9') return true;
Это я уже бездумно вписала, изначально было так, как Вы сказали.
Просто я не понимаю, почему тест с числом проходит с ошибкой.
0
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
18.04.2015, 21:56 8
Цитата Сообщение от flo Посмотреть сообщение
Просто я не понимаю, почему тест с числом проходит с ошибкой
видимо второй тест проверяет не то, что ему сказано проверять. Что это за сущность FirstCharacter_is_Negative?
0
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 67
18.04.2015, 21:58  [ТС] 9
Цитата Сообщение от castorsky Посмотреть сообщение
видимо второй тест
Первый символ отрицательный
0
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
18.04.2015, 21:59 10
Цитата Сообщение от flo Посмотреть сообщение
Первый символ отрицательный
спасибо, кэп. Где и как оно определено?
0
0 / 0 / 0
Регистрация: 17.12.2011
Сообщений: 67
18.04.2015, 22:26  [ТС] 11
Цитата Сообщение от flo Посмотреть сообщение
BOOST_AUTO_TEST_CASE(isNumbers)
{
* * char actual[5]={5,0,1,1,8};
* * bool truth=true;
* * BOOST_CHECK(isNumber(actual,5) == truth);
}
Вот этот тест ошибочный

Добавлено через 2 минуты
Цитата Сообщение от castorsky Посмотреть сообщение
Что это за сущность FirstCharacter_is_Negative?
Это просто название теста

Добавлено через 23 минуты
Скорее всего не нужно было создавать таких тестов
0
1978 / 1082 / 87
Регистрация: 29.11.2013
Сообщений: 3,353
18.04.2015, 22:30 12
Не то чтобы. Судя по всему сами тесты неправильно оформлены. Функция корректна (будет после указанных правок), а про буст тесты пусть плюсисты с черным поясом расскажут. Можете еще посмотреть во что развернутся макросы, скорее всего поможет.
0
18.04.2015, 22:30
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2015, 22:30
Помогаю со студенческими работами здесь

Юнит-тесты: приложение, считающее количество слов с заданной буквой в текстовом файле через тестирование
необходимо разработать приложение, считающее количество слов с заданной буквой в текстовом файле...

Реализовать функцию построчной записи значений двумерного массива в одномерный и наоборот; написать юнит-тесты
Написать юнит-тесты и реализовать следующую функцию: Построчно записывает значения двумерного...

Юнит-тестирование
Всем доброго времени суток! В последнее время меня начал сильно интересовать вопрос о...

Юнит-тестирование
Расскажите про юнит тест на с++ , как его писать?Синтаксис? (У меня такое задание: написать юнит...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru