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 |