• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

gansm / finalcut / #746

31 Dec 2025 10:25PM UTC coverage: 68.505% (+0.05%) from 68.454%
#746

push

travis-ci

gansm
The "FindFinalCut.cmake" file has been added to simplify the integration of FINAL CUT into CMake projects

37261 of 54392 relevant lines covered (68.5%)

226.22 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

99.85
/test/fterm_functions-test.cpp
1
/***********************************************************************
2
* fterm_functions-test.cpp - FTerm function unit tests                 *
3
*                                                                      *
4
* This file is part of the FINAL CUT widget toolkit                    *
5
*                                                                      *
6
* Copyright 2021-2025 Markus Gans                                      *
7
*                                                                      *
8
* FINAL CUT is free software; you can redistribute it and/or modify    *
9
* it under the terms of the GNU Lesser General Public License as       *
10
* published by the Free Software Foundation; either version 3 of       *
11
* the License, or (at your option) any later version.                  *
12
*                                                                      *
13
* FINAL CUT is distributed in the hope that it will be useful, but     *
14
* WITHOUT ANY WARRANTY; without even the implied warranty of           *
15
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the        *
16
* GNU Lesser General Public License for more details.                  *
17
*                                                                      *
18
* You should have received a copy of the GNU Lesser General Public     *
19
* License along with this program.  If not, see                        *
20
* <http://www.gnu.org/licenses/>.                                      *
21
***********************************************************************/
22
#include <cwchar>
23
#include <limits>
24
#include <memory>
25

26
#include <cppunit/BriefTestProgressListener.h>
27
#include <cppunit/CompilerOutputter.h>
28
#include <cppunit/extensions/HelperMacros.h>
29
#include <cppunit/TestFixture.h>
30
#include <cppunit/TestResult.h>
31
#include <cppunit/TestResultCollector.h>
32
#include <cppunit/TestRunner.h>
33

34
#include <conemu.h>
35
#include <final/final.h>
36

37
//----------------------------------------------------------------------
38
// class FTermFunctionsTest
39
//----------------------------------------------------------------------
40

41
class FTermFunctionsTest : public CPPUNIT_NS::TestFixture
42
                         , test::ConEmu
43
{
44
  public:
45
    FTermFunctionsTest()
18✔
46
    {
18✔
47
      auto ret = std::setlocale (LC_CTYPE, "en_US.UTF-8");
18✔
48

49
      if ( ! ret )
18✔
50
        ret = std::setlocale (LC_CTYPE, "C.UTF-8");
×
51

52
      if ( ret )
18✔
53
        fwide(stdout, 1);  // Makes stream wide-character oriented
18✔
54
    }
18✔
55

56
  protected:
57
    void env2uintTest();
58
    void exitMessageTest();
59
    void rgb2ColorIndexTest();
60
    void isReverseNewFontcharTest();
61
    void cp437Test();
62
    void utf8Test();
63
    void FullWidthHalfWidthTest();
64
    void combiningCharacterTest();
65
    void readCursorPosTest();
66

67
  private:
68
    // Constant
69
    constexpr static std::size_t NOT_FOUND = static_cast<std::size_t>(-1);
70

71
    // Adds code needed to register the test suite
72
    CPPUNIT_TEST_SUITE (FTermFunctionsTest);
4✔
73

74
    // Add a methods to the test suite
75
    CPPUNIT_TEST (env2uintTest);
4✔
76
    CPPUNIT_TEST (exitMessageTest);
4✔
77
    CPPUNIT_TEST (rgb2ColorIndexTest);
4✔
78
    CPPUNIT_TEST (isReverseNewFontcharTest);
4✔
79
    CPPUNIT_TEST (cp437Test);
4✔
80
    CPPUNIT_TEST (utf8Test);
4✔
81
    CPPUNIT_TEST (FullWidthHalfWidthTest);
4✔
82
    CPPUNIT_TEST (combiningCharacterTest);
4✔
83
    CPPUNIT_TEST (readCursorPosTest);
4✔
84

85
    // End of test suite definition
86
    CPPUNIT_TEST_SUITE_END();
6✔
87

88
    // Data member
89
    finalcut::FVTerm fvterm{};  // Needed for FVTerm::getFOutput()
90
};
91

92

93
//----------------------------------------------------------------------
94
void FTermFunctionsTest::env2uintTest()
2✔
95
{
96
  setenv ("NUM1", "123", 1);
2✔
97
  CPPUNIT_ASSERT ( finalcut::env2uint("NUM1") == 123 );
14✔
98
  setenv ("NUM2", "4294967295", 1);
2✔
99
  CPPUNIT_ASSERT ( finalcut::env2uint("NUM2") == UINT_MAX );
14✔
100
  // Overflow
101
  setenv ("NUM3", "999999999999999999999999999999999", 1);
2✔
102
  CPPUNIT_ASSERT ( finalcut::env2uint("NUM3") == UINT_MAX );
14✔
103
  // not unsigned!
104
  setenv ("NUM4", "-123", 1);
2✔
105
  CPPUNIT_ASSERT ( finalcut::env2uint("NUM4") == 0 );
16✔
106
  // Invalid
107
  CPPUNIT_ASSERT ( finalcut::env2uint("NON_EXISTENT_VARIABLE") == 0 );
14✔
108
}
2✔
109

110
//----------------------------------------------------------------------
111
void FTermFunctionsTest::exitMessageTest()
2✔
112
{
113
  CPPUNIT_ASSERT ( finalcut::getExitMessage() == "" );
12✔
114
  CPPUNIT_ASSERT ( finalcut::getExitMessage().length() == 0 );
10✔
115

116
  finalcut::setExitMessage("No tty found");
2✔
117
  CPPUNIT_ASSERT ( finalcut::getExitMessage() == "No tty found" );
12✔
118
  CPPUNIT_ASSERT ( finalcut::getExitMessage().length() == 12 );
10✔
119

120
  finalcut::setExitMessage( finalcut::getExitMessage() + "!" );
2✔
121
  CPPUNIT_ASSERT ( finalcut::getExitMessage() == "No tty found!" );
12✔
122
  CPPUNIT_ASSERT ( finalcut::getExitMessage().length() == 13 );
10✔
123

124
  auto fstring = finalcut::FString("Encoding not found");
2✔
125
  finalcut::setExitMessage(fstring);
2✔
126
  CPPUNIT_ASSERT ( finalcut::getExitMessage() == "Encoding not found" );
12✔
127
  CPPUNIT_ASSERT ( finalcut::getExitMessage().length() == 18 );
10✔
128

129
  finalcut::setExitMessage("");  // Reset the exit message
2✔
130
  CPPUNIT_ASSERT ( finalcut::getExitMessage() == "" );
12✔
131
  CPPUNIT_ASSERT ( finalcut::getExitMessage().length() == 0 );
10✔
132
}
2✔
133

134
//----------------------------------------------------------------------
135
void FTermFunctionsTest::rgb2ColorIndexTest()
2✔
136
{
137
  // #000000
138
  CPPUNIT_ASSERT ( finalcut::rgb2ColorIndex (0x00, 0x00, 0x00) == 16 );
12✔
139
  // #000000
140
  CPPUNIT_ASSERT ( finalcut::rgb2ColorIndex (0xff, 0xff, 0xff) == 231 );
12✔
141
  // #76eeff
142
  CPPUNIT_ASSERT ( finalcut::rgb2ColorIndex (0x76, 0xee, 0xff) == 123 );
12✔
143
  // #d26fb7
144
  CPPUNIT_ASSERT ( finalcut::rgb2ColorIndex (0xd2, 0x6f, 0xb7) == 176 );
12✔
145
  // #896a53
146
  CPPUNIT_ASSERT ( finalcut::rgb2ColorIndex (0x89, 0x6a, 0x53) == 138 );
12✔
147
  // #ebf59c
148
  CPPUNIT_ASSERT ( finalcut::rgb2ColorIndex (0xeb, 0xf5, 0x9c) == 229 );
12✔
149
  // #c89f07
150
  CPPUNIT_ASSERT ( finalcut::rgb2ColorIndex (0xc8, 0x9f, 0x07) == 178 );
12✔
151
  // #61cb55
152
  CPPUNIT_ASSERT ( finalcut::rgb2ColorIndex (0x61, 0xcb, 0x55) == 114 );
12✔
153
  // #f16d4d
154
  CPPUNIT_ASSERT ( finalcut::rgb2ColorIndex (0xf1, 0x6d, 0x4d) == 210 );
12✔
155
  // #96c0af
156
  CPPUNIT_ASSERT ( finalcut::rgb2ColorIndex (0x96, 0xc0, 0xaf) == 151 );
12✔
157
  // #341bb6
158
  CPPUNIT_ASSERT ( finalcut::rgb2ColorIndex (0x34, 0x1b, 0xb6) == 62 );
12✔
159
  // #da1240
160
  CPPUNIT_ASSERT ( finalcut::rgb2ColorIndex (0xda, 0x12, 0x40) == 161 );
12✔
161
  // #6f2cce
162
  CPPUNIT_ASSERT ( finalcut::rgb2ColorIndex (0x6f, 0x2c, 0xce) == 98 );
12✔
163
  // #f19a1d
164
  CPPUNIT_ASSERT ( finalcut::rgb2ColorIndex (0xf1, 0x9a, 0x1d) == 215 );
12✔
165
  // #0e1068
166
  CPPUNIT_ASSERT ( finalcut::rgb2ColorIndex (0x0e, 0x10, 0x68) == 18 );
12✔
167
  // #cc9099
168
  CPPUNIT_ASSERT ( finalcut::rgb2ColorIndex (0xcc, 0x90, 0x99) == 181 );
12✔
169
  // #b9c3bb
170
  CPPUNIT_ASSERT ( finalcut::rgb2ColorIndex (0xb9, 0xc3, 0xbb) == 188 );
12✔
171
  // #094132
172
  CPPUNIT_ASSERT ( finalcut::rgb2ColorIndex (0x09, 0x41, 0x32) == 23 );
10✔
173
}
2✔
174

175
//----------------------------------------------------------------------
176
void FTermFunctionsTest::isReverseNewFontcharTest()
2✔
177
{
178
  CPPUNIT_ASSERT ( ! finalcut::isReverseNewFontchar(L'A') );
12✔
179
  CPPUNIT_ASSERT ( ! finalcut::isReverseNewFontchar(L'£') );
12✔
180
  CPPUNIT_ASSERT ( finalcut::isReverseNewFontchar(wchar_t(finalcut::UniChar::NF_rev_left_arrow2)) );
12✔
181
  CPPUNIT_ASSERT ( finalcut::isReverseNewFontchar(wchar_t(finalcut::UniChar::NF_rev_right_arrow2)) );
12✔
182
  CPPUNIT_ASSERT ( finalcut::isReverseNewFontchar(wchar_t(finalcut::UniChar::NF_rev_border_corner_upper_right)) );
12✔
183
  CPPUNIT_ASSERT ( finalcut::isReverseNewFontchar(wchar_t(finalcut::UniChar::NF_rev_border_line_right)) );
12✔
184
  CPPUNIT_ASSERT ( finalcut::isReverseNewFontchar(wchar_t(finalcut::UniChar::NF_rev_border_line_vertical_left)) );
12✔
185
  CPPUNIT_ASSERT ( finalcut::isReverseNewFontchar(wchar_t(finalcut::UniChar::NF_rev_border_corner_lower_right)) );
12✔
186
  CPPUNIT_ASSERT ( finalcut::isReverseNewFontchar(wchar_t(finalcut::UniChar::NF_rev_up_arrow2)) );
12✔
187
  CPPUNIT_ASSERT ( finalcut::isReverseNewFontchar(wchar_t(finalcut::UniChar::NF_rev_down_arrow2)) );
12✔
188
  CPPUNIT_ASSERT ( finalcut::isReverseNewFontchar(wchar_t(finalcut::UniChar::NF_rev_up_arrow1)) );
12✔
189
  CPPUNIT_ASSERT ( finalcut::isReverseNewFontchar(wchar_t(finalcut::UniChar::NF_rev_down_arrow1)) );
12✔
190
  CPPUNIT_ASSERT ( finalcut::isReverseNewFontchar(wchar_t(finalcut::UniChar::NF_rev_left_arrow1)) );
12✔
191
  CPPUNIT_ASSERT ( finalcut::isReverseNewFontchar(wchar_t(finalcut::UniChar::NF_rev_right_arrow1)) );
12✔
192
  CPPUNIT_ASSERT ( finalcut::isReverseNewFontchar(wchar_t(finalcut::UniChar::NF_rev_menu_button1)) );
12✔
193
  CPPUNIT_ASSERT ( finalcut::isReverseNewFontchar(wchar_t(finalcut::UniChar::NF_rev_menu_button2)) );
12✔
194
  CPPUNIT_ASSERT ( finalcut::isReverseNewFontchar(wchar_t(finalcut::UniChar::NF_rev_up_pointing_triangle1)) );
12✔
195
  CPPUNIT_ASSERT ( finalcut::isReverseNewFontchar(wchar_t(finalcut::UniChar::NF_rev_down_pointing_triangle1)) );
12✔
196
  CPPUNIT_ASSERT ( finalcut::isReverseNewFontchar(wchar_t(finalcut::UniChar::NF_rev_up_pointing_triangle2)) );
12✔
197
  CPPUNIT_ASSERT ( finalcut::isReverseNewFontchar(wchar_t(finalcut::UniChar::NF_rev_down_pointing_triangle2)) );
12✔
198
  CPPUNIT_ASSERT ( finalcut::isReverseNewFontchar(wchar_t(finalcut::UniChar::NF_rev_menu_button3)) );
12✔
199
  CPPUNIT_ASSERT ( finalcut::isReverseNewFontchar(wchar_t(finalcut::UniChar::NF_rev_border_line_right_and_left)) );
12✔
200
  CPPUNIT_ASSERT ( ! finalcut::isReverseNewFontchar(wchar_t(finalcut::UniChar::NF_shadow_box_checked)) );
12✔
201
  CPPUNIT_ASSERT ( ! finalcut::isReverseNewFontchar(wchar_t(finalcut::UniChar::NF_Bullet)) );
12✔
202
  CPPUNIT_ASSERT ( ! finalcut::isReverseNewFontchar(wchar_t(finalcut::UniChar::SquareRoot)) );
10✔
203
}
2✔
204

205
//----------------------------------------------------------------------
206
void FTermFunctionsTest::cp437Test()
2✔
207
{
208
  // CP437 -> Unicode
209
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x01) == L'☺' );
12✔
210
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x02) == L'☻' );
12✔
211
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x03) == L'♥' );
12✔
212
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x04) == L'♦' );
12✔
213
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x05) == L'♣' );
12✔
214
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x06) == L'♠' );
12✔
215
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x07) == L'•' );
12✔
216
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x08) == L'◘' );
12✔
217
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x09) == L'○' );
12✔
218
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x0a) == L'◙' );
12✔
219
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x0b) == L'♂' );
12✔
220
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x0c) == L'♀' );
12✔
221
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x0d) == L'♪' );
12✔
222
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x0e) == L'♫' );
12✔
223
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x0f) == L'☼' );
12✔
224

225
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x10) == L'►' );
12✔
226
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x11) == L'◄' );
12✔
227
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x12) == L'↕' );
12✔
228
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x13) == L'‼' );
12✔
229
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x14) == L'¶' );
12✔
230
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x15) == L'§' );
12✔
231
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x16) == L'▬' );
12✔
232
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x17) == L'↨' );
12✔
233
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x18) == L'↑' );
12✔
234
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x19) == L'↓' );
12✔
235
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x1a) == L'→' );
12✔
236
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x1b) == L'←' );
12✔
237
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x1c) == L'∟' );
12✔
238
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x1d) == L'↔' );
12✔
239
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x1e) == L'▲' );
12✔
240
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x1f) == L'▼' );
12✔
241

242
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x9b) == L'¢' );
12✔
243
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x9c) == L'£' );
12✔
244
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x9d) == L'¥' );
12✔
245
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0x9e) == L'₧' );
12✔
246

247
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0xb0) == L'░' );
12✔
248
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0xb1) == L'▒' );
12✔
249
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0xb2) == L'▓' );
12✔
250
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0xdb) == L'█' );
12✔
251

252
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0xdf) == L'▀' );
12✔
253
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0xdc) == L'▄' );
12✔
254
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0xdd) == L'▌' );
12✔
255
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0xde) == L'▐' );
12✔
256

257
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0xc4) == L'─' );
12✔
258
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0xb3) == L'│' );
12✔
259
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0xc3) == L'├' );
12✔
260
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0xb4) == L'┤' );
12✔
261
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0xc5) == L'┼' );
12✔
262
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0xbf) == L'┐' );
12✔
263
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0xc0) == L'└' );
12✔
264
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0xda) == L'┌' );
12✔
265
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0xd9) == L'┘' );
12✔
266

267
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0xf4) == L'⌠' );
12✔
268
  CPPUNIT_ASSERT ( finalcut::cp437_to_unicode(0xf5) == L'⌡' );
12✔
269

270
  // Unicode -> CP437
271
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'☺') == 0x01 );
12✔
272
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'☻') == 0x02 );
12✔
273
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'♥') == 0x03 );
12✔
274
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'♦') == 0x04 );
12✔
275
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'♣') == 0x05 );
12✔
276
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'♠') == 0x06 );
12✔
277
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'•') == 0x07 );
12✔
278
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'◘') == 0x08 );
12✔
279
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'○') == 0x09 );
12✔
280
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'◙') == 0x0a );
12✔
281
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'♂') == 0x0b );
12✔
282
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'♀') == 0x0c );
12✔
283
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'♪') == 0x0d );
12✔
284
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'♫') == 0x0e );
12✔
285
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'☼') == 0x0f );
12✔
286

287
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'►') == 0x10 );
12✔
288
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'◄') == 0x11 );
12✔
289
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'↕') == 0x12 );
12✔
290
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'‼') == 0x13 );
12✔
291
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'¶') == 0x14 );
12✔
292
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'§') == 0x15 );
12✔
293
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'▬') == 0x16 );
12✔
294
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'↨') == 0x17 );
12✔
295
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'↑') == 0x18 );
12✔
296
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'↓') == 0x19 );
12✔
297
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'→') == 0x1a );
12✔
298
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'←') == 0x1b );
12✔
299
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'∟') == 0x1c );
12✔
300
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'↔') == 0x1d );
12✔
301
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'▲') == 0x1e );
12✔
302
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'▼') == 0x1f );
12✔
303

304
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'¢') == 0x9b );
12✔
305
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'£') == 0x9c );
12✔
306
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'¥') == 0x9d );
12✔
307
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'₧') == 0x9e );
12✔
308

309
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'░') == 0xb0 );
12✔
310
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'▒') == 0xb1 );
12✔
311
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'▓') == 0xb2 );
12✔
312
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'█') == 0xdb );
12✔
313

314
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'▀') == 0xdf );
12✔
315
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'▄') == 0xdc );
12✔
316
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'▌') == 0xdd );
12✔
317
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'▐') == 0xde );
12✔
318

319
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'─') == 0xc4 );
12✔
320
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'│') == 0xb3 );
12✔
321
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'├') == 0xc3 );
12✔
322
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'┤') == 0xb4 );
12✔
323
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'┼') == 0xc5 );
12✔
324
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'┐') == 0xbf );
12✔
325
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'└') == 0xc0 );
12✔
326
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'┌') == 0xda );
12✔
327
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'┘') == 0xd9 );
12✔
328

329
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'⌠') == 0xf4 );
12✔
330
  CPPUNIT_ASSERT ( finalcut::unicode_to_cp437(L'⌡') == 0xf5 );
10✔
331
}
2✔
332

333
//----------------------------------------------------------------------
334
void FTermFunctionsTest::utf8Test()
2✔
335
{
336
  //-----------------
337
  // 1 byte character
338
  //-----------------
339

340
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'\0')
12✔
341
                   == finalcut::UTF8_Char({{'\0', '\0', '\0', '\0'}, 1}) );
342

343
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'\0')
12✔
344
                   != finalcut::UTF8_Char({{'\0', '\0', '\0', '\0'}, 4}) );
345

346
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'\0')
12✔
347
                   != finalcut::UTF8_Char({{'\0', '\0', '\0', '\1'}, 1}) );
348

349
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'\0')
14✔
350
                   == std::string({char(0x00)}) );
351

352
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'\b')
12✔
353
                   == finalcut::UTF8_Char({{'\b', '\0', '\0', '\0'}, 1}) );
354

355
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'\b')
14✔
356
                   == std::string({char(0x08)}) );
357

358
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L' ')
12✔
359
                   == finalcut::UTF8_Char({{' ', '\0', '\0', '\0'}, 1}) );
360

361
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L' ')
14✔
362
                   == std::string({char(0x20)}) );
363

364
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'!')
12✔
365
                   == finalcut::UTF8_Char({{'!', '\0', '\0', '\0'}, 1}) );
366

367
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'!')
14✔
368
                   == std::string({char(0x21)}) );
369

370
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'"')
12✔
371
                   == finalcut::UTF8_Char({{'"', '\0', '\0', '\0'}, 1}) );
372

373
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'"')
14✔
374
                   == std::string({char(0x22)}) );
375

376
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'#')
12✔
377
                   == finalcut::UTF8_Char({{'#', '\0', '\0', '\0'}, 1}) );
378

379
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'#')
14✔
380
                   == std::string({char(0x23)}) );
381

382
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'$')
12✔
383
                   == finalcut::UTF8_Char({{'$', '\0', '\0', '\0'}, 1}) );
384

385
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'$')
14✔
386
                   == std::string({char(0x24)}) );
387

388
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'%')
12✔
389
                   == finalcut::UTF8_Char({{'%', '\0', '\0', '\0'}, 1}) );
390

391
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'%')
14✔
392
                   == std::string({char(0x25)}) );
393

394
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'&')
12✔
395
                   == finalcut::UTF8_Char({{'&', '\0', '\0', '\0'}, 1}) );
396

397
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'&')
14✔
398
                   == std::string({char(0x26)}) );
399

400
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'\'')
12✔
401
                   == finalcut::UTF8_Char({{'\'', '\0', '\0', '\0'}, 1}) );
402

403
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'\'')
14✔
404
                   == std::string({char(0x27)}) );
405

406
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'(')
12✔
407
                   == finalcut::UTF8_Char({{'(', '\0', '\0', '\0'}, 1}) );
408

409
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'(')
14✔
410
                   == std::string({char(0x28)}) );
411

412
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L')')
12✔
413
                   == finalcut::UTF8_Char({{')', '\0', '\0', '\0'}, 1}) );
414

415
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L')')
14✔
416
                   == std::string({char(0x29)}) );
417

418
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'*')
12✔
419
                   == finalcut::UTF8_Char({{'*', '\0', '\0', '\0'}, 1}) );
420

421
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'*')
14✔
422
                   == std::string({char(0x2a)}) );
423

424
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'+')
12✔
425
                   == finalcut::UTF8_Char({{'+', '\0', '\0', '\0'}, 1}) );
426

427
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'+')
14✔
428
                   == std::string({char(0x2b)}) );
429

430
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L',')
12✔
431
                   == finalcut::UTF8_Char({{',', '\0', '\0', '\0'}, 1}) );
432

433
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L',')
14✔
434
                   == std::string({char(0x2c)}) );
435

436
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'-')
12✔
437
                   == finalcut::UTF8_Char({{'-', '\0', '\0', '\0'}, 1}) );
438

439
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'-')
14✔
440
                   == std::string({char(0x2d)}) );
441

442
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'.')
12✔
443
                   == finalcut::UTF8_Char({{'.', '\0', '\0', '\0'}, 1}) );
444

445
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'.')
14✔
446
                   == std::string({char(0x2e)}) );
447

448
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'/')
12✔
449
                   == finalcut::UTF8_Char({{'/', '\0', '\0', '\0'}, 1}) );
450

451
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'/')
14✔
452
                   == std::string({char(0x2f)}) );
453

454
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'0')
12✔
455
                   == finalcut::UTF8_Char({{'0', '\0', '\0', '\0'}, 1}) );
456

457
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'0')
14✔
458
                   == std::string({char(0x30)}) );
459

460
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'1')
12✔
461
                   == finalcut::UTF8_Char({{'1', '\0', '\0', '\0'}, 1}) );
462

463
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'1')
14✔
464
                   == std::string({char(0x31)}) );
465

466
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'2')
12✔
467
                   == finalcut::UTF8_Char({{'2', '\0', '\0', '\0'}, 1}) );
468

469
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'2')
14✔
470
                   == std::string({char(0x32)}) );
471

472
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'3')
12✔
473
                   == finalcut::UTF8_Char({{'3', '\0', '\0', '\0'}, 1}) );
474

475
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'3')
14✔
476
                   == std::string({char(0x33)}) );
477

478
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'4')
12✔
479
                   == finalcut::UTF8_Char({{'4', '\0', '\0', '\0'}, 1}) );
480

481
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'4')
14✔
482
                   == std::string({char(0x34)}) );
483

484
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'5')
12✔
485
                   == finalcut::UTF8_Char({{'5', '\0', '\0', '\0'}, 1}) );
486

487
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'5')
14✔
488
                   == std::string({char(0x35)}) );
489

490
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'6')
12✔
491
                   == finalcut::UTF8_Char({{'6', '\0', '\0', '\0'}, 1}) );
492

493
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'6')
14✔
494
                   == std::string({char(0x36)}) );
495

496
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'7')
12✔
497
                   == finalcut::UTF8_Char({{'7', '\0', '\0', '\0'}, 1}) );
498

499
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'7')
14✔
500
                   == std::string({char(0x37)}) );
501

502
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'8')
12✔
503
                   == finalcut::UTF8_Char({{'8', '\0', '\0', '\0'}, 1}) );
504

505
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'8')
14✔
506
                   == std::string({char(0x38)}) );
507

508
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'9')
12✔
509
                   == finalcut::UTF8_Char({{'9', '\0', '\0', '\0'}, 1}) );
510

511
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'9')
14✔
512
                   == std::string({char(0x39)}) );
513

514
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L':')
12✔
515
                   == finalcut::UTF8_Char({{':', '\0', '\0', '\0'}, 1}) );
516

517
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L':')
14✔
518
                   == std::string({char(0x3a)}) );
519

520
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L';')
12✔
521
                   == finalcut::UTF8_Char({{';', '\0', '\0', '\0'}, 1}) );
522

523
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L';')
14✔
524
                   == std::string({char(0x3b)}) );
525

526
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'<')
12✔
527
                   == finalcut::UTF8_Char({{'<', '\0', '\0', '\0'}, 1}) );
528

529
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'<')
14✔
530
                   == std::string({char(0x3c)}) );
531

532
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'=')
12✔
533
                   == finalcut::UTF8_Char({{'=', '\0', '\0', '\0'}, 1}) );
534

535
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'=')
14✔
536
                   == std::string({char(0x3d)}) );
537

538
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'>')
12✔
539
                   == finalcut::UTF8_Char({{'>', '\0', '\0', '\0'}, 1}) );
540

541
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'>')
14✔
542
                   == std::string({char(0x3e)}) );
543

544
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'?')
12✔
545
                   == finalcut::UTF8_Char({{'?', '\0', '\0', '\0'}, 1}) );
546

547
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'?')
14✔
548
                   == std::string({char(0x3f)}) );
549

550
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'@')
12✔
551
                   == finalcut::UTF8_Char({{'@', '\0', '\0', '\0'}, 1}) );
552

553
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'@')
14✔
554
                   == std::string({char(0x40)}) );
555
  // Last 1 byte character
556
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'\177')
12✔
557
                   == finalcut::UTF8_Char({{'\177', '\0', '\0', '\0'}, 1}) );
558

559
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'\177')
14✔
560
                   == std::string({char(0x7f)}) );
561

562
  //-----------------
563
  // 2 byte character
564
  //-----------------
565
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'\200')
12✔
566
                   == finalcut::UTF8_Char({{'\302', '\200', '\0', '\0'}, 2}) );
567

568
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'\200')
12✔
569
                   != finalcut::UTF8_Char({{'\200', '\0', '\0', '\0'}, 1}) );
570

571
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'\200')
14✔
572
                   == std::string({char(0xc2), char(0x80)}) );
573

574
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'ö')
12✔
575
                   == finalcut::UTF8_Char({{'\303', '\266', '\0', '\0'}, 2}) );
576

577
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'ö')
14✔
578
                   == std::string({char(0xc3), char(0xb6)}) );
579

580
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'æ')
12✔
581
                   == finalcut::UTF8_Char({{'\303', '\246', '\0', '\0'}, 2}) );
582

583
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'æ')
14✔
584
                   == std::string({char(0xc3), char(0xa6)}) );
585

586
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'ç')
12✔
587
                   == finalcut::UTF8_Char({{'\303', '\247', '\0', '\0'}, 2}) );
588

589
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'ç')
14✔
590
                   == std::string({char(0xc3), char(0xa7)}) );
591

592
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'è')
12✔
593
                   == finalcut::UTF8_Char({{'\303', '\250', '\0', '\0'}, 2}) );
594

595
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'è')
14✔
596
                   == std::string({char(0xc3), char(0xa8)}) );
597

598
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'é')
12✔
599
                   == finalcut::UTF8_Char({{'\303', '\251', '\0', '\0'}, 2}) );
600

601
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'é')
14✔
602
                   == std::string({char(0xc3), char(0xa9)}) );
603

604
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'ê')
12✔
605
                   == finalcut::UTF8_Char({{'\303', '\252', '\0', '\0'}, 2}) );
606

607
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'ê')
14✔
608
                   == std::string({char(0xc3), char(0xaa)}) );
609

610
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'ë')
12✔
611
                   == finalcut::UTF8_Char({{'\303', '\253', '\0', '\0'}, 2}) );
612

613
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'ë')
14✔
614
                   == std::string({char(0xc3), char(0xab)}) );
615

616
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'ì')
12✔
617
                   == finalcut::UTF8_Char({{'\303', '\254', '\0', '\0'}, 2}) );
618

619
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'ì')
14✔
620
                   == std::string({char(0xc3), char(0xac)}) );
621

622
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'í')
12✔
623
                   == finalcut::UTF8_Char({{'\303', '\255', '\0', '\0'}, 2}) );
624

625
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'í')
14✔
626
                   == std::string({char(0xc3), char(0xad)}) );
627

628
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'î')
12✔
629
                   == finalcut::UTF8_Char({{'\303', '\256', '\0', '\0'}, 2}) );
630

631
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'î')
14✔
632
                   == std::string({char(0xc3), char(0xae)}) );
633

634
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'ï')
12✔
635
                   == finalcut::UTF8_Char({{'\303', '\257', '\0', '\0'}, 2}) );
636

637
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'ï')
14✔
638
                   == std::string({char(0xc3), char(0xaf)}) );
639

640
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'ð')
12✔
641
                   == finalcut::UTF8_Char({{'\303', '\260', '\0', '\0'}, 2}) );
642

643
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'ð')
14✔
644
                   == std::string({char(0xc3), char(0xb0)}) );
645

646
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'ñ')
12✔
647
                   == finalcut::UTF8_Char({{'\303', '\261', '\0', '\0'}, 2}) );
648

649
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'ñ')
14✔
650
                   == std::string({char(0xc3), char(0xb1)}) );
651

652
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'ò')
12✔
653
                   == finalcut::UTF8_Char({{'\303', '\262', '\0', '\0'}, 2}) );
654

655
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'ò')
14✔
656
                   == std::string({char(0xc3), char(0xb2)}) );
657

658
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'ó')
12✔
659
                   == finalcut::UTF8_Char({{'\303', '\263', '\0', '\0'}, 2}) );
660

661
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'ó')
14✔
662
                   == std::string({char(0xc3), char(0xb3)}) );
663

664
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'ô')
12✔
665
                   == finalcut::UTF8_Char({{'\303', '\264', '\0', '\0'}, 2}) );
666

667
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'ô')
14✔
668
                   == std::string({char(0xc3), char(0xb4)}) );
669

670
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'õ')
12✔
671
                   == finalcut::UTF8_Char({{'\303', '\265', '\0', '\0'}, 2}) );
672

673
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'õ')
14✔
674
                   == std::string({char(0xc3), char(0xb5)}) );
675

676
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'ö')
12✔
677
                   == finalcut::UTF8_Char({{'\303', '\266', '\0', '\0'}, 2}) );
678

679
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'ö')
14✔
680
                   == std::string({char(0xc3), char(0xb6)}) );
681

682
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(wchar_t(finalcut::UniChar::Pi))
12✔
683
                   == finalcut::UTF8_Char({{'\317', '\200', '\0', '\0'}, 2}) );
684

685
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(wchar_t(finalcut::UniChar::Pi))
14✔
686
                   == std::string({char(0xcf), char(0x80)}) );
687
  // Last 2 byte character
688
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'\U000007ff')
12✔
689
                   == finalcut::UTF8_Char({{'\337', '\277', '\0', '\0'}, 2}) );
690

691
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'\U000007ff')
14✔
692
                   == std::string({char(0xdf), char(0xbf)}) );
693

694
  //-----------------
695
  // 3 byte character
696
  //-----------------
697
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'\U00000800')
12✔
698
                   == finalcut::UTF8_Char({{'\340', '\240', '\200', '\0'}, 3}) );
699

700
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'\U00000800')
12✔
701
                   != finalcut::UTF8_Char({{'\340', '\200', '\200', '\0'}, 2}) );
702

703
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'\U00000800')
14✔
704
                   == std::string({char(0xe0), char(0xa0), char(0x80)}) );
705

706
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'ࡔ')
12✔
707
                   == finalcut::UTF8_Char({{'\340', '\241', '\224', '\0'}, 3}) );
708

709
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'ࡔ')
14✔
710
                   == std::string({char(0xe0), char(0xa1), char(0x94)}) );
711

712
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'←')
12✔
713
                   == finalcut::UTF8_Char({{'\342', '\206', '\220', '\0'}, 3}) );
714

715
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'←')
14✔
716
                   == std::string({char(0xe2), char(0x86), char(0x90)}) );
717

718
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'↑')
12✔
719
                   == finalcut::UTF8_Char({{'\342', '\206', '\221', '\0'}, 3}) );
720

721
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'↑')
14✔
722
                   == std::string({char(0xe2), char(0x86), char(0x91)}) );
723

724
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'→')
12✔
725
                   == finalcut::UTF8_Char({{'\342', '\206', '\222', '\0'}, 3}) );
726

727
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'→')
14✔
728
                   == std::string({char(0xe2), char(0x86), char(0x92)}) );
729

730
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'↓')
12✔
731
                   == finalcut::UTF8_Char({{'\342', '\206', '\223', '\0'}, 3}) );
732

733
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'↓')
14✔
734
                   == std::string({char(0xe2), char(0x86), char(0x93)}) );
735

736
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'↔')
12✔
737
                   == finalcut::UTF8_Char({{'\342', '\206', '\224', '\0'}, 3}) );
738

739
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'↔')
14✔
740
                   == std::string({char(0xe2), char(0x86), char(0x94)}) );
741

742
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'↕')
12✔
743
                   == finalcut::UTF8_Char({{'\342', '\206', '\225', '\0'}, 3}) );
744

745
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'↕')
14✔
746
                   == std::string({char(0xe2), char(0x86), char(0x95)}) );
747

748
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'↖')
12✔
749
                   == finalcut::UTF8_Char({{'\342', '\206', '\226', '\0'}, 3}) );
750

751
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'↖')
14✔
752
                   == std::string({char(0xe2), char(0x86), char(0x96)}) );
753

754
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'↗')
12✔
755
                   == finalcut::UTF8_Char({{'\342', '\206', '\227', '\0'}, 3}) );
756

757
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'↗')
14✔
758
                   == std::string({char(0xe2), char(0x86), char(0x97)}) );
759

760
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'↘')
12✔
761
                   == finalcut::UTF8_Char({{'\342', '\206', '\230', '\0'}, 3}) );
762

763
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'↘')
14✔
764
                   == std::string({char(0xe2), char(0x86), char(0x98)}) );
765

766
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'↙')
12✔
767
                   == finalcut::UTF8_Char({{'\342', '\206', '\231', '\0'}, 3}) );
768

769
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'↙')
14✔
770
                   == std::string({char(0xe2), char(0x86), char(0x99)}) );
771

772
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'↚')
12✔
773
                   == finalcut::UTF8_Char({{'\342', '\206', '\232', '\0'}, 3}) );
774

775
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'↚')
14✔
776
                   == std::string({char(0xe2), char(0x86), char(0x9a)}) );
777

778
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'↛')
12✔
779
                   == finalcut::UTF8_Char({{'\342', '\206', '\233', '\0'}, 3}) );
780

781
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'↛')
14✔
782
                   == std::string({char(0xe2), char(0x86), char(0x9b)}) );
783

784
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'↜')
12✔
785
                   == finalcut::UTF8_Char({{'\342', '\206', '\234', '\0'}, 3}) );
786

787
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'↜')
14✔
788
                   == std::string({char(0xe2), char(0x86), char(0x9c)}) );
789

790
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'↝')
12✔
791
                   == finalcut::UTF8_Char({{'\342', '\206', '\235', '\0'}, 3}) );
792

793
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'↝')
14✔
794
                   == std::string({char(0xe2), char(0x86), char(0x9d)}) );
795

796
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'↞')
12✔
797
                   == finalcut::UTF8_Char({{'\342', '\206', '\236', '\0'}, 3}) );
798

799
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'↞')
14✔
800
                   == std::string({char(0xe2), char(0x86), char(0x9e)}) );
801

802
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'↟')
12✔
803
                   == finalcut::UTF8_Char({{'\342', '\206', '\237', '\0'}, 3}) );
804

805
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'↟')
14✔
806
                   == std::string({char(0xe2), char(0x86), char(0x9f)}) );
807

808
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'↠')
12✔
809
                   == finalcut::UTF8_Char({{'\342', '\206', '\240', '\0'}, 3}) );
810

811
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'↠')
14✔
812
                   == std::string({char(0xe2), char(0x86), char(0xa0)}) );
813

814
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'☕')
12✔
815
                   == finalcut::UTF8_Char({{'\342', '\230', '\225', '\0'}, 3}) );
816

817
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'☕')
14✔
818
                   == std::string({char(0xe2), char(0x98), char(0x95)}) );
819

820
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'㉟')
12✔
821
                   == finalcut::UTF8_Char({{'\343', '\211', '\237', '\0'}, 3}) );
822

823
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'㉟')
14✔
824
                   == std::string({char(0xe3), char(0x89), char(0x9f)}) );
825

826
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'䷀')
12✔
827
                   == finalcut::UTF8_Char({{'\344', '\267', '\200', '\0'}, 3}) );
828

829
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'䷀')
14✔
830
                   == std::string({char(0xe4), char(0xb7), char(0x80)}) );
831

832
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'頉')
12✔
833
                   == finalcut::UTF8_Char({{'\351', '\240', '\211', '\0'}, 3}) );
834

835
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'頉')
14✔
836
                   == std::string({char(0xe9), char(0xa0), char(0x89)}) );
837

838
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'ꫦ')
12✔
839
                   == finalcut::UTF8_Char({{'\352', '\253', '\246', '\0'}, 3}) );
840

841
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'ꫦ')
14✔
842
                   == std::string({char(0xea), char(0xab), char(0xa6)}) );
843

844
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'')
12✔
845
                   == finalcut::UTF8_Char({{'\356', '\200', '\200', '\0'}, 3}) );
846

847
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'')
14✔
848
                   == std::string({char(0xee), char(0x80), char(0x80)}) );
849

850
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(wchar_t(finalcut::UniChar::Euro))
12✔
851
                   == finalcut::UTF8_Char({{'\342', '\202', '\254', '\0'}, 3}) );
852

853
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(wchar_t(finalcut::UniChar::Euro))
12✔
854
                   == std::string({char(0xe2), char(0x82), char(0xac)}) );
855

856
  // Private Use Area
857
  auto newfont_char_e1b3 = finalcut::UniChar::NF_border_line_vertical;
2✔
858

859
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(wchar_t(newfont_char_e1b3))
12✔
860
                   == finalcut::UTF8_Char({{'\356', '\206', '\263', '\0'}, 3}) );
861

862
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(wchar_t(newfont_char_e1b3))
12✔
863
                   == std::string({char(0xee), char(0x86), char(0xb3)}) );
864

865
  auto newfont_char_e1f9 = finalcut::UniChar::NF_Bullet;
2✔
866

867
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(wchar_t(newfont_char_e1f9))
12✔
868
                   == finalcut::UTF8_Char({{'\356', '\207', '\271', '\0'}, 3}) );
869

870
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(wchar_t(newfont_char_e1f9))
12✔
871
                   == std::string({char(0xee), char(0x87), char(0xb9)}) );
872

873
  auto newfont_char_e1fc = finalcut::UniChar::NF_x_superior;
2✔
874

875
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(wchar_t(newfont_char_e1fc))
12✔
876
                   == finalcut::UTF8_Char({{'\356', '\207', '\274', '\0'}, 3}) );
877

878
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(wchar_t(newfont_char_e1fc))
14✔
879
                   == std::string({char(0xee), char(0x87), char(0xbc)}) );
880

881
  // Replacement character
882
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'�')
12✔
883
                   == finalcut::UTF8_Char({{'\357', '\277', '\275', '\0'}, 3}) );
884

885
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'�')
14✔
886
                   == std::string({char(0xef), char(0xbf), char(0xbd)}) );
887

888
  // Last 3 byte character
889
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'\U0000ffff')
12✔
890
                   == finalcut::UTF8_Char({{'\357', '\277', '\277', '\0'}, 3}) );
891

892
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'\U0000ffff')
14✔
893
                   == std::string({char(0xef), char(0xbf), char(0xbf)}) );
894

895
  //-----------------
896
  // 4 byte character
897
  //-----------------
898
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'\U00010000')
12✔
899
                   == finalcut::UTF8_Char({{'\360', '\220', '\200', '\200'}, 4}) );
900

901
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'\U00010000')
12✔
902
                   != finalcut::UTF8_Char({{'\360', '\200', '\200', '\200'}, 3}) );
903

904
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'\U00010000')
14✔
905
                   == std::string({char(0xf0), char(0x90), char(0x80), char(0x80)}) );
906

907
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'𐎈')
12✔
908
                   == finalcut::UTF8_Char({{'\360', '\220', '\216', '\210'}, 4}) );
909

910
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'𐎈')
14✔
911
                   == std::string({char(0xf0), char(0x90), char(0x8e), char(0x88)}) );
912

913
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'𖥕')
12✔
914
                   == finalcut::UTF8_Char({{'\360', '\226', '\245', '\225'}, 4}) );
915

916
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'𖥕')
14✔
917
                   == std::string({char(0xf0), char(0x96), char(0xa5), char(0x95)}) );
918

919
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'𛊹')
12✔
920
                   == finalcut::UTF8_Char({{'\360', '\233', '\212', '\271'}, 4}) );
921

922
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'𛊹')
14✔
923
                   == std::string({char(0xf0), char(0x9b), char(0x8a), char(0xb9)}) );
924

925
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'🂱')
12✔
926
                   == finalcut::UTF8_Char({{'\360', '\237', '\202', '\261'}, 4}) );
927

928
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'🂱')
14✔
929
                   == std::string({char(0xf0), char(0x9f), char(0x82), char(0xb1)}) );
930

931
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'😀')
12✔
932
                   == finalcut::UTF8_Char({{'\360', '\237', '\230', '\200'}, 4}) );
933

934
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'😀')
14✔
935
                   == std::string({char(0xf0), char(0x9f), char(0x98), char(0x80)}) );
936

937
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'😁')
12✔
938
                   == finalcut::UTF8_Char({{'\360', '\237', '\230', '\201'}, 4}) );
939

940
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'😁')
14✔
941
                   == std::string({char(0xf0), char(0x9f), char(0x98), char(0x81)}) );
942

943
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'😂')
12✔
944
                   == finalcut::UTF8_Char({{'\360', '\237', '\230', '\202'}, 4}) );
945

946
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'😂')
14✔
947
                   == std::string({char(0xf0), char(0x9f), char(0x98), char(0x82)}) );
948

949
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'😃')
12✔
950
                   == finalcut::UTF8_Char({{'\360', '\237', '\230', '\203'}, 4}) );
951

952
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'😃')
14✔
953
                   == std::string({char(0xf0), char(0x9f), char(0x98), char(0x83)}) );
954

955
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'😄')
12✔
956
                   == finalcut::UTF8_Char({{'\360', '\237', '\230', '\204'}, 4}) );
957

958
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'😄')
14✔
959
                   == std::string({char(0xf0), char(0x9f), char(0x98), char(0x84)}) );
960

961
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'😅')
12✔
962
                   == finalcut::UTF8_Char({{'\360', '\237', '\230', '\205'}, 4}) );
963

964
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'😅')
14✔
965
                   == std::string({char(0xf0), char(0x9f), char(0x98), char(0x85)}) );
