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

Автоматические тесты - C++

Восстановить пароль Регистрация
 
Rivory
146 / 112 / 2
Регистрация: 15.01.2013
Сообщений: 266
10.02.2013, 00:25     Автоматические тесты #1
Добрый вечер.

Пишу для курсового проекта автоматические тесты для одной формы довольно обширного проекта. Есть функция, проверяющая текущий трек(проект связан с радиолокацией).

Функция:
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
void TFormWaves::CheckTrack(AnsiString TrackNum)
{
    if (TrackNum == "")
    {
        //ShowMessage("Введите номер трассы!");
        return;
    }
 
    int num = StrToInt(TrackNum);
    E_TRACK_OGP ogp = OGP_UNKNOWN;
    bool enable = true;
    if(num > FormMain->DisplayManager->GetCountOfTracks()+1)
    {
        num = FormMain->DisplayManager->GetCountOfTracks()+1;
        edTrackNumber->Text = num;
    }
 
    //если такой трек уже есть
    if (((TPresentationTrack*)FormMain->DisplayManager->getObjectById(E_PRESENTATION_TRACK,num)) != NULL)
    {
        TPresentationTrack* trck = ((TPresentationTrack*)FormMain->DisplayManager->getObjectById(E_PRESENTATION_TRACK,num));
        float course = RADTOGRAD(trck->GetPsi());
        Update(4,course);
        ogp = trck->GetOGP();
        enable = false;
        edH->Text = FloatToStr(trck->GetBaseTrack()->h);
        edSpeed->Text = FloatToStr(trck->GetTrack().fSpeed);
        dotT = trck->GetCoord();
 
    }
    UpdateCoord();
    // меняем интерфейс
    switch(ogp)
    {
        case OGP_UNKNOWN:
        case OGP_UNDEF:
            Update(5,0);
            break;
        case OGP_ENEMY:
            Update(5,1);
            break;
        case OGP_OWN:
        case OGP_OWN_COMMON:
            Update(5,2);
            break;
    }
    edCourse->Enabled = enable;
    tbCourse->Enabled = enable;
    cbOgp->Enabled = enable;
    edH->Enabled = enable;
    edSpeed->Enabled = enable;
    DrawWaves();
}
Как её протестировать? Пока все, до чего я додумался, это:
C++
1
2
3
4
5
6
7
8
bool AutoTestWaves::TestCheckTrack()
{
    int num = frmMain->DisplayManager->GetCountOfTracks();
    frmWaves->CheckTrack(num+2);
    if(frmWaves->edTrackNumber->Text == IntToStr(num+1))
        return true;
    return false;
}
Добавлено через 2 часа 59 минут
Вроде написал. Можно закрыть тему. Но функция получилась, по-моему, просто эталоном быдлокода
Кликните здесь для просмотра всего текста
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
bool AutoTestWaves::TestCheckTrack()
{
    int num = frmMain->DisplayManager->GetCountOfTracks();
    bool result1 = false;
    bool result2 = false;
    bool result3 = false;
 
    //Проверка на возможность задания номера трека выше, чем возможно
    frmWaves->CheckTrack(num+2);
    if(frmWaves->edTrackNumber->Text == IntToStr(num+1))
        result1 = true;
    else result1 = false;
 
    //Создадим трек с известными нам параметрами
    frmWaves->edTrackNumber->Text = frmMain->DisplayManager->GetCountOfTracks()+1;
    frmWaves->labelWNum->Caption = "1";
    frmWaves->labelTrInW->Caption = "1";
    frmWaves->labelDistPlanes->Caption = "0";
    frmWaves->labelDistWaves->Caption = "0";
    frmWaves->labelCourse->Caption = "15";
    frmWaves->cbOgp->ItemIndex = 1;
    AnsiString ogp = AnsiString(frmWaves->cbOgp->Items->operator [](frmWaves->cbOgp->ItemIndex));
    frmWaves->edH->Text = "10000";
    frmWaves->edSpeed->Text = "250";
    frmWaves->edSigma->Text = "3";
    T2d dotT;
    dotT.x = 10;
    dotT.y = 15;
 
    FormMain->DisplayManager->AddWaves(frmWaves->edTrackNumber->Text,frmWaves->labelWNum->Caption,
    frmWaves->labelTrInW->Caption, frmWaves->labelDistPlanes->Caption, frmWaves->labelDistWaves->Caption,
    frmWaves->labelCourse->Caption, ogp, frmWaves->edH->Text, frmWaves->edSpeed->Text, frmWaves->edSigma->Text, dotT);
 
    //Cменим номер трека на предыдущий и на заново созданный, чтобы можно было проверить значения на форме
    frmWaves->CheckTrack(num);
    frmWaves->CheckTrack(num+1);
 
    //Проверим, равны ли значения на форме тем, которые мы задавали ранее
    if  (frmWaves->edTrackNumber->Text == IntToStr(num+1)   &&
        frmWaves->labelWNum->Caption == "1"                 &&
        frmWaves->labelTrInW->Caption == "1"                &&
        frmWaves->labelDistPlanes->Caption == "0"           &&
        frmWaves->labelDistWaves->Caption == "0"            &&
        frmWaves->labelCourse->Caption == "15"              &&
        frmWaves->cbOgp->ItemIndex == 1                     &&
        frmWaves->edH->Text == "10000"                      &&
        frmWaves->edSpeed->Text == "250"                    &&
        frmWaves->edSigma->Text == "3")
    {
        result2 = true;
    }
    else result2 = false;
 
    //Для уже созданного трека должны быть заблокированы след. поля
    if  (frmWaves->edCourse->Enabled == false   &&
        frmWaves->tbCourse->Enabled == false    &&
        frmWaves->cbOgp->Enabled == false       &&
        frmWaves->edH->Enabled == false         &&
        frmWaves->edSpeed->Enabled == false)
    {
        result3 = true;
    }
    else result3 = false;
 
    //Удаляем тестовый, более не нужный нам трек
    TPresentation* MovingObj = frmMain->DisplayManager->getObjectById(E_PRESENTATION_TRACK, num+1);
    frmMain->DisplayManager->DeletePresentation(MovingObj);
    frmMain->DisplayManager->updateDisplayPresentations();
 
    return result1 && result2 && result3;
}


P.S. Не понимаю, почему код из RAD Studio таким красным выделяется тут на форуме.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.02.2013, 00:25     Автоматические тесты
Посмотрите здесь:

тесты C++
Автоматические переменные C++
C++ Автоматические конвертеры стилей наименования объектов
C++ Психологические тесты
Тесты C++
C++ Тесты
Юнит-тесты C++
Юнит тесты C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 06:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru