From 414e53e6e976fc73442cba8225a7a962e8403462 Mon Sep 17 00:00:00 2001 From: Sani7 Date: Sat, 2 Dec 2023 21:01:09 +0100 Subject: [PATCH] tcp_cmd Add tcp_cmd_remove_leading_space + tests --- project/Core/Inc/tcp_cmd.h | 1 + project/Core/Src/tcp_cmd.c | 11 +++++++++++ tests/tcp_cmd.cpp | 16 ++++++++++++++++ 3 files changed, 28 insertions(+) diff --git a/project/Core/Inc/tcp_cmd.h b/project/Core/Inc/tcp_cmd.h index 17ebdd0..68a702f 100644 --- a/project/Core/Inc/tcp_cmd.h +++ b/project/Core/Inc/tcp_cmd.h @@ -22,6 +22,7 @@ #include void tcp_cmd_remove_newline(char* str, size_t len); +char* tcp_cmd_remove_leading_space(char* str, size_t len); char* tcp_cmd_get_filename_ext(char* filename); char* tcp_cmd_get_next_token(char* input, const char* delimiters, char** next); void tcp_cmd_init(void); diff --git a/project/Core/Src/tcp_cmd.c b/project/Core/Src/tcp_cmd.c index a30a58c..04946c5 100644 --- a/project/Core/Src/tcp_cmd.c +++ b/project/Core/Src/tcp_cmd.c @@ -74,6 +74,17 @@ void tcp_cmd_remove_newline(char* str, size_t len) { str[i] = '\0'; } +char* tcp_cmd_remove_leading_space(char* str, size_t len) { + size_t i = 0; + while (str[i] != '\0' && i < len) { + if (isspace((int)str[i]) == 0) { + return &str[i]; + } + i++; + } + return NULL; +} + /** * @brief This function converts a string to lowercase * @param str The string to convert diff --git a/tests/tcp_cmd.cpp b/tests/tcp_cmd.cpp index 22ec55e..6c755a9 100644 --- a/tests/tcp_cmd.cpp +++ b/tests/tcp_cmd.cpp @@ -54,6 +54,22 @@ TEST(TCP_CMD, tcp_cmd_remove_newline) { free(cmd); } +TEST(TCP_CMD, tcp_cmd_remove_leading_space) { + char* cmd = (char*)calloc(50, 1); + strcpy(cmd, "help"); + EXPECT_STREQ(tcp_cmd_remove_leading_space(cmd, strlen(cmd)), "help"); + strcpy(cmd, " help"); + EXPECT_STREQ(tcp_cmd_remove_leading_space(cmd, strlen(cmd)), "help"); + strcpy(cmd, " help"); + EXPECT_STREQ(tcp_cmd_remove_leading_space(cmd, strlen(cmd)), "help"); + strcpy(cmd, " help"); + EXPECT_STREQ(tcp_cmd_remove_leading_space(cmd, strlen(cmd)), "help"); + strcpy(cmd, " help"); + EXPECT_STREQ(tcp_cmd_remove_leading_space(cmd, strlen(cmd)), "help"); + strcpy(cmd, "\n\t\r\n help"); + EXPECT_STREQ(tcp_cmd_remove_leading_space(cmd, strlen(cmd)), "help"); +} + TEST(TCP_CMD, tcp_data_cb) { char* cmd = (char*)calloc(50, 1); std::string output;