annotate packages/language/cxx/ustl/current/tests/bvt07.cpp @ 3292:7f8e529b4d82 default tip

Fix FREESCALE_EDMA_NBYTES_MLOFFYES_MLOFF() so it works with negative offsets.
author vae
date Wed, 29 Apr 2015 23:31:48 +0000
parents 4885e0722884
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2904
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
1 // This file is part of the uSTL library, an STL implementation.
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
2 //
3152
4885e0722884 * include/*:
sergeig
parents: 2904
diff changeset
3 // Copyright (c) 2005 by Mike Sharov <msharov@users.sourceforge.net>
2904
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
4 // This file is free software, distributed under the MIT License.
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
5
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
6 #include "stdtest.h"
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
7
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
8 void MyFormat (const char* fmt, ...) __attribute__((__format__(__printf__,1,2)));
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
9
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
10 void TestString (void)
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
11 {
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
12 static const char c_TestString1[] = "123456789012345678901234567890";
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
13 static const char c_TestString2[] = "abcdefghijklmnopqrstuvwxyz";
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
14 static const char c_TestString3[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
15 string s1 (c_TestString1);
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
16 string s2 (VectorRange (c_TestString2));
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
17 string s3 (s1);
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
18
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
19 cout << s1 << endl;
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
20 cout << s2 << endl;
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
21 cout << s3 << endl;
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
22 s3.reserve (48);
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
23 s3.resize (20);
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
24
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
25 uoff_t i;
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
26 for (i = 0; i < s3.length(); ++ i)
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
27 s3.at(i) = s3.at(i);
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
28 for (i = 0; i < s3.length(); ++ i)
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
29 s3[i] = s3[i];
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
30 cout.format ("%s\ns3.size() = %zu, max_size() = ", s3.c_str(), s3.size());
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
31 if (s3.max_size() == SIZE_MAX - 1)
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
32 cout << "(SIZE_MAX/elsize)-1";
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
33 else
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
34 cout << s3.max_size();
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
35 cout.format (", capacity() = %zu\n", s3.capacity());
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
36
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
37 s1.unlink();
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
38 s1 = c_TestString2;
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
39 s1 += c_TestString3;
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
40 s1 += '$';
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
41 cout << s1 << endl;
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
42
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
43 s1 = "Hello";
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
44 s2.unlink();
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
45 s2 = "World";
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
46 s3 = s1 + s2;
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
47 cout << s3 << endl;
3152
4885e0722884 * include/*:
sergeig
parents: 2904
diff changeset
48 s3 = "Concatenated " + s1 + s2 + " string.";
2904
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
49 cout << s3 << endl;
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
50
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
51 if (s1 < s2)
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
52 cout << "s1 < s2\n";
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
53 if (s1 == s1)
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
54 cout << "s1 == s1\n";
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
55 if (s1[0] != s1[0])
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
56 cout << "s1[0] != s1[0]\n";
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
57
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
58 string s4;
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
59 s4.link (s1);
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
60 if (s1 == s4)
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
61 cout << "s1 == s4\n";
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
62
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
63 s1 = c_TestString1;
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
64 string s5 (s1.begin() + 4, s1.begin() + 4 + 5);
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
65 string s6 (s1.begin() + 4, s1.begin() + 4 + 5);
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
66 if (s5 == s6)
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
67 cout.format ("%s == %s\n", s5.c_str(), s6.c_str());
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
68 string tail (s1.begin() + 7, s1.end());
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
69 cout.format ("&s1[7] = %s\n", tail.c_str());
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
70
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
71 cout.format ("initial:\t\t%s\n", s1.c_str());
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
72 cout << "erase(5,find(9)-5)\t";
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
73 s1.erase (5, s1.find ('9')-5);
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
74 cout << s1 << endl;
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
75 cout << "erase(5,5)\t\t";
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
76 s1.erase (s1.begin() + 5, 2U);
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
77 s1.erase (5, 3);
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
78 assert (!*s1.end());
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
79 cout << s1 << endl;
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
80 cout << "push_back('x')\t\t";
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
81 s1.push_back ('x');
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
82 assert (!*s1.end());
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
83 cout << s1 << endl;
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
84 cout << "pop_back()\n";
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
85 s1.pop_back();
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
86 assert (!*s1.end());
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
87 cout << "insert(10,#)\t\t";
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
88 s1.insert (s1.begin() + 10, '#');
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
89 assert (!*s1.end());
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
90 cout << s1 << endl;
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
91 cout << "replace(0,5,@)\t\t";
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
92 s1.replace (s1.begin(), s1.begin() + 5, 1, '@');
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
93 assert (!*s1.end());
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
94 cout << s1 << endl;
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
95
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
96 s1 = c_TestString1;
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
97 cout.format ("8 found at %zu\n", s1.find ('8'));
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
98 cout.format ("9 found at %zu\n", s1.find ("9"));
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
99 cout.format ("7 rfound at %zu\n", s1.rfind ('7'));
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
100 cout.format ("7 rfound again at %zu\n", s1.rfind ('7', s1.rfind ('7') - 1));
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
101 cout.format ("67 rfound at %zu\n", s1.rfind ("67"));
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
102 if (s1.rfind("X") == string::npos)
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
103 cout << "X was not rfound\n";
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
104 else
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
105 cout.format ("X rfound at %zu\n", s1.rfind ("X"));
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
106 uoff_t poundfound = s1.find ("#");
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
107 if (poundfound != string::npos)
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
108 cout.format ("# found at %zu\n", poundfound);
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
109 cout.format ("[456] found at %zu\n", s1.find_first_of ("456"));
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
110 cout.format ("[456] last found at %zu\n", s1.find_last_of ("456"));
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
111
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
112 s2.clear();
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
113 assert (!*s2.end());
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
114 if (s2.empty())
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
115 cout.format ("s2 is empty [%s], capacity %zu bytes\n", s2.c_str(), s2.capacity());
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
116
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
117 s2.format ("<const] %d, %s, 0x%08X", 42, "[rfile>", 0xDEADBEEF);
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
118 cout.format ("<%zu bytes of %zu> Format '%s'\n", s2.length(), s2.capacity(), s2.c_str());
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
119 MyFormat ("'<const] %d, %s, 0x%08X'", 42, "[rfile>", 0xDEADBEEF);
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
120
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
121 cout.format ("hash_value(s2) = %08X, string::hash(s2) = %08X\n", hash_value (s2.begin()), string::hash (s2.begin(), s2.end()));
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
122 }
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
123
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
124 void MyFormat (const char* fmt, ...)
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
125 {
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
126 string buf;
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
127 simd::reset_mmx();
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
128 va_list args;
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
129 va_start (args, fmt);
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
130 buf.vformat (fmt, args);
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
131 cout.format ("Custom vararg MyFormat: %s\n", buf.c_str());
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
132 va_end (args);
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
133 }
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
134
88af52c64ce4 * ecos.db: Add uSTL library package record.
jld
parents:
diff changeset
135 StdBvtMain (TestString)