Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(61)

Side by Side Diff: app/text_elider_unittest.cc

Issue 5964007: Last part of change for bug 49747.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 10 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "app/text_elider.h" 5 #include "app/text_elider.h"
6 #include "base/file_path.h" 6 #include "base/file_path.h"
7 #include "base/i18n/rtl.h" 7 #include "base/i18n/rtl.h"
8 #include "base/scoped_ptr.h" 8 #include "base/scoped_ptr.h"
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
312 { L"Hello, my name is Tom", 5, true, L"H...m" }, 312 { L"Hello, my name is Tom", 5, true, L"H...m" },
313 { L"Hello, my name is Tom", 6, true, L"He...m" }, 313 { L"Hello, my name is Tom", 6, true, L"He...m" },
314 { L"Hello, my name is Tom", 7, true, L"He...om" }, 314 { L"Hello, my name is Tom", 7, true, L"He...om" },
315 { L"Hello, my name is Tom", 10, true, L"Hell...Tom" }, 315 { L"Hello, my name is Tom", 10, true, L"Hell...Tom" },
316 { L"Hello, my name is Tom", 100, false, L"Hello, my name is Tom" } 316 { L"Hello, my name is Tom", 100, false, L"Hello, my name is Tom" }
317 }; 317 };
318 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) { 318 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) {
319 std::wstring output; 319 std::wstring output;
320 EXPECT_EQ(cases[i].result, 320 EXPECT_EQ(cases[i].result,
321 gfx::ElideString(cases[i].input, cases[i].max_len, &output)); 321 gfx::ElideString(cases[i].input, cases[i].max_len, &output));
322 EXPECT_TRUE(output == cases[i].output); 322 EXPECT_EQ(cases[i].output, output);
323 } 323 }
324 } 324 }
325
326 TEST(TextEliderTest, ElideRectangleString) {
327 struct TestData {
328 const wchar_t* input;
329 int max_rows;
330 int max_cols;
331 bool result;
332 const wchar_t* output;
333 } cases[] = {
334 { L"", 0, 0, false, L"" },
335 { L"", 1, 1, false, L"" },
336 { L"Hi, my name is\nTom", 0, 0, true, L"..." },
337 { L"Hi, my name is\nTom", 1, 0, true, L"\n..." },
338 { L"Hi, my name is\nTom", 0, 1, true, L"..." },
339 { L"Hi, my name is\nTom", 1, 1, true, L"H\n..." },
340 { L"Hi, my name is\nTom", 2, 1, true, L"H\ni\n..." },
341 { L"Hi, my name is\nTom", 3, 1, true, L"H\ni\n,\n..." },
342 { L"Hi, my name is\nTom", 4, 1, true, L"H\ni\n,\n \n..." },
343 { L"Hi, my name is\nTom", 5, 1, true, L"H\ni\n,\n \nm\n..." },
344 { L"Hi, my name is\nTom", 0, 2, true, L"..." },
345 { L"Hi, my name is\nTom", 1, 2, true, L"Hi\n..." },
346 { L"Hi, my name is\nTom", 2, 2, true, L"Hi\n, \n..." },
347 { L"Hi, my name is\nTom", 3, 2, true, L"Hi\n, \nmy\n..." },
348 { L"Hi, my name is\nTom", 4, 2, true, L"Hi\n, \nmy\n n\n..." },
349 { L"Hi, my name is\nTom", 5, 2, true, L"Hi\n, \nmy\n n\nam\n..." },
350 { L"Hi, my name is\nTom", 0, 3, true, L"..." },
351 { L"Hi, my name is\nTom", 1, 3, true, L"Hi,\n..." },
352 { L"Hi, my name is\nTom", 2, 3, true, L"Hi,\n my\n..." },
353 { L"Hi, my name is\nTom", 3, 3, true, L"Hi,\n my\n na\n..." },
354 { L"Hi, my name is\nTom", 4, 3, true, L"Hi,\n my\n na\nme \n..." },
355 { L"Hi, my name is\nTom", 5, 3, true, L"Hi,\n my\n na\nme \nis\n..." },
356 { L"Hi, my name is\nTom", 1, 4, true, L"Hi, \n..." },
357 { L"Hi, my name is\nTom", 2, 4, true, L"Hi, \nmy n\n..." },
358 { L"Hi, my name is\nTom", 3, 4, true, L"Hi, \nmy n\name \n..." },
359 { L"Hi, my name is\nTom", 4, 4, true, L"Hi, \nmy n\name \nis\n..." },
360 { L"Hi, my name is\nTom", 5, 4, false, L"Hi, \nmy n\name \nis\nTom" },
361 { L"Hi, my name is\nTom", 1, 5, true, L"Hi, \n..." },
362 { L"Hi, my name is\nTom", 2, 5, true, L"Hi, \nmy na\n..." },
363 { L"Hi, my name is\nTom", 3, 5, true, L"Hi, \nmy na\nme \n..." },
364 { L"Hi, my name is\nTom", 4, 5, true, L"Hi, \nmy na\nme \nis\n..." },
365 { L"Hi, my name is\nTom", 5, 5, false, L"Hi, \nmy na\nme \nis\nTom" },
366 { L"Hi, my name is\nTom", 1, 6, true, L"Hi, \n..." },
367 { L"Hi, my name is\nTom", 2, 6, true, L"Hi, \nmy \n..." },
368 { L"Hi, my name is\nTom", 3, 6, true, L"Hi, \nmy \nname \n..." },
369 { L"Hi, my name is\nTom", 4, 6, true, L"Hi, \nmy \nname \nis\n..." },
370 { L"Hi, my name is\nTom", 5, 6, false, L"Hi, \nmy \nname \nis\nTom" },
371 { L"Hi, my name is\nTom", 1, 7, true, L"Hi, \n..." },
372 { L"Hi, my name is\nTom", 2, 7, true, L"Hi, \nmy \n..." },
373 { L"Hi, my name is\nTom", 3, 7, true, L"Hi, \nmy \nname \n..." },
374 { L"Hi, my name is\nTom", 4, 7, true, L"Hi, \nmy \nname \nis\n..." },
375 { L"Hi, my name is\nTom", 5, 7, false, L"Hi, \nmy \nname \nis\nTom" },
376 { L"Hi, my name is\nTom", 1, 8, true, L"Hi, my \n..." },
377 { L"Hi, my name is\nTom", 2, 8, true, L"Hi, my \nname \n..." },
378 { L"Hi, my name is\nTom", 3, 8, true, L"Hi, my \nname \nis\n..." },
379 { L"Hi, my name is\nTom", 4, 8, false, L"Hi, my \nname \nis\nTom" },
380 { L"Hi, my name is\nTom", 1, 9, true, L"Hi, my \n..." },
381 { L"Hi, my name is\nTom", 2, 9, true, L"Hi, my \nname is\n..." },
382 { L"Hi, my name is\nTom", 3, 9, false, L"Hi, my \nname is\nTom" },
383 { L"Hi, my name is\nTom", 1, 10, true, L"Hi, my \n..." },
384 { L"Hi, my name is\nTom", 2, 10, true, L"Hi, my \nname is\n..." },
385 { L"Hi, my name is\nTom", 3, 10, false, L"Hi, my \nname is\nTom" },
386 { L"Hi, my name is\nTom", 1, 11, true, L"Hi, my \n..." },
387 { L"Hi, my name is\nTom", 2, 11, true, L"Hi, my \nname is\n..." },
388 { L"Hi, my name is\nTom", 3, 11, false, L"Hi, my \nname is\nTom" },
389 { L"Hi, my name is\nTom", 1, 12, true, L"Hi, my \n..." },
390 { L"Hi, my name is\nTom", 2, 12, true, L"Hi, my \nname is\n..." },
391 { L"Hi, my name is\nTom", 3, 12, false, L"Hi, my \nname is\nTom" },
392 { L"Hi, my name is\nTom", 1, 13, true, L"Hi, my name \n..." },
393 { L"Hi, my name is\nTom", 2, 13, true, L"Hi, my name \nis\n..." },
394 { L"Hi, my name is\nTom", 3, 13, false, L"Hi, my name \nis\nTom" },
395 { L"Hi, my name is\nTom", 1, 20, true, L"Hi, my name is\n..." },
396 { L"Hi, my name is\nTom", 2, 20, false, L"Hi, my name is\nTom" },
397 { L"Hi, my name is Tom", 1, 40, false, L"Hi, my name is Tom" },
Evan Martin 2010/12/21 23:39:18 Awesome test suite!
398 };
399 string16 output;
400 for (size_t i = 0; i < ARRAYSIZE_UNSAFE(cases); ++i) {
401 EXPECT_EQ(cases[i].result,
402 gfx::ElideRectangleString(WideToUTF16(cases[i].input),
403 cases[i].max_rows, cases[i].max_cols,
404 &output));
405 EXPECT_EQ(cases[i].output, UTF16ToWide(output));
406 }
407 }
408
409 TEST(TextEliderTest, ElideRectangleWide16) {
410 // Two greek words separated by space.
411 const string16 str(WideToUTF16(
412 L"\x03a0\x03b1\x03b3\x03ba\x03cc\x03c3\x03bc\x03b9"
413 L"\x03bf\x03c2\x0020\x0399\x03c3\x03c4\x03cc\x03c2"));
414 const string16 out1(WideToUTF16(
415 L"\x03a0\x03b1\x03b3\x03ba\n"
416 L"\x03cc\x03c3\x03bc\x03b9\n"
417 L"..."));
418 const string16 out2(WideToUTF16(
419 L"\x03a0\x03b1\x03b3\x03ba\x03cc\x03c3\x03bc\x03b9\x03bf\x03c2\x0020\n"
420 L"\x0399\x03c3\x03c4\x03cc\x03c2"));
421 string16 output;
422 EXPECT_TRUE(gfx::ElideRectangleString(str, 2, 4, &output));
423 EXPECT_EQ(out1, output);
424 EXPECT_FALSE(gfx::ElideRectangleString(str, 2, 12, &output));
425 EXPECT_EQ(out2, output);
426 }
427
428 TEST(TextEliderTest, ElideRectangleWide32) {
429 // Four U+1D49C MATHEMATICAL SCRIPT CAPITAL A followed by space "aaaaa".
430 const string16 str(UTF8ToUTF16(
431 "\xF0\x9D\x92\x9C\xF0\x9D\x92\x9C\xF0\x9D\x92\x9C\xF0\x9D\x92\x9C"
432 " aaaaa"));
433 const string16 out(UTF8ToUTF16(
434 "\xF0\x9D\x92\x9C\xF0\x9D\x92\x9C\xF0\x9D\x92\x9C\n"
435 "\xF0\x9D\x92\x9C \naaa\n..."));
436 string16 output;
437 EXPECT_TRUE(gfx::ElideRectangleString(str, 3, 3, &output));
438 EXPECT_EQ(out, output);
439 }
440
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698