pw_tokenizer: Custom tokenization macro support
- Make the pw::tokenizer::EncodeArgs function and pw_tokenizer_ArgTypes
typedef public.
- Update the pw::tokenizer::EncodedMessage class to make it simpler to
use. Also, use memcpy instead of aliasing the token.
Change-Id: Ic99930ccf3e002e4fbef5112f6b2d37c910e6ee9
Reviewed-on: https://pigweed-review.googlesource.com/c/pigweed/pigweed/+/39984
Pigweed-Auto-Submit: Wyatt Hepler <hepler@google.com>
Reviewed-by: Keir Mierle <keir@google.com>
Commit-Queue: Wyatt Hepler <hepler@google.com>
diff --git a/pw_tokenizer/tokenize_test.cc b/pw_tokenizer/tokenize_test.cc
index 393d8f7..ff87f51 100644
--- a/pw_tokenizer/tokenize_test.cc
+++ b/pw_tokenizer/tokenize_test.cc
@@ -401,6 +401,14 @@
EXPECT_TRUE(std::all_of(buffer_, std::end(buffer_), is_untouched));
}
+TEST_F(TokenizeToBuffer, CharArray) {
+ size_t message_size = sizeof(buffer_);
+ PW_TOKENIZE_TO_BUFFER(buffer_, &message_size, __func__);
+ constexpr auto expected = ExpectedData(__func__);
+ ASSERT_EQ(expected.size(), message_size);
+ EXPECT_EQ(std::memcmp(expected.data(), buffer_, expected.size()), 0);
+}
+
TEST_F(TokenizeToBuffer, C_StringShortFloat) {
size_t size = sizeof(buffer_);
pw_tokenizer_ToBufferTest_StringShortFloat(buffer_, &size);
@@ -517,6 +525,13 @@
EXPECT_EQ(std::memcmp(expected.data(), message_, expected.size()), 0);
}
+TEST_F(TokenizeToCallback, CharArray) {
+ PW_TOKENIZE_TO_CALLBACK(SetMessage, __func__);
+ constexpr auto expected = ExpectedData(__func__);
+ ASSERT_EQ(expected.size(), message_size_bytes_);
+ EXPECT_EQ(std::memcmp(expected.data(), message_, expected.size()), 0);
+}
+
TEST_F(TokenizeToCallback, C_SequentialZigZag) {
pw_tokenizer_ToCallbackTest_SequentialZigZag(SetMessage);