966

967
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'😆')
12✔
968
                   == finalcut::UTF8_Char({{'\360', '\237', '\230', '\206'}, 4}) );
969

970
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'😆')
14✔
971
                   == std::string({char(0xf0), char(0x9f), char(0x98), char(0x86)}) );
972

973
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'😇')
12✔
974
                   == finalcut::UTF8_Char({{'\360', '\237', '\230', '\207'}, 4}) );
975

976
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'😇')
14✔
977
                   == std::string({char(0xf0), char(0x9f), char(0x98), char(0x87)}) );
978

979
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'😈')
12✔
980
                   == finalcut::UTF8_Char({{'\360', '\237', '\230', '\210'}, 4}) );
981

982
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'😈')
14✔
983
                   == std::string({char(0xf0), char(0x9f), char(0x98), char(0x88)}) );
984

985
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'😉')
12✔
986
                   == finalcut::UTF8_Char({{'\360', '\237', '\230', '\211'}, 4}) );
987

988
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'😉')
14✔
989
                   == std::string({char(0xf0), char(0x9f), char(0x98), char(0x89)}) );
990

991
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'😊')
12✔
992
                   == finalcut::UTF8_Char({{'\360', '\237', '\230', '\212'}, 4}) );
993

994
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'😊')
14✔
995
                   == std::string({char(0xf0), char(0x9f), char(0x98), char(0x8a)}) );
996

997
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'😋')
12✔
998
                   == finalcut::UTF8_Char({{'\360', '\237', '\230', '\213'}, 4}) );
999

1000
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'😋')
14✔
1001
                   == std::string({char(0xf0), char(0x9f), char(0x98), char(0x8b)}) );
1002

1003
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'😌')
12✔
1004
                   == finalcut::UTF8_Char({{'\360', '\237', '\230', '\214'}, 4}) );
1005

1006
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'😌')
14✔
1007
                   == std::string({char(0xf0), char(0x9f), char(0x98), char(0x8c)}) );
1008

1009
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'😍')
12✔
1010
                   == finalcut::UTF8_Char({{'\360', '\237', '\230', '\215'}, 4}) );
1011

1012
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'😍')
14✔
1013
                   == std::string({char(0xf0), char(0x9f), char(0x98), char(0x8d)}) );
1014

1015
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'😎')
12✔
1016
                   == finalcut::UTF8_Char({{'\360', '\237', '\230', '\216'}, 4}) );
1017

1018
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'😎')
14✔
1019
                   == std::string({char(0xf0), char(0x9f), char(0x98), char(0x8e)}) );
1020

1021
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'😏')
12✔
1022
                   == finalcut::UTF8_Char({{'\360', '\237', '\230', '\217'}, 4}) );
1023

1024
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'😏')
14✔
1025
                   == std::string({char(0xf0), char(0x9f), char(0x98), char(0x8f)}) );
1026

1027
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'😐')
12✔
1028
                   == finalcut::UTF8_Char({{'\360', '\237', '\230', '\220'}, 4}) );
1029

1030
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'😐')
14✔
1031
                   == std::string({char(0xf0), char(0x9f), char(0x98), char(0x90)}) );
1032

1033
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'🦇')
12✔
1034
                   == finalcut::UTF8_Char({{'\360', '\237', '\246', '\207'}, 4}) );
1035

1036
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'🦇')
14✔
1037
                   == std::string({char(0xf0), char(0x9f), char(0xa6), char(0x87)}) );
1038

1039
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'屮')
12✔
1040
                   == finalcut::UTF8_Char({{'\360', '\257', '\241', '\270'}, 4}) );
1041

1042
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'屮')
14✔
1043
                   == std::string({char(0xf0), char(0xaf), char(0xa1), char(0xb8)}) );
1044

1045
  // Supplementary Private Use Area-A
1046
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(L'\U000F0000')
12✔
1047
                   == finalcut::UTF8_Char({{'\363', '\260', '\200', '\200'}, 4}) );
1048

1049
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(L'\U000F0000')
14✔
1050
                   == std::string({char(0xf3), char(0xb0), char(0x80), char(0x80)}) );
1051

1052
  // Last valid 4 byte character
1053
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(wchar_t(0x1fffff))
12✔
1054
                   == finalcut::UTF8_Char({{'\367', '\277', '\277', '\277'}, 4}) );
1055

1056
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(wchar_t(0x1fffff))
14✔
1057
                   == std::string({char(0xf7), char(0xbf), char(0xbf), char(0xbf)}) );
1058

1059
  // Invalid characters are mapped to the replacement character (U+FFFD)
1060
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(wchar_t(0x200000))
12✔
1061
                   == finalcut::UTF8_Char({{'\357', '\277', '\275', '\0'}, 3}) );
1062

1063
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(wchar_t(0x200000))
14✔
1064
                   == std::string({char(0xef), char(0xbf), char(0xbd)}) );
1065

1066
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(wchar_t(0x200000))
12✔
1067
                   == finalcut::unicode_to_utf8_string(L'�') );
1068

1069
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8(wchar_t(INT_MAX))  // maximum 32-bit value
12✔
1070
                   == finalcut::UTF8_Char({{'\357', '\277', '\275', '\0'}, 3}) );
1071

1072
  CPPUNIT_ASSERT ( finalcut::unicode_to_utf8_string(wchar_t(INT_MAX))  // maximum 32-bit value
10✔
1073
                   == finalcut::unicode_to_utf8_string(L'�') );
1074
}
2✔
1075

1076
//----------------------------------------------------------------------
1077
void FTermFunctionsTest::FullWidthHalfWidthTest()
2✔
1078
{
1079
  CPPUNIT_ASSERT ( finalcut::hasFullWidthSupports() );
12✔
1080

1081
  // Test the conversion from half-width to full-width characters
1082
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L' ') == L" " );
12✔
1083
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'!') == L"!" );
12✔
1084
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'"') == L""" );
12✔
1085
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'#') == L"#" );
12✔
1086
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'$') == L"$" );
12✔
1087
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'%') == L"%" );
12✔
1088
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'&') == L"&" );
12✔
1089
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'\'') == L"'" );
12✔
1090
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'(') == L"(" );
12✔
1091
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L')') == L")" );
12✔
1092
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'*') == L"*" );
12✔
1093
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'+') == L"+" );
12✔
1094
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L',') == L"," );
12✔
1095
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'-') == L"-" );
12✔
1096
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'.') == L"." );
12✔
1097
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'/') == L"/" );
12✔
1098
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'0') == L"0" );
12✔
1099
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'1') == L"1" );
12✔
1100
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'2') == L"2" );
12✔
1101
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'3') == L"3" );
12✔
1102
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'4') == L"4" );
12✔
1103
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'5') == L"5" );
12✔
1104
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'6') == L"6" );
12✔
1105
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'7') == L"7" );
12✔
1106
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'8') == L"8" );
12✔
1107
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'9') == L"9" );
12✔
1108
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L':') == L":" );
12✔
1109
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L';') == L";" );
12✔
1110
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'<') == L"<" );
12✔
1111
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'=') == L"=" );
12✔
1112
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'>') == L">" );
12✔
1113
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'?') == L"?" );
12✔
1114
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'@') == L"@" );
12✔
1115
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'A') == L"A" );
12✔
1116
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'B') == L"B" );
12✔
1117
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'C') == L"C" );
12✔
1118
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'D') == L"D" );
12✔
1119
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'E') == L"E" );
12✔
1120
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'F') == L"F" );
12✔
1121
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'G') == L"G" );
12✔
1122
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'H') == L"H" );
12✔
1123
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'I') == L"I" );
12✔
1124
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'J') == L"J" );
12✔
1125
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'K') == L"K" );
12✔
1126
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'L') == L"L" );
12✔
1127
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'M') == L"M" );
12✔
1128
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'N') == L"N" );
12✔
1129
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'O') == L"O" );
12✔
1130
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'P') == L"P" );
12✔
1131
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'Q') == L"Q" );
12✔
1132
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'R') == L"R" );
12✔
1133
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'S') == L"S" );
12✔
1134
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'T') == L"T" );
12✔
1135
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'U') == L"U" );
12✔
1136
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'V') == L"V" );
12✔
1137
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'W') == L"W" );
12✔
1138
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'X') == L"X" );
12✔
1139
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'Y') == L"Y" );
12✔
1140
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'Z') == L"Z" );
12✔
1141
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'[') == L"[" );
12✔
1142
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'\\') == L"\" );
12✔
1143
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L']') == L"]" );
12✔
1144
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'^') == L"^" );
12✔
1145
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'_') == L"_" );
12✔
1146
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'`') == L"`" );
12✔
1147
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'a') == L"a" );
12✔
1148
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'b') == L"b" );
12✔
1149
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'c') == L"c" );
12✔
1150
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'd') == L"d" );
12✔
1151
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'e') == L"e" );
12✔
1152
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'f') == L"f" );
12✔
1153
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'g') == L"g" );
12✔
1154
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'h') == L"h" );
12✔
1155
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'i') == L"i" );
12✔
1156
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'j') == L"j" );
12✔
1157
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'k') == L"k" );
12✔
1158
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'l') == L"l" );
12✔
1159
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'm') == L"m" );
12✔
1160
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'n') == L"n" );
12✔
1161
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'o') == L"o" );
12✔
1162
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'p') == L"p" );
12✔
1163
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'q') == L"q" );
12✔
1164
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'r') == L"r" );
12✔
1165
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L's') == L"s" );
12✔
1166
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L't') == L"t" );
12✔
1167
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'u') == L"u" );
12✔
1168
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'v') == L"v" );
12✔
1169
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'w') == L"w" );
12✔
1170
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'x') == L"x" );
12✔
1171
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'y') == L"y" );
12✔
1172
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'z') == L"z" );
12✔
1173
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'{') == L"{" );
12✔
1174
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'|') == L"|" );
12✔
1175
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'}') == L"}" );
12✔
1176
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'~') == L"~" );
12✔
1177
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'←') == L"←" );
12✔
1178
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'↑') == L"↑" );
12✔
1179
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'→') == L"→" );
12✔
1180
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'↓') == L"↓" );
12✔
1181
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'¢') == L"¢" );
12✔
1182
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'£') == L"£" );
12✔
1183
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'ア') == L"ア" );
12✔
1184
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'イ') == L"イ" );
12✔
1185
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'ウ') == L"ウ" );
12✔
1186
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'エ') == L"エ" );
12✔
1187
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'ᄀ') == L"ㄱ" );
12✔
1188
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'ᄁ') == L"ㄲ" );
12✔
1189
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'ᆪ') == L"ㄳ" );
12✔
1190
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'ᄂ') == L"ㄴ" );
12✔
1191
  // Only half-width
1192
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'Ā') == L"Ā" );
12✔
1193
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'ā') == L"ā" );
12✔
1194
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'Ă') == L"Ă" );
12✔
1195
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'ă') == L"ă" );
12✔
1196
  CPPUNIT_ASSERT ( finalcut::getFullWidth(L'Ą') == L"Ą" );
12✔
1197

1198
  // Test the conversion from full-width to half-width characters
1199
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L" ") == L" " );
12✔
1200
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"!") == L"!" );
12✔
1201
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L""") == L"\"" );
12✔
1202
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"#") == L"#" );
12✔
1203
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"$") == L"$" );
12✔
1204
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"%") == L"%" );
12✔
1205
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"&") == L"&" );
12✔
1206
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"'") == L"'" );
12✔
1207
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"(") == L"(" );
12✔
1208
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L")") == L")" );
12✔
1209
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"*") == L"*" );
12✔
1210
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"+") == L"+" );
12✔
1211
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L",") == L"," );
12✔
1212
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"-") == L"-" );
12✔
1213
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L".") == L"." );
12✔
1214
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"/") == L"/" );
12✔
1215
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"0") == L"0" );
12✔
1216
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"1") == L"1" );
12✔
1217
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"2") == L"2" );
12✔
1218
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"3") == L"3" );
12✔
1219
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"4") == L"4" );
12✔
1220
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"5") == L"5" );
12✔
1221
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"6") == L"6" );
12✔
1222
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"7") == L"7" );
12✔
1223
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"8") == L"8" );
12✔
1224
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"9") == L"9" );
12✔
1225
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L":") == L":" );
12✔
1226
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L";") == L";" );
12✔
1227
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"<") == L"<" );
12✔
1228
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"=") == L"=" );
12✔
1229
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L">") == L">" );
12✔
1230
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"?") == L"?" );
12✔
1231
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"@") == L"@" );
12✔
1232
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"A") == L"A" );
12✔
1233
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"B") == L"B" );
12✔
1234
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"C") == L"C" );
12✔
1235
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"D") == L"D" );
12✔
1236
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"E") == L"E" );
12✔
1237
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"F") == L"F" );
12✔
1238
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"G") == L"G" );
12✔
1239
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"H") == L"H" );
12✔
1240
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"I") == L"I" );
12✔
1241
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"J") == L"J" );
12✔
1242
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"K") == L"K" );
12✔
1243
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"L") == L"L" );
12✔
1244
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"M") == L"M" );
12✔
1245
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"N") == L"N" );
12✔
1246
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"O") == L"O" );
12✔
1247
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"P") == L"P" );
12✔
1248
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"Q") == L"Q" );
12✔
1249
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"R") == L"R" );
12✔
1250
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"S") == L"S" );
12✔
1251
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"T") == L"T" );
12✔
1252
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"U") == L"U" );
12✔
1253
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"V") == L"V" );
12✔
1254
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"W") == L"W" );
12✔
1255
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"X") == L"X" );
12✔
1256
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"Y") == L"Y" );
12✔
1257
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"Z") == L"Z" );
12✔
1258
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"[") == L"[" );
12✔
1259
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"\") == L"\\" );
12✔
1260
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"]") == L"]" );
12✔
1261
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"^") == L"^" );
12✔
1262
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"_") == L"_" );
12✔
1263
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"`") == L"`" );
12✔
1264
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"a") == L"a" );
12✔
1265
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"b") == L"b" );
12✔
1266
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"c") == L"c" );
12✔
1267
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"d") == L"d" );
12✔
1268
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"e") == L"e" );
12✔
1269
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"f") == L"f" );
12✔
1270
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"g") == L"g" );
12✔
1271
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"h") == L"h" );
12✔
1272
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"i") == L"i" );
12✔
1273
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"j") == L"j" );
12✔
1274
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"k") == L"k" );
12✔
1275
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"l") == L"l" );
12✔
1276
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"m") == L"m" );
12✔
1277
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"n") == L"n" );
12✔
1278
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"o") == L"o" );
12✔
1279
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"p") == L"p" );
12✔
1280
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"q") == L"q" );
12✔
1281
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"r") == L"r" );
12✔
1282
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"s") == L"s" );
12✔
1283
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"t") == L"t" );
12✔
1284
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"u") == L"u" );
12✔
1285
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"v") == L"v" );
12✔
1286
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"w") == L"w" );
12✔
1287
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"x") == L"x" );
12✔
1288
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"y") == L"y" );
12✔
1289
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"z") == L"z" );
12✔
1290
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"{") == L"{" );
12✔
1291
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"|") == L"|" );
12✔
1292
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"}") == L"}" );
12✔
1293
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"~") == L"~" );
12✔
1294
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"←" ) == L"←");
12✔
1295
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"↑" ) == L"↑");
12✔
1296
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"→" ) == L"→");
12✔
1297
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"↓" ) == L"↓");
12✔
1298
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"¢") == L"¢" );
12✔
1299
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"£") == L"£" );
12✔
1300
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"ア") == L"ア" );
12✔
1301
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"イ") == L"イ" );
12✔
1302
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"ウ") == L"ウ" );
12✔
1303
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"エ") == L"エ" );
12✔
1304
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"ㄱ") == L"ᄀ" );
12✔
1305
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"ㄲ") == L"ᄁ" );
12✔
1306
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"ㄳ") == L"ᆪ" );
12✔
1307
  CPPUNIT_ASSERT ( finalcut::getHalfWidth(L"ㄴ") == L"ᄂ" );
10✔
1308

1309
  // Column width (wchar_t)
1310
  auto& fterm_data = finalcut::FTermData::getInstance();
2✔
1311
  fterm_data.setTermEncoding (finalcut::Encoding::UTF8);
2✔
1312
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"\t") == 0 );
12✔
1313
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"\r") == 0 );
12✔
1314
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"\n") == 0 );
12✔
1315
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"\v") == 0 );
12✔
1316
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L" ") == 1 );
12✔
1317
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"0") == 1 );
12✔
1318
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"1") == 1 );
12✔
1319
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"2") == 1 );
12✔
1320
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"3") == 1 );
12✔
1321
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"0") == 2 );
12✔
1322
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"1") == 2 );
12✔
1323
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"2") == 2 );
12✔
1324
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"3") == 2 );
12✔
1325
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"\U00000300") == 0 );
12✔
1326
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"\U00000348") == 0 );
12✔
1327
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"\U0000094d") == 0 );
12✔
1328
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"\U00000e37") == 0 );
10✔
1329

1330
  // Column width (wchar_t) in latin-1
1331
  std::setlocale (LC_CTYPE, "C");
2✔
1332
  fterm_data.setTermEncoding (finalcut::Encoding::VT100);
2✔
1333
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L'─') == 1 );  // wcwidth(L'─') == -1 (for LC_CTYPE = C)
12✔
1334
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L'│') == 1 );  // wcwidth(L'│') == -1 (for LC_CTYPE = C)
12✔
1335
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L'├') == 1 );  // wcwidth(L'├') == -1 (for LC_CTYPE = C)
12✔
1336
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L'┤') == 1 );  // wcwidth(L'┤') == -1 (for LC_CTYPE = C)
12✔
1337
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L'┼') == 1 );  // wcwidth(L'┼') == -1 (for LC_CTYPE = C)
12✔
1338
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L'┐') == 1 );  // wcwidth(L'┐') == -1 (for LC_CTYPE = C)
12✔
1339
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L'└') == 1 );  // wcwidth(L'└') == -1 (for LC_CTYPE = C)
12✔
1340
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L'┌') == 1 );  // wcwidth(L'┌') == -1 (for LC_CTYPE = C)
12✔
1341
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L'┘') == 1 );  // wcwidth(L'┘') == -1 (for LC_CTYPE = C)
10✔
1342

1343
  auto ret = std::setlocale (LC_CTYPE, "en_US.UTF-8");
2✔
1344

1345
  if ( ! ret )
2✔
1346
    ret = std::setlocale (LC_CTYPE, "C.UTF-8");
×
1347

1348
  if ( ! ret )
2✔
1349
    return;
×
1350

1351
  fterm_data.setTermEncoding (finalcut::Encoding::UTF8);
2✔
1352

1353
  // Column width (FString)
1354
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"\v\t 100") == 4 );
12✔
1355
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"0123456789") == 10 );
12✔
1356
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"0123456789") == 20 );
12✔
1357
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"abc") == 3 );
12✔
1358
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"abc") == 5 );
12✔
1359
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"你好") == 4 );
12✔
1360
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"你好 one CUT more") == 20 );
12✔
1361
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"1234567 one CUT more") == 23 );
12✔
1362
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"o\U0000031b\U00000323=\U00001ee3") == 3 );
12✔
1363
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"STARGΛ̊TE") == 8 );
12✔
1364

1365
  // Column width (FString) with end position
1366
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"\v\t 100", 0) == 0 );
12✔
1367
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"\v\t 100", 1) == 0 );
12✔
1368
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"\v\t 100", 2) == 0 );
12✔
1369
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"\v\t 100", 3) == 1 );
12✔
1370
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"\v\t 100", 4) == 2 );
12✔
1371
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"\v\t 100", 5) == 3 );
12✔
1372
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"\v\t 100", 6) == 4 );
12✔
1373
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"\v\t 100", 7) == 4 );
12✔
1374
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"0123", 0) == 0 );
12✔
1375
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"0123", 1) == 1 );
12✔
1376
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"0123", 2) == 2 );
12✔
1377
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"0123", 3) == 3 );
12✔
1378
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"0123", 4) == 4 );
12✔
1379
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"0123", 0) == 0 );
12✔
1380
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"0123", 1) == 2 );
12✔
1381
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"0123", 2) == 4 );
12✔
1382
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"0123", 3) == 6 );
12✔
1383
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"0123", 4) == 8 );
12✔
1384
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"你好 one CUT more", 0) == 0 );
12✔
1385
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"你好 one CUT more", 1) == 2 );
12✔
1386
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"你好 one CUT more", 2) == 4 );
12✔
1387
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"你好 one CUT more", 3) == 5 );
12✔
1388
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"你好 one CUT more", 4) == 6 );
12✔
1389
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"你好 one CUT more", 5) == 7 );
12✔
1390
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"你好 one CUT more", 6) == 8 );
12✔
1391
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"你好 one CUT more", 7) == 9 );
12✔
1392
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"你好 one CUT more", 8) == 11 );
12✔
1393
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"你好 one CUT more", 9) == 13 );
12✔
1394
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"你好 one CUT more", 10) == 15 );
12✔
1395
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"你好 one CUT more", 11) == 16 );
12✔
1396
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"你好 one CUT more", 12) == 17 );
12✔
1397
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"你好 one CUT more", 13) == 18 );
12✔
1398
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"你好 one CUT more", 14) == 19 );
12✔
1399
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"你好 one CUT more", 15) == 20 );
12✔
1400
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"1234567 one CUT more", 0) == 0 );
12✔
1401
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"1234567 one CUT more", 1) == 1 );
12✔
1402
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"1234567 one CUT more", 2) == 2 );
12✔
1403
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"1234567 one CUT more", 3) == 3 );
12✔
1404
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"1234567 one CUT more", 4) == 4 );
12✔
1405
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"1234567 one CUT more", 5) == 5 );
12✔
1406
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"1234567 one CUT more", 6) == 6 );
12✔
1407
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"1234567 one CUT more", 7) == 7 );
12✔
1408
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"1234567 one CUT more", 8) == 8 );
12✔
1409
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"1234567 one CUT more", 9) == 9 );
12✔
1410
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"1234567 one CUT more", 10) == 10 );
12✔
1411
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"1234567 one CUT more", 11) == 11 );
12✔
1412
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"1234567 one CUT more", 12) == 12 );
12✔
1413
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"1234567 one CUT more", 13) == 14 );
12✔
1414
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"1234567 one CUT more", 14) == 16 );
12✔
1415
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"1234567 one CUT more", 15) == 18 );
12✔
1416
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"1234567 one CUT more", 16) == 19 );
12✔
1417
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"1234567 one CUT more", 17) == 20 );
12✔
1418
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"1234567 one CUT more", 18) == 21 );
12✔
1419
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"1234567 one CUT more", 19) == 22 );
12✔
1420
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"1234567 one CUT more", 20) == 23 );
12✔
1421
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"o\U0000031b\U00000323=\U00001ee3", 0) == 0 );
12✔
1422
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"o\U0000031b\U00000323=\U00001ee3", 1) == 1 );
12✔
1423
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"o\U0000031b\U00000323=\U00001ee3", 2) == 1 );
12✔
1424
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"o\U0000031b\U00000323=\U00001ee3", 3) == 1 );
12✔
1425
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"o\U0000031b\U00000323=\U00001ee3", 4) == 2 );
12✔
1426
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"o\U0000031b\U00000323=\U00001ee3", 5) == 3 );
12✔
1427
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"STARGΛ̊TE", 0) == 0 );
12✔
1428
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"STARGΛ̊TE", 1) == 1 );
12✔
1429
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"STARGΛ̊TE", 2) == 2 );
12✔
1430
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"STARGΛ̊TE", 3) == 3 );
12✔
1431
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"STARGΛ̊TE", 4) == 4 );
12✔
1432
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"STARGΛ̊TE", 5) == 5 );
12✔
1433
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"STARGΛ̊TE", 6) == 6 );
12✔
1434
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"STARGΛ̊TE", 7) == 6 );
12✔
1435
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"STARGΛ̊TE", 8) == 7 );
12✔
1436
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(L"STARGΛ̊TE", 9) == 8 );
12✔
1437

