Back

main.cpp coverage

overall coverage: 100.0%

line# code(run#)
1 #include <iostream>
2 #include <sstream>
3
4 #ifndef NO_MEMTRACE
5 #include "memtrace.h"
6 #include "gtest_lite.h"
7 #endif
8
9 #include "myString.h"
10
11 #ifndef GTEST_LITE_H
12 // S-BUDGET gtest_lite
13 #define TEST(a, b) ;
14 #define END ;
15 #define EXPECT_EQ(a, b) std::cout << (a == b);
16 #include <cstring>
17 #define EXPECT_STREQ(a, b) std::cout << std::strcmp(a, b);
18 #define EXPECT_NO_THROW(a) a;
19 #define EXPECT_THROW(a, b) ;
20 #define EXPECT_TRUE(a) std::cout << (a);
21 #define EXPECT_FALSE(a) std::cout << (a);
22 #endif
23
24 int main()(1)
25 {
26 // #1
27 TEST(constructor, empty string)(1)
28 {
29 String s0;(2)
30 const String s1;(2)
31 EXPECT_EQ((size_t)0, s0.length());(1)
32 EXPECT_EQ((size_t)0, s1.length());(1)
33 }
34 END(1)
35
36 /**
37 ======================================
38 */
39
40 // #2
41 TEST(constructor, single char)(1)
42 {
43 String s0('a');(2)
44 const String s1('a');(2)
45 EXPECT_EQ((size_t)1, s0.length());(1)
46 EXPECT_EQ((size_t)1, s1.length());(1)
47 }
48 END(1)
49
50 /**
51 ======================================
52 */
53
54 // #3
55 TEST(constructor, char *nullptr)(1)
56 {
57 String s0(nullptr);(2)
58 const String s1(nullptr);(2)
59 EXPECT_EQ((size_t)0, s0.length());(1)
60 EXPECT_EQ((size_t)0, s1.length());(1)
61 }
62 END(1)
63
64 /**
65 ======================================
66 */
67
68 // #4
69 TEST(constructor, short char *)(1)
70 {
71 String s0("hello");(2)
72 const String s1("hello");(2)
73 EXPECT_EQ((size_t)5, s0.length());(1)
74 EXPECT_EQ((size_t)5, s1.length());(1)
75 }
76 END(1)
77
78 /**
79 ======================================
80 */
81
82 // #5
83 TEST(constructor, long char *)(1)
84 {
85 String s0("01234567890123456789012345678901234567890123456789");(2)
86 const String s1("01234567890123456789012345678901234567890123456789");(2)
87 EXPECT_EQ((size_t)50, s0.length());(1)
88 EXPECT_EQ((size_t)50, s1.length());(1)
89 }
90 END(1)
91
92 /**
93 ======================================
94 */
95
96 // #6
97 TEST(constructor, copy)(1)
98 {
99 String s0;(2)
100 String s1('a');(2)
101 String s2("hello123");(2)
102 String s3("abcdefghijklmnopqrstuvxyz1234567890");(2)
103 const String s4;(2)
104 const String s5('a');(2)
105 const String s6("hello123");(2)
106 const String s7("abcdefghijklmnopqrstuvxyz1234567890");(2)
107
108 String cp0(s0);(2)
109 String cp1(s1);(2)
110 String cp2(s2);(2)
111 String cp3(s3);(2)
112 String cp4(s4);(2)
113 String cp5(s5);(2)
114 String cp6(s6);(2)
115 String cp7(s7);(2)
116
117 EXPECT_EQ((size_t)0, cp0.length());(1)
118 EXPECT_EQ((size_t)1, cp1.length());(1)
119 EXPECT_EQ((size_t)8, cp2.length());(1)
120 EXPECT_EQ((size_t)35, cp3.length());(1)
121 EXPECT_EQ((size_t)0, cp4.length());(1)
122 EXPECT_EQ((size_t)1, cp5.length());(1)
123 EXPECT_EQ((size_t)8, cp6.length());(1)
124 EXPECT_EQ((size_t)35, cp7.length());(1)
125 }
126 END(1)
127
128 /**
129 ======================================
130 */
131
132 // #7
133 TEST(c_str, auto free)(1)
134 {
135 String s0;(2)
136 String s1('a');(2)
137 String s2("hello123");(2)
138 String s3("abcdefghijklmnopqrstuvxyz1234567890");(2)
139 const String s4;(2)
140 const String s5('a');(2)
141 const String s6("hello123");(2)
142 const String s7("abcdefghijklmnopqrstuvxyz1234567890");(2)
143
144 const char *c0 = s0.c_str();(1)
145 const char *c1 = s1.c_str();(1)
146 const char *c2 = s2.c_str();(1)
147 const char *c3 = s3.c_str();(1)
148 const char *c4 = s4.c_str();(1)
149 const char *c5 = s5.c_str();(1)
150 const char *c6 = s6.c_str();(1)
151 const char *c7 = s7.c_str();(1)
152
153 EXPECT_STREQ("", c0);(1)
154 EXPECT_STREQ("a", c1);(1)
155 EXPECT_STREQ("hello123", c2);(1)
156 EXPECT_STREQ("abcdefghijklmnopqrstuvxyz1234567890", c3);(1)
157 EXPECT_STREQ("", c4);(1)
158 EXPECT_STREQ("a", c5);(1)
159 EXPECT_STREQ("hello123", c6);(1)
160 EXPECT_STREQ("abcdefghijklmnopqrstuvxyz1234567890", c7);(1)
161
162 const char *c8 = s7.c_str();(1)
163 EXPECT_STREQ("abcdefghijklmnopqrstuvxyz1234567890", c8);(1)
164
165 s2.free_c_str();(1)
166 s4.free_c_str();(1)
167 }
168 END(1)
169
170 /**
171 ======================================
172 */
173
174 // #8
175 TEST(c_str, manual free)(1)
176 {
177 const char *c0, *c1, *c2, *c3, *c4, *c5, *c6, *c7, *c8, *c9;
178
179 if (true)
180 {
181 String s0;(2)
182 String s1('a');(2)
183 String s2("hello123");(2)
184 String s3("abcdefghijklmnopqrstuvxyz1234567890");(2)
185 const String s4;(2)
186 const String s5('a');(2)
187 const String s6("hello123");(2)
188 const String s7("abcdefghijklmnopqrstuvxyz1234567890");(1)
189
190 c0 = s0.c_str(false);(1)
191 c1 = s1.c_str(false);(1)
192 c2 = s2.c_str(false);(1)
193 c3 = s3.c_str(false);(1)
194 c4 = s4.c_str(false);(1)
195 c5 = s5.c_str(false);(1)
196 c6 = s6.c_str(false);(1)
197 c7 = s7.c_str(false);(1)
198 c8 = s7.c_str(false);(1)
199 c9 = s7.c_str(false);(1)
200 }
201
202 EXPECT_STREQ("", c0);(1)
203 EXPECT_STREQ("a", c1);(1)
204 EXPECT_STREQ("hello123", c2);(1)
205 EXPECT_STREQ("abcdefghijklmnopqrstuvxyz1234567890", c3);(1)
206 EXPECT_STREQ("", c4);(1)
207 EXPECT_STREQ("a", c5);(1)
208 EXPECT_STREQ("hello123", c6);(1)
209 EXPECT_STREQ("abcdefghijklmnopqrstuvxyz1234567890", c7);(1)
210 EXPECT_STREQ("abcdefghijklmnopqrstuvxyz1234567890", c8);(1)
211 EXPECT_STREQ("abcdefghijklmnopqrstuvxyz1234567890", c9);(1)
212
213 delete[] c0;(1)
214 delete[] c1;(1)
215 delete[] c2;(1)
216 delete[] c3;(1)
217 delete[] c4;(1)
218 delete[] c5;(1)
219 delete[] c6;(1)
220 delete[] c7;(1)
221 delete[] c8;(1)
222 delete[] c9;(1)
223 }
224 END(1)
225
226 /**
227 ======================================
228 */
229
230 // #9
231 TEST(assign, empty string)(1)
232 {
233 String s0;(2)
234 String s1;(2)
235 String s2;(2)
236 String s3;(2)
237 String s4;(2)
238 String s5;(2)
239
240 s0 = 'a';(1)
241 s1 = "hello123";(1)
242 s2 = "abcdefghijklmnopqrstuvxyz1234567890abcdefghijklmnopqrstuvxyz1234567890";(1)
243 s3 = "";(1)
244 s4 = String("abcdefghijklmnopqrstuvxyz1234567890abcdefghijklmnopqrstuvxyz1234567890");(1)
245 s5 = nullptr;(1)
246
247 EXPECT_STREQ("a", s0.c_str());(1)
248 EXPECT_STREQ("hello123", s1.c_str());(1)
249 EXPECT_STREQ("abcdefghijklmnopqrstuvxyz1234567890abcdefghijklmnopqrstuvxyz1234567890", s2.c_str());(1)
250 EXPECT_STREQ("", s3.c_str());(1)
251 EXPECT_STREQ("abcdefghijklmnopqrstuvxyz1234567890abcdefghijklmnopqrstuvxyz1234567890", s4.c_str());(1)
252 EXPECT_STREQ("", s5.c_str());(1)
253 }
254 END(1)
255
256 /**
257 ======================================
258 */
259
260 // #10
261 TEST(assign, short string)(1)
262 {
263 String s0("abc123");(2)
264 String s1("abc123");(2)
265 String s2("abc123");(2)
266 String s3("abc123");(2)
267 String s4("abc123");(2)
268 String s5("abc123");(2)
269
270 s0 = 'a';(1)
271 s1 = "hello123";(1)
272 s2 = "abcdefghijklmnopqrstuvxyz1234567890abcdefghijklmnopqrstuvxyz1234567890";(1)
273 s3 = "";(1)
274 s4 = String("abcdefghijklmnopqrstuvxyz1234567890abcdefghijklmnopqrstuvxyz1234567890");(1)
275 s5 = nullptr;(1)
276
277 EXPECT_STREQ("a", s0.c_str());(1)
278 EXPECT_STREQ("hello123", s1.c_str());(1)
279 EXPECT_STREQ("abcdefghijklmnopqrstuvxyz1234567890abcdefghijklmnopqrstuvxyz1234567890", s2.c_str());(1)
280 EXPECT_STREQ("", s3.c_str());(1)
281 EXPECT_STREQ("abcdefghijklmnopqrstuvxyz1234567890abcdefghijklmnopqrstuvxyz1234567890", s4.c_str());(1)
282 EXPECT_STREQ("", s5.c_str());(1)
283 }
284 END(1)
285
286 /**
287 ======================================
288 */
289
290 // #11
291 TEST(assign, long string)(1)
292 {
293 String s0("0123456789012345678901234567890123456789abcdefghijlomnopqrstuvxyz");(2)
294 String s1("0123456789012345678901234567890123456789abcdefghijlomnopqrstuvxyz");(2)
295 String s2("0123456789012345678901234567890123456789abcdefghijlomnopqrstuvxyz");(2)
296 String s3("0123456789012345678901234567890123456789abcdefghijlomnopqrstuvxyz");(2)
297 String s4("0123456789012345678901234567890123456789abcdefghijlomnopqrstuvxyz");(2)
298 String s5("0123456789012345678901234567890123456789abcdefghijlomnopqrstuvxyz");(2)
299
300 s0 = "hello123";(1)
301 s1 = "abcdefghijklmnopqrstuvxyz1234567890abcdefghijklmnopqrstuvxyz1234567890";(1)
302 s2 = "";(1)
303 s3 = String("abcdefghijklmnopqrstuvxyz1234567890abcdefghijklmnopqrstuvxyz1234567890");(1)
304 s4 = String("abcdefghijklmnopqrstuvxyz1234567890abcdefghijklmnopqrstuvxyz1234567890");(1)
305 s5 = nullptr;(1)
306
307 EXPECT_STREQ("hello123", s0.c_str());(1)
308 EXPECT_STREQ("abcdefghijklmnopqrstuvxyz1234567890abcdefghijklmnopqrstuvxyz1234567890", s1.c_str());(1)
309 EXPECT_STREQ("", s2.c_str());(1)
310 EXPECT_STREQ("abcdefghijklmnopqrstuvxyz1234567890abcdefghijklmnopqrstuvxyz1234567890", s3.c_str());(1)
311 EXPECT_STREQ("abcdefghijklmnopqrstuvxyz1234567890abcdefghijklmnopqrstuvxyz1234567890", s4.c_str());(1)
312 EXPECT_STREQ("", s5.c_str());(1)
313 }
314 END(1)
315
316 /**
317 ======================================
318 */
319
320 // #12
321 TEST(assign, self assign)(1)
322 {
323 String s0("hello123");(2)
324
325 EXPECT_NO_THROW(s0 = s0);(1)
326
327 EXPECT_STREQ("hello123", s0.c_str());(1)
328 }
329 END(1)
330
331 /**
332 ======================================
333 */
334
335 // #13
336 TEST(indexing, empty string)(1)
337 {
338 String s;(2)
339 EXPECT_THROW(s[0], std::out_of_range const &);(2)
340 EXPECT_THROW(s[-1], std::out_of_range const &);(2)
341 EXPECT_THROW(s[1], std::out_of_range const &);(2)
342 }
343 END(1)
344
345 /**
346 ======================================
347 */
348
349 // #14
350 TEST(indexing, single char)(1)
351 {
352 String s0('a');(2)
353 const String s1('a');(2)
354
355 EXPECT_NO_THROW(s0[0]);(1)
356 EXPECT_NO_THROW(s1[0]);(1)
357 EXPECT_EQ('a', s0[0]);(1)
358 EXPECT_EQ('a', s1[0]);(1)
359 EXPECT_THROW(s0[1], std::out_of_range const &);(2)
360 EXPECT_THROW(s0[-1], std::out_of_range const &);(2)
361 EXPECT_THROW(s1[1], std::out_of_range const &);(2)
362 EXPECT_THROW(s1[-1], std::out_of_range const &);(2)
363
364 s0[0] = 'b';(1)
365
366 EXPECT_EQ('b', s0[0]);(1)
367 }
368 END(1)
369
370 /**
371 ======================================
372 */
373
374 // #15
375 TEST(indexing, short string)(1)
376 {
377 String s0("abc123");(2)
378 const String s1("abc123");(2)
379
380 EXPECT_NO_THROW(s0[0]);(1)
381 EXPECT_NO_THROW(s1[0]);(1)
382 EXPECT_NO_THROW(s0[5]);(1)
383 EXPECT_NO_THROW(s1[5]);(1)
384 EXPECT_THROW(s0[6], std::out_of_range const &);(2)
385 EXPECT_THROW(s0[-1], std::out_of_range const &);(2)
386 EXPECT_THROW(s1[6], std::out_of_range const &);(2)
387 EXPECT_THROW(s1[-1], std::out_of_range const &);(2)
388 EXPECT_EQ('a', s0[0]);(1)
389 EXPECT_EQ('3', s0[5]);(1)
390 EXPECT_EQ('a', s1[0]);(1)
391 EXPECT_EQ('b', s1[1]);(1)
392 EXPECT_EQ('c', s1[2]);(1)
393 EXPECT_EQ('1', s1[3]);(1)
394 EXPECT_EQ('2', s1[4]);(1)
395 EXPECT_EQ('3', s1[5]);(1)
396
397 s0[0] = 'b';(1)
398 s0[1] = 'c';(1)
399 s0[2] = 'd';(1)
400 s0[3] = 'e';(1)
401 s0[4] = 'f';(1)
402
403 EXPECT_EQ('b', s0[0]);(1)
404 EXPECT_EQ('c', s0[1]);(1)
405 EXPECT_EQ('d', s0[2]);(1)
406 EXPECT_EQ('e', s0[3]);(1)
407 EXPECT_EQ('f', s0[4]);(1)
408 }
409 END(1)
410
411 /**
412 ======================================
413 */
414
415 // #16
416 TEST(indexing, long string)(1)
417 {
418 String s0("0123456789012345678901234567890123456789abcdefghijlomnopqrstuvxyz");(2)
419 const String s1("0123456789012345678901234567890123456789abcdefghijlomnopqrstuvxyz");(2)
420 const String s2("abcdefghijklmnopqrstuvxyz1234567890abcdefghijklmnopqrstuvxyz1234567890abcdefghijklmnopqrstuvxyz1234567890abcdefghijklmnopqrstuvxyz1234567890");(2)
421
422 EXPECT_NO_THROW(s0[0]);(1)
423 EXPECT_NO_THROW(s1[0]);(1)
424 EXPECT_NO_THROW(s0[64]);(1)
425 EXPECT_NO_THROW(s1[64]);(1)
426 EXPECT_THROW(s0[65], std::out_of_range const &);(2)
427 EXPECT_THROW(s0[-1], std::out_of_range const &);(2)
428 EXPECT_THROW(s1[65], std::out_of_range const &);(2)
429 EXPECT_THROW(s1[-1], std::out_of_range const &);(2)
430 EXPECT_EQ('0', s0[0]);(1)
431 EXPECT_EQ('0', s0[10]);(1)
432 EXPECT_EQ('0', s0[20]);(1)
433 EXPECT_EQ('0', s0[30]);(1)
434 EXPECT_EQ('a', s0[40]);(1)
435 EXPECT_EQ('l', s0[50]);(1)
436 EXPECT_EQ('u', s0[60]);(1)
437 EXPECT_EQ('z', s0[64]);(1)
438 EXPECT_EQ('0', s1[0]);(1)
439 EXPECT_EQ('0', s1[10]);(1)
440 EXPECT_EQ('0', s1[20]);(1)
441 EXPECT_EQ('0', s1[30]);(1)
442 EXPECT_EQ('a', s1[40]);(1)
443 EXPECT_EQ('l', s1[50]);(1)
444 EXPECT_EQ('u', s1[60]);(1)
445 EXPECT_EQ('z', s1[64]);(1)
446 EXPECT_EQ('a', s2[0]);(1)
447 EXPECT_EQ('6', s2[100]);(1)
448 EXPECT_EQ('a', s2[70]);(1)
449
450 s0[0] = 'b';(1)
451 s0[10] = 'c';(1)
452 s0[40] = 'f';(1)
453 s0[30] = 'e';(1)
454 s0[20] = 'd';(1)
455
456 EXPECT_EQ('b', s0[0]);(1)
457 EXPECT_EQ('c', s0[10]);(1)
458 EXPECT_EQ('d', s0[20]);(1)
459 EXPECT_EQ('e', s0[30]);(1)
460 EXPECT_EQ('f', s0[40]);(1)
461 }
462 END(1)
463
464 /**
465 ======================================
466 */
467
468 // #17
469 TEST(equality, char)(1)
470 {
471 String s0('a');(2)
472 const String s1('a');(2)
473 String s2("abc");(2)
474 const String s3("abc");(2)
475
476 EXPECT_FALSE(s0 == '0');(1)
477 EXPECT_FALSE(s0 == 'b');(1)
478 EXPECT_TRUE(s0 == 'a');(1)
479 EXPECT_FALSE(s1 == '0');(1)
480 EXPECT_FALSE(s1 == 'b');(1)
481 EXPECT_TRUE(s1 == 'a');(1)
482
483 EXPECT_FALSE(s2 == '0');(1)
484 EXPECT_FALSE(s2 == 'a');(1)
485 EXPECT_FALSE(s3 == '0');(1)
486 EXPECT_FALSE(s3 == 'a');(1)
487
488 EXPECT_TRUE(s0 != '0');(1)
489 EXPECT_TRUE(s0 != 'b');(1)
490 EXPECT_FALSE(s0 != 'a');(1)
491 EXPECT_TRUE(s1 != '0');(1)
492 EXPECT_TRUE(s1 != 'b');(1)
493 EXPECT_FALSE(s1 != 'a');(1)
494
495 EXPECT_TRUE(s2 != '0');(1)
496 EXPECT_TRUE(s2 != 'a');(1)
497 EXPECT_TRUE(s3 != '0');(1)
498 EXPECT_TRUE(s3 != 'a');(1)
499 }
500 END(1)
501
502 /**
503 ======================================
504 */
505
506 // #18
507 TEST(equality, char *nullptr)(1)
508 {
509 String s0('a');(2)
510 const String s1('a');(2)
511 String s2("abc");(2)
512 const String s3("abc");(2)
513
514 EXPECT_FALSE(s0 == nullptr);(1)
515 EXPECT_FALSE(s1 == nullptr);(1)
516 EXPECT_FALSE(s2 == nullptr);(1)
517 EXPECT_FALSE(s3 == nullptr);(1)
518
519 EXPECT_TRUE(s0 != nullptr);(1)
520 EXPECT_TRUE(s1 != nullptr);(1)
521 EXPECT_TRUE(s2 != nullptr);(1)
522 EXPECT_TRUE(s3 != nullptr);(1)
523 }
524 END(1)
525
526 /**
527 ======================================
528 */
529
530 // #19
531 TEST(equality, short char *)(1)
532 {
533 String s0('a');(2)
534 const String s1('a');(2)
535 String s2("abc");(2)
536 const String s3("abc");(2)
537
538 EXPECT_FALSE(s0 == "0");(1)
539 EXPECT_FALSE(s0 == "b");(1)
540 EXPECT_TRUE(s0 == "a");(1)
541 EXPECT_FALSE(s1 == "0");(1)
542 EXPECT_FALSE(s1 == "b");(1)
543 EXPECT_TRUE(s1 == "a");(1)
544
545 EXPECT_FALSE(s0 == "abc");(1)
546 EXPECT_FALSE(s1 == "abc");(1)
547
548 EXPECT_FALSE(s2 == "0");(1)
549 EXPECT_FALSE(s2 == "a");(1)
550 EXPECT_TRUE(s2 == "abc");(1)
551 EXPECT_FALSE(s2 == "def");(1)
552 EXPECT_FALSE(s3 == "0");(1)
553 EXPECT_FALSE(s3 == "a");(1)
554 EXPECT_TRUE(s3 == "abc");(1)
555 EXPECT_FALSE(s3 == "def");(1)
556
557 EXPECT_TRUE(s0 != "0");(1)
558 EXPECT_TRUE(s0 != "b");(1)
559 EXPECT_FALSE(s0 != "a");(1)
560 EXPECT_TRUE(s1 != "0");(1)
561 EXPECT_TRUE(s1 != "b");(1)
562 EXPECT_FALSE(s1 != "a");(1)
563
564 EXPECT_TRUE(s0 != "abc");(1)
565 EXPECT_TRUE(s1 != "abc");(1)
566
567 EXPECT_TRUE(s2 != "0");(1)
568 EXPECT_TRUE(s2 != "a");(1)
569 EXPECT_FALSE(s2 != "abc");(1)
570 EXPECT_TRUE(s2 != "def");(1)
571 EXPECT_TRUE(s3 != "0");(1)
572 EXPECT_TRUE(s3 != "a");(1)
573 EXPECT_FALSE(s3 != "abc");(1)
574 EXPECT_TRUE(s3 != "def");(1)
575 }
576 END(1)
577
578 /**
579 ======================================
580 */
581
582 // #20
583 TEST(equality, long char *)(1)
584 {
585 String s0("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(2)
586 const String s1("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(2)
587
588 EXPECT_FALSE(s0 == "0");(1)
589 EXPECT_FALSE(s0 == "a");(1)
590 EXPECT_FALSE(s0 == "abcdefghijlomnopqrstuvxyz");(1)
591 EXPECT_TRUE(s0 == "abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(1)
592
593 EXPECT_TRUE(s0 != "0");(1)
594 EXPECT_TRUE(s0 != "a");(1)
595 EXPECT_TRUE(s0 != "abcdefghijlomnopqrstuvxyz");(1)
596 EXPECT_FALSE(s0 != "abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(1)
597 }
598 END(1)
599
600 /**
601 ======================================
602 */
603
604 // #21
605 TEST(equality, string)(1)
606 {
607 String s0("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(2)
608 const String s1("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(2)
609 const String s2("abc");(2)
610 const String s3("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxy1");(2)
611
612 EXPECT_TRUE(s0 == s0);(1)
613 EXPECT_TRUE(s0 == s1);(1)
614 EXPECT_TRUE(s1 == s0);(1)
615 EXPECT_TRUE(s1 == s1);(1)
616 EXPECT_FALSE(s0 == s2);(1)
617 EXPECT_FALSE(s0 == s3);(1)
618 EXPECT_FALSE(s1 == s2);(1)
619 EXPECT_FALSE(s1 == s3);(1)
620
621 EXPECT_FALSE(s0 != s0);(1)
622 EXPECT_FALSE(s0 != s1);(1)
623 EXPECT_FALSE(s1 != s0);(1)
624 EXPECT_FALSE(s1 != s1);(1)
625 EXPECT_TRUE(s0 != s2);(1)
626 EXPECT_TRUE(s0 != s3);(1)
627 EXPECT_TRUE(s1 != s2);(1)
628 EXPECT_TRUE(s1 != s3);(1)
629 }
630 END(1)
631
632 /**
633 ======================================
634 */
635
636 // #22
637 TEST(add, single char)(1)
638 {
639 String s0;(2)
640 const String s1;(2)
641 String s2('a');(2)
642 const String s3('a');(2)
643 String s4("abc");(2)
644 const String s5("abc");(2)
645 String s6("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(2)
646 const String s7("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(2)
647
648 String s8 = s0 + '0';(2)
649 String s9 = s1 + '0';(2)
650 String s10 = s2 + '0';(2)
651 String s11 = s3 + '0';(2)
652 String s12 = s4 + '0';(2)
653 String s13 = s5 + '0';(2)
654 String s14 = s6 + '0';(2)
655 String s15 = s7 + '0';(2)
656
657 EXPECT_STREQ("0", s8.c_str());(1)
658 EXPECT_STREQ("0", s9.c_str());(1)
659 EXPECT_STREQ("a0", s10.c_str());(1)
660 EXPECT_STREQ("a0", s11.c_str());(1)
661 EXPECT_STREQ("abc0", s12.c_str());(1)
662 EXPECT_STREQ("abc0", s13.c_str());(1)
663 EXPECT_STREQ("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz0", s14.c_str());(1)
664 EXPECT_STREQ("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz0", s15.c_str());(1)
665 }
666 END(1)
667
668 /**
669 ======================================
670 */
671
672 // #23
673 TEST(add, multiple chars)(1)
674 {
675 String s0;(2)
676 const String s1;(2)
677
678 String s2 = s0 + '0' + '1' + '2' + '3' + '4' + '5' + '6' + '7' + '8' + '9' +(2)
679 'a' + 'b' + 'c' + 'd' + 'e' + 'f' + 'g' + 'h' + 'i' + 'j' + 'k' + 'l' + 'm' +(2)
680 'n' + 'o' + 'p' + 'q' + 'r' + 's' + 't' + 'u' + 'v' + 'w' + 'x' + 'y' + 'z';(3)
681 String s3 = s1 + '0' + '1' + '2' + '3' + '4' + '5' + '6' + '7' + '8' + '9' +(2)
682 'a' + 'b' + 'c' + 'd' + 'e' + 'f' + 'g' + 'h' + 'i' + 'j' + 'k' + 'l' + 'm' +(2)
683 'n' + 'o' + 'p' + 'q' + 'r' + 's' + 't' + 'u' + 'v' + 'w' + 'x' + 'y' + 'z';(3)
684
685 EXPECT_STREQ("0123456789abcdefghijklmnopqrstuvwxyz", s2.c_str());(1)
686 EXPECT_STREQ("0123456789abcdefghijklmnopqrstuvwxyz", s3.c_str());(1)
687 }
688 END(1)
689
690 /**
691 ======================================
692 */
693
694 // #24
695 TEST(add, short char *)(1)
696 {
697 String s0;(2)
698 const String s1;(2)
699 String s2('a');(2)
700 const String s3('a');(2)
701 String s4("abc");(2)
702 const String s5("abc");(2)
703 String s6("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(2)
704 const String s7("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(2)
705
706 String s8 = s0 + "0";(2)
707 String s9 = s0 + "012";(2)
708 String s10 = s1 + "0";(2)
709 String s11 = s1 + "012";(2)
710 String s12 = s2 + "0";(2)
711 String s13 = s2 + "012";(2)
712 String s14 = s3 + "0";(2)
713 String s15 = s3 + "012";(2)
714 String s16 = s4 + "0";(2)
715 String s17 = s4 + "012";(2)
716 String s18 = s5 + "0";(2)
717 String s19 = s5 + "012";(2)
718 String s20 = s6 + "0";(2)
719 String s21 = s6 + "012";(2)
720 String s22 = s7 + "0";(2)
721 String s23 = s7 + "012";(2)
722 String s24 = s0 + nullptr;(2)
723 String s25 = s1 + nullptr;(2)
724 String s26 = s2 + nullptr;(2)
725 String s27 = s3 + nullptr;(2)
726 String s28 = s4 + nullptr;(2)
727 String s29 = s5 + nullptr;(2)
728 String s30 = s6 + nullptr;(2)
729 String s31 = s7 + nullptr;(2)
730
731 EXPECT_STREQ("0", s8.c_str());(1)
732 EXPECT_STREQ("012", s9.c_str());(1)
733 EXPECT_STREQ("0", s10.c_str());(1)
734 EXPECT_STREQ("012", s11.c_str());(1)
735 EXPECT_STREQ("a0", s12.c_str());(1)
736 EXPECT_STREQ("a012", s13.c_str());(1)
737 EXPECT_STREQ("a0", s14.c_str());(1)
738 EXPECT_STREQ("a012", s15.c_str());(1)
739 EXPECT_STREQ("abc0", s16.c_str());(1)
740 EXPECT_STREQ("abc012", s17.c_str());(1)
741 EXPECT_STREQ("abc0", s18.c_str());(1)
742 EXPECT_STREQ("abc012", s19.c_str());(1)
743 EXPECT_STREQ("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz0", s20.c_str());(1)
744 EXPECT_STREQ("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz012", s21.c_str());(1)
745 EXPECT_STREQ("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz0", s22.c_str());(1)
746 EXPECT_STREQ("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz012", s23.c_str());(1)
747 EXPECT_STREQ("", s24.c_str());(1)
748 EXPECT_STREQ("", s25.c_str());(1)
749 EXPECT_STREQ("a", s26.c_str());(1)
750 EXPECT_STREQ("a", s27.c_str());(1)
751 EXPECT_STREQ("abc", s28.c_str());(1)
752 EXPECT_STREQ("abc", s29.c_str());(1)
753 EXPECT_STREQ("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz", s30.c_str());(1)
754 EXPECT_STREQ("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz", s31.c_str());(1)
755 }
756 END(1)
757
758 /**
759 ======================================
760 */
761
762 // #25
763 TEST(add, long char *)(1)
764 {
765 String s0;(2)
766 const String s1;(2)
767 String s2('a');(2)
768 const String s3('a');(2)
769 String s4("abc");(2)
770 const String s5("abc");(2)
771 String s6("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(2)
772 const String s7("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(2)
773
774 String s8 = s0 + "012345678901234567890123456789";(2)
775 String s9 = s1 + "012345678901234567890123456789";(2)
776 String s10 = s2 + "012345678901234567890123456789";(2)
777 String s11 = s3 + "012345678901234567890123456789";(2)
778 String s12 = s4 + "012345678901234567890123456789";(2)
779 String s13 = s5 + "012345678901234567890123456789";(2)
780 String s14 = s6 + "012345678901234567890123456789";(2)
781 String s15 = s7 + "012345678901234567890123456789";(2)
782
783 EXPECT_STREQ("012345678901234567890123456789", s8.c_str());(1)
784 EXPECT_STREQ("012345678901234567890123456789", s9.c_str());(1)
785 EXPECT_STREQ("a012345678901234567890123456789", s10.c_str());(1)
786 EXPECT_STREQ("a012345678901234567890123456789", s11.c_str());(1)
787 EXPECT_STREQ("abc012345678901234567890123456789", s12.c_str());(1)
788 EXPECT_STREQ("abc012345678901234567890123456789", s13.c_str());(1)
789 EXPECT_STREQ("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz012345678901234567890123456789", s14.c_str());(1)
790 EXPECT_STREQ("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz012345678901234567890123456789", s15.c_str());(1)
791 }
792 END(1)
793
794 /**
795 ======================================
796 */
797
798 // #26
799 TEST(add, string)(1)
800 {
801 String s0;(2)
802 const String s1;(2)
803 String s2('a');(2)
804 const String s3('a');(2)
805 String s4("abc");(2)
806 const String s5("abc");(2)
807 String s6("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(2)
808 const String s7("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(2)
809
810 const String sa("012345678901234567890123456789");(2)
811
812 String s8 = s0 + sa;(2)
813 String s9 = s1 + sa;(2)
814 String s10 = s2 + sa;(2)
815 String s11 = s3 + sa;(2)
816 String s12 = s4 + sa;(2)
817 String s13 = s5 + sa;(2)
818 String s14 = s6 + sa;(2)
819 String s15 = s7 + sa;(2)
820 String s16 = s7 + s7;(2)
821
822 EXPECT_STREQ("012345678901234567890123456789", s8.c_str());(1)
823 EXPECT_STREQ("012345678901234567890123456789", s9.c_str());(1)
824 EXPECT_STREQ("a012345678901234567890123456789", s10.c_str());(1)
825 EXPECT_STREQ("a012345678901234567890123456789", s11.c_str());(1)
826 EXPECT_STREQ("abc012345678901234567890123456789", s12.c_str());(1)
827 EXPECT_STREQ("abc012345678901234567890123456789", s13.c_str());(1)
828 EXPECT_STREQ("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz012345678901234567890123456789", s14.c_str());(1)
829 EXPECT_STREQ("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz012345678901234567890123456789", s15.c_str());(1)
830 EXPECT_STREQ("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz", s16.c_str());(1)
831 }
832 END(1)
833
834 /**
835 ======================================
836 */
837
838 // #27
839 TEST(append, single char)(1)
840 {
841 String s0;(2)
842 String s1('a');(2)
843 String s2("abc");(2)
844 String s3("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(2)
845
846 s0 += '0';(1)
847 s1 += '0';(1)
848 s2 += '0';(1)
849 s3 += '0';(1)
850
851 EXPECT_STREQ("0", s0.c_str());(1)
852 EXPECT_STREQ("a0", s1.c_str());(1)
853 EXPECT_STREQ("abc0", s2.c_str());(1)
854 EXPECT_STREQ("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz0", s3.c_str());(1)
855 }
856 END(1)
857
858 /**
859 ======================================
860 */
861
862 // #28
863 TEST(append, multiple chars)(1)
864 {
865 String s0;(2)
866
867 s0 += '0';(1)
868 s0 += '1';(1)
869 s0 += '2';(1)
870 s0 += '3';(1)
871 s0 += '4';(1)
872 s0 += '5';(1)
873 s0 += '6';(1)
874 s0 += '7';(1)
875 s0 += '8';(1)
876 s0 += '9';(1)
877 s0 += 'a';(1)
878 s0 += 'b';(1)
879 s0 += 'c';(1)
880 s0 += 'd';(1)
881 s0 += 'e';(1)
882 s0 += 'f';(1)
883 s0 += 'g';(1)
884 s0 += 'h';(1)
885 s0 += 'i';(1)
886 s0 += 'j';(1)
887 s0 += 'k';(1)
888 s0 += 'l';(1)
889 s0 += 'm';(1)
890 s0 += 'n';(1)
891 s0 += 'o';(1)
892 s0 += 'p';(1)
893 s0 += 'q';(1)
894 s0 += 'r';(1)
895 s0 += 's';(1)
896 s0 += 't';(1)
897 s0 += 'u';(1)
898 s0 += 'v';(1)
899 s0 += 'w';(1)
900 s0 += 'x';(1)
901 s0 += 'y';(1)
902 s0 += 'z';(1)
903
904 EXPECT_STREQ("0123456789abcdefghijklmnopqrstuvwxyz", s0.c_str());(1)
905 }
906 END(1)
907
908 /**
909 ======================================
910 */
911
912 // #29
913 TEST(append, short char *)(1)
914 {
915 String s0;(2)
916 String s1;(2)
917 String s2('a');(2)
918 String s3('a');(2)
919 String s4("abc");(2)
920 String s5("abc");(2)
921 String s6("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(2)
922 String s7("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(2)
923
924 s0 += "0";(1)
925 s1 += "012";(1)
926 s2 += "0";(1)
927 s3 += "012";(1)
928 s4 += "0";(1)
929 s5 += "012";(1)
930 s6 += "0";(1)
931 s7 += "012";(1)
932
933 EXPECT_STREQ("0", s0.c_str());(1)
934 EXPECT_STREQ("012", s1.c_str());(1)
935 EXPECT_STREQ("a0", s2.c_str());(1)
936 EXPECT_STREQ("a012", s3.c_str());(1)
937 EXPECT_STREQ("abc0", s4.c_str());(1)
938 EXPECT_STREQ("abc012", s5.c_str());(1)
939 EXPECT_STREQ("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz0", s6.c_str());(1)
940 EXPECT_STREQ("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz012", s7.c_str());(1)
941 }
942 END(1)
943
944 /**
945 ======================================
946 */
947
948 // #30
949 TEST(append, long char *)(1)
950 {
951 String s0;(2)
952 String s1('a');(2)
953 String s2("abc");(2)
954 String s3("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(2)
955
956 s0 += "012345678901234567890123456789";(1)
957 s1 += "012345678901234567890123456789";(1)
958 s2 += "012345678901234567890123456789";(1)
959 s3 += "012345678901234567890123456789";(1)
960
961 EXPECT_STREQ("012345678901234567890123456789", s0.c_str());(1)
962 EXPECT_STREQ("a012345678901234567890123456789", s1.c_str());(1)
963 EXPECT_STREQ("abc012345678901234567890123456789", s2.c_str());(1)
964 EXPECT_STREQ("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz012345678901234567890123456789", s3.c_str());(1)
965 }
966 END(1)
967
968 /**
969 ======================================
970 */
971
972 // #31
973 TEST(append, string)(1)
974 {
975 String s0;(2)
976 String s1('a');(2)
977 String s2("abc");(2)
978 String s3("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(2)
979 String s4("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(2)
980 String s5("abc");(2)
981
982 const String sa("012345678901234567890123456789");(2)
983 const String sb("012");(2)
984
985 s0 += sa;(1)
986 s1 += sa;(1)
987 s2 += sa;(1)
988 s3 += sa;(1)
989 s4 += s4;(1)
990 s5 += sb;(1)
991
992 EXPECT_STREQ("012345678901234567890123456789", s0.c_str());(1)
993 EXPECT_STREQ("a012345678901234567890123456789", s1.c_str());(1)
994 EXPECT_STREQ("abc012345678901234567890123456789", s2.c_str());(1)
995 EXPECT_STREQ("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz012345678901234567890123456789", s3.c_str());(1)
996 EXPECT_STREQ("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz", s4.c_str());(1)
997 EXPECT_STREQ("abc012", s5.c_str());(1)
998 }
999 END(1)
1000
1001 /**
1002 ======================================
1003 */
1004
1005 // #32
1006 TEST(substring, normal)(1)
1007 {
1008 String s0("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(2)
1009
1010 String ss0 = s0.substr(0, 3);(2)
1011 String ss1 = s0.substr(3, 6);(2)
1012 String ss2 = s0.substr(9, 50);(2)
1013
1014 EXPECT_STREQ("abc", ss0.c_str());(1)
1015 EXPECT_STREQ("defghi", ss1.c_str());(1)
1016 EXPECT_STREQ("jlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghi", ss2.c_str());(1)
1017 }
1018 END(1)
1019
1020 /**
1021 ======================================
1022 */
1023
1024 // #33
1025 TEST(substring, invalid)(1)
1026 {
1027 String s0("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(2)
1028
1029 EXPECT_THROW(s0.substr(0, -1), std::out_of_range const &);(2)
1030 EXPECT_THROW(s0.substr(0, 76), std::out_of_range const &);(2)
1031 EXPECT_THROW(s0.substr(77, 1), std::out_of_range const &);(2)
1032 }
1033 END(1)
1034
1035 /**
1036 ======================================
1037 */
1038
1039 // #34
1040 TEST(find, char)(1)
1041 {
1042 String s0("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(2)
1043
1044 EXPECT_EQ(size_t(0), s0.find('a'));(1)
1045 EXPECT_EQ(size_t(1), s0.find('b'));(1)
1046 EXPECT_EQ(size_t(2), s0.find('c'));(1)
1047
1048 EXPECT_THROW(s0.find('Z'), std::out_of_range const &);(2)
1049 EXPECT_THROW(s0.find('0'), std::out_of_range const &);(2)
1050 }
1051 END(1)
1052
1053 /**
1054 ======================================
1055 */
1056
1057 // #35
1058 TEST(find, char *)(1)
1059 {
1060 String s0("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(2)
1061
1062 EXPECT_EQ(size_t(0), s0.find("abc"));(1)
1063 EXPECT_EQ(size_t(3), s0.find("def"));(1)
1064
1065 EXPECT_THROW(s0.find("abd"), std::out_of_range const &);(2)
1066 EXPECT_THROW(s0.find("0abc"), std::out_of_range const &);(2)
1067 EXPECT_THROW(s0.find(nullptr), std::out_of_range const &);(2)
1068 }
1069 END(1)
1070
1071 /**
1072 ======================================
1073 */
1074
1075 // #36
1076 TEST(find, string)(1)
1077 {
1078 String s0("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(2)
1079 String f0("abc");(2)
1080 String f1("def");(2)
1081 String f2("0abc");(2)
1082 String f3("abc0");(2)
1083
1084 EXPECT_EQ(size_t(0), s0.find(f0));(1)
1085 EXPECT_EQ(size_t(3), s0.find(f1));(1)
1086 EXPECT_THROW(s0.find(f2), std::out_of_range const &);(2)
1087 EXPECT_THROW(s0.find(f3), std::out_of_range const &);(2)
1088 }
1089 END(1)
1090
1091 /**
1092 ======================================
1093 */
1094
1095 // #37
1096 TEST(iterator, basic)(1)
1097 {
1098 String s0("abcdefghi");(2)
1099
1100 auto it = s0.begin();(2)
1101 auto ite = s0.end();(2)
1102
1103 const auto it2(it);(2)
1104 String::ConstIterator it3(it);(2)
1105 const String::ConstIterator it4(it3);(2)
1106
1107 EXPECT_TRUE(it2 == it3);(1)
1108 EXPECT_TRUE(it4 == it2);(1)
1109 EXPECT_FALSE(it2 != it3);(1)
1110 EXPECT_FALSE(it4 != it2);(1)
1111 EXPECT_EQ('a', *it);(1)
1112 EXPECT_NO_THROW(++it);(1)
1113 EXPECT_EQ('b', *it);(1)
1114 EXPECT_NO_THROW(--it);(1)
1115 EXPECT_EQ('a', *it);(1)
1116 ++it;(1)
1117 ++it;(1)
1118 ++it;(1)
1119 ++it;(1)
1120 ++it;(1)
1121 ++it;(1)
1122 ++it;(1)
1123 ++it;(1)
1124 EXPECT_EQ('i', *it);(1)
1125 *it = 'j';(1)
1126 EXPECT_EQ('j', *it);(1)
1127 EXPECT_TRUE(it != ite);(1)
1128 EXPECT_NO_THROW(++it);(1)
1129 EXPECT_TRUE(ite == it);(1)
1130 }
1131 END(1)
1132
1133 /**
1134 ======================================
1135 */
1136
1137 // #38
1138 TEST(iterator, invalid)(1)
1139 {
1140 String s0("abcdefghi");(2)
1141
1142 auto it = s0.begin();(2)
1143 auto ite = s0.end();(2)
1144
1145 EXPECT_NO_THROW(--it);(1)
1146 EXPECT_THROW(*it, std::out_of_range const &);(2)
1147 EXPECT_THROW(*ite, std::out_of_range const &);(2)
1148 EXPECT_NO_THROW(++it);(1)
1149 EXPECT_EQ('a', *it);(1)
1150 EXPECT_NO_THROW(--ite);(1)
1151 EXPECT_EQ('i', *ite);(1)
1152 EXPECT_NO_THROW(*ite = 'x');(1)
1153 EXPECT_EQ('x', *ite);(1)
1154 }
1155 END(1)
1156
1157 /**
1158 ======================================
1159 */
1160
1161 // #39
1162 TEST(iterator, const)(1)
1163 {
1164 const String s0("abcdefghi");(2)
1165
1166 auto it = s0.begin();(2)
1167 auto ite = s0.end();(2)
1168
1169 EXPECT_EQ('a', *it);(1)
1170 EXPECT_NO_THROW(++it);(1)
1171 EXPECT_EQ('b', *it);(1)
1172 EXPECT_NO_THROW(--it);(1)
1173 EXPECT_EQ('a', *it);(1)
1174 ++it;(1)
1175 ++it;(1)
1176 ++it;(1)
1177 ++it;(1)
1178 ++it;(1)
1179 ++it;(1)
1180 ++it;(1)
1181 ++it;(1)
1182 EXPECT_EQ('i', *it);(1)
1183 EXPECT_TRUE(it != ite);(1)
1184 EXPECT_NO_THROW(++it);(1)
1185 EXPECT_TRUE(ite == it);(1)
1186
1187 auto it2 = s0.begin();(2)
1188 auto it2e = s0.end();(2)
1189
1190 EXPECT_NO_THROW(--it2);(1)
1191 EXPECT_THROW(*it2, std::out_of_range const &);(2)
1192 EXPECT_THROW(*it2e, std::out_of_range const &);(2)
1193 EXPECT_NO_THROW(++it2);(1)
1194 EXPECT_EQ('a', *it2);(1)
1195 EXPECT_NO_THROW(--it2e);(1)
1196 EXPECT_EQ('i', *it2e);(1)
1197 }
1198 END(1)
1199
1200 /**
1201 ======================================
1202 */
1203
1204 // #40
1205 TEST(stream, istream)(1)
1206 {
1207 std::stringstream is(std::string("abc123\naaabbbccc\r12345"));(3)
1208 ;
1209
1210 String s0;(2)
1211 String s1;(2)
1212 String s2;(2)
1213
1214 is >> s0;(1)
1215 is >> s1 >> s2;(1)
1216
1217 EXPECT_STREQ("abc123", s0.c_str());(1)
1218 EXPECT_STREQ("aaabbbccc", s1.c_str());(1)
1219 EXPECT_STREQ("12345", s2.c_str());(1)
1220 }
1221 END(1)
1222
1223 /**
1224 ======================================
1225 */
1226
1227 // #41
1228 TEST(stream, ostream)(1)
1229 {
1230 std::stringstream os;(2)
1231
1232 String s0("abc123");(2)
1233 String s1("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(1)
1234
1235 os << s0 << s1;(1)
1236
1237 EXPECT_STREQ("abc123abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz", os.str().c_str());(1)
1238 }
1239 END(1)
1240
1241 /**
1242 ======================================
1243 */
1244
1245 // #42
1246 TEST(stream, const ostream)(1)
1247 {
1248 std::stringstream os;(2)
1249
1250 const String s0("abc123");(2)
1251 const String s1("abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz");(1)
1252
1253 os << s0 << s1;(1)
1254
1255 EXPECT_STREQ("abc123abcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyzabcdefghijlomnopqrstuvxyz", os.str().c_str());(1)
1256 }
1257 END(1)
1258
1259 return 0;(1)
1260 }