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))
Это к моему примеру было или вообще?
вообще про нейминг
Обсуждают сегодня