@@ -1182,17 +1182,6 @@ def test_linebreak_7643(self):
11821182 self .assertEqual (len (lines ), 1 ,
11831183 r"%a should not be a linebreak" % c )
11841184
1185- def test_segment_object (self ):
1186- segments = list (unicodedata .iter_graphemes ('spa\u0300 m' ))
1187- self .assertEqual (len (segments ), 4 , segments )
1188- segment = segments [2 ]
1189- self .assertEqual (segment .start , 2 )
1190- self .assertEqual (segment .end , 4 )
1191- self .assertEqual (str (segment ), 'a\u0300 ' )
1192- self .assertEqual (repr (segment ), '<Segment 2:4>' )
1193- self .assertRaises (TypeError , iter , segment )
1194- self .assertRaises (TypeError , len , segment )
1195-
11961185
11971186class NormalizationTest (unittest .TestCase ):
11981187 @staticmethod
@@ -1384,6 +1373,18 @@ def test_segment_object(self):
13841373 self .assertEqual (segment .start , 2 )
13851374 self .assertEqual (segment .end , 4 )
13861375 self .assertEqual (str (segment ), 'a\u0300 ' )
1376+ self .assertEqual (repr (segment ), '<Segment 2:4>' )
1377+ self .assertRaises (TypeError , iter , segment )
1378+ self .assertRaises (TypeError , len , segment )
1379+
1380+ def test_grapheme_break_fsm_edges (self ):
1381+ graphemes = self ._graphemes
1382+ # ExtPict followed by non-Extend/non-ZWJ resets the EP FSM
1383+ self .assertEqual (graphemes ('\u2764 b' ), ['\u2764 ' , 'b' ])
1384+ # Consonant followed by InCB Extend (not Linker) stays in Started
1385+ self .assertEqual (graphemes ('\u0915 \u0951 ' ), ['\u0915 \u0951 ' ])
1386+ # Consonant followed by InCB None resets InCB FSM
1387+ self .assertEqual (graphemes ('\u0915 b' ), ['\u0915 ' , 'b' ])
13871388
13881389 def _graphemes (self , * args ):
13891390 return list (map (str , self .iter_graphemes (* args )))
0 commit comments