Задать вопрос
Ответы пользователя по тегу C++
  • Как в Google Mock задать последовательность вызовов?

    max_dark
    @max_dark Автор вопроса
    Диванный эксперт
    Воспользовался комбинацией из .InSequence и .After + добавил .Times(0) для особого случая

    TEST_F(RV32I_Handler_System, CSR_RS)
    {
        auto impl = create<csrrs>();
        constexpr Code funcA = 0b0010;
    
        ASSERT_TRUE(impl->getId().equal(expectedId(funcA)));
        for (register_no src = 0; src < vm::register_count; ++src) {
            vm::register_t csr_id = 0;
            vm::register_t csr_val = 0;
            vm::register_t src_val = 0;
            register_no dst = RegAlias::t0;
            auto code = encode(funcA, dst, src, csr_id);
            MockVM mockVm;
    
            Sequence csr_get, csr_set;
            Expectation was_read = EXPECT_CALL(mockVm, control_get(csr_id, _))
                    .InSequence(csr_get);
            EXPECT_CALL(mockVm, set_register(dst, _))
                    .InSequence(csr_get);
            if (src == 0)
            {
                EXPECT_CALL(mockVm, control_set(_, _))
                    .Times(0);
            }
            else
            {
                EXPECT_CALL(mockVm, get_register(src))
                        .InSequence(csr_set)
                        .WillOnce(Return(0));
                EXPECT_CALL(mockVm, control_set(csr_id, _))
                        .InSequence(csr_set)
                        .After(was_read);
            }
            impl->exec(&mockVm, &code);
        }
    }
    Ответ написан
    Комментировать
  • Почему не фильтруются шрифты в QFontDialog?

    max_dark
    @max_dark
    Диванный эксперт
    Метод QFontDialog::getFont является static
    Его вызов создает объект диалога самостоятельно.
    (вызов static метода на объекте скорее всего является ошибкой)

    Для задания параметров фильтрации опции можно передать через параметр в расширенной версии этого метода.

    #include <QApplication>
    #include <QFontDialog>
    #include <QDebug>
    
    int main(int argc, char *argv[])
    {
        QApplication a(argc, argv);
        {
            bool ok;
            QFont tmp;
            QWidget* parent = nullptr;
            auto font = QFontDialog::getFont(
                &ok
                , tmp
                , parent
                , QStringLiteral("Title")
                , QFontDialog::MonospacedFonts | QFontDialog::DontUseNativeDialog
                );
        }
        return 0;
    }
    Ответ написан
    Комментировать