SpiMocker
{
public:
SpiMocker() = default;
~SpiMocker() = default;
public:
MOCK_METHOD(std::span<const std::uint8_t>, receivedData, ());
MOCK_METHOD(void, sentData, (std::span<const std::uint8_t>));
private:
GTEST_DISALLOW_COPY_AND_ASSIGN_(SpiMocker);
};
}; // namespace Gpio
Использую так:
constexpr const std::array<std::uint8_t, ProgramPageCommandLength> pageProgramCommand{
WindbondCommandSet::PageProgram,
static_cast<std::uint8_t>(address >> 16),
static_cast<std::uint8_t>(address >> 8),
static_cast<std::uint8_t>(address)};
testing::Sequence sequence;
// https://gist.github.com/cppengineer/f1b6bc0f04ac7c29e963364f2c564a5e
const auto& commandSpan = std::span(pageProgramCommand.data(), pageProgramCommand.size());
EXPECT_CALL(spiMockAccess(), sentData).With(commandSpan)
.Times(1)
.InSequence(sequence);
.With не может параметр нормально принять, выдает ошибку:
cannot convert argument 1 from 'const std::span<const uint8_t,18446744073709551615>' to 'const testing::Matcher<const std::tuple<std::span<const uint8_t,18446744073709551615>> &> &'
Посмотрите в сторону определения матчеров через MATCHER_P
А эти матчеры можно не только в EXPECT_ выражениях использовать?
В cookbook пишту, что "The expression inside With() must be a matcher of type Matcher<std::tuple<A1, ..., An>>, where A1, …, An are the types of the function arguments."
Огромное спасибо! MATCHER_P(SpanChecker, spanItem, "Span content equals") { return std::ranges::equal(spanItem,std::get<0>(arg)); } Вот так получилось
боже что за уродство
почему в плюсах сразу три стиля нейминга?
Это претензия ко мне или к С++?:D
В плюсах бесконечное число стилей нейминга
Если бы всего три их было:D
к авторам либы просто снейк_кейс и камелКейс еще както можно выдержать но когда еще ПаскальКейс это бред полный
В смысле. Названия структур/классов - ВсеСловаЗаглавнаяБуква. методы- так же или перваяМаленькая.
тут методы с большой
Вы сейчас ходите по скользкой дорожке непонимания работы функций в С++.
Пасцал - это стиль гугловский, а остальное это стиль юзера либы
Это макросы GMOCK , а не методы.
И это не бред, особенности кодстайла. Советую посмотреть в кодбазы Clang/Mozilla/Chrome.
помню мне сказали что я нейминг плохой сделал, а я наоборот разделил нейминг на юзер интерфейс, детали реализации и всё круто было(( Если вы не видите закономерностей, это не значит что их нет 0))
Это к моему примеру было или вообще?
вообще про нейминг
Обсуждают сегодня