| 720 | } |
| 721 | |
| 722 | void TestCollapseBuffer() { |
| 723 | TUtf16String s; |
| 724 | s.append(ws, Y_ARRAY_SIZE(ws)).append(3, 'a').append(ws, Y_ARRAY_SIZE(ws)).append(3, 'b').append(ws, Y_ARRAY_SIZE(ws)); |
| 725 | size_t n = Collapse(s.begin(), s.size()); |
| 726 | s.resize(n); |
| 727 | UNIT_ASSERT(s == ASCIIToWide(" aaa bbb ")); |
| 728 | |
| 729 | s = ASCIIToWide(" a b c "); |
| 730 | n = Collapse(s.begin(), s.size()); |
| 731 | UNIT_ASSERT(n == s.size()); // length was not changed |
| 732 | UNIT_ASSERT(s == ASCIIToWide(" a b c ")); |
| 733 | |
| 734 | s = ASCIIToWide(" 123 456 "); |
| 735 | n = Collapse(s.begin(), s.size()); |
| 736 | s.resize(n); |
| 737 | UNIT_ASSERT(s == ASCIIToWide(" 123 456 ")); |
| 738 | |
| 739 | s = ASCIIToWide(" 1\n\n\n23\t 4\f\f56 "); |
| 740 | n = Collapse(s.begin(), s.size()); |
| 741 | s.resize(n); |
| 742 | UNIT_ASSERT(s == ASCIIToWide(" 1 23 4 56 ")); |
| 743 | |
| 744 | s = ASCIIToWide(" 1\n\n\n\f\f56 "); |
| 745 | n = Collapse(s.begin(), s.size()); |
| 746 | s.resize(n); |
| 747 | UNIT_ASSERT(s == ASCIIToWide(" 1 56 ")); |
| 748 | |
| 749 | s = ASCIIToWide(" 1\r\n,\n(\n23\t 4\f\f56 "); |
| 750 | n = Collapse(s.begin(), s.size()); |
| 751 | s.resize(n); |
| 752 | UNIT_ASSERT(s == ASCIIToWide(" 1 , ( 23 4 56 ")); |
| 753 | |
| 754 | s = ASCIIToWide("1 23 "); |
| 755 | n = Collapse(s.begin(), s.size()); |
| 756 | s.resize(n); |
| 757 | UNIT_ASSERT(s == ASCIIToWide("1 23 ")); |
| 758 | |
| 759 | s = ASCIIToWide(" "); |
| 760 | n = Collapse(s.begin(), s.size()); |
| 761 | UNIT_ASSERT(n == 1); |
| 762 | UNIT_ASSERT(s == ASCIIToWide(" ")); |
| 763 | |
| 764 | s = ASCIIToWide(" "); |
| 765 | n = Collapse(s.begin(), s.size()); |
| 766 | s.resize(n); |
| 767 | UNIT_ASSERT(s == ASCIIToWide(" ")); |
| 768 | |
| 769 | s = ASCIIToWide(",\r\n\""); |
| 770 | n = Collapse(s.begin(), s.size()); |
| 771 | s.resize(n); |
| 772 | UNIT_ASSERT(s == ASCIIToWide(", \"")); |
| 773 | |
| 774 | s = ASCIIToWide("-"); |
| 775 | n = Collapse(s.begin(), s.size()); |
| 776 | UNIT_ASSERT(n == 1); |
| 777 | UNIT_ASSERT(s == ASCIIToWide("-")); |
| 778 | |
| 779 | s = ASCIIToWide("\t"); |