source: trunk/test/unit/string.cpp @ 2806

Last change on this file since 2806 was 2806, checked in by lolbot, 8 years ago

fixed 7 files out of 2745:

  • removed 0 CR characters
  • removed 21 trailing whitespaces
  • replaced 42 tabs with spaces
  • Property svn:keywords set to Id
File size: 5.4 KB
Line 
1//
2// Lol Engine
3//
4// Copyright: (c) 2010-2013 Sam Hocevar <sam@hocevar.net>
5//   This program is free software; you can redistribute it and/or
6//   modify it under the terms of the Do What The Fuck You Want To
7//   Public License, Version 2, as published by Sam Hocevar. See
8//   http://www.wtfpl.net/ for more details.
9//
10
11#if defined HAVE_CONFIG_H
12#   include "config.h"
13#endif
14
15#include "core.h"
16#include "lol/unit.h"
17
18namespace lol
19{
20
21LOLUNIT_FIXTURE(StringTest)
22{
23    void SetUp() {}
24
25    void TearDown() {}
26
27    LOLUNIT_TEST(StringBuild)
28    {
29        String s1;
30        LOLUNIT_ASSERT_EQUAL(s1.Count(), 0);
31        LOLUNIT_ASSERT_EQUAL(s1[0], '\0');
32
33        String s2("");
34        LOLUNIT_ASSERT_EQUAL(s2.Count(), 0);
35        LOLUNIT_ASSERT_EQUAL(s2[0], '\0');
36
37        String s3("a");
38        LOLUNIT_ASSERT_EQUAL(s3.Count(), 1);
39        LOLUNIT_ASSERT_EQUAL(s3[0], 'a');
40        LOLUNIT_ASSERT_EQUAL(s3[1], '\0');
41
42        String s4(s3);
43        LOLUNIT_ASSERT_EQUAL(s4.Count(), 1);
44        LOLUNIT_ASSERT_EQUAL(s4[0], 'a');
45        LOLUNIT_ASSERT_EQUAL(s4[1], '\0');
46    }
47
48    LOLUNIT_TEST(StringAppendChar)
49    {
50        String s;
51        s += 'a';
52        s += 'b';
53        s += 'c';
54
55        LOLUNIT_ASSERT_EQUAL(s[0], 'a');
56        LOLUNIT_ASSERT_EQUAL(s[1], 'b');
57        LOLUNIT_ASSERT_EQUAL(s[2], 'c');
58        LOLUNIT_ASSERT_EQUAL(s[3], '\0');
59    }
60
61    LOLUNIT_TEST(StringCopy)
62    {
63        String s1 = "abc";
64
65        String s2 = s1;
66
67        LOLUNIT_ASSERT_EQUAL(s1[0], s2[0]);
68        LOLUNIT_ASSERT_EQUAL(s1[1], s2[1]);
69        LOLUNIT_ASSERT_EQUAL(s1[2], s2[2]);
70        LOLUNIT_ASSERT_EQUAL(s1[3], s2[3]);
71    }
72
73    LOLUNIT_TEST(StringConcat)
74    {
75        String s1("ab"), s2("cd");
76
77        String s3 = s1 + s2;
78        LOLUNIT_ASSERT_EQUAL(s3[0], 'a');
79        LOLUNIT_ASSERT_EQUAL(s3[1], 'b');
80        LOLUNIT_ASSERT_EQUAL(s3[2], 'c');
81        LOLUNIT_ASSERT_EQUAL(s3[3], 'd');
82        LOLUNIT_ASSERT_EQUAL(s3[4], '\0');
83    }
84
85    LOLUNIT_TEST(StringAppendString)
86    {
87        String s1("ab"), s2("cd");
88
89        s1 += s2;
90        LOLUNIT_ASSERT_EQUAL(s1.Count(), 4);
91        LOLUNIT_ASSERT_EQUAL(s1[0], 'a');
92        LOLUNIT_ASSERT_EQUAL(s1[1], 'b');
93        LOLUNIT_ASSERT_EQUAL(s1[2], 'c');
94        LOLUNIT_ASSERT_EQUAL(s1[3], 'd');
95        LOLUNIT_ASSERT_EQUAL(s1[4], '\0');
96
97        s2 += s2;
98        LOLUNIT_ASSERT_EQUAL(s2.Count(), 4);
99        LOLUNIT_ASSERT_EQUAL(s2[0], 'c');
100        LOLUNIT_ASSERT_EQUAL(s2[1], 'd');
101        LOLUNIT_ASSERT_EQUAL(s2[2], 'c');
102        LOLUNIT_ASSERT_EQUAL(s2[3], 'd');
103        LOLUNIT_ASSERT_EQUAL(s2[4], '\0');
104    }
105
106    LOLUNIT_TEST(StringEqual)
107    {
108        String s1("abc");
109        String s2("abc");
110        String s3("ab");
111
112        LOLUNIT_ASSERT(s1 == s2);
113        LOLUNIT_ASSERT(!(s1 == s3));
114    }
115
116    LOLUNIT_TEST(StringDifferent)
117    {
118        String s1("abc");
119        String s2("ab");
120        String s3("abc");
121
122        LOLUNIT_ASSERT(s1 != s2);
123        LOLUNIT_ASSERT(!(s1 != s3));
124    }
125
126    LOLUNIT_TEST(StringCharsEqual)
127    {
128        char const* sz = "abc";
129        String s1("abc");
130        String s2("ab");
131
132        LOLUNIT_ASSERT(s1 == sz);
133        LOLUNIT_ASSERT(sz == s1);
134        LOLUNIT_ASSERT(!(s2 == sz));
135        LOLUNIT_ASSERT(!(sz == s2));
136    }
137
138    LOLUNIT_TEST(StringCharsDifferent)
139    {
140        char const* sz = "abc";
141        String s1("ab");
142        String s2("abc");
143
144        LOLUNIT_ASSERT(s1 != sz);
145        LOLUNIT_ASSERT(sz != s1);
146        LOLUNIT_ASSERT(!(s2 != sz));
147        LOLUNIT_ASSERT(!(sz != s2));
148    }
149
150
151    LOLUNIT_TEST(StringPrintf)
152    {
153        String s1 = "3a";
154        String s2 = String::Printf("%d%x", 3, 10);
155
156        LOLUNIT_ASSERT(s1 == s2);
157
158        String s3 = "abc 3";
159        String s4 = String::Printf("abc %d", 3);
160
161        LOLUNIT_ASSERT(s3 == s4);
162    }
163
164    LOLUNIT_TEST(SubString)
165    {
166        String s1 = "Hello World";
167
168        String s2 = s1.Sub(0, 5);
169        String s3 = "Hello";
170        LOLUNIT_ASSERT(s2 == s3);
171
172        String s4 = s1.Sub(6, 5);
173        String s5 = "World";
174        LOLUNIT_ASSERT(s4 == s5);
175    }
176
177    LOLUNIT_TEST(IndexOf)
178    {
179        String s1 = "Hello World";
180        int i1 = s1.IndexOf('H');
181        int i2 = s1.IndexOf('W');
182        int i3 = s1.IndexOf('d');
183        int i4 = s1.IndexOf("Hello");
184        int i5 = s1.IndexOf("World");
185        int i6 = s1.IndexOf("lo");
186        int i7 = s1.IndexOf("Hello World");
187        int i8 = s1.IndexOf("Sup' dude");
188
189        LOLUNIT_ASSERT(i1 == 0);
190        LOLUNIT_ASSERT(i2 == 6);
191        LOLUNIT_ASSERT(i3 == 10);
192        LOLUNIT_ASSERT(i4 == i1);
193        LOLUNIT_ASSERT(i5 == i2);
194        LOLUNIT_ASSERT(i6 == 3);
195        LOLUNIT_ASSERT(i7 == 0);
196        LOLUNIT_ASSERT(i8 == -1);
197    }
198
199    LOLUNIT_TEST(LastIndexOf)
200    {
201        String s1 = "Hello World";
202        int i1 = s1.LastIndexOf('H');
203        int i2 = s1.LastIndexOf('W');
204        int i3 = s1.LastIndexOf('d');
205        int i4 = s1.LastIndexOf("Hello");
206        int i5 = s1.LastIndexOf("World");
207        int i6 = s1.LastIndexOf("lo");
208        int i7 = s1.LastIndexOf("Hello World");
209        int i8 = s1.LastIndexOf("Sup' dude");
210        int i9 = s1.LastIndexOf('l');
211
212        LOLUNIT_ASSERT(i1 == 0);
213        LOLUNIT_ASSERT(i2 == 6);
214        LOLUNIT_ASSERT(i3 == 10);
215        LOLUNIT_ASSERT(i4 == i1);
216        LOLUNIT_ASSERT(i5 == i2);
217        LOLUNIT_ASSERT(i6 == 3);
218        LOLUNIT_ASSERT(i7 == 0);
219        LOLUNIT_ASSERT(i8 == -1);
220        LOLUNIT_ASSERT(i9 == 9);
221    }};
222
223} /* namespace lol */
224
Note: See TracBrowser for help on using the repository browser.