🦥Alex Fails
про тесты рендереров вообще тема очень туманная
Constantine
Вот только если у меня не работает балка под названием корневой комбобокс, у меня дом сломался и я это вижу
🦥Alex Fails
про тесты рендереров вообще тема очень туманная
авторы цсса хотели тестить корректность реализации цсс-правил через сравнение скринов
Igor
Физика мира может быть протестирована, мне интересно, как ты тестируешь, что у тебя шарик рисуется на экране
Я хотел рисовать шарики в буфер и проверять что нужная область закрасилась, но время поджимало)
Andrei
Юнит-тесты и являются по назначению регрессионными. Из всех регрессионых — они самые детальные. И по этой же причине — они обычно whitebox, и пишутся программистом, и дёргают не за публичные интерфейсы. Я здесь исключительно о практике говорю.
Constantine
Я хотел рисовать шарики в буфер и проверять что нужная область закрасилась, но время поджимало)
И это просто верх бесполезности по сути; если поломана корневая функциональность, это выясняется мгновенно
Igor
А какие фреймворки есть в цпп под функциональные, системные и регресионные? Теория в универе это замечательно, но инструмента мне дать так и не смогли :/
Andrei
Всё в кучу. Регрессионность ортогональна функциональности.
Andrei
Gtest/gmock. Но это скорее для unit тестов. Для интеграционных или функциональных по понятным причинам какой-то универсальный фреймворк написать сложно.
Igor
Gtest/gmock. Но это скорее для unit тестов. Для интеграционных или функциональных по понятным причинам какой-то универсальный фреймворк написать сложно.
ну, вот, как-то так да( на лекциях нам много рассказывали какая замечательная штука функциональные/системные/интеграционные тесты, но боевой пример был всего один, с вебом, когда какая-то фиговина эмулировала нажатия на кнопочки и переходы по ссылочкам, и проверяла что попала на ту страницу куда нужно это было очень здорово, но как функционально/системно/интеграционно тестировать какую-нибудь передачу видеопотока, работу CAD, и прочие прочие области далёкие от переходов по страницам, мне не смогли объяснить(
Andrei
забудьте, чему вас учили в университетах (с)
Видимо, у меня был хороший университет — никогда такой глупости не слышал ни от кого.
Deleted Account
забудьте, чему вас учили в университетах (с)
бесит когда так грят, какоето дешовое оскарбление
Constantine
бесит когда так грят, какоето дешовое оскарбление
Окай. You were right, John. It's not like in the books. (с)
Deleted Account
Berkus
Чуваки, плюсоните плс https://gitlab.kitware.com/cmake/cmake/issues/16708#note_326478
Constantine
тут как то менее резко
Это предсмертная цитата парниши из Constantine
Deleted Account
Constantine
кстати Constantine это чьто?
фильм, достаточно забавный, рекомендую под попкорн
Constantine
Видимо, у меня был хороший университет — никогда такой глупости не слышал ни от кого.
Университет не учит и не может учить практическим аспектам
Constantine
Я с трудом представляю доктора наук, который на первой лекции по прикладному ПО скажет "сейчас я вас научу правильно ставить костыли"
Constantine
Но это уже какой-то полный офтоп предлагаю /thread
Constantine
А вот как в той же Qt написаны unit-test надо посмотреть
Stanislav
https://miyuki.github.io/2017/10/04/gcc-archaeology-1.html
Stanislav
нркмны
Andrei
Университет не учит и не может учить практическим аспектам
А я как сказал? У меня был хороший университет.
Andrei
В хороших учат.
Stanislav
Constantine
а что с ними не так?
возможно, с ними все так, я просто хочу их внимательно изучить)
Constantine
вопрос по coroutines: а зачем вообще нужны stackless coroutines если есть futures?
Berkus
но это же разные вещи
Andrei
Ты про правильно приготовленные фьючерсы или про плюсовые?
Constantine
Ты про правильно приготовленные фьючерсы или про плюсовые?
Я слышал, что в C++ std futures есть проблемы и портировал себе folly-реализацию (не изучал конкретные проблемы)
Stanislav
блин, cppcon не торопится с видосиками
Stanislav
неделю уже жду видос с нишановым
Constantine
но это же разные вещи
ладно, пойду читать матчасть
Stanislav
Ты про правильно приготовленные фьючерсы или про плюсовые?
а где про правильные фьючерсы можно почитать? )
Constantine
мне почему-то показалось, что stackless coroutines будут чистым сахаром над future chain
Constantine
а где про правильные фьючерсы можно почитать? )
емнип считается, что в folly они правильные; я просто художественно адаптировал реализацию
Constantine
Constantine
в отличие от буста, фолли не обмазано макросами и замечательно читается
Stanislav
> художественно адаптировал
типа снял фильм по мотивам? как "Темная башня" ?
Constantine
типа снял фильм по мотивам? как "Темная башня" ?
практически; взял реализацию, мне нужна была исключительно версия со строгой гарантией запуска на основном потоке для then и входной гарантией, что promise и его future создается на основном потоке; кроме того, сам по себе настраиваемый executor из folly мне не нужен, поскольку есть система передачи сообщений на основной поток
Vitalii
Я считаю, что не пошёл бы ты.
Vitalii
По теме: если хочешь дискасс, не начинай с "только дебилы...".
Constantine
Автор работал во времена Visual Studio 6.0 и такая конвенция тогда использовалась для защиты от = вместо ==
Vitalii
Невнимательность, усталость и прочие человеческие факторы никто не отменял.
Constantine
Наследие никто не отменял
Berkus
от человеческих факторов это защищает, а так надо конечно -Wall -Wextra -Werror использовать от подобных ошибок
Constantine
На самом деле, я лично конвенцией запрещаю однократно использованные переменные, кроме геометрии и прочего тяжелого кода, требующего объяснений, и ошибка сама по себе исправляется if (mp.notifySignalIndex() != -1)
Constantine
Вы не программировали на Visual Studio 6.0
Constantine
вариант, но что делать если signalId потом еще неоднократно используется? )
И при этом оно не является enum class для switch? Маловероятно
Berkus
И при этом оно не является enum class для switch? Маловероятно
auto signalId = mp.whateverIndex(); if (-1 != signalId) processMore(signalId);
Constantine
auto signalId = mp.whateverIndex(); if (-1 != signalId) processMore(signalId);
ну это уже дефект языка, поправленный в 17 стандарте)
Constantine
17 стандарт
Anonymous
да вроде
Anonymous
if(cond; expr) вроде. cond и expr могут совпадать в некоторых случаях
Constantine
auto signalId = mp.whateverIndex(); if (-1 != signalId) processMore(signalId);
ошибка архитектуры (processMore должна была рассматривать случай)
Constantine
как вариант, auto dispatch_signal = [&](int signal) { //реализация };
Berkus
ошибка архитектуры (processMore должна была рассматривать случай)
это просто пример повторного использования
Constantine
это просто пример повторного использования
в 90% случаев такой код написан "для удобства отладки (c)"
Constantine
Watch: eax
Constantine
Даже если не показалось в auto, всегда можно посмотреть, что в eax
Constantine
Возврат в стандартных конвенциях всегда в eax
Constantine
Указатель в watch копируем, профит
Constantine
Я в экстремальной форме фанат читаемость кода » удобства отладки
Constantine
Олимпиадное прошлое, чтение распечаток и так далее
Timur
Возврат в стандартных конвенциях всегда в eax
не всегда. Даже в 64-битном режиме есть XMM0 как минимум для double. Но и в зависимости от обстоятельст могут быть вовлечены rdx, xmm1. (А уж про 32-битный режим я и не говорю). Ну т.е. _всегда_ полезна поддержка отладчика при визуализации возвращаемого значения, и простого watch eax не достаточно
Berkus
eax, rax, eax:edx д
Berkus
rax:rdx по идее даже может быть
Anonymous
ребят, а кто с openssl работал? нужон sha256, sha512 и hmac, а я туплю и не понимаю чому не робит( есть примерчики какие нибудь?
Berkus
там есть тесты прямо в сорцах
Berkus
если тебе нужны только хэши возьми либу поадекватнее, openssl говно полное