1438
  // String length from the first to the specified end column
1439
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"\v\t 100", 0) == 0 );
12✔
1440
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"\v\t 100", 1) == 3 );
12✔
1441
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"\v\t 100", 2) == 4 );
12✔
1442
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"\v\t 100", 3) == 5 );
12✔
1443
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"\v\t 100", 4) == 6 );
12✔
1444
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"\v\t 100", 5) == 6 );
12✔
1445
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"0123", 0) == 0 );
12✔
1446
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"0123", 1) == 1 );
12✔
1447
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"0123", 2) == 2 );
12✔
1448
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"0123", 3) == 3 );
12✔
1449
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"0123", 4) == 4 );
12✔
1450
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"0123", 0) == 0 );
12✔
1451
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"0123", 1) == 1 );
12✔
1452
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"0123", 2) == 1 );
12✔
1453
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"0123", 3) == 2 );
12✔
1454
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"0123", 4) == 2 );
12✔
1455
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"0123", 5) == 3 );
12✔
1456
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"0123", 6) == 3 );
12✔
1457
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"0123", 7) == 4 );
12✔
1458
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"0123", 8) == 4 );
12✔
1459
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"你好 one CUT more", 0) == 0 );
12✔
1460
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"你好 one CUT more", 1) == 1 );
12✔
1461
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"你好 one CUT more", 2) == 1 );
12✔
1462
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"你好 one CUT more", 3) == 2 );
12✔
1463
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"你好 one CUT more", 4) == 2 );
12✔
1464
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"你好 one CUT more", 5) == 3 );
12✔
1465
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"你好 one CUT more", 6) == 4 );
12✔
1466
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"你好 one CUT more", 7) == 5 );
12✔
1467
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"你好 one CUT more", 8) == 6 );
12✔
1468
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"你好 one CUT more", 9) == 7 );
12✔
1469
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"你好 one CUT more", 10) == 8 );
12✔
1470
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"你好 one CUT more", 11) == 8 );
12✔
1471
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"你好 one CUT more", 12) == 9 );
12✔
1472
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"你好 one CUT more", 13) == 9 );
12✔
1473
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"你好 one CUT more", 14) == 10 );
12✔
1474
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"你好 one CUT more", 15) == 10 );
12✔
1475
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"你好 one CUT more", 16) == 11 );
12✔
1476
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"你好 one CUT more", 17) == 12 );
12✔
1477
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"你好 one CUT more", 18) == 13 );
12✔
1478
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"你好 one CUT more", 19) == 14 );
12✔
1479
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"你好 one CUT more", 20) == 15 );
12✔
1480
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"1234567 one CUT more", 0) == 0 );
12✔
1481
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"1234567 one CUT more", 1) == 1 );
12✔
1482
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"1234567 one CUT more", 2) == 2 );
12✔
1483
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"1234567 one CUT more", 3) == 3 );
12✔
1484
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"1234567 one CUT more", 4) == 4 );
12✔
1485
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"1234567 one CUT more", 5) == 5 );
12✔
1486
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"1234567 one CUT more", 6) == 6 );
12✔
1487
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"1234567 one CUT more", 7) == 7 );
12✔
1488
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"1234567 one CUT more", 8) == 8 );
12✔
1489
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"1234567 one CUT more", 9) == 9 );
12✔
1490
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"1234567 one CUT more", 10) == 10 );
12✔
1491
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"1234567 one CUT more", 11) == 11 );
12✔
1492
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"1234567 one CUT more", 12) == 12 );
12✔
1493
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"1234567 one CUT more", 13) == 13 );
12✔
1494
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"1234567 one CUT more", 14) == 13 );
12✔
1495
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"1234567 one CUT more", 15) == 14 );
12✔
1496
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"1234567 one CUT more", 16) == 14 );
12✔
1497
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"1234567 one CUT more", 17) == 15 );
12✔
1498
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"1234567 one CUT more", 18) == 15 );
12✔
1499
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"1234567 one CUT more", 19) == 16 );
12✔
1500
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"1234567 one CUT more", 20) == 17 );
12✔
1501
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"1234567 one CUT more", 21) == 18 );
12✔
1502
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"1234567 one CUT more", 22) == 19 );
12✔
1503
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"1234567 one CUT more", 23) == 20 );
12✔
1504
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"o\U0000031b\U00000323=\U00001ee3", 0) == 0 );
12✔
1505
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"o\U0000031b\U00000323=\U00001ee3", 1) == 1 );
12✔
1506
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"o\U0000031b\U00000323=\U00001ee3", 2) == 4 );
12✔
1507
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"o\U0000031b\U00000323=\U00001ee3", 3) == 5 );
12✔
1508
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"STARGΛ̊TE", 0) == 0 );
12✔
1509
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"STARGΛ̊TE", 1) == 1 );
12✔
1510
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"STARGΛ̊TE", 2) == 2 );
12✔
1511
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"STARGΛ̊TE", 3) == 3 );
12✔
1512
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"STARGΛ̊TE", 4) == 4 );
12✔
1513
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"STARGΛ̊TE", 5) == 5 );
12✔
1514
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"STARGΛ̊TE", 6) == 6 );
12✔
1515
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"STARGΛ̊TE", 7) == 8 );
12✔
1516
  CPPUNIT_ASSERT ( finalcut::getLengthFromColumnWidth(L"STARGΛ̊TE", 8) == 9 );
10✔
1517

1518
  // Column width (FChar)
1519
  finalcut::FChar fchar{};
2✔
1520
  std::wstring s = L"1";
4✔
1521
  std::copy(std::begin(s), std::end(s), std::begin(fchar.ch));
4✔
1522
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 0 );
10✔
1523
  auto column_width = finalcut::getColumnWidth(fchar.ch[0]);
2✔
1524
  finalcut::addColumnWidth(fchar, column_width);
2✔
1525
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 1 );
10✔
1526
  fchar.attr.bit.char_width = 0x00 & 0x03;
2✔
1527
  s = L"\t";
2✔
1528
  std::copy(std::begin(s), std::end(s), std::begin(fchar.ch));
4✔
1529
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 0 );
10✔
1530
  column_width = finalcut::getColumnWidth(fchar.ch[0]);
2✔
1531
  finalcut::addColumnWidth(fchar, column_width);
2✔
1532
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 0 );
10✔
1533
  fchar.attr.bit.char_width = 0x00 & 0x03;
2✔
1534
  s = L"\r";
2✔
1535
  std::copy(std::begin(s), std::end(s), std::begin(fchar.ch));
4✔
1536
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 0 );
10✔
1537
  column_width = finalcut::getColumnWidth(fchar.ch[0]);
2✔
1538
  finalcut::addColumnWidth(fchar, column_width);
2✔
1539
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 0 );
10✔
1540
  fchar.attr.bit.char_width = 0x00 & 0x03;
2✔
1541
  s = L"\n";
2✔
1542
  std::copy(std::begin(s), std::end(s), std::begin(fchar.ch));
4✔
1543
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 0 );
10✔
1544
  column_width = finalcut::getColumnWidth(fchar.ch[0]);
2✔
1545
  finalcut::addColumnWidth(fchar, column_width);
2✔
1546
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 0 );
10✔
1547
  fchar.attr.bit.char_width = 0x00 & 0x03;
2✔
1548
  s = L"\v";
2✔
1549
  std::copy(std::begin(s), std::end(s), std::begin(fchar.ch));
4✔
1550
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 0 );
10✔
1551
  column_width = finalcut::getColumnWidth(fchar.ch[0]);
2✔
1552
  finalcut::addColumnWidth(fchar, column_width);
2✔
1553
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 0 );
10✔
1554
  fchar.attr.bit.char_width = 0x00 & 0x03;
2✔
1555
  s = L" ";
2✔
1556
  std::copy(std::begin(s), std::end(s), std::begin(fchar.ch));
4✔
1557
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 0 );
10✔
1558
  column_width = finalcut::getColumnWidth(fchar.ch[0]);
2✔
1559
  finalcut::addColumnWidth(fchar, column_width);
2✔
1560
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 1 );
10✔
1561
  fchar.attr.bit.char_width = 0x00 & 0x03;
2✔
1562
  s = L"0";
2✔
1563
  std::copy(std::begin(s), std::end(s), std::begin(fchar.ch));
4✔
1564
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 0 );
10✔
1565
  column_width = finalcut::getColumnWidth(fchar.ch[0]);
2✔
1566
  finalcut::addColumnWidth(fchar, column_width);
2✔
1567
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 1 );
10✔
1568
  fchar.attr.bit.char_width = 0x00 & 0x03;
2✔
1569
  s = L"1";
2✔
1570
  std::copy(std::begin(s), std::end(s), std::begin(fchar.ch));
4✔
1571
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 0 );
10✔
1572
  column_width = finalcut::getColumnWidth(fchar.ch[0]);
2✔
1573
  finalcut::addColumnWidth(fchar, column_width);
2✔
1574
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 1 );
10✔
1575
  fchar.attr.bit.char_width = 0x00 & 0x03;
2✔
1576
  s = L"2";
2✔
1577
  std::copy(std::begin(s), std::end(s), std::begin(fchar.ch));
4✔
1578
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 0 );
10✔
1579
  column_width = finalcut::getColumnWidth(fchar.ch[0]);
2✔
1580
  finalcut::addColumnWidth(fchar, column_width);
2✔
1581
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 1 );
10✔
1582
  fchar.attr.bit.char_width = 0x00 & 0x03;
2✔
1583
  s = L"3";
2✔
1584
  std::copy(std::begin(s), std::end(s), std::begin(fchar.ch));
4✔
1585
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 0 );
10✔
1586
  column_width = finalcut::getColumnWidth(fchar.ch[0]);
2✔
1587
  finalcut::addColumnWidth(fchar, column_width);
2✔
1588
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 1 );
10✔
1589
  fchar.attr.bit.char_width = 0x00 & 0x03;
2✔
1590
  s = L"0";
2✔
1591
  std::copy(std::begin(s), std::end(s), std::begin(fchar.ch));
4✔
1592
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 0 );
10✔
1593
  column_width = finalcut::getColumnWidth(fchar.ch[0]);
2✔
1594
  finalcut::addColumnWidth(fchar, column_width);
2✔
1595
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 2 );
10✔
1596
  fchar.attr.bit.char_width = 0x00 & 0x03;
2✔
1597
  s = L"1";
2✔
1598
  std::copy(std::begin(s), std::end(s), std::begin(fchar.ch));
4✔
1599
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 0 );
10✔
1600
  column_width = finalcut::getColumnWidth(fchar.ch[0]);
2✔
1601
  finalcut::addColumnWidth(fchar, column_width);
2✔
1602
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 2 );
10✔
1603
  fchar.attr.bit.char_width = 0x00 & 0x03;
2✔
1604
  s = L"2";
2✔
1605
  std::copy(std::begin(s), std::end(s), std::begin(fchar.ch));
4✔
1606
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 0 );
10✔
1607
  column_width = finalcut::getColumnWidth(fchar.ch[0]);
2✔
1608
  finalcut::addColumnWidth(fchar, column_width);
2✔
1609
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 2 );
10✔
1610
  fchar.attr.bit.char_width = 0x00 & 0x03;
2✔
1611
  s = L"3";
2✔
1612
  std::copy(std::begin(s), std::end(s), std::begin(fchar.ch));
4✔
1613
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 0 );
10✔
1614
  column_width = finalcut::getColumnWidth(fchar.ch[0]);
2✔
1615
  finalcut::addColumnWidth(fchar, column_width);
2✔
1616
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 2 );
10✔
1617
  fchar.attr.bit.char_width = 0x00 & 0x03;
2✔
1618
  s = L"\U00000300";
2✔
1619
  std::copy(std::begin(s), std::end(s), std::begin(fchar.ch));
4✔
1620
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 0 );
10✔
1621
  column_width = finalcut::getColumnWidth(fchar.ch[0]);
2✔
1622
  finalcut::addColumnWidth(fchar, column_width);
2✔
1623
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 0 );
10✔
1624
  fchar.attr.bit.char_width = 0x00 & 0x03;
2✔
1625
  s = L"\U00000348";
2✔
1626
  std::copy(std::begin(s), std::end(s), std::begin(fchar.ch));
4✔
1627
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 0 );
10✔
1628
  column_width = finalcut::getColumnWidth(fchar.ch[0]);
2✔
1629
  finalcut::addColumnWidth(fchar, column_width);
2✔
1630
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 0 );
10✔
1631
  fchar.attr.bit.char_width = 0x00 & 0x03;
2✔
1632
  s = L"\U0000094d";
2✔
1633
  std::copy(std::begin(s), std::end(s), std::begin(fchar.ch));
4✔
1634
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 0 );
10✔
1635
  column_width = finalcut::getColumnWidth(fchar.ch[0]);
2✔
1636
  finalcut::addColumnWidth(fchar, column_width);
2✔
1637
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 0 );
10✔
1638
  fchar.attr.bit.char_width = 0x00 & 0x03;
2✔
1639
  s = L"\U00000e37";
2✔
1640
  std::copy(std::begin(s), std::end(s), std::begin(fchar.ch));
4✔
1641
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 0 );
10✔
1642
  column_width = finalcut::getColumnWidth(fchar.ch[0]);
2✔
1643
  finalcut::addColumnWidth(fchar, column_width);
2✔
1644
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(fchar) == 0 );
10✔
1645
  fchar.attr.bit.char_width = 0x00 & 0x03;
2✔
1646

1647
  // Column width (FVTermBuffer)
1648
  finalcut::FVTermBuffer vterm_buf{};
2✔
1649
  vterm_buf << L"\v\t 100";
2✔
1650
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(vterm_buf) == 4 );
10✔
1651
  vterm_buf.clear();
2✔
1652
  vterm_buf << L"0123456789";
2✔
1653
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(vterm_buf) == 10 );
10✔
1654
  vterm_buf.clear();
2✔
1655
  vterm_buf << L"0123456789";
2✔
1656
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(vterm_buf) == 20 );  // UTF-8
10✔
1657
  vterm_buf.clear();
2✔
1658
  fterm_data.setTermEncoding (finalcut::Encoding::PC);
2✔
1659
  vterm_buf << L"0123456789";
2✔
1660
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(vterm_buf) == 10 );  // CP-437
10✔
1661
  vterm_buf.clear();
2✔
1662
  fterm_data.setTermEncoding (finalcut::Encoding::UTF8);
2✔
1663
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(vterm_buf) == 0 );  // after clear
10✔
1664
  vterm_buf << L"abc";
2✔
1665
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(vterm_buf) == 3 );
10✔
1666
  vterm_buf.clear();
2✔
1667
  vterm_buf << L"abc";
2✔
1668
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(vterm_buf) == 5 );
10✔
1669
  vterm_buf.clear();
2✔
1670
  vterm_buf << L"你好";
2✔
1671
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(vterm_buf) == 4 );
10✔
1672
  vterm_buf.clear();
2✔
1673
  vterm_buf << L"你好 one CUT more";
2✔
1674
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(vterm_buf) == 20 );
10✔
1675
  vterm_buf.clear();
2✔
1676
  vterm_buf << L"1234567 one CUT more";
2✔
1677
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(vterm_buf) == 23 );
10✔
1678
  vterm_buf.clear();
2✔
1679
  vterm_buf << L"o\U0000031b\U00000323=\U00001ee3";
2✔
1680
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(vterm_buf) == 3 );
10✔
1681
  vterm_buf.clear();
2✔
1682
  vterm_buf << L"STARGΛ̊TE";
2✔
1683
  CPPUNIT_ASSERT ( finalcut::getColumnWidth(vterm_buf) == 8 );
12✔
1684

1685
  // Extracts a substring that starts at a specified column position
1686
  // and has a specified number of columns
