1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
|
#include "../../testing/testing.hpp"
#include "indexer/string_slice.hpp"
#include "base/string_utils.hpp"
#include "std/iterator.hpp"
using namespace search;
using namespace strings;
namespace
{
UniString ToString(vector<UniString> const & v)
{
StringSlice slice(v);
UniString r;
copy(JoinIterator::Begin(slice), JoinIterator::End(slice), back_inserter(r));
return r;
}
UNIT_TEST(JoinIterator_Smoke)
{
{
vector<UniString> v;
StringSlice slice1(v);
auto begin1 = JoinIterator::Begin(slice1);
auto end1 = JoinIterator::End(slice1);
StringSlice slice2(v);
auto begin2 = JoinIterator::Begin(slice2);
auto end2 = JoinIterator::End(slice2);
TEST(begin1 == end1, ());
TEST(begin2 == end2, ());
TEST(begin1 != begin2, ());
TEST(end1 != end2, ());
TEST(begin1 != end2, ());
TEST(begin2 != end1, ());
}
{
vector<UniString> const v;
TEST_EQUAL(MakeUniString(""), ToString(v), ());
}
{
vector<UniString> const v = {MakeUniString("")};
TEST_EQUAL(MakeUniString(""), ToString(v), ());
}
{
vector<UniString> const v = {MakeUniString(""), MakeUniString("")};
TEST_EQUAL(MakeUniString(" "), ToString(v), ());
}
{
vector<UniString> const v = {MakeUniString(""), MakeUniString("b"), MakeUniString("")};
TEST_EQUAL(MakeUniString(" b "), ToString(v), ());
}
{
vector<UniString> const v = {MakeUniString("Hello")};
TEST_EQUAL(MakeUniString("Hello"), ToString(v), ());
}
{
vector<UniString> const v = {MakeUniString("Hello"), MakeUniString("World!")};
TEST_EQUAL(MakeUniString("Hello World!"), ToString(v), ());
}
}
} // namespace
|