@@ -95,23 +95,80 @@ mod tests {
95
95
96
96
#[ test]
97
97
fn insert_multibyte_start ( ) {
98
- let mut test = TextState :: new ( ) . with_value ( "ää " ) ;
98
+ let mut test = TextState :: new ( ) . with_value ( "äë " ) ;
99
99
test. move_start ( ) ;
100
- test. push ( 'Ö' ) ;
101
- assert_eq ! ( test. value( ) , "Öää" ) ;
100
+ test. push ( 'Ï' ) ;
101
+ assert_eq ! ( test. value( ) , "Ïäë" ) ;
102
+ assert_eq ! ( test. position( ) , 1 ) ;
102
103
}
103
104
#[ test]
104
105
fn insert_multibyte_middle ( ) {
105
- let mut test = TextState :: new ( ) . with_value ( "ää " ) ;
106
+ let mut test = TextState :: new ( ) . with_value ( "äë " ) ;
106
107
test. move_right ( ) ;
107
- test. push ( 'Ö' ) ;
108
- assert_eq ! ( test. value( ) , "äÖä" ) ;
108
+ test. push ( 'Ï' ) ;
109
+ assert_eq ! ( test. value( ) , "äÏë" ) ;
110
+ assert_eq ! ( test. position( ) , 2 ) ;
109
111
}
110
112
#[ test]
111
113
fn insert_multibyte_end ( ) {
112
- let mut test = TextState :: new ( ) . with_value ( "ää " ) ;
114
+ let mut test = TextState :: new ( ) . with_value ( "äë " ) ;
113
115
test. move_end ( ) ;
114
- test. push ( 'Ö' ) ;
115
- assert_eq ! ( test. value( ) , "ääÖ" ) ;
116
+ test. push ( 'Ï' ) ;
117
+ assert_eq ! ( test. value( ) , "äëÏ" ) ;
118
+ assert_eq ! ( test. position( ) , 3 ) ;
119
+ }
120
+
121
+ #[ test]
122
+ fn delete_multibyte_start ( ) {
123
+ let mut test = TextState :: new ( ) . with_value ( "äë" ) ;
124
+ test. move_start ( ) ;
125
+ test. delete ( ) ;
126
+ assert_eq ! ( test. value( ) , "ë" ) ;
127
+ assert_eq ! ( test. position( ) , 0 ) ;
128
+ }
129
+
130
+ #[ test]
131
+ fn delete_multibyte_middle ( ) {
132
+ let mut test = TextState :: new ( ) . with_value ( "äë" ) ;
133
+ test. move_right ( ) ;
134
+ test. delete ( ) ;
135
+ assert_eq ! ( test. value( ) , "ä" ) ;
136
+ assert_eq ! ( test. position( ) , 1 ) ;
137
+ }
138
+
139
+ #[ test]
140
+ fn delete_multibyte_end ( ) {
141
+ let mut test = TextState :: new ( ) . with_value ( "äë" ) ;
142
+ test. move_end ( ) ;
143
+ test. delete ( ) ;
144
+ assert_eq ! ( test. value( ) , "äë" ) ;
145
+ assert_eq ! ( test. position( ) , 2 ) ;
146
+ }
147
+
148
+ #[ test]
149
+ fn backspace_multibyte_start ( ) {
150
+ let mut test = TextState :: new ( ) . with_value ( "äë" ) ;
151
+ test. move_start ( ) ;
152
+ test. backspace ( ) ;
153
+ assert_eq ! ( test. value( ) , "äë" ) ;
154
+ assert_eq ! ( test. position( ) , 0 ) ;
155
+ }
156
+
157
+ #[ test]
158
+ fn backspace_multibyte_middle ( ) {
159
+ let mut test = TextState :: new ( ) . with_value ( "äë" ) ;
160
+ test. move_right ( ) ;
161
+ test. backspace ( ) ;
162
+ assert_eq ! ( test. value( ) , "ë" ) ;
163
+ assert_eq ! ( test. position( ) , 0 ) ;
164
+ }
165
+
166
+ #[ test]
167
+ fn backspace_multibyte_end ( ) {
168
+ let mut test = TextState :: new ( ) . with_value ( "äë" ) ;
169
+ test. move_end ( ) ;
170
+ test. backspace ( ) ;
171
+ assert_eq ! ( test. value( ) , "ä" ) ;
172
+ assert_eq ! ( test. position( ) , 1 ) ;
116
173
}
117
174
}
0 commit comments