1687
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 0, 0) == L"" );
12✔
1688
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 1, 0) == L"" );
12✔
1689
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 2, 0) == L"" );
12✔
1690
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 3, 0) == L"" );
12✔
1691
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 4, 0) == L"" );
12✔
1692
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 5, 0) == L"" );
12✔
1693
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 0, 1) == L" " );
12✔
1694
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 1, 1) == L" " );
12✔
1695
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 2, 1) == L"1" );
12✔
1696
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 3, 1) == L"0" );
12✔
1697
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 4, 1) == L"0" );
12✔
1698
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 5, 1) == L"" );
12✔
1699
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 0, 2) == L" 1" );
12✔
1700
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 1, 2) == L" 1" );
12✔
1701
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 2, 2) == L"10" );
12✔
1702
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 3, 2) == L"00" );
12✔
1703
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 4, 2) == L"0" );
12✔
1704
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 5, 2) == L"" );
12✔
1705
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 0, 3) == L" 10" );
12✔
1706
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 1, 3) == L" 10" );
12✔
1707
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 2, 3) == L"100" );
12✔
1708
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 3, 3) == L"00" );
12✔
1709
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 4, 3) == L"0" );
12✔
1710
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 5, 3) == L"" );
12✔
1711
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 0, 4) == L" 100" );
12✔
1712
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 1, 4) == L" 100" );
12✔
1713
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 2, 4) == L"100" );
12✔
1714
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 3, 4) == L"00" );
12✔
1715
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 4, 4) == L"0" );
12✔
1716
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"\v\t 100", 5, 4) == L"" );
12✔
1717
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 0, 0) == L"" );
12✔
1718
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 1, 0) == L"" );
12✔
1719
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 2, 0) == L"" );
12✔
1720
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 3, 0) == L"" );
12✔
1721
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 4, 0) == L"" );
12✔
1722
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 5, 0) == L"" );
12✔
1723
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 0, 1) == L"0" );
12✔
1724
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 1, 1) == L"0" );
12✔
1725
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 2, 1) == L"1" );
12✔
1726
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 3, 1) == L"2" );
12✔
1727
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 4, 1) == L"3" );
12✔
1728
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 5, 1) == L"" );
12✔
1729
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 0, 2) == L"01" );
12✔
1730
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 1, 2) == L"01" );
12✔
1731
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 2, 2) == L"12" );
12✔
1732
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 3, 2) == L"23" );
12✔
1733
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 4, 2) == L"3" );
12✔
1734
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 5, 2) == L"" );
12✔
1735
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 0, 3) == L"012" );
12✔
1736
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 1, 3) == L"012" );
12✔
1737
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 2, 3) == L"123" );
12✔
1738
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 3, 3) == L"23" );
12✔
1739
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 4, 3) == L"3" );
12✔
1740
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 5, 3) == L"" );
12✔
1741
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 0, 0) == L"" );
12✔
1742
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 1, 0) == L"" );
12✔
1743
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 2, 0) == L"" );
12✔
1744
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 3, 0) == L"" );
12✔
1745
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 4, 0) == L"" );
12✔
1746
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 5, 0) == L"" );
12✔
1747
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 6, 0) == L"" );
12✔
1748
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 7, 0) == L"" );
12✔
1749
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 8, 0) == L"" );
12✔
1750
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 9, 0) == L"" );
12✔
1751
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 0, 1) == L"›" );
12✔
1752
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 1, 1) == L"›" );
12✔
1753
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 2, 1) == L"‹" );
12✔
1754
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 3, 1) == L"›" );
12✔
1755
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 4, 1) == L"‹" );
12✔
1756
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 5, 1) == L"›" );
12✔
1757
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 6, 1) == L"‹" );
12✔
1758
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 7, 1) == L"›" );
12✔
1759
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 8, 1) == L"‹" );
12✔
1760
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 9, 1) == L"" );
12✔
1761
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 0, 2) == L"0" );
12✔
1762
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 1, 2) == L"0" );
12✔
1763
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 2, 2) == L"‹›" );
12✔
1764
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 3, 2) == L"1" );
12✔
1765
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 4, 2) == L"‹›" );
12✔
1766
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 5, 2) == L"2" );
12✔
1767
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 6, 2) == L"‹›" );
12✔
1768
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 7, 2) == L"3" );
12✔
1769
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 8, 2) == L"‹" );
12✔
1770
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 9, 2) == L"" );
12✔
1771
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 0, 3) == L"0›" );
12✔
1772
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 1, 3) == L"0›" );
12✔
1773
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 2, 3) == L"‹1" );
12✔
1774
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 3, 3) == L"1›" );
12✔
1775
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 4, 3) == L"‹2" );
12✔
1776
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 5, 3) == L"2›" );
12✔
1777
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 6, 3) == L"‹3" );
12✔
1778
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 7, 3) == L"3" );
12✔
1779
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 8, 3) == L"‹" );
12✔
1780
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 9, 3) == L"" );
12✔
1781
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 0, 4) == L"01" );
12✔
1782
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 1, 4) == L"01" );
12✔
1783
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 2, 4) == L"‹1›" );
12✔
1784
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 3, 4) == L"12" );
12✔
1785
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 4, 4) == L"‹2›" );
12✔
1786
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 5, 4) == L"23" );
12✔
1787
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 6, 4) == L"‹3" );
12✔
1788
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 7, 4) == L"3" );
12✔
1789
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 8, 4) == L"‹" );
12✔
1790
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 9, 4) == L"" );
12✔
1791
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 0, 5) == L"01›" );
12✔
1792
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 1, 5) == L"01›" );
12✔
1793
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 2, 5) == L"‹12" );
12✔
1794
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 3, 5) == L"12›" );
12✔
1795
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 4, 5) == L"‹23" );
12✔
1796
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 5, 5) == L"23" );
12✔
1797
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 6, 5) == L"‹3" );
12✔
1798
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 7, 5) == L"3" );
12✔
1799
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 8, 5) == L"‹" );
12✔
1800
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 9, 5) == L"" );
12✔
1801
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 0, 6) == L"012" );
12✔
1802
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 1, 6) == L"012" );
12✔
1803
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 2, 6) == L"‹12›" );
12✔
1804
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 3, 6) == L"123" );
12✔
1805
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 4, 6) == L"‹23" );
12✔
1806
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 5, 6) == L"23" );
12✔
1807
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 6, 6) == L"‹3" );
12✔
1808
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 7, 6) == L"3" );
12✔
1809
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 8, 6) == L"‹" );
12✔
1810
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 9, 6) == L"" );
12✔
1811
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 0, 7) == L"012›" );
12✔
1812
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 1, 7) == L"012›" );
12✔
1813
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 2, 7) == L"‹123" );
12✔
1814
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 3, 7) == L"123" );
12✔
1815
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 4, 7) == L"‹23" );
12✔
1816
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 5, 7) == L"23" );
12✔
1817
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 6, 7) == L"‹3" );
12✔
1818
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 7, 7) == L"3" );
12✔
1819
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 8, 7) == L"‹" );
12✔
1820
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 9, 7) == L"" );
12✔
1821
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 0, 8) == L"0123" );
12✔
1822
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 1, 8) == L"0123" );
12✔
1823
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 2, 8) == L"‹123" );
12✔
1824
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 3, 8) == L"123" );
12✔
1825
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 4, 8) == L"‹23" );
12✔
1826
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 5, 8) == L"23" );
12✔
1827
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 6, 8) == L"‹3" );
12✔
1828
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 7, 8) == L"3" );
12✔
1829
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 8, 8) == L"‹" );
12✔
1830
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"0123", 9, 8) == L"" );
12✔
1831
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 0, 0) == L"" );
12✔
1832
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 1, 0) == L"" );
12✔
1833
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 2, 0) == L"" );
12✔
1834
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 3, 0) == L"" );
12✔
1835
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 4, 0) == L"" );
12✔
1836
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 5, 0) == L"" );
12✔
1837
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 6, 0) == L"" );
12✔
1838
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 7, 0) == L"" );
12✔
1839
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 8, 0) == L"" );
12✔
1840
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 9, 0) == L"" );
12✔
1841
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 10, 0) == L"" );
12✔
1842
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 11, 0) == L"" );
12✔
1843
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 12, 0) == L"" );
12✔
1844
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 13, 0) == L"" );
12✔
1845
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 14, 0) == L"" );
12✔
1846
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 15, 0) == L"" );
12✔
1847
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 16, 0) == L"" );
12✔
1848
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 17, 0) == L"" );
12✔
1849
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 18, 0) == L"" );
12✔
1850
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 19, 0) == L"" );
12✔
1851
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 20, 0) == L"" );
12✔
1852
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 21, 0) == L"" );
12✔
1853
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 0, 1) == L"›" );
12✔
1854
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 1, 1) == L"›" );
12✔
1855
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 2, 1) == L"‹" );
12✔
1856
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 3, 1) == L"›" );
12✔
1857
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 4, 1) == L"‹" );
12✔
1858
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 5, 1) == L" " );
12✔
1859
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 6, 1) == L"o" );
12✔
1860
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 7, 1) == L"n" );
12✔
1861
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 8, 1) == L"e" );
12✔
1862
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 9, 1) == L" " );
12✔
1863
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 10, 1) == L"›" );
12✔
1864
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 11, 1) == L"‹" );
12✔
1865
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 12, 1) == L"›" );
12✔
1866
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 13, 1) == L"‹" );
12✔
1867
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 14, 1) == L"›" );
12✔
1868
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 15, 1) == L"‹" );
12✔
1869
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 16, 1) == L" " );
12✔
1870
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 17, 1) == L"m" );
12✔
1871
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 18, 1) == L"o" );
12✔
1872
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 19, 1) == L"r" );
12✔
1873
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 20, 1) == L"e" );
12✔
1874
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 21, 1) == L"" );
12✔
1875
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 0, 2) == L"你" );
12✔
1876
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 1, 2) == L"你" );
12✔
1877
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 2, 2) == L"‹›" );
12✔
1878
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 3, 2) == L"好" );
12✔
1879
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 4, 2) == L"‹ " );
12✔
1880
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 5, 2) == L" o" );
12✔
1881
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 6, 2) == L"on" );
12✔
1882
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 7, 2) == L"ne" );
12✔
1883
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 8, 2) == L"e " );
12✔
1884
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 9, 2) == L" ›" );
12✔
1885
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 10, 2) == L"C" );
12✔
1886
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 11, 2) == L"‹›" );
12✔
1887
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 12, 2) == L"U" );
12✔
1888
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 13, 2) == L"‹›" );
12✔
1889
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 14, 2) == L"T" );
12✔
1890
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 15, 2) == L"‹ " );
12✔
1891
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 16, 2) == L" m" );
12✔
1892
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 17, 2) == L"mo" );
12✔
1893
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 18, 2) == L"or" );
12✔
1894
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 19, 2) == L"re" );
12✔
1895
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 20, 2) == L"e" );
12✔
1896
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 21, 2) == L"" );
12✔
1897
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 0, 3) == L"你›" );
12✔
1898
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 1, 3) == L"你›" );
12✔
1899
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 2, 3) == L"‹好" );
12✔
1900
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 3, 3) == L"好 " );
12✔
1901
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 4, 3) == L"‹ o" );
12✔
1902
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 5, 3) == L" on" );
12✔
1903
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 6, 3) == L"one" );
12✔
1904
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 7, 3) == L"ne " );
12✔
1905
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 8, 3) == L"e ›" );
12✔
1906
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 9, 3) == L" C" );
12✔
1907
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 10, 3) == L"C›" );
12✔
1908
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 11, 3) == L"‹U" );
12✔
1909
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 12, 3) == L"U›" );
12✔
1910
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 13, 3) == L"‹T" );
12✔
1911
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 14, 3) == L"T " );
12✔
1912
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 15, 3) == L"‹ m" );
12✔
1913
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 16, 3) == L" mo" );
12✔
1914
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 17, 3) == L"mor" );
12✔
1915
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 18, 3) == L"ore" );
12✔
1916
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 19, 3) == L"re" );
12✔
1917
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 20, 3) == L"e" );
12✔
1918
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 21, 3) == L"" );
12✔
1919
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 0, 4) == L"你好" );
12✔
1920
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 1, 4) == L"你好" );
12✔
1921
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 2, 4) == L"‹好 " );
12✔
1922
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 3, 4) == L"好 o" );
12✔
1923
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 4, 4) == L"‹ on" );
12✔
1924
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 5, 4) == L" one" );
12✔
1925
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 6, 4) == L"one " );
12✔
1926
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 7, 4) == L"ne ›" );
12✔
1927
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 8, 4) == L"e C" );
12✔
1928
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 9, 4) == L" C›" );
12✔
1929
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 10, 4) == L"CU" );
12✔
1930
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 11, 4) == L"‹U›" );
12✔
1931
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 12, 4) == L"UT" );
12✔
1932
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 13, 4) == L"‹T " );
12✔
1933
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 14, 4) == L"T m" );
12✔
1934
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 15, 4) == L"‹ mo" );
12✔
1935
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 16, 4) == L" mor" );
12✔
1936
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 17, 4) == L"more" );
12✔
1937
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 18, 4) == L"ore" );
12✔
1938
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 19, 4) == L"re" );
12✔
1939
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 20, 4) == L"e" );
12✔
1940
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 21, 4) == L"" );
12✔
1941
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 0, 5) == L"你好 " );
12✔
1942
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 1, 5) == L"你好 " );
12✔
1943
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 2, 5) == L"‹好 o" );
12✔
1944
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 3, 5) == L"好 on" );
12✔
1945
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 4, 5) == L"‹ one" );
12✔
1946
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 5, 5) == L" one " );
12✔
1947
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 6, 5) == L"one ›" );
12✔
1948
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 7, 5) == L"ne C" );
12✔
1949
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 8, 5) == L"e C›" );
12✔
1950
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 9, 5) == L" CU" );
12✔
1951
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 10, 5) == L"CU›" );
12✔
1952
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 11, 5) == L"‹UT" );
12✔
1953
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 12, 5) == L"UT " );
12✔
1954
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 13, 5) == L"‹T m" );
12✔
1955
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 14, 5) == L"T mo" );
12✔
1956
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 15, 5) == L"‹ mor" );
12✔
1957
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 16, 5) == L" more" );
12✔
1958
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 17, 5) == L"more" );
12✔
1959
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 18, 5) == L"ore" );
12✔
1960
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 19, 5) == L"re" );
12✔
1961
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 20, 5) == L"e" );
12✔
1962
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 21, 5) == L"" );
12✔
1963
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 0, 6) == L"你好 o" );
12✔
1964
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 1, 6) == L"你好 o" );
12✔
1965
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 2, 6) == L"‹好 on" );
12✔
1966
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 3, 6) == L"好 one" );
12✔
1967
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 4, 6) == L"‹ one " );
12✔
1968
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 5, 6) == L" one ›" );
12✔
1969
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 6, 6) == L"one C" );
12✔
1970
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 7, 6) == L"ne C›" );
12✔
1971
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 8, 6) == L"e CU" );
12✔
1972
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 9, 6) == L" CU›" );
12✔
1973
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 10, 6) == L"CUT" );
12✔
1974
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 11, 6) == L"‹UT " );
12✔
1975
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 12, 6) == L"UT m" );
12✔
1976
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 13, 6) == L"‹T mo" );
12✔
1977
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 14, 6) == L"T mor" );
12✔
1978
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 15, 6) == L"‹ more" );
12✔
1979
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 16, 6) == L" more" );
12✔
1980
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 17, 6) == L"more" );
12✔
1981
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 18, 6) == L"ore" );
12✔
1982
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 19, 6) == L"re" );
12✔
1983
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 20, 6) == L"e" );
12✔
1984
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 21, 6) == L"" );
12✔
1985
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 0, 7) == L"你好 on" );
12✔
1986
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 1, 7) == L"你好 on" );
12✔
1987
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 2, 7) == L"‹好 one" );
12✔
1988
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 3, 7) == L"好 one " );
12✔
1989
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 4, 7) == L"‹ one ›" );
12✔
1990
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 5, 7) == L" one C" );
12✔
1991
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 6, 7) == L"one C›" );
12✔
1992
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 7, 7) == L"ne CU" );
12✔
1993
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 8, 7) == L"e CU›" );
12✔
1994
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 9, 7) == L" CUT" );
12✔
1995
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 10, 7) == L"CUT " );
12✔
1996
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 11, 7) == L"‹UT m" );
12✔
1997
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 12, 7) == L"UT mo" );
12✔
1998
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 13, 7) == L"‹T mor" );
12✔
1999
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 14, 7) == L"T more" );
12✔
2000
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 15, 7) == L"‹ more" );
12✔
2001
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 16, 7) == L" more" );
12✔
2002
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 17, 7) == L"more" );
12✔
2003
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 18, 7) == L"ore" );
12✔
2004
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 19, 7) == L"re" );
12✔
2005
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 20, 7) == L"e" );
12✔
2006
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 21, 7) == L"" );
12✔
2007
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 0, 8) == L"你好 one" );
12✔
2008
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 1, 8) == L"你好 one" );
12✔
2009
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 2, 8) == L"‹好 one " );
12✔
2010
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 3, 8) == L"好 one ›" );
12✔
2011
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 4, 8) == L"‹ one C" );
12✔
2012
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 5, 8) == L" one C›" );
12✔
2013
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 6, 8) == L"one CU" );
12✔
2014
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 7, 8) == L"ne CU›" );
12✔
2015
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 8, 8) == L"e CUT" );
12✔
2016
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 9, 8) == L" CUT " );
12✔
2017
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 10, 8) == L"CUT m" );
12✔
2018
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 11, 8) == L"‹UT mo" );
12✔
2019
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 12, 8) == L"UT mor" );
12✔
2020
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 13, 8) == L"‹T more" );
12✔
2021
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 14, 8) == L"T more" );
12✔
2022
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 15, 8) == L"‹ more" );
12✔
2023
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 16, 8) == L" more" );
12✔
2024
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 17, 8) == L"more" );
12✔
2025
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 18, 8) == L"ore" );
12✔
2026
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 19, 8) == L"re" );
12✔
2027
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 20, 8) == L"e" );
12✔
2028
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 21, 8) == L"" );
12✔
2029
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 0, 9) == L"你好 one " );
12✔
2030
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 1, 9) == L"你好 one " );
12✔
2031
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 2, 9) == L"‹好 one ›" );
12✔
2032
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 3, 9) == L"好 one C" );
12✔
2033
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 4, 9) == L"‹ one C›" );
12✔
2034
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 5, 9) == L" one CU" );
12✔
2035
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 6, 9) == L"one CU›" );
12✔
2036
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 7, 9) == L"ne CUT" );
12✔
2037
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 8, 9) == L"e CUT " );
12✔
2038
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 9, 9) == L" CUT m" );
12✔
2039
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 10, 9) == L"CUT mo" );
12✔
2040
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 11, 9) == L"‹UT mor" );
12✔
2041
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 12, 9) == L"UT more" );
12✔
2042
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 13, 9) == L"‹T more" );
12✔
2043
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 14, 9) == L"T more" );
12✔
2044
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 15, 9) == L"‹ more" );
12✔
2045
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 16, 9) == L" more" );
12✔
2046
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 17, 9) == L"more" );
12✔
2047
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 18, 9) == L"ore" );
12✔
2048
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 19, 9) == L"re" );
12✔
2049
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 20, 9) == L"e" );
12✔
2050
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 21, 9) == L"" );
12✔
2051
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 0, 10) == L"你好 one ›" );
12✔
2052
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 1, 10) == L"你好 one ›" );
12✔
2053
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 2, 10) == L"‹好 one C" );
12✔
2054
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 3, 10) == L"好 one C›" );
12✔
2055
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 4, 10) == L"‹ one CU" );
12✔
2056
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 5, 10) == L" one CU›" );
12✔
2057
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 6, 10) == L"one CUT" );
12✔
2058
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 7, 10) == L"ne CUT " );
12✔
2059
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 8, 10) == L"e CUT m" );
12✔
2060
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 9, 10) == L" CUT mo" );
12✔
2061
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 10, 10) == L"CUT mor" );
12✔
2062
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 11, 10) == L"‹UT more" );
12✔
2063
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 12, 10) == L"UT more" );
12✔
2064
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 13, 10) == L"‹T more" );
12✔
2065
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 14, 10) == L"T more" );
12✔
2066
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 15, 10) == L"‹ more" );
12✔
2067
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 16, 10) == L" more" );
12✔
2068
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 17, 10) == L"more" );
12✔
2069
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 18, 10) == L"ore" );
12✔
2070
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 19, 10) == L"re" );
12✔
2071
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 20, 10) == L"e" );
12✔
2072
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 21, 10) == L"" );
12✔
2073
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 0, 11) == L"你好 one C" );
12✔
2074
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 1, 11) == L"你好 one C" );
12✔
2075
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 2, 11) == L"‹好 one C›" );
12✔
2076
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 3, 11) == L"好 one CU" );
12✔
2077
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 4, 11) == L"‹ one CU›" );
12✔
2078
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 5, 11) == L" one CUT" );
12✔
2079
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 6, 11) == L"one CUT " );
12✔
2080
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 7, 11) == L"ne CUT m" );
12✔
2081
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 8, 11) == L"e CUT mo" );
12✔
2082
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 9, 11) == L" CUT mor" );
12✔
2083
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 10, 11) == L"CUT more" );
12✔
2084
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 11, 11) == L"‹UT more" );
12✔
2085
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 12, 11) == L"UT more" );
12✔
2086
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 13, 11) == L"‹T more" );
12✔
2087
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 14, 11) == L"T more" );
12✔
2088
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 15, 11) == L"‹ more" );
12✔
2089
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 16, 11) == L" more" );
12✔
2090
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 17, 11) == L"more" );
12✔
2091
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 18, 11) == L"ore" );
12✔
2092
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 19, 11) == L"re" );
12✔
2093
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 20, 11) == L"e" );
12✔
2094
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 21, 11) == L"" );
12✔
2095
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 0, 12) == L"你好 one C›" );
12✔
2096
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 1, 12) == L"你好 one C›" );
12✔
2097
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 2, 12) == L"‹好 one CU" );
12✔
2098
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 3, 12) == L"好 one CU›" );
12✔
2099
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 4, 12) == L"‹ one CUT" );
12✔
2100
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 5, 12) == L" one CUT " );
12✔
2101
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 6, 12) == L"one CUT m" );
12✔
2102
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 7, 12) == L"ne CUT mo" );
12✔
2103
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 8, 12) == L"e CUT mor" );
12✔
2104
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 9, 12) == L" CUT more" );
12✔
2105
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 10, 12) == L"CUT more" );
12✔
2106
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 11, 12) == L"‹UT more" );
12✔
2107
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 12, 12) == L"UT more" );
12✔
2108
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 13, 12) == L"‹T more" );
12✔
2109
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 14, 12) == L"T more" );
12✔
2110
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 15, 12) == L"‹ more" );
12✔
2111
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 16, 12) == L" more" );
12✔
2112
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 17, 12) == L"more" );
12✔
2113
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 18, 12) == L"ore" );
12✔
2114
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 19, 12) == L"re" );
12✔
2115
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 20, 12) == L"e" );
12✔
2116
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 21, 12) == L"" );
12✔
2117
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 0, 13) == L"你好 one CU" );
12✔
2118
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 1, 13) == L"你好 one CU" );
12✔
2119
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 2, 13) == L"‹好 one CU›" );
12✔
2120
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 3, 13) == L"好 one CUT" );
12✔
2121
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 4, 13) == L"‹ one CUT " );
12✔
2122
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 5, 13) == L" one CUT m" );
12✔
2123
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 6, 13) == L"one CUT mo" );
12✔
2124
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 7, 13) == L"ne CUT mor" );
12✔
2125
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 8, 13) == L"e CUT more" );
12✔
2126
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 9, 13) == L" CUT more" );
12✔
2127
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 10, 13) == L"CUT more" );
12✔
2128
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 11, 13) == L"‹UT more" );
12✔
2129
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 12, 13) == L"UT more" );
12✔
2130
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 13, 13) == L"‹T more" );
12✔
2131
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 14, 13) == L"T more" );
12✔
2132
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 15, 13) == L"‹ more" );
12✔
2133
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 16, 13) == L" more" );
12✔
2134
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 17, 13) == L"more" );
12✔
2135
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 18, 13) == L"ore" );
12✔
2136
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 19, 13) == L"re" );
12✔
2137
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 20, 13) == L"e" );
12✔
2138
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 21, 13) == L"" );
12✔
2139
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 0, 14) == L"你好 one CU›" );
12✔
2140
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 1, 14) == L"你好 one CU›" );
12✔
2141
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 2, 14) == L"‹好 one CUT" );
12✔
2142
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 3, 14) == L"好 one CUT " );
12✔
2143
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 4, 14) == L"‹ one CUT m" );
12✔
2144
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 5, 14) == L" one CUT mo" );
12✔
2145
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 6, 14) == L"one CUT mor" );
12✔
2146
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 7, 14) == L"ne CUT more" );
12✔
2147
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 8, 14) == L"e CUT more" );
12✔
2148
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 9, 14) == L" CUT more" );
12✔
2149
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 10, 14) == L"CUT more" );
12✔
2150
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 11, 14) == L"‹UT more" );
12✔
2151
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 12, 14) == L"UT more" );
12✔
2152
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 13, 14) == L"‹T more" );
12✔
2153
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 14, 14) == L"T more" );
12✔
2154
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 15, 14) == L"‹ more" );
12✔
2155
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 16, 14) == L" more" );
12✔
2156
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 17, 14) == L"more" );
12✔
2157
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 18, 14) == L"ore" );
12✔
2158
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 19, 14) == L"re" );
12✔
2159
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 20, 14) == L"e" );
12✔
2160
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 21, 14) == L"" );
12✔
2161
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 0, 15) == L"你好 one CUT" );
12✔
2162
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 1, 15) == L"你好 one CUT" );
12✔
2163
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 2, 15) == L"‹好 one CUT " );
12✔
2164
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 3, 15) == L"好 one CUT m" );
12✔
2165
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 4, 15) == L"‹ one CUT mo" );
12✔
2166
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 5, 15) == L" one CUT mor" );
12✔
2167
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 6, 15) == L"one CUT more" );
12✔
2168
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 7, 15) == L"ne CUT more" );
12✔
2169
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 8, 15) == L"e CUT more" );
12✔
2170
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 9, 15) == L" CUT more" );
12✔
2171
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 10, 15) == L"CUT more" );
12✔
2172
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 11, 15) == L"‹UT more" );
12✔
2173
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 12, 15) == L"UT more" );
12✔
2174
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 13, 15) == L"‹T more" );
12✔
2175
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 14, 15) == L"T more" );
12✔
2176
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 15, 15) == L"‹ more" );
12✔
2177
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 16, 15) == L" more" );
12✔
2178
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 17, 15) == L"more" );
12✔
2179
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 18, 15) == L"ore" );
12✔
2180
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 19, 15) == L"re" );
12✔
2181
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 20, 15) == L"e" );
12✔
2182
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 21, 15) == L"" );
12✔
2183
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 0, 16) == L"你好 one CUT " );
12✔
2184
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 1, 16) == L"你好 one CUT " );
12✔
2185
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 2, 16) == L"‹好 one CUT m" );
12✔
2186
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 3, 16) == L"好 one CUT mo" );
12✔
2187
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 4, 16) == L"‹ one CUT mor" );
12✔
2188
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 5, 16) == L" one CUT more" );
12✔
2189
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 6, 16) == L"one CUT more" );
12✔
2190
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 7, 16) == L"ne CUT more" );
12✔
2191
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 8, 16) == L"e CUT more" );
12✔
2192
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 9, 16) == L" CUT more" );
12✔
2193
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 10, 16) == L"CUT more" );
12✔
2194
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 11, 16) == L"‹UT more" );
12✔
2195
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 12, 16) == L"UT more" );
12✔
2196
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 13, 16) == L"‹T more" );
12✔
2197
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 14, 16) == L"T more" );
12✔
2198
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 15, 16) == L"‹ more" );
12✔
2199
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 16, 16) == L" more" );
12✔
2200
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 17, 16) == L"more" );
12✔
2201
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 18, 16) == L"ore" );
12✔
2202
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 19, 16) == L"re" );
12✔
2203
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 20, 16) == L"e" );
12✔
2204
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 21, 16) == L"" );
12✔
2205
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 0, 17) == L"你好 one CUT m" );
12✔
2206
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 1, 17) == L"你好 one CUT m" );
12✔
2207
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 2, 17) == L"‹好 one CUT mo" );
12✔
2208
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 3, 17) == L"好 one CUT mor" );
12✔
2209
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 4, 17) == L"‹ one CUT more" );
12✔
2210
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 5, 17) == L" one CUT more" );
12✔
2211
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 6, 17) == L"one CUT more" );
12✔
2212
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 7, 17) == L"ne CUT more" );
12✔
2213
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 8, 17) == L"e CUT more" );
12✔
2214
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 9, 17) == L" CUT more" );
12✔
2215
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 10, 17) == L"CUT more" );
12✔
2216
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 11, 17) == L"‹UT more" );
12✔
2217
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 12, 17) == L"UT more" );
12✔
2218
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 13, 17) == L"‹T more" );
12✔
2219
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 14, 17) == L"T more" );
12✔
2220
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 15, 17) == L"‹ more" );
12✔
2221
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 16, 17) == L" more" );
12✔
2222
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 17, 17) == L"more" );
12✔
2223
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 18, 17) == L"ore" );
12✔
2224
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 19, 17) == L"re" );
12✔
2225
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 20, 17) == L"e" );
12✔
2226
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 21, 17) == L"" );
12✔
2227
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 0, 18) == L"你好 one CUT mo" );
12✔
2228
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 1, 18) == L"你好 one CUT mo" );
12✔
2229
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 2, 18) == L"‹好 one CUT mor" );
12✔
2230
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 3, 18) == L"好 one CUT more" );
12✔
2231
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 4, 18) == L"‹ one CUT more" );
12✔
2232
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 5, 18) == L" one CUT more" );
12✔
2233
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 6, 18) == L"one CUT more" );
12✔
2234
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 7, 18) == L"ne CUT more" );
12✔
2235
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 8, 18) == L"e CUT more" );
12✔
2236
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 9, 18) == L" CUT more" );
12✔
2237
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 10, 18) == L"CUT more" );
12✔
2238
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 11, 18) == L"‹UT more" );
12✔
2239
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 12, 18) == L"UT more" );
12✔
2240
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 13, 18) == L"‹T more" );
12✔
2241
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 14, 18) == L"T more" );
12✔
2242
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 15, 18) == L"‹ more" );
12✔
2243
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 16, 18) == L" more" );
12✔
2244
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 17, 18) == L"more" );
12✔
2245
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 18, 18) == L"ore" );
12✔
2246
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 19, 18) == L"re" );
12✔
2247
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 20, 18) == L"e" );
12✔
2248
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 21, 18) == L"" );
12✔
2249
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 0, 19) == L"你好 one CUT mor" );
12✔
2250
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 1, 19) == L"你好 one CUT mor" );
12✔
2251
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 2, 19) == L"‹好 one CUT more" );
12✔
2252
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 3, 19) == L"好 one CUT more" );
12✔
2253
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 4, 19) == L"‹ one CUT more" );
12✔
2254
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 5, 19) == L" one CUT more" );
12✔
2255
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 6, 19) == L"one CUT more" );
12✔
2256
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 7, 19) == L"ne CUT more" );
12✔
2257
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 8, 19) == L"e CUT more" );
12✔
2258
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 9, 19) == L" CUT more" );
12✔
2259
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 10, 19) == L"CUT more" );
12✔
2260
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 11, 19) == L"‹UT more" );
12✔
2261
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 12, 19) == L"UT more" );
12✔
2262
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 13, 19) == L"‹T more" );
12✔
2263
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 14, 19) == L"T more" );
12✔
2264
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 15, 19) == L"‹ more" );
12✔
2265
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 16, 19) == L" more" );
12✔
2266
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 17, 19) == L"more" );
12✔
2267
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 18, 19) == L"ore" );
12✔
2268
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 19, 19) == L"re" );
12✔
2269
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 20, 19) == L"e" );
12✔
2270
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 21, 19) == L"" );
12✔
2271
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 0, 20) == L"你好 one CUT more" );
12✔
2272
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 1, 20) == L"你好 one CUT more" );
12✔
2273
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 2, 20) == L"‹好 one CUT more" );
12✔
2274
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 3, 20) == L"好 one CUT more" );
12✔
2275
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 4, 20) == L"‹ one CUT more" );
12✔
2276
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 5, 20) == L" one CUT more" );
12✔
2277
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 6, 20) == L"one CUT more" );
12✔
2278
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 7, 20) == L"ne CUT more" );
12✔
2279
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 8, 20) == L"e CUT more" );
12✔
2280
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 9, 20) == L" CUT more" );
12✔
2281
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 10, 20) == L"CUT more" );
12✔
2282
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 11, 20) == L"‹UT more" );
12✔
2283
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 12, 20) == L"UT more" );
12✔
2284
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 13, 20) == L"‹T more" );
12✔
2285
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 14, 20) == L"T more" );
12✔
2286
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 15, 20) == L"‹ more" );
12✔
2287
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 16, 20) == L" more" );
12✔
2288
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 17, 20) == L"more" );
12✔
2289
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 18, 20) == L"ore" );
12✔
2290
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 19, 20) == L"re" );
12✔
2291
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 20, 20) == L"e" );
12✔
2292
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"你好 one CUT more", 21, 20) == L"" );
12✔
2293
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 0, 0) == L"" );
12✔
2294
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 1, 0) == L"" );
12✔
2295
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 2, 0) == L"" );
12✔
2296
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 3, 0) == L"" );
12✔
2297
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 4, 0) == L"" );
12✔
2298
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 5, 0) == L"" );
12✔
2299
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 6, 0) == L"" );
12✔
2300
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 7, 0) == L"" );
12✔
2301
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 8, 0) == L"" );
12✔
2302
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 9, 0) == L"" );
12✔
2303
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 10, 0) == L"" );
12✔
2304
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 11, 0) == L"" );
12✔
2305
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 12, 0) == L"" );
12✔
2306
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 13, 0) == L"" );
12✔
2307
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 14, 0) == L"" );
12✔
2308
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 15, 0) == L"" );
12✔
2309
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 16, 0) == L"" );
12✔
2310
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 17, 0) == L"" );
12✔
2311
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 18, 0) == L"" );
12✔
2312
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 19, 0) == L"" );
12✔
2313
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 20, 0) == L"" );
12✔
2314
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 21, 0) == L"" );
12✔
2315
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 22, 0) == L"" );
12✔
2316
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 23, 0) == L"" );
12✔
2317
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 24, 0) == L"" );
12✔
2318
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 0, 1) == L"1" );
12✔
2319
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 1, 1) == L"1" );
12✔
2320
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 2, 1) == L"2" );
12✔
2321
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 3, 1) == L"3" );
12✔
2322
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 4, 1) == L"4" );
12✔
2323
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 5, 1) == L"5" );
12✔
2324
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 6, 1) == L"6" );
12✔
2325
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 7, 1) == L"7" );
12✔
2326
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 8, 1) == L" " );
12✔
2327
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 9, 1) == L"o" );
12✔
2328
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 10, 1) == L"n" );
12✔
2329
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 11, 1) == L"e" );
12✔
2330
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 12, 1) == L" " );
12✔
2331
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 13, 1) == L"›" );
12✔
2332
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 14, 1) == L"‹" );
12✔
2333
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 15, 1) == L"›" );
12✔
2334
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 16, 1) == L"‹" );
12✔
2335
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 17, 1) == L"›" );
12✔
2336
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 18, 1) == L"‹" );
12✔
2337
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 19, 1) == L" " );
12✔
2338
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 20, 1) == L"m" );
12✔
2339
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 21, 1) == L"o" );
12✔
2340
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 22, 1) == L"r" );
12✔
2341
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 23, 1) == L"e" );
12✔
2342
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 24, 1) == L"" );
12✔
2343
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 0, 2) == L"12" );
12✔
2344
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 1, 2) == L"12" );
12✔
2345
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 2, 2) == L"23" );
12✔
2346
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 3, 2) == L"34" );
12✔
2347
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 4, 2) == L"45" );
12✔
2348
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 5, 2) == L"56" );
12✔
2349
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 6, 2) == L"67" );
12✔
2350
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 7, 2) == L"7 " );
12✔
2351
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 8, 2) == L" o" );
12✔
2352
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 9, 2) == L"on" );
12✔
2353
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 10, 2) == L"ne" );
12✔
2354
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 11, 2) == L"e " );
12✔
2355
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 12, 2) == L" ›" );
12✔
2356
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 13, 2) == L"C" );
12✔
2357
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 14, 2) == L"‹›" );
12✔
2358
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 15, 2) == L"U" );
12✔
2359
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 16, 2) == L"‹›" );
12✔
2360
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 17, 2) == L"T" );
12✔
2361
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 18, 2) == L"‹ " );
12✔
2362
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 19, 2) == L" m" );
12✔
2363
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 20, 2) == L"mo" );
12✔
2364
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 21, 2) == L"or" );
12✔
2365
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 22, 2) == L"re" );
12✔
2366
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 23, 2) == L"e" );
12✔
2367
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 24, 2) == L"" );
12✔
2368
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 0, 3) == L"123" );
12✔
2369
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 1, 3) == L"123" );
12✔
2370
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 2, 3) == L"234" );
12✔
2371
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 3, 3) == L"345" );
12✔
2372
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 4, 3) == L"456" );
12✔
2373
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 5, 3) == L"567" );
12✔
2374
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 6, 3) == L"67 " );
12✔
2375
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 7, 3) == L"7 o" );
12✔
2376
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 8, 3) == L" on" );
12✔
2377
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 9, 3) == L"one" );
12✔
2378
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 10, 3) == L"ne " );
12✔
2379
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 11, 3) == L"e ›" );
12✔
2380
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 12, 3) == L" C" );
12✔
2381
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 13, 3) == L"C›" );
12✔
2382
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 14, 3) == L"‹U" );
12✔
2383
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 15, 3) == L"U›" );
12✔
2384
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 16, 3) == L"‹T" );
12✔
2385
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 17, 3) == L"T " );
12✔
2386
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 18, 3) == L"‹ m" );
12✔
2387
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 19, 3) == L" mo" );
12✔
2388
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 20, 3) == L"mor" );
12✔
2389
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 21, 3) == L"ore" );
12✔
2390
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 22, 3) == L"re" );
12✔
2391
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 23, 3) == L"e" );
12✔
2392
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 24, 3) == L"" );
12✔
2393
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 0, 4) == L"1234" );
12✔
2394
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 1, 4) == L"1234" );
12✔
2395
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 2, 4) == L"2345" );
12✔
2396
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 3, 4) == L"3456" );
12✔
2397
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 4, 4) == L"4567" );
12✔
2398
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 5, 4) == L"567 " );
12✔
2399
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 6, 4) == L"67 o" );
12✔
2400
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 7, 4) == L"7 on" );
12✔
2401
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 8, 4) == L" one" );
12✔
2402
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 9, 4) == L"one " );
12✔
2403
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 10, 4) == L"ne ›" );
12✔
2404
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 11, 4) == L"e C" );
12✔
2405
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 12, 4) == L" C›" );
12✔
2406
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 13, 4) == L"CU" );
12✔
2407
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 14, 4) == L"‹U›" );
12✔
2408
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 15, 4) == L"UT" );
12✔
2409
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 16, 4) == L"‹T " );
12✔
2410
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 17, 4) == L"T m" );
12✔
2411
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 18, 4) == L"‹ mo" );
12✔
2412
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 19, 4) == L" mor" );
12✔
2413
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 20, 4) == L"more" );
12✔
2414
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 21, 4) == L"ore" );
12✔
2415
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 22, 4) == L"re" );
12✔
2416
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 23, 4) == L"e" );
12✔
2417
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 24, 4) == L"" );
12✔
2418
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 0, 5) == L"12345" );
12✔
2419
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 1, 5) == L"12345" );
12✔
2420
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 2, 5) == L"23456" );
12✔
2421
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 3, 5) == L"34567" );
12✔
2422
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 4, 5) == L"4567 " );
12✔
2423
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 5, 5) == L"567 o" );
12✔
2424
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 6, 5) == L"67 on" );
12✔
2425
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 7, 5) == L"7 one" );
12✔
2426
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 8, 5) == L" one " );
12✔
2427
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 9, 5) == L"one ›" );
12✔
2428
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 10, 5) == L"ne C" );
12✔
2429
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 11, 5) == L"e C›" );
12✔
2430
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 12, 5) == L" CU" );
12✔
2431
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 13, 5) == L"CU›" );
12✔
2432
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 14, 5) == L"‹UT" );
12✔
2433
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 15, 5) == L"UT " );
12✔
2434
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 16, 5) == L"‹T m" );
12✔
2435
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 17, 5) == L"T mo" );
12✔
2436
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 18, 5) == L"‹ mor" );
12✔
2437
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 19, 5) == L" more" );
12✔
2438
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 20, 5) == L"more" );
12✔
2439
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 21, 5) == L"ore" );
12✔
2440
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 22, 5) == L"re" );
12✔
2441
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 23, 5) == L"e" );
12✔
2442
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 24, 5) == L"" );
12✔
2443
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 0, 6) == L"123456" );
12✔
2444
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 1, 6) == L"123456" );
12✔
2445
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 2, 6) == L"234567" );
12✔
2446
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 3, 6) == L"34567 " );
12✔
2447
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 4, 6) == L"4567 o" );
12✔
2448
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 5, 6) == L"567 on" );
12✔
2449
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 6, 6) == L"67 one" );
12✔
2450
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 7, 6) == L"7 one " );
12✔
2451
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 8, 6) == L" one ›" );
12✔
2452
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 9, 6) == L"one C" );
12✔
2453
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 10, 6) == L"ne C›" );
12✔
2454
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 11, 6) == L"e CU" );
12✔
2455
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 12, 6) == L" CU›" );
12✔
2456
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 13, 6) == L"CUT" );
12✔
2457
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 14, 6) == L"‹UT " );
12✔
2458
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 15, 6) == L"UT m" );
12✔
2459
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 16, 6) == L"‹T mo" );
12✔
2460
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 17, 6) == L"T mor" );
12✔
2461
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 18, 6) == L"‹ more" );
12✔
2462
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 19, 6) == L" more" );
12✔
2463
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 20, 6) == L"more" );
12✔
2464
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 21, 6) == L"ore" );
12✔
2465
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 22, 6) == L"re" );
12✔
2466
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 23, 6) == L"e" );
12✔
2467
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 24, 6) == L"" );
12✔
2468
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 0, 7) == L"1234567" );
12✔
2469
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 1, 7) == L"1234567" );
12✔
2470
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 2, 7) == L"234567 " );
12✔
2471
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 3, 7) == L"34567 o" );
12✔
2472
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 4, 7) == L"4567 on" );
12✔
2473
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 5, 7) == L"567 one" );
12✔
2474
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 6, 7) == L"67 one " );
12✔
2475
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 7, 7) == L"7 one ›" );
12✔
2476
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 8, 7) == L" one C" );
12✔
2477
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 9, 7) == L"one C›" );
12✔
2478
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 10, 7) == L"ne CU" );
12✔
2479
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 11, 7) == L"e CU›" );
12✔
2480
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 12, 7) == L" CUT" );
12✔
2481
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 13, 7) == L"CUT " );
12✔
2482
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 14, 7) == L"‹UT m" );
12✔
2483
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 15, 7) == L"UT mo" );
12✔
2484
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 16, 7) == L"‹T mor" );
12✔
2485
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 17, 7) == L"T more" );
12✔
2486
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 18, 7) == L"‹ more" );
12✔
2487
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 19, 7) == L" more" );
12✔
2488
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 20, 7) == L"more" );
12✔
2489
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 21, 7) == L"ore" );
12✔
2490
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 22, 7) == L"re" );
12✔
2491
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 23, 7) == L"e" );
12✔
2492
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 24, 7) == L"" );
12✔
2493
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 0, 8) == L"1234567 " );
12✔
2494
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 1, 8) == L"1234567 " );
12✔
2495
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 2, 8) == L"234567 o" );
12✔
2496
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 3, 8) == L"34567 on" );
12✔
2497
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 4, 8) == L"4567 one" );
12✔
2498
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 5, 8) == L"567 one " );
12✔
2499
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 6, 8) == L"67 one ›" );
12✔
2500
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 7, 8) == L"7 one C" );
12✔
2501
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 8, 8) == L" one C›" );
12✔
2502
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 9, 8) == L"one CU" );
12✔
2503
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 10, 8) == L"ne CU›" );
12✔
2504
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 11, 8) == L"e CUT" );
12✔
2505
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 12, 8) == L" CUT " );
12✔
2506
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 13, 8) == L"CUT m" );
12✔
2507
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 14, 8) == L"‹UT mo" );
12✔
2508
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 15, 8) == L"UT mor" );
12✔
2509
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 16, 8) == L"‹T more" );
12✔
2510
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 17, 8) == L"T more" );
12✔
2511
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 18, 8) == L"‹ more" );
12✔
2512
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 19, 8) == L" more" );
12✔
2513
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 20, 8) == L"more" );
12✔
2514
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 21, 8) == L"ore" );
12✔
2515
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 22, 8) == L"re" );
12✔
2516
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 23, 8) == L"e" );
12✔
2517
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 24, 8) == L"" );
12✔
2518
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 0, 9) == L"1234567 o" );
12✔
2519
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 1, 9) == L"1234567 o" );
12✔
2520
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 2, 9) == L"234567 on" );
12✔
2521
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 3, 9) == L"34567 one" );
12✔
2522
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 4, 9) == L"4567 one " );
12✔
2523
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 5, 9) == L"567 one ›" );
12✔
2524
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 6, 9) == L"67 one C" );
12✔
2525
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 7, 9) == L"7 one C›" );
12✔
2526
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 8, 9) == L" one CU" );
12✔
2527
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 9, 9) == L"one CU›" );
12✔
2528
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 10, 9) == L"ne CUT" );
12✔
2529
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 11, 9) == L"e CUT " );
12✔
2530
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 12, 9) == L" CUT m" );
12✔
2531
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 13, 9) == L"CUT mo" );
12✔
2532
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 14, 9) == L"‹UT mor" );
12✔
2533
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 15, 9) == L"UT more" );
12✔
2534
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 16, 9) == L"‹T more" );
12✔
2535
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 17, 9) == L"T more" );
12✔
2536
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 18, 9) == L"‹ more" );
12✔
2537
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 19, 9) == L" more" );
12✔
2538
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 20, 9) == L"more" );
12✔
2539
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 21, 9) == L"ore" );
12✔
2540
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 22, 9) == L"re" );
12✔
2541
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 23, 9) == L"e" );
12✔
2542
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 24, 9) == L"" );
12✔
2543
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 0, 10) == L"1234567 on" );
12✔
2544
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 1, 10) == L"1234567 on" );
12✔
2545
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 2, 10) == L"234567 one" );
12✔
2546
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 3, 10) == L"34567 one " );
12✔
2547
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 4, 10) == L"4567 one ›" );
12✔
2548
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 5, 10) == L"567 one C" );
12✔
2549
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 6, 10) == L"67 one C›" );
12✔
2550
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 7, 10) == L"7 one CU" );
12✔
2551
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 8, 10) == L" one CU›" );
12✔
2552
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 9, 10) == L"one CUT" );
12✔
2553
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 10, 10) == L"ne CUT " );
12✔
2554
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 11, 10) == L"e CUT m" );
12✔
2555
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 12, 10) == L" CUT mo" );
12✔
2556
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 13, 10) == L"CUT mor" );
12✔
2557
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 14, 10) == L"‹UT more" );
12✔
2558
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 15, 10) == L"UT more" );
12✔
2559
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 16, 10) == L"‹T more" );
12✔
2560
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 17, 10) == L"T more" );
12✔
2561
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 18, 10) == L"‹ more" );
12✔
2562
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 19, 10) == L" more" );
12✔
2563
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 20, 10) == L"more" );
12✔
2564
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 21, 10) == L"ore" );
12✔
2565
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 22, 10) == L"re" );
12✔
2566
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 23, 10) == L"e" );
12✔
2567
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 24, 10) == L"" );
12✔
2568
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 0, 11) == L"1234567 one" );
12✔
2569
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 1, 11) == L"1234567 one" );
12✔
2570
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 2, 11) == L"234567 one " );
12✔
2571
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 3, 11) == L"34567 one ›" );
12✔
2572
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 4, 11) == L"4567 one C" );
12✔
2573
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 5, 11) == L"567 one C›" );
12✔
2574
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 6, 11) == L"67 one CU" );
12✔
2575
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 7, 11) == L"7 one CU›" );
12✔
2576
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 8, 11) == L" one CUT" );
12✔
2577
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 9, 11) == L"one CUT " );
12✔
2578
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 10, 11) == L"ne CUT m" );
12✔
2579
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 11, 11) == L"e CUT mo" );
12✔
2580
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 12, 11) == L" CUT mor" );
12✔
2581
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 13, 11) == L"CUT more" );
12✔
2582
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 14, 11) == L"‹UT more" );
12✔
2583
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 15, 11) == L"UT more" );
12✔
2584
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 16, 11) == L"‹T more" );
12✔
2585
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 17, 11) == L"T more" );
12✔
2586
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 18, 11) == L"‹ more" );
12✔
2587
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 19, 11) == L" more" );
12✔
2588
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 20, 11) == L"more" );
12✔
2589
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 21, 11) == L"ore" );
12✔
2590
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 22, 11) == L"re" );
12✔
2591
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 23, 11) == L"e" );
12✔
2592
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 24, 11) == L"" );
12✔
2593
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 0, 12) == L"1234567 one " );
12✔
2594
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 1, 12) == L"1234567 one " );
12✔
2595
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 2, 12) == L"234567 one ›" );
12✔
2596
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 3, 12) == L"34567 one C" );
12✔
2597
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 4, 12) == L"4567 one C›" );
12✔
2598
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 5, 12) == L"567 one CU" );
12✔
2599
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 6, 12) == L"67 one CU›" );
12✔
2600
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 7, 12) == L"7 one CUT" );
12✔
2601
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 8, 12) == L" one CUT " );
12✔
2602
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 9, 12) == L"one CUT m" );
12✔
2603
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 10, 12) == L"ne CUT mo" );
12✔
2604
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 11, 12) == L"e CUT mor" );
12✔
2605
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 12, 12) == L" CUT more" );
12✔
2606
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 13, 12) == L"CUT more" );
12✔
2607
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 14, 12) == L"‹UT more" );
12✔
2608
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 15, 12) == L"UT more" );
12✔
2609
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 16, 12) == L"‹T more" );
12✔
2610
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 17, 12) == L"T more" );
12✔
2611
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 18, 12) == L"‹ more" );
12✔
2612
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 19, 12) == L" more" );
12✔
2613
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 20, 12) == L"more" );
12✔
2614
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 21, 12) == L"ore" );
12✔
2615
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 22, 12) == L"re" );
12✔
2616
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 23, 12) == L"e" );
12✔
2617
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 24, 12) == L"" );
12✔
2618
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 0, 13) == L"1234567 one ›" );
12✔
2619
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 1, 13) == L"1234567 one ›" );
12✔
2620
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 2, 13) == L"234567 one C" );
12✔
2621
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 3, 13) == L"34567 one C›" );
12✔
2622
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 4, 13) == L"4567 one CU" );
12✔
2623
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 5, 13) == L"567 one CU›" );
12✔
2624
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 6, 13) == L"67 one CUT" );
12✔
2625
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 7, 13) == L"7 one CUT " );
12✔
2626
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 8, 13) == L" one CUT m" );
12✔
2627
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 9, 13) == L"one CUT mo" );
12✔
2628
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 10, 13) == L"ne CUT mor" );
12✔
2629
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 11, 13) == L"e CUT more" );
12✔
2630
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 12, 13) == L" CUT more" );
12✔
2631
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 13, 13) == L"CUT more" );
12✔
2632
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 14, 13) == L"‹UT more" );
12✔
2633
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 15, 13) == L"UT more" );
12✔
2634
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 16, 13) == L"‹T more" );
12✔
2635
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 17, 13) == L"T more" );
12✔
2636
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 18, 13) == L"‹ more" );
12✔
2637
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 19, 13) == L" more" );
12✔
2638
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 20, 13) == L"more" );
12✔
2639
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 21, 13) == L"ore" );
12✔
2640
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 22, 13) == L"re" );
12✔
2641
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 23, 13) == L"e" );
12✔
2642
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 24, 13) == L"" );
12✔
2643
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 0, 14) == L"1234567 one C" );
12✔
2644
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 1, 14) == L"1234567 one C" );
12✔
2645
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 2, 14) == L"234567 one C›" );
12✔
2646
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 3, 14) == L"34567 one CU" );
12✔
2647
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 4, 14) == L"4567 one CU›" );
12✔
2648
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 5, 14) == L"567 one CUT" );
12✔
2649
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 6, 14) == L"67 one CUT " );
12✔
2650
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 7, 14) == L"7 one CUT m" );
12✔
2651
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 8, 14) == L" one CUT mo" );
12✔
2652
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 9, 14) == L"one CUT mor" );
12✔
2653
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 10, 14) == L"ne CUT more" );
12✔
2654
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 11, 14) == L"e CUT more" );
12✔
2655
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 12, 14) == L" CUT more" );
12✔
2656
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 13, 14) == L"CUT more" );
12✔
2657
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 14, 14) == L"‹UT more" );
12✔
2658
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 15, 14) == L"UT more" );
12✔
2659
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 16, 14) == L"‹T more" );
12✔
2660
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 17, 14) == L"T more" );
12✔
2661
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 18, 14) == L"‹ more" );
12✔
2662
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 19, 14) == L" more" );
12✔
2663
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 20, 14) == L"more" );
12✔
2664
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 21, 14) == L"ore" );
12✔
2665
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 22, 14) == L"re" );
12✔
2666
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 23, 14) == L"e" );
12✔
2667
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 24, 14) == L"" );
12✔
2668
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 0, 15) == L"1234567 one C›" );
12✔
2669
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 1, 15) == L"1234567 one C›" );
12✔
2670
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 2, 15) == L"234567 one CU" );
12✔
2671
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 3, 15) == L"34567 one CU›" );
12✔
2672
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 4, 15) == L"4567 one CUT" );
12✔
2673
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 5, 15) == L"567 one CUT " );
12✔
2674
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 6, 15) == L"67 one CUT m" );
12✔
2675
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 7, 15) == L"7 one CUT mo" );
12✔
2676
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 8, 15) == L" one CUT mor" );
12✔
2677
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 9, 15) == L"one CUT more" );
12✔
2678
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 10, 15) == L"ne CUT more" );
12✔
2679
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 11, 15) == L"e CUT more" );
12✔
2680
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 12, 15) == L" CUT more" );
12✔
2681
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 13, 15) == L"CUT more" );
12✔
2682
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 14, 15) == L"‹UT more" );
12✔
2683
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 15, 15) == L"UT more" );
12✔
2684
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 16, 15) == L"‹T more" );
12✔
2685
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 17, 15) == L"T more" );
12✔
2686
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 18, 15) == L"‹ more" );
12✔
2687
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 19, 15) == L" more" );
12✔
2688
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 20, 15) == L"more" );
12✔
2689
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 21, 15) == L"ore" );
12✔
2690
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 22, 15) == L"re" );
12✔
2691
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 23, 15) == L"e" );
12✔
2692
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 24, 15) == L"" );
12✔
2693
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 0, 16) == L"1234567 one CU" );
12✔
2694
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 1, 16) == L"1234567 one CU" );
12✔
2695
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 2, 16) == L"234567 one CU›" );
12✔
2696
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 3, 16) == L"34567 one CUT" );
12✔
2697
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 4, 16) == L"4567 one CUT " );
12✔
2698
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 5, 16) == L"567 one CUT m" );
12✔
2699
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 6, 16) == L"67 one CUT mo" );
12✔
2700
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 7, 16) == L"7 one CUT mor" );
12✔
2701
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 8, 16) == L" one CUT more" );
12✔
2702
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 9, 16) == L"one CUT more" );
12✔
2703
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 10, 16) == L"ne CUT more" );
12✔
2704
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 11, 16) == L"e CUT more" );
12✔
2705
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 12, 16) == L" CUT more" );
12✔
2706
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 13, 16) == L"CUT more" );
12✔
2707
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 14, 16) == L"‹UT more" );
12✔
2708
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 15, 16) == L"UT more" );
12✔
2709
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 16, 16) == L"‹T more" );
12✔
2710
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 17, 16) == L"T more" );
12✔
2711
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 18, 16) == L"‹ more" );
12✔
2712
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 19, 16) == L" more" );
12✔
2713
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 20, 16) == L"more" );
12✔
2714
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 21, 16) == L"ore" );
12✔
2715
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 22, 16) == L"re" );
12✔
2716
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 23, 16) == L"e" );
12✔
2717
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 24, 16) == L"" );
12✔
2718
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 0, 17) == L"1234567 one CU›" );
12✔
2719
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 1, 17) == L"1234567 one CU›" );
12✔
2720
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 2, 17) == L"234567 one CUT" );
12✔
2721
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 3, 17) == L"34567 one CUT " );
12✔
2722
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 4, 17) == L"4567 one CUT m" );
12✔
2723
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 5, 17) == L"567 one CUT mo" );
12✔
2724
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 6, 17) == L"67 one CUT mor" );
12✔
2725
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 7, 17) == L"7 one CUT more" );
12✔
2726
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 8, 17) == L" one CUT more" );
12✔
2727
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 9, 17) == L"one CUT more" );
12✔
2728
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 10, 17) == L"ne CUT more" );
12✔
2729
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 11, 17) == L"e CUT more" );
12✔
2730
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 12, 17) == L" CUT more" );
12✔
2731
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 13, 17) == L"CUT more" );
12✔
2732
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 14, 17) == L"‹UT more" );
12✔
2733
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 15, 17) == L"UT more" );
12✔
2734
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 16, 17) == L"‹T more" );
12✔
2735
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 17, 17) == L"T more" );
12✔
2736
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 18, 17) == L"‹ more" );
12✔
2737
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 19, 17) == L" more" );
12✔
2738
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 20, 17) == L"more" );
12✔
2739
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 21, 17) == L"ore" );
12✔
2740
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 22, 17) == L"re" );
12✔
2741
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 23, 17) == L"e" );
12✔
2742
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 24, 17) == L"" );
12✔
2743
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 0, 18) == L"1234567 one CUT" );
12✔
2744
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 1, 18) == L"1234567 one CUT" );
12✔
2745
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 2, 18) == L"234567 one CUT " );
12✔
2746
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 3, 18) == L"34567 one CUT m" );
12✔
2747
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 4, 18) == L"4567 one CUT mo" );
12✔
2748
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 5, 18) == L"567 one CUT mor" );
12✔
2749
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 6, 18) == L"67 one CUT more" );
12✔
2750
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 7, 18) == L"7 one CUT more" );
12✔
2751
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 8, 18) == L" one CUT more" );
12✔
2752
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 9, 18) == L"one CUT more" );
12✔
2753
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 10, 18) == L"ne CUT more" );
12✔
2754
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 11, 18) == L"e CUT more" );
12✔
2755
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 12, 18) == L" CUT more" );
12✔
2756
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 13, 18) == L"CUT more" );
12✔
2757
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 14, 18) == L"‹UT more" );
12✔
2758
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 15, 18) == L"UT more" );
12✔
2759
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 16, 18) == L"‹T more" );
12✔
2760
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 17, 18) == L"T more" );
12✔
2761
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 18, 18) == L"‹ more" );
12✔
2762
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 19, 18) == L" more" );
12✔
2763
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 20, 18) == L"more" );
12✔
2764
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 21, 18) == L"ore" );
12✔
2765
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 22, 18) == L"re" );
12✔
2766
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 23, 18) == L"e" );
12✔
2767
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 24, 18) == L"" );
12✔
2768
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 0, 19) == L"1234567 one CUT " );
12✔
2769
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 1, 19) == L"1234567 one CUT " );
12✔
2770
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 2, 19) == L"234567 one CUT m" );
12✔
2771
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 3, 19) == L"34567 one CUT mo" );
12✔
2772
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 4, 19) == L"4567 one CUT mor" );
12✔
2773
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 5, 19) == L"567 one CUT more" );
12✔
2774
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 6, 19) == L"67 one CUT more" );
12✔
2775
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 7, 19) == L"7 one CUT more" );
12✔
2776
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 8, 19) == L" one CUT more" );
12✔
2777
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 9, 19) == L"one CUT more" );
12✔
2778
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 10, 19) == L"ne CUT more" );
12✔
2779
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 11, 19) == L"e CUT more" );
12✔
2780
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 12, 19) == L" CUT more" );
12✔
2781
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 13, 19) == L"CUT more" );
12✔
2782
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 14, 19) == L"‹UT more" );
12✔
2783
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 15, 19) == L"UT more" );
12✔
2784
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 16, 19) == L"‹T more" );
12✔
2785
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 17, 19) == L"T more" );
12✔
2786
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 18, 19) == L"‹ more" );
12✔
2787
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 19, 19) == L" more" );
12✔
2788
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 20, 19) == L"more" );
12✔
2789
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 21, 19) == L"ore" );
12✔
2790
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 22, 19) == L"re" );
12✔
2791
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 23, 19) == L"e" );
12✔
2792
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 24, 19) == L"" );
12✔
2793
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 0, 20) == L"1234567 one CUT m" );
12✔
2794
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 1, 20) == L"1234567 one CUT m" );
12✔
2795
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 2, 20) == L"234567 one CUT mo" );
12✔
2796
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 3, 20) == L"34567 one CUT mor" );
12✔
2797
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 4, 20) == L"4567 one CUT more" );
12✔
2798
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 5, 20) == L"567 one CUT more" );
12✔
2799
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 6, 20) == L"67 one CUT more" );
12✔
2800
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 7, 20) == L"7 one CUT more" );
12✔
2801
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 8, 20) == L" one CUT more" );
12✔
2802
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 9, 20) == L"one CUT more" );
12✔
2803
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 10, 20) == L"ne CUT more" );
12✔
2804
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 11, 20) == L"e CUT more" );
12✔
2805
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 12, 20) == L" CUT more" );
12✔
2806
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 13, 20) == L"CUT more" );
12✔
2807
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 14, 20) == L"‹UT more" );
12✔
2808
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 15, 20) == L"UT more" );
12✔
2809
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 16, 20) == L"‹T more" );
12✔
2810
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 17, 20) == L"T more" );
12✔
2811
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 18, 20) == L"‹ more" );
12✔
2812
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 19, 20) == L" more" );
12✔
2813
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 20, 20) == L"more" );
12✔
2814
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 21, 20) == L"ore" );
12✔
2815
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 22, 20) == L"re" );
12✔
2816
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 23, 20) == L"e" );
12✔
2817
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 24, 20) == L"" );
12✔
2818
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 0, 21) == L"1234567 one CUT mo" );
12✔
2819
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 1, 21) == L"1234567 one CUT mo" );
12✔
2820
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 2, 21) == L"234567 one CUT mor" );
12✔
2821
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 3, 21) == L"34567 one CUT more" );
12✔
2822
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 4, 21) == L"4567 one CUT more" );
12✔
2823
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 5, 21) == L"567 one CUT more" );
12✔
2824
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 6, 21) == L"67 one CUT more" );
12✔
2825
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 7, 21) == L"7 one CUT more" );
12✔
2826
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 8, 21) == L" one CUT more" );
12✔
2827
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 9, 21) == L"one CUT more" );
12✔
2828
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 10, 21) == L"ne CUT more" );
12✔
2829
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 11, 21) == L"e CUT more" );
12✔
2830
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 12, 21) == L" CUT more" );
12✔
2831
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 13, 21) == L"CUT more" );
12✔
2832
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 14, 21) == L"‹UT more" );
12✔
2833
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 15, 21) == L"UT more" );
12✔
2834
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 16, 21) == L"‹T more" );
12✔
2835
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 17, 21) == L"T more" );
12✔
2836
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 18, 21) == L"‹ more" );
12✔
2837
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 19, 21) == L" more" );
12✔
2838
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 20, 21) == L"more" );
12✔
2839
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 21, 21) == L"ore" );
12✔
2840
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 22, 21) == L"re" );
12✔
2841
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 23, 21) == L"e" );
12✔
2842
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 24, 21) == L"" );
12✔
2843
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 0, 22) == L"1234567 one CUT mor" );
12✔
2844
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 1, 22) == L"1234567 one CUT mor" );
12✔
2845
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 2, 22) == L"234567 one CUT more" );
12✔
2846
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 3, 22) == L"34567 one CUT more" );
12✔
2847
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 4, 22) == L"4567 one CUT more" );
12✔
2848
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 5, 22) == L"567 one CUT more" );
12✔
2849
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 6, 22) == L"67 one CUT more" );
12✔
2850
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 7, 22) == L"7 one CUT more" );
12✔
2851
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 8, 22) == L" one CUT more" );
12✔
2852
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 9, 22) == L"one CUT more" );
12✔
2853
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 10, 22) == L"ne CUT more" );
12✔
2854
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 11, 22) == L"e CUT more" );
12✔
2855
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 12, 22) == L" CUT more" );
12✔
2856
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 13, 22) == L"CUT more" );
12✔
2857
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 14, 22) == L"‹UT more" );
12✔
2858
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 15, 22) == L"UT more" );
12✔
2859
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 16, 22) == L"‹T more" );
12✔
2860
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 17, 22) == L"T more" );
12✔
2861
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 18, 22) == L"‹ more" );
12✔
2862
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 19, 22) == L" more" );
12✔
2863
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 20, 22) == L"more" );
12✔
2864
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 21, 22) == L"ore" );
12✔
2865
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 22, 22) == L"re" );
12✔
2866
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 23, 22) == L"e" );
12✔
2867
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 24, 22) == L"" );
12✔
2868
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 0, 23) == L"1234567 one CUT more" );
12✔
2869
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 1, 23) == L"1234567 one CUT more" );
12✔
2870
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 2, 23) == L"234567 one CUT more" );
12✔
2871
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 3, 23) == L"34567 one CUT more" );
12✔
2872
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 4, 23) == L"4567 one CUT more" );
12✔
2873
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 5, 23) == L"567 one CUT more" );
12✔
2874
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 6, 23) == L"67 one CUT more" );
12✔
2875
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 7, 23) == L"7 one CUT more" );
12✔
2876
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 8, 23) == L" one CUT more" );
12✔
2877
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 9, 23) == L"one CUT more" );
12✔
2878
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 10, 23) == L"ne CUT more" );
12✔
2879
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 11, 23) == L"e CUT more" );
12✔
2880
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 12, 23) == L" CUT more" );
12✔
2881
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 13, 23) == L"CUT more" );
12✔
2882
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 14, 23) == L"‹UT more" );
12✔
2883
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 15, 23) == L"UT more" );
12✔
2884
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 16, 23) == L"‹T more" );
12✔
2885
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 17, 23) == L"T more" );
12✔
2886
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 18, 23) == L"‹ more" );
12✔
2887
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 19, 23) == L" more" );
12✔
2888
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 20, 23) == L"more" );
12✔
2889
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 21, 23) == L"ore" );
12✔
2890
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 22, 23) == L"re" );
12✔
2891
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 23, 23) == L"e" );
12✔
2892
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"1234567 one CUT more", 24, 23) == L"" );
12✔
2893
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"o\U0000031b\U00000323=\U00001ee3", 0, 0) == L"" );
12✔
2894
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"o\U0000031b\U00000323=\U00001ee3", 1, 0) == L"" );
12✔
2895
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"o\U0000031b\U00000323=\U00001ee3", 2, 0) == L"" );
12✔
2896
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"o\U0000031b\U00000323=\U00001ee3", 3, 0) == L"" );
12✔
2897
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"o\U0000031b\U00000323=\U00001ee3", 4, 0) == L"" );
12✔
2898
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"o\U0000031b\U00000323=\U00001ee3", 0, 1) == L"o\U0000031b\U00000323" );
12✔
2899
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"o\U0000031b\U00000323=\U00001ee3", 1, 1) == L"o\U0000031b\U00000323" );
12✔
2900
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"o\U0000031b\U00000323=\U00001ee3", 2, 1) == L"=" );
12✔
2901
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"o\U0000031b\U00000323=\U00001ee3", 3, 1) == L"\U00001ee3" );
12✔
2902
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"o\U0000031b\U00000323=\U00001ee3", 4, 1) == L"" );
12✔
2903
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"o\U0000031b\U00000323=\U00001ee3", 0, 2) == L"o\U0000031b\U00000323=" );
12✔
2904
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"o\U0000031b\U00000323=\U00001ee3", 1, 2) == L"o\U0000031b\U00000323=" );
12✔
2905
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"o\U0000031b\U00000323=\U00001ee3", 2, 2) == L"=\U00001ee3" );
12✔
2906
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"o\U0000031b\U00000323=\U00001ee3", 3, 2) == L"\U00001ee3" );
12✔
2907
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"o\U0000031b\U00000323=\U00001ee3", 4, 2) == L"" );
12✔
2908
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"o\U0000031b\U00000323=\U00001ee3", 0, 3) == L"o\U0000031b\U00000323=\U00001ee3" );
12✔
2909
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"o\U0000031b\U00000323=\U00001ee3", 1, 3) == L"o\U0000031b\U00000323=\U00001ee3" );
12✔
2910
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"o\U0000031b\U00000323=\U00001ee3", 2, 3) == L"=\U00001ee3" );
12✔
2911
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"o\U0000031b\U00000323=\U00001ee3", 3, 3) == L"\U00001ee3" );
12✔
2912
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"o\U0000031b\U00000323=\U00001ee3", 4, 3) == L"" );
12✔
2913
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 0, 0) == L"" );
12✔
2914
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 1, 0) == L"" );
12✔
2915
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 2, 0) == L"" );
12✔
2916
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 3, 0) == L"" );
12✔
2917
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 4, 0) == L"" );
12✔
2918
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 5, 0) == L"" );
12✔
2919
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 6, 0) == L"" );
12✔
2920
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 7, 0) == L"" );
12✔
2921
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 8, 0) == L"" );
12✔
2922
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 9, 0) == L"" );
12✔
2923
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 0, 1) == L"S" );
12✔
2924
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 1, 1) == L"S" );
12✔
2925
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 2, 1) == L"T" );
12✔
2926
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 3, 1) == L"A" );
12✔
2927
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 4, 1) == L"R" );
12✔
2928
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 5, 1) == L"G" );
12✔
2929
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 6, 1) == L"Λ̊" );
12✔
2930
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 7, 1) == L"T" );
12✔
2931
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 8, 1) == L"E" );
12✔
2932
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 9, 1) == L"" );
12✔
2933
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 0, 2) == L"ST" );
12✔
2934
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 1, 2) == L"ST" );
12✔
2935
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 2, 2) == L"TA" );
12✔
2936
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 3, 2) == L"AR" );
12✔
2937
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 4, 2) == L"RG" );
12✔
2938
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 5, 2) == L"GΛ̊" );
12✔
2939
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 6, 2) == L"Λ̊T" );
12✔
2940
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 7, 2) == L"TE" );
12✔
2941
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 8, 2) == L"E" );
12✔
2942
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 9, 2) == L"" );
12✔
2943
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 0, 3) == L"STA" );
12✔
2944
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 1, 3) == L"STA" );
12✔
2945
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 2, 3) == L"TAR" );
12✔
2946
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 3, 3) == L"ARG" );
12✔
2947
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 4, 3) == L"RGΛ̊" );
12✔
2948
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 5, 3) == L"GΛ̊T" );
12✔
2949
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 6, 3) == L"Λ̊TE" );
12✔
2950
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 7, 3) == L"TE" );
12✔
2951
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 8, 3) == L"E" );
12✔
2952
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 9, 3) == L"" );
12✔
2953
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 0, 4) == L"STAR" );
12✔
2954
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 1, 4) == L"STAR" );
12✔
2955
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 2, 4) == L"TARG" );
12✔
2956
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 3, 4) == L"ARGΛ̊" );
12✔
2957
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 4, 4) == L"RGΛ̊T" );
12✔
2958
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 5, 4) == L"GΛ̊TE" );
12✔
2959
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 6, 4) == L"Λ̊TE" );
12✔
2960
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 7, 4) == L"TE" );
12✔
2961
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 8, 4) == L"E" );
12✔
2962
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 9, 4) == L"" );
12✔
2963
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 0, 5) == L"STARG" );
12✔
2964
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 1, 5) == L"STARG" );
12✔
2965
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 2, 5) == L"TARGΛ̊" );
12✔
2966
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 3, 5) == L"ARGΛ̊T" );
12✔
2967
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 4, 5) == L"RGΛ̊TE" );
12✔
2968
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 5, 5) == L"GΛ̊TE" );
12✔
2969
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 6, 5) == L"Λ̊TE" );
12✔
2970
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 7, 5) == L"TE" );
12✔
2971
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 8, 5) == L"E" );
12✔
2972
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 9, 5) == L"" );
12✔
2973
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 0, 6) == L"STARGΛ̊" );
12✔
2974
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 1, 6) == L"STARGΛ̊" );
12✔
2975
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 2, 6) == L"TARGΛ̊T" );
12✔
2976
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 3, 6) == L"ARGΛ̊TE" );
12✔
2977
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 4, 6) == L"RGΛ̊TE" );
12✔
2978
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 5, 6) == L"GΛ̊TE" );
12✔
2979
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 6, 6) == L"Λ̊TE" );
12✔
2980
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 7, 6) == L"TE" );
12✔
2981
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 8, 6) == L"E" );
12✔
2982
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 9, 6) == L"" );
12✔
2983
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 0, 7) == L"STARGΛ̊T" );
12✔
2984
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 1, 7) == L"STARGΛ̊T" );
12✔
2985
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 2, 7) == L"TARGΛ̊TE" );
12✔
2986
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 3, 7) == L"ARGΛ̊TE" );
12✔
2987
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 4, 7) == L"RGΛ̊TE" );
12✔
2988
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 5, 7) == L"GΛ̊TE" );
12✔
2989
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 6, 7) == L"Λ̊TE" );
12✔
2990
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 7, 7) == L"TE" );
12✔
2991
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 8, 7) == L"E" );
12✔
2992
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 9, 7) == L"" );
12✔
2993
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 0, 8) == L"STARGΛ̊TE" );
12✔
2994
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 1, 8) == L"STARGΛ̊TE" );
12✔
2995
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 2, 8) == L"TARGΛ̊TE" );
12✔
2996
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 3, 8) == L"ARGΛ̊TE" );
12✔
2997
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 4, 8) == L"RGΛ̊TE" );
12✔
2998
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 5, 8) == L"GΛ̊TE" );
12✔
2999
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 6, 8) == L"Λ̊TE" );
12✔
3000
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 7, 8) == L"TE" );
12✔
3001
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 8, 8) == L"E" );
12✔
3002
  CPPUNIT_ASSERT ( finalcut::getColumnSubString(L"STARGΛ̊TE", 9, 8) == L"" );
10✔
3003
}
2✔
3004

3005
//----------------------------------------------------------------------
3006
void FTermFunctionsTest::combiningCharacterTest()
2✔
3007
{
3008
  // Leading zero-width characters
3009
  std::wstring combining = L"\U00000323\U00000300\U0000ff2f\n";  // [] [] O [NL]
4✔
3010
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 0) == -1 );
12✔
3011
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 1) == -1 );
12✔
3012
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 2) == 1 );
12✔
3013
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 3) == 1 );
12✔
3014
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 0) == -1 );
12✔
3015
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 1) == -1 );
12✔
3016
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 2) == -1 );
12✔
3017
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 3) == 1 );
12✔
3018
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 0) == NOT_FOUND );
12✔
3019
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 1) == NOT_FOUND );
12✔
3020
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 2) == NOT_FOUND );
12✔
3021
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 3) == 2 );
12✔
3022
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 4) == 3 );
12✔
3023
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 0) == 2 );
12✔
3024
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 1) == 2 );
12✔
3025
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 2) == 3 );
12✔
3026
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 3) == NOT_FOUND );
12✔
3027
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 4) == NOT_FOUND );
10✔
3028

3029
  // Leading whitespace
3030
  combining = L" " + combining;
2✔
3031
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 0) == 1 );
12✔
3032
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 1) == -1 );
12✔
3033
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 2) == -1 );
12✔
3034
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 3) == 1 );
12✔
3035
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 4) == 1 );
12✔
3036
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 0) == -1 );
12✔
3037
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 1) == -1 );
12✔
3038
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 2) == -1 );
12✔
3039
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 3) == 3 );
12✔
3040
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 4) == 1 );
12✔
3041
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 0) == NOT_FOUND );
12✔
3042
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 1) == 0 );
12✔
3043
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 2) == 0 );
12✔
3044
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 3) == 0 );
12✔
3045
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 4) == 3 );
12✔
3046
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 5) == 4 );
12✔
3047
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 0) == 3 );
12✔
3048
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 1) == 3 );
12✔
3049
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 2) == 3 );
12✔
3050
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 3) == 4 );
12✔
3051
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 4) == NOT_FOUND );
12✔
3052
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 5) == NOT_FOUND );
10✔
3053

3054
  // Characters with separate and with combined diacritical marks
3055
  combining = L"u\U00000300=\U000000f9";  // u ` = ù
2✔
3056
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 0) == 2 );
12✔
3057
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 1) == -1 );
12✔
3058
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 2) == 1 );
12✔
3059
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 3) == 1 );
12✔
3060
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 4) == -1 );  // Position is outside the string
12✔
3061
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 0) == -1 );
12✔
3062
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 1) == -1 );
12✔
3063
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 2) == 2 );
12✔
3064
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 3) == 1 );
12✔
3065
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 4) == -1 );  // Position is outside the string
12✔
3066
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 0) == NOT_FOUND );
12✔
3067
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 1) == 0 );
12✔
3068
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 2) == 0 );
12✔
3069
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 3) == 2 );
12✔
3070
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 4) == 3 );
12✔
3071
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 0) == 2 );
12✔
3072
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 1) == 2 );
12✔
3073
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 2) == 3 );
12✔
3074
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 3) == NOT_FOUND );
12✔
3075
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 4) == NOT_FOUND );
10✔
3076

3077
  combining = L"o\U0000031b\U00000323=\U00001ee3";  // o ‍̛   ‍̣ = ợ
2✔
3078
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 0) == 3 );
12✔
3079
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 1) == -1 );
12✔
3080
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 2) == -1 );
12✔
3081
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 3) == 1 );
12✔
3082
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 4) == 1 );
12✔
3083
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 0) == -1 );
12✔
3084
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 1) == -1 );
12✔
3085
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 2) == -1 );
12✔
3086
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 3) == 3 );
12✔
3087
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 4) == 1 );
12✔
3088
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 0) == NOT_FOUND );
12✔
3089
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 1) == 0 );
12✔
3090
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 2) == 0 );
12✔
3091
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 3) == 0 );
12✔
3092
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 4) == 3 );
12✔
3093
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 5) == 4 );
12✔
3094
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 0) == 3 );
12✔
3095
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 1) == 3 );
12✔
3096
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 2) == 3 );
12✔
3097
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 3) == 4 );
12✔
3098
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 4) == NOT_FOUND );
12✔
3099
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 5) == NOT_FOUND );
10✔
3100

3101
  // Many combination characters
3102
  combining = L"v" \
3103
              L"\U00000300\U0000032e\U00000368" \
3104
              L"\U00000364\U00000348\U0000034b";  // v ̀  ̮  ͨ  ͤ  ͈  ͋
2✔
3105
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 0) == 7 );
12✔
3106
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 1) == -1 );
12✔
3107
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 2) == -1 );
12✔
3108
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 3) == -1 );
12✔
3109
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 4) == -1 );
12✔
3110
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 5) == -1 );
12✔
3111
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 6) == -1 );
12✔
3112
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 0) == -1 );
12✔
3113
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 1) == -1 );
12✔
3114
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 2) == -1 );
12✔
3115
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 3) == -1 );
12✔
3116
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 4) == -1 );
12✔
3117
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 5) == -1 );
12✔
3118
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 6) == -1 );
12✔
3119
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 0) == NOT_FOUND );
12✔
3120
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 1) == 0 );
12✔
3121
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 2) == 0 );
12✔
3122
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 3) == 0 );
12✔
3123
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 4) == 0 );
12✔
3124
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 5) == 0 );
12✔
3125
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 6) == 0 );
12✔
3126
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 7) == 0 );
12✔
3127
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 0) == NOT_FOUND );
12✔
3128
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 1) == NOT_FOUND );
12✔
3129
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 2) == NOT_FOUND );
12✔
3130
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 3) == NOT_FOUND );
12✔
3131
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 4) == NOT_FOUND );
12✔
3132
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 5) == NOT_FOUND );
12✔
3133
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 6) == NOT_FOUND );
12✔
3134
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 7) == NOT_FOUND );
10✔
3135

3136
  // Trailing uncombined zero-width characters
3137
  combining = L"a\t\U00000300\U00000323";  // a [Tab] [] []
2✔
3138
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 0) == 1 );
12✔
3139
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 1) == 1 );
12✔
3140
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 2) == -1 );
12✔
3141
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 3) == -1 );
12✔
3142
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 0) == -1 );
12✔
3143
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 1) == 1 );
12✔
3144
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 2) == -1 );
12✔
3145
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 3) == -1 );
12✔
3146
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 0) == NOT_FOUND );
12✔
3147
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 1) == 0 );
12✔
3148
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 2) == 1 );
12✔
3149
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 3) == 1 );
12✔
3150
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 4) == 1 );
12✔
3151
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 0) == 1 );
12✔
3152
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 1) == NOT_FOUND );
12✔
3153
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 2) == NOT_FOUND );
12✔
3154
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 3) == NOT_FOUND );
12✔
3155
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 4) == NOT_FOUND );
10✔
3156

3157
  // Thai (ISO 10646-1 - UCS implementation level 2)
3158
  combining = L"๏ แผ่นดินฮั่นเสื่อมโทรมแสนสังเวช";
2✔
3159
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 0) == 1 );
12✔
3160
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 1) == 1 );
12✔
3161
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 2) == 1 );
12✔
3162
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 3) == 2 );
12✔
3163
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 4) == -1 );
12✔
3164
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 5) == 1 );
12✔
3165
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 6) == 2 );
12✔
3166
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 7) == -1 );
12✔
3167
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 8) == 1 );
12✔
3168
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 9) == 3 );
12✔
3169
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 10) == -1 );
12✔
3170
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 11) == -1 );
12✔
3171
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 12) == 1 );
12✔
3172
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 13) == 1 );
12✔
3173
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 14) == 3 );
12✔
3174
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 15) == -1 );
12✔
3175
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 16) == -1 );
12✔
3176
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 17) == 1 );
12✔
3177
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 18) == 1 );
12✔
3178
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 19) == 1 );
12✔
3179
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 20) == 1 );
12✔
3180
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 21) == 1 );
12✔
3181
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 22) == 1 );
12✔
3182
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 23) == 1 );
12✔
3183
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 24) == 1 );
12✔
3184
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 25) == 1 );
12✔
3185
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 26) == 2 );
12✔
3186
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 27) == -1 );
12✔
3187
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 28) == 1 );
12✔
3188
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 29) == 1 );
12✔
3189
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 30) == 1 );
12✔
3190
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 31) == 1 );
12✔
3191
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 0) == -1 );
12✔
3192
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 1) == 1 );
12✔
3193
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 2) == 1 );
12✔
3194
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 3) == 1 );
12✔
3195
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 4) == -1 );
12✔
3196
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 5) == 2 );
12✔
3197
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 6) == 1 );
12✔
3198
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 7) == -1 );
12✔
3199
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 8) == 2 );
12✔
3200
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 9) == 1 );
12✔
3201
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 10) == -1 );
12✔
3202
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 11) == -1 );
12✔
3203
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 12) == 3 );
12✔
3204
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 13) == 1 );
12✔
3205
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 14) == 1 );
12✔
3206
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 15) == -1 );
12✔
3207
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 16) == -1 );
12✔
3208
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 17) == 3 );
12✔
3209
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 18) == 1 );
12✔
3210
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 19) == 1 );
12✔
3211
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 20) == 1 );
12✔
3212
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 21) == 1 );
12✔
3213
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 22) == 1 );
12✔
3214
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 23) == 1 );
12✔
3215
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 24) == 1 );
12✔
3216
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 25) == 1 );
12✔
3217
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 26) == 1 );
12✔
3218
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 27) == -1 );
12✔
3219
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 28) == 2 );
12✔
3220
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 29) == 1 );
12✔
3221
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 30) == 1 );
12✔
3222
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 31) == 1 );
12✔
3223
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 0) == NOT_FOUND );
12✔
3224
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 1) == 0 );
12✔
3225
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 2) == 1 );
12✔
3226
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 3) == 2 );
12✔
3227
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 4) == 3 );
12✔
3228
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 5) == 3 );
12✔
3229
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 6) == 5 );
12✔
3230
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 7) == 6 );
12✔
3231
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 8) == 6 );
12✔
3232
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 9) == 8 );
12✔
3233
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 10) == 9 );
12✔
3234
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 11) == 9 );
12✔
3235
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 12) == 9 );
12✔
3236
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 13) == 12 );
12✔
3237
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 14) == 13 );
12✔
3238
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 15) == 14 );
12✔
3239
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 16) == 14 );
12✔
3240
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 17) == 14 );
12✔
3241
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 18) == 17 );
12✔
3242
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 19) == 18 );
12✔
3243
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 20) == 19 );
12✔
3244
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 21) == 20 );
12✔
3245
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 22) == 21 );
12✔
3246
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 23) == 22 );
12✔
3247
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 24) == 23 );
12✔
3248
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 25) == 24 );
12✔
3249
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 26) == 25 );
12✔
3250
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 27) == 26 );
12✔
3251
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 28) == 26 );
12✔
3252
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 29) == 28 );
12✔
3253
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 30) == 29 );
12✔
3254
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 31) == 30 );
12✔
3255
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 32) == 31 );
12✔
3256
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 0) == 1 );
12✔
3257
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 1) == 2 );
12✔
3258
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 2) == 3 );
12✔
3259
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 3) == 5 );
12✔
3260
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 4) == 5 );
12✔
3261
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 5) == 6 );
12✔
3262
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 6) == 8 );
12✔
3263
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 7) == 8 );
12✔
3264
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 8) == 9 );
12✔
3265
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 9) == 12 );
12✔
3266
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 10) == 12 );
12✔
3267
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 11) == 12 );
12✔
3268
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 12) == 13 );
12✔
3269
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 13) == 14 );
12✔
3270
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 14) == 17 );
12✔
3271
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 15) == 17 );
12✔
3272
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 16) == 17 );
12✔
3273
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 17) == 18 );
12✔
3274
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 18) == 19 );
12✔
3275
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 19) == 20 );
12✔
3276
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 20) == 21 );
12✔
3277
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 21) == 22 );
12✔
3278
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 22) == 23 );
12✔
3279
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 23) == 24 );
12✔
3280
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 24) == 25 );
12✔
3281
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 25) == 26 );
12✔
3282
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 26) == 28 );
12✔
3283
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 27) == 28 );
12✔
3284
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 28) == 29 );
12✔
3285
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 29) == 30 );
12✔
3286
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 30) == 31 );
12✔
3287
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 31) == NOT_FOUND );
12✔
3288
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 32) == NOT_FOUND );
10✔
3289

3290
  // Devanagari script (ISO 10646-1 - UCS implementation level 2)
3291
  combining = L"पन्ह पन्ह त्र र्च कृकृ ड्ड न्ह";
2✔
3292
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 0) == 1 );
12✔
3293
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 1) == 2 );
12✔
3294
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 2) == -1 );
12✔
3295
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 3) == 1 );
12✔
3296
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 4) == 1 );
12✔
3297
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 5) == 1 );
12✔
3298
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 6) == 2 );
12✔
3299
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 7) == -1 );
12✔
3300
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 8) == 1 );
12✔
3301
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 9) == 1 );
12✔
3302
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 10) == 2 );
12✔
3303
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 11) == -1 );
12✔
3304
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 12) == 1 );
12✔
3305
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 13) == 1 );
12✔
3306
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 14) == 2 );
12✔
3307
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 15) == -1 );
12✔
3308
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 16) == 1 );
12✔
3309
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 17) == 1 );
12✔
3310
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 18) == 2 );
12✔
3311
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 19) == -1 );
12✔
3312
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 20) == 2 );
12✔
3313
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 21) == -1 );
12✔
3314
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 22) == 1 );
12✔
3315
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 23) == 2 );
12✔
3316
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 24) == -1 );
12✔
3317
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 25) == 1 );
12✔
3318
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 26) == 1 );
12✔
3319
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 27) == 2 );
12✔
3320
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 28) == -1 );
12✔
3321
  CPPUNIT_ASSERT ( finalcut::getCharLength(combining, 29) == 1 );
12✔
3322
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 0) == -1 );
12✔
3323
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 1) == 1 );
12✔
3324
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 2) == -1 );
12✔
3325
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 3) == 2 );
12✔
3326
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 4) == 1 );
12✔
3327
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 5) == 1 );
12✔
3328
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 6) == 1 );
12✔
3329
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 7) == -1 );
12✔
3330
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 8) == 2 );
12✔
3331
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 9) == 1 );
12✔
3332
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 10) == 1 );
12✔
3333
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 11) == -1 );
12✔
3334
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 12) == 2 );
12✔
3335
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 13) == 1 );
12✔
3336
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 14) == 1 );
12✔
3337
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 15) == -1 );
12✔
3338
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 16) == 2 );
12✔
3339
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 17) == 1 );
12✔
3340
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 18) == 1 );
12✔
3341
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 19) == -1 );
12✔
3342
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 20) == 2 );
12✔
3343
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 21) == -1 );
12✔
3344
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 22) == 2 );
12✔
3345
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 23) == 1 );
12✔
3346
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 24) == -1 );
12✔
3347
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 25) == 2 );
12✔
3348
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 26) == 1 );
12✔
3349
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 27) == 1 );
12✔
3350
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 28) == -1 );
12✔
3351
  CPPUNIT_ASSERT ( finalcut::getPrevCharLength(combining, 29) == 2 );
12✔
3352
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 0) == NOT_FOUND );
12✔
3353
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 1) == 0 );
12✔
3354
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 2) == 1 );
12✔
3355
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 3) == 1 );
12✔
3356
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 4) == 3 );
12✔
3357
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 5) == 4 );
12✔
3358
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 6) == 5 );
12✔
3359
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 7) == 6 );
12✔
3360
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 8) == 6 );
12✔
3361
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 9) == 8 );
12✔
3362
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 10) == 9 );
12✔
3363
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 11) == 10 );
12✔
3364
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 12) == 10 );
12✔
3365
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 13) == 12 );
12✔
3366
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 14) == 13 );
12✔
3367
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 15) == 14 );
12✔
3368
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 16) == 14 );
12✔
3369
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 17) == 16 );
12✔
3370
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 18) == 17 );
12✔
3371
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 19) == 18 );
12✔
3372
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 20) == 18 );
12✔
3373
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 21) == 20 );
12✔
3374
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 22) == 20 );
12✔
3375
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 23) == 22 );
12✔
3376
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 24) == 23 );
12✔
3377
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 25) == 23 );
12✔
3378
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 26) == 25 );
12✔
3379
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 27) == 26 );
12✔
3380
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 28) == 27 );
12✔
3381
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 29) == 27 );
12✔
3382
  CPPUNIT_ASSERT ( finalcut::searchLeftCharBegin(combining, 30) == 29 );
12✔
3383
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 0) == 1 );
12✔
3384
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 1) == 3 );
12✔
3385
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 2) == 3 );
12✔
3386
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 3) == 4 );
12✔
3387
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 4) == 5 );
12✔
3388
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 5) == 6 );
12✔
3389
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 6) == 8 );
12✔
3390
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 7) == 8 );
12✔
3391
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 8) == 9 );
12✔
3392
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 9) == 10 );
12✔
3393
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 10) == 12 );
12✔
3394
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 11) == 12 );
12✔
3395
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 12) == 13 );
12✔
3396
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 13) == 14 );
12✔
3397
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 14) == 16 );
12✔
3398
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 15) == 16 );
12✔
3399
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 16) == 17 );
12✔
3400
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 17) == 18 );
12✔
3401
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 18) == 20 );
12✔
3402
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 19) == 20 );
12✔
3403
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 20) == 22 );
12✔
3404
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 21) == 22 );
12✔
3405
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 22) == 23 );
12✔
3406
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 23) == 25 );
12✔
3407
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 24) == 25 );
12✔
3408
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 25) == 26 );
12✔
3409
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 26) == 27 );
12✔
3410
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 27) == 29 );
12✔
3411
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 28) == 29 );
12✔
3412
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 29) == NOT_FOUND );
12✔
3413
  CPPUNIT_ASSERT ( finalcut::searchRightCharBegin(combining, 30) == NOT_FOUND );
10✔
3414
}
2✔
3415

3416
//----------------------------------------------------------------------
3417
void FTermFunctionsTest::readCursorPosTest()
2✔
3418
{
3419
  auto& fterm_data = finalcut::FTermData::getInstance();
2✔
3420
  finalcut::FTermDetection detect;
2✔
3421
  fterm_data.setTermType("xterm");
2✔
3422
  detect.setTerminalDetection(true);
2✔
3423

3424
  pid_t pid = forkConEmu();
2✔
3425

3426
  if ( isConEmuChildProcess(pid) )
2✔
3427
  {
3428
    const finalcut::FPoint cursor_pos = finalcut::readCursorPos();
1✔
3429
    CPPUNIT_ASSERT ( cursor_pos.getX() == 80 );
6✔
3430
    CPPUNIT_ASSERT ( cursor_pos.getY() == 25 );
5✔
3431

3432
    closeConEmuStdStreams();
1✔
3433
    exit(EXIT_SUCCESS);
1✔
3434
  }
3435
  else  // Parent
3436
  {
3437
    // Start the terminal emulation
3438
    startConEmuTerminal (ConEmu::console::xterm);
1✔
3439
    int wstatus;
3440

3441
    if ( waitpid(pid, &wstatus, WUNTRACED) != pid )
1✔
3442
      std::cerr << "waitpid error" << std::endl;
×
3443

3444
    if ( WIFEXITED(wstatus) )
1✔
3445
      CPPUNIT_ASSERT ( WEXITSTATUS(wstatus) == 0 );
6✔
3446
  }
3447
}
1✔
3448

3449

3450
// Put the test suite in the registry
3451
CPPUNIT_TEST_SUITE_REGISTRATION (FTermFunctionsTest);
3452

3453
// The general unit test main part
3454
#include <main-test.inc>
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc