Line data Source code
1 : // Copyright 2024 Accenture.
2 :
3 : #include "estd/string.h"
4 :
5 : #include "estd/assert.h"
6 :
7 : #include <gtest/gtest.h>
8 :
9 3 : TEST(StringExample, assign)
10 : {
11 : // [EXAMPLE_STRING_ASSIGN_START]
12 1 : estd::declare::string<10> s;
13 1 : s = "Hello";
14 1 : ASSERT_EQ('H', s[0]);
15 1 : ASSERT_EQ('e', s[1]);
16 1 : ASSERT_EQ('\0', s[5]);
17 1 : ASSERT_EQ(5U, s.size());
18 2 : ASSERT_EQ(10U, s.max_size());
19 : // [EXAMPLE_STRING_ASSIGN_END]
20 : }
21 :
22 3 : TEST(StringExample, append)
23 : {
24 : // [EXAMPLE_STRING_APPEND_START]
25 1 : estd::declare::string<10> s("Hello");
26 :
27 1 : s.append("1234", 4);
28 2 : ASSERT_EQ("Hello1234", s);
29 : // [EXAMPLE_STRING_APPEND_END]
30 : }
31 :
32 3 : TEST(StringExample, append_char)
33 : {
34 : // [EXAMPLE_STRING_APPEND_CHAR_START]
35 1 : estd::declare::string<10> s;
36 1 : s += "Hello";
37 1 : ASSERT_EQ('H', s[0]);
38 1 : ASSERT_EQ('e', s[1]);
39 1 : ASSERT_EQ('\0', s[5]);
40 1 : ASSERT_EQ(5U, s.size());
41 2 : ASSERT_EQ(10U, s.max_size());
42 : // [EXAMPLE_STRING_APPEND_CHAR_END]
43 : }
44 :
45 3 : TEST(StringExample, resize)
46 : {
47 : // [EXAMPLE_STRING_RESIZE_START]
48 1 : estd::declare::string<10> s("Hello");
49 1 : ASSERT_EQ(5U, s.size());
50 :
51 1 : s.resize(7, 'c');
52 1 : ASSERT_EQ(7U, s.size());
53 :
54 1 : ASSERT_EQ('H', s[0]);
55 1 : ASSERT_EQ('e', s[1]);
56 1 : ASSERT_EQ('l', s[2]);
57 1 : ASSERT_EQ('l', s[3]);
58 1 : ASSERT_EQ('o', s[4]);
59 1 : ASSERT_EQ('c', s[5]);
60 1 : ASSERT_EQ('c', s[6]);
61 2 : ASSERT_EQ('\0', s[7]);
62 : // [EXAMPLE_STRING_RESIZE_END]
63 : }
64 :
65 3 : TEST(StringExample, string_equal)
66 : {
67 : // [EXAMPLE_STRING_EQUAL_START]
68 1 : estd::declare::string<10> s("Hello");
69 1 : ASSERT_FALSE(s == "ABC");
70 2 : ASSERT_TRUE(s == "Hello");
71 : // [EXAMPLE_STRING_EQUAL_END]
72 : }
73 :
74 3 : TEST(StringExample, length)
75 : {
76 : // [EXAMPLE_STRING_LENGTH_START]
77 1 : estd::declare::string<10> s("Hello");
78 1 : ASSERT_EQ(5U, s.length());
79 1 : ASSERT_EQ(5U, s.size());
80 2 : ASSERT_EQ(10U, s.max_size());
81 : // [EXAMPLE_STRING_LENGTH_END]
82 : }
83 :
84 3 : TEST(StringExample, strtonum)
85 : {
86 : // [EXAMPLE_STRING_TO_NUM_START]
87 1 : uint8_t const bytes[] = {'0', 'x', 'F'};
88 1 : auto const res = ::estd::strtonum<uint8_t>(bytes, 16);
89 2 : EXPECT_EQ(res.get(), 0xFU);
90 : // [EXAMPLE_STRING_TO_NUM_END]
91 1 : }
|