Opened 4 years ago

Closed 4 years ago

#708 closed ожидается проверка (задача сдана)

HW #2

Reported by: Vladislav Nosivskoy Owned by: Дмитрий Свиридкин
Component: HW #2 (X0) Version: 3.0
Keywords: Cc:

Description

Почему-то не компилируется фреймворк тестирования, хотя изначально вообще скопировал ваш код с пары, потом пытался изменять, не помогло. Остальная часть должна работать корректно.

Change History (6)

comment:1 Changed 4 years ago by Дмитрий Свиридкин

Owner: changed from Дмитрий Свиридкин to Vladislav Nosivskoy
Type: ожидается проверкаожидаются исправления

у вас есть каталог test и вы пытаетесь сделать еще и бинарь test. Конфликт имен.

multiple definition of `Testing::testCases'; obj/test.o:(.bss+0x0): first defined here

Заголовочный файл с глобальной переменной подключен в двух разных .cpp, объектники которых объединяются в один.

Можно либо завернуть в inline-функцию, либо спрятать глобальную переменную в test.cpp и реализовать конструктор базовогго класса там же.
Либо использовать static inline из C+17.
Но лучше спрятать в test.cpp
+ вы забыли в макросе вызвать конструктор для новосозданного теста

Assertion failed! test/BoardTest.cpp in b.canMove(0, 2, O_PLAYER) == true:22 Test
test passed: 0/1

Подставновка filename и ##exp видимо перепутаны местамми


Переключение игроков не работает
После каждого некорректного кода не нужно перевыводить поле
Где-то остутствуют необъодимые переводы строк.

Зачем код (отличающийся одним if (silent) return) продублирован в двух классах? Аналогично, зачем продублирован код всяких приглашений в default и в Silent версии?

Код конктрукторов board дублируется. Делегируйте, либо уберите конструктор без параметров и используйте параметры по умолчанию для конструктора с параметрами.

getMovePlayerX и getMovePlayerO -- две совершенно одинаковые функции. Сделайте одну и передайте подходящие аргументы.

Параметризовать контроллер потоками ввода и вывода -- это здорово.


5+2+0

comment:2 Changed 4 years ago by Vladislav Nosivskoy

Owner: changed from Vladislav Nosivskoy to Дмитрий Свиридкин
Type: ожидаются исправленияожидается проверка
Version: 1.02.0

comment:3 Changed 4 years ago by Дмитрий Свиридкин

Owner: changed from Дмитрий Свиридкин to Vladislav Nosivskoy
Type: ожидается проверкаожидаются исправления

Перед выводом поля нужен перевод строки.

Некорректно обрабатывается победа последним ходом, заполняющим последнюю клетку поля.

два числа, разделенных переводом строки, воспринимаются как валидный ход.

Возможно, лучше параметризовать потоками только View. А контроллер сделать унифицированным, подходящим для любого View.

Реализовать игровой цикл с помощью рекурсии -- плохая идея. Стэк не бесконечен.


14 + 7 + 0

comment:4 Changed 4 years ago by Vladislav Nosivskoy

Type: ожидаются исправленияожидается проверка
Version: 2.03.0

comment:5 Changed 4 years ago by Vladislav Nosivskoy

Owner: changed from Vladislav Nosivskoy to Дмитрий Свиридкин

comment:6 Changed 4 years ago by Дмитрий Свиридкин

Resolution: задача сдана
Status: assignedclosed
src/stdioModelView.cpp:8:1: note: ‘std::istream_iterator’ is defined in header ‘<iterator>’; did you forget to ‘#include <iterator>’?
    7 | #include "stdioModelView.h"
  +++ |+#include <iterator>


                if (currentState == END_DRAW) {
                    vw.printDraw();
                } else if (currentState == END_X_WIN) {
                    vw.printXWins();
                } else if (currentState == END_O_WIN) {
                    vw.printOWins();
                }

Есть подозрение, что это должна быть один метод View::printResult(state)

    if (isNumbers && (int)tokens.size() == 2) {
        std::istringstream isXY(tokens[0] + " " + tokens[1]);
        isXY >> x >> y;
    } else {
        x = b.width;
        y = b.height;
    }

Сигнализировать об ошибке ввода лучше в возвращаемом значении функции. У вас она все равно void возвращает.


20 + 8.5 + 0

Note: See TracTickets for help on using tickets.