Skip to content

Commit 9c2ea26

Browse files
committed
adding starts_with() to StringBuffer
1 parent 258ab1a commit 9c2ea26

File tree

4 files changed

+34
-18
lines changed

4 files changed

+34
-18
lines changed

RingBuffer/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ The purpose is to avoid heap fragmentation, out of memory crashes with multiple
1111
buffer.append('1'); // -> return bool true |1| | |
1212
buffer[0]; // -> return byte '1'
1313
buffer.append("23"); // -> return bool true |1|2|3|
14-
buffer.indexOf("23"); // -> return uint16_t 1
14+
buffer.starts_with("23"); // -> return bool true |1|2|3|
15+
buffer.index_of("23"); // -> return uint16_t 1
1516
buffer.append('4'); // -> return bool false
1617
buffer.full(); // -> return bool true
1718
buffer.pop_first(); // return byte '1' | |2|3|

RingBuffer/RingBuffer.h

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,9 @@ class StringBuffer: public RingBuffer<Size, byte> {
5757

5858
bool append(String str);
5959

60-
int indexOf(String substr, uint16_t offset = 0);
60+
int index_of(String substr, uint16_t offset = 0);
61+
62+
bool starts_with(String substr);
6163
};
6264

6365
/*
@@ -184,7 +186,7 @@ bool StringBuffer<Size>::append(String str) {
184186
}
185187

186188
template<uint16_t Size>
187-
int StringBuffer<Size>::indexOf(String substr, uint16_t offset) {
189+
int StringBuffer<Size>::index_of(String substr, uint16_t offset) {
188190
if (offset > this->length())
189191
return -1;
190192
if (substr.length() + offset > this->length())
@@ -200,4 +202,9 @@ int StringBuffer<Size>::indexOf(String substr, uint16_t offset) {
200202
return -1;
201203
}
202204

205+
template<uint16_t Size>
206+
bool StringBuffer<Size>::starts_with(String substr) {
207+
return (this->index_of(substr) == 0);
208+
}
209+
203210
#endif

tests/test-AsyncComm.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -142,7 +142,7 @@ TEST_F(AsyncCommTest, exec_tick) {
142142
EXPECT_CALL(callbacks, clbk_executing(_)).WillOnce(
143143
DoAll(WithArgs<0>(Invoke([&](decltype(callbacks)::Buffer &buff) {
144144
ASSERT_EQ(len, buff.length());
145-
ASSERT_EQ(buff.indexOf("OK\r\n"), 0);
145+
ASSERT_EQ(buff.index_of("OK\r\n"), 0);
146146
ASSERT_EQ(buff.pop_firsts(len), len);
147147
})), Return(false)));
148148
comm.tick();

tests/test-RingBuffer.cpp

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,19 @@ TEST(StringBuffer, capacity) {
1010

1111
TEST(StringBuffer, append) {
1212
StringBuffer<2> buff;
13-
ASSERT_EQ(buff.indexOf("1"), -1);
13+
ASSERT_EQ(buff.index_of("1"), -1);
1414
ASSERT_TRUE(buff.append('1'));
15-
ASSERT_EQ(buff.indexOf("1"), 0);
15+
ASSERT_EQ(buff.index_of("1"), 0);
1616
}
1717

18+
TEST(StringBuffer, starts_with) {
19+
StringBuffer<4> buff;
20+
ASSERT_TRUE(buff.append("1234"));
21+
ASSERT_EQ(buff.pop_first(), '1');
22+
ASSERT_TRUE(buff.starts_with("234"));
23+
}
24+
25+
1826
TEST(StringBuffer, pop_first) {
1927
StringBuffer<2> buff;
2028
ASSERT_EQ(buff.length(), 0);
@@ -63,36 +71,36 @@ TEST(StringBuffer, accessor) {
6371
ASSERT_EQ(buff.length(), 1);
6472
}
6573

66-
TEST(StringBuffer, indexOf) {
74+
TEST(StringBuffer, index_of) {
6775
StringBuffer<10> buff;
6876
for (auto c : { '1', '2', '3', '4', 'O', 'K', 'A', 'Y', '5', '6' })
6977
ASSERT_TRUE(buff.append(c));
70-
ASSERT_EQ(buff.indexOf("1"), 0);
71-
ASSERT_EQ(buff.indexOf("2"), 1);
72-
ASSERT_EQ(buff.indexOf("12"), 0);
73-
ASSERT_EQ(buff.indexOf("23"), 1);
74-
ASSERT_EQ(buff.indexOf("34"), 2);
75-
ASSERT_EQ(buff.indexOf("OKAY"), 4);
78+
ASSERT_EQ(buff.index_of("1"), 0);
79+
ASSERT_EQ(buff.index_of("2"), 1);
80+
ASSERT_EQ(buff.index_of("12"), 0);
81+
ASSERT_EQ(buff.index_of("23"), 1);
82+
ASSERT_EQ(buff.index_of("34"), 2);
83+
ASSERT_EQ(buff.index_of("OKAY"), 4);
7684
ASSERT_EQ(buff.pop_first(), '1');
7785
ASSERT_EQ(buff.pop_first(), '2');
78-
ASSERT_EQ(buff.indexOf("OKAY"), 2);
86+
ASSERT_EQ(buff.index_of("OKAY"), 2);
7987
{
80-
uint16_t pos = buff.indexOf("OKAY") + 4;
88+
uint16_t pos = buff.index_of("OKAY") + 4;
8189
while (pos--)
8290
buff.pop_first();
8391
ASSERT_EQ(buff.length(), 2);
8492
}
85-
ASSERT_EQ(buff.indexOf("56"), 0);
93+
ASSERT_EQ(buff.index_of("56"), 0);
8694
}
8795

88-
TEST(StringBuffer, indexOf_offset) {
96+
TEST(StringBuffer, index_of_offset) {
8997
StringBuffer<10> buff;
9098
for (auto c : { '1', '2', '3', '1', '2', '3', '1', '2', '3', '1' })
9199
ASSERT_TRUE(buff.append(c));
92100
int pos = 0;
93101
uint16_t count = 0;
94102
while (true) {
95-
pos = buff.indexOf("1", pos);
103+
pos = buff.index_of("1", pos);
96104
if (pos == -1)
97105
break;
98106
ASSERT_EQ(buff[pos], '1');

0 commit comments

Comments
 (0)