| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "core/editing/state_machines/BackspaceStateMachine.h" | 5 #include "core/editing/state_machines/BackspaceStateMachine.h" |
| 6 | 6 |
| 7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
| 8 #include "wtf/text/Unicode.h" | 8 #include "wtf/text/Unicode.h" |
| 9 | 9 |
| 10 namespace blink { | 10 namespace blink { |
| (...skipping 746 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 757 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); | 757 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); |
| 758 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(vs16)); | 758 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(vs16)); |
| 759 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(heart)); | 759 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(heart)); |
| 760 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); | 760 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); |
| 761 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manTrail)); | 761 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manTrail)); |
| 762 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manLead)); | 762 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manLead)); |
| 763 EXPECT_EQ(kFinished, machine.feedPrecedingCodeUnit(other)); | 763 EXPECT_EQ(kFinished, machine.feedPrecedingCodeUnit(other)); |
| 764 EXPECT_EQ(-8, machine.finalizeAndGetBoundaryOffset()); | 764 EXPECT_EQ(-8, machine.finalizeAndGetBoundaryOffset()); |
| 765 EXPECT_EQ(-8, machine.finalizeAndGetBoundaryOffset()); | 765 EXPECT_EQ(-8, machine.finalizeAndGetBoundaryOffset()); |
| 766 | 766 |
| 767 // others(surrogate pairs) + ZWJ_EMOJI + ZWJ + ZWJ_EMOJI + VS + ZWJ + ZWJ_EMOJ
I | 767 // others(surrogate pairs) + ZWJ_EMOJI + ZWJ + ZWJ_EMOJI + VS + ZWJ + |
| 768 // ZWJ_EMOJI |
| 768 // As an example, use MAN + ZWJ + heart + vs16 + ZWJ + MAN | 769 // As an example, use MAN + ZWJ + heart + vs16 + ZWJ + MAN |
| 769 machine.reset(); | 770 machine.reset(); |
| 770 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manTrail)); | 771 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manTrail)); |
| 771 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manLead)); | 772 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manLead)); |
| 772 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); | 773 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); |
| 773 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(vs16)); | 774 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(vs16)); |
| 774 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(heart)); | 775 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(heart)); |
| 775 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); | 776 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); |
| 776 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manTrail)); | 777 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manTrail)); |
| 777 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manLead)); | 778 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manLead)); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 805 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); | 806 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); |
| 806 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manTrail)); | 807 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manTrail)); |
| 807 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manLead)); | 808 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manLead)); |
| 808 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); | 809 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); |
| 809 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manTrail)); | 810 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manTrail)); |
| 810 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manLead)); | 811 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manLead)); |
| 811 EXPECT_EQ(kFinished, machine.feedPrecedingCodeUnit(other)); | 812 EXPECT_EQ(kFinished, machine.feedPrecedingCodeUnit(other)); |
| 812 EXPECT_EQ(-11, machine.finalizeAndGetBoundaryOffset()); | 813 EXPECT_EQ(-11, machine.finalizeAndGetBoundaryOffset()); |
| 813 EXPECT_EQ(-11, machine.finalizeAndGetBoundaryOffset()); | 814 EXPECT_EQ(-11, machine.finalizeAndGetBoundaryOffset()); |
| 814 | 815 |
| 815 // others(surrogate pairs) + ZWJ_EMOJI + ZWJ + ZWJ_EMOJI + ZWJ + ZWJ_EMOJI + Z
WJ + ZWJ_EMOJI | 816 // others(surrogate pairs) + ZWJ_EMOJI + ZWJ + ZWJ_EMOJI + ZWJ + ZWJ_EMOJI + |
| 817 // ZWJ + ZWJ_EMOJI |
| 816 // As an example, use MAN + ZWJ + MAN + ZWJ + boy + ZWJ + BOY | 818 // As an example, use MAN + ZWJ + MAN + ZWJ + boy + ZWJ + BOY |
| 817 machine.reset(); | 819 machine.reset(); |
| 818 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(boyTrail)); | 820 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(boyTrail)); |
| 819 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(boyLead)); | 821 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(boyLead)); |
| 820 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); | 822 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); |
| 821 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(boyTrail)); | 823 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(boyTrail)); |
| 822 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(boyLead)); | 824 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(boyLead)); |
| 823 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); | 825 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); |
| 824 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manTrail)); | 826 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manTrail)); |
| 825 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manLead)); | 827 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manLead)); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 841 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(boyLead)); | 843 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(boyLead)); |
| 842 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); | 844 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); |
| 843 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manTrail)); | 845 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manTrail)); |
| 844 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manLead)); | 846 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manLead)); |
| 845 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); | 847 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); |
| 846 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manTrail)); | 848 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manTrail)); |
| 847 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manLead)); | 849 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manLead)); |
| 848 EXPECT_EQ(-11, machine.finalizeAndGetBoundaryOffset()); | 850 EXPECT_EQ(-11, machine.finalizeAndGetBoundaryOffset()); |
| 849 EXPECT_EQ(-11, machine.finalizeAndGetBoundaryOffset()); | 851 EXPECT_EQ(-11, machine.finalizeAndGetBoundaryOffset()); |
| 850 | 852 |
| 851 // others + ZWJ_EMOJI + ZWJ + ZWJ_EMOJI + VS + ZWJ + ZWJ_EMOJI + ZWJ + ZWJ_EMO
JI | 853 // others + ZWJ_EMOJI + ZWJ + ZWJ_EMOJI + VS + ZWJ + ZWJ_EMOJI + ZWJ + |
| 854 // ZWJ_EMOJI |
| 852 // As an example, use MAN + ZWJ + heart + VS + ZWJ + KISS + ZWJ + MAN | 855 // As an example, use MAN + ZWJ + heart + VS + ZWJ + KISS + ZWJ + MAN |
| 853 machine.reset(); | 856 machine.reset(); |
| 854 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manTrail)); | 857 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manTrail)); |
| 855 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manLead)); | 858 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manLead)); |
| 856 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); | 859 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); |
| 857 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(killTrail)); | 860 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(killTrail)); |
| 858 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(kissLead)); | 861 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(kissLead)); |
| 859 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); | 862 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); |
| 860 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(vs16)); | 863 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(vs16)); |
| 861 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(heart)); | 864 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(heart)); |
| 862 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); | 865 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); |
| 863 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manTrail)); | 866 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manTrail)); |
| 864 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manLead)); | 867 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manLead)); |
| 865 EXPECT_EQ(kFinished, machine.feedPrecedingCodeUnit(other)); | 868 EXPECT_EQ(kFinished, machine.feedPrecedingCodeUnit(other)); |
| 866 EXPECT_EQ(-11, machine.finalizeAndGetBoundaryOffset()); | 869 EXPECT_EQ(-11, machine.finalizeAndGetBoundaryOffset()); |
| 867 EXPECT_EQ(-11, machine.finalizeAndGetBoundaryOffset()); | 870 EXPECT_EQ(-11, machine.finalizeAndGetBoundaryOffset()); |
| 868 | 871 |
| 869 // others(surrogate pairs) + ZWJ_EMOJI + ZWJ + ZWJ_EMOJI + VS + ZWJ + ZWJ_EMOJ
I + ZWJ + ZWJ_EMOJI | 872 // others(surrogate pairs) + ZWJ_EMOJI + ZWJ + ZWJ_EMOJI + VS + ZWJ + |
| 873 // ZWJ_EMOJI + ZWJ + ZWJ_EMOJI |
| 870 // As an example, use MAN + ZWJ + heart + VS + ZWJ + KISS + ZWJ + MAN | 874 // As an example, use MAN + ZWJ + heart + VS + ZWJ + KISS + ZWJ + MAN |
| 871 machine.reset(); | 875 machine.reset(); |
| 872 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manTrail)); | 876 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manTrail)); |
| 873 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manLead)); | 877 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(manLead)); |
| 874 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); | 878 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); |
| 875 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(killTrail)); | 879 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(killTrail)); |
| 876 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(kissLead)); | 880 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(kissLead)); |
| 877 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); | 881 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(zwj)); |
| 878 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(vs16)); | 882 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(vs16)); |
| 879 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(heart)); | 883 EXPECT_EQ(kNeedMoreCodeUnit, machine.feedPrecedingCodeUnit(heart)); |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 971 EXPECT_EQ(-2, machine.finalizeAndGetBoundaryOffset()); | 975 EXPECT_EQ(-2, machine.finalizeAndGetBoundaryOffset()); |
| 972 | 976 |
| 973 // Followings are edge case. | 977 // Followings are edge case. |
| 974 // It is hard to list all edge case patterns. Check only over deleting by ZWJ. | 978 // It is hard to list all edge case patterns. Check only over deleting by ZWJ. |
| 975 // any + ZWJ: should delete only last ZWJ. | 979 // any + ZWJ: should delete only last ZWJ. |
| 976 machine.reset(); | 980 machine.reset(); |
| 977 EXPECT_EQ(kFinished, machine.feedPrecedingCodeUnit(zwj)); | 981 EXPECT_EQ(kFinished, machine.feedPrecedingCodeUnit(zwj)); |
| 978 EXPECT_EQ(-1, machine.finalizeAndGetBoundaryOffset()); | 982 EXPECT_EQ(-1, machine.finalizeAndGetBoundaryOffset()); |
| 979 } | 983 } |
| 980 } // namespace blink | 984 } // namespace blink |
| OLD | NEW |