def test_nonSurrogate(self): converter = WideStringOffsetConverter(text="abc") self.assertEqual(converter.wideStringLength, 3) self.assertEqual(converter.strToWideOffsets(0, 0), (0, 0)) self.assertEqual(converter.strToWideOffsets(0, 1), (0, 1)) self.assertEqual(converter.strToWideOffsets(0, 2), (0, 2)) self.assertEqual(converter.strToWideOffsets(0, 3), (0, 3)) self.assertEqual(converter.strToWideOffsets(1, 1), (1, 1)) self.assertEqual(converter.strToWideOffsets(1, 2), (1, 2)) self.assertEqual(converter.strToWideOffsets(1, 3), (1, 3)) self.assertEqual(converter.strToWideOffsets(2, 2), (2, 2)) self.assertEqual(converter.strToWideOffsets(2, 3), (2, 3)) self.assertEqual(converter.strToWideOffsets(3, 3), (3, 3))
def test_mixedSurrogatePairsAndNonSurrogates(self): converter = WideStringOffsetConverter(text=u"a" + FACE_PALM + u"b") # a🤦b self.assertEqual(converter.wideStringLength, 4) self.assertEqual(converter.strToWideOffsets(0, 0), (0, 0)) self.assertEqual(converter.strToWideOffsets(0, 1), (0, 1)) self.assertEqual(converter.strToWideOffsets(0, 2), (0, 3)) self.assertEqual(converter.strToWideOffsets(0, 3), (0, 4)) self.assertEqual(converter.strToWideOffsets(1, 1), (1, 1)) self.assertEqual(converter.strToWideOffsets(1, 2), (1, 3)) self.assertEqual(converter.strToWideOffsets(1, 3), (1, 4)) self.assertEqual(converter.strToWideOffsets(2, 2), (3, 3)) self.assertEqual(converter.strToWideOffsets(2, 3), (3, 4)) self.assertEqual(converter.strToWideOffsets(3, 3), (4, 4))
def test_surrogatePairs(self): converter = WideStringOffsetConverter(text=FACE_PALM + SMILE + THUMBS_UP) self.assertEqual(converter.wideStringLength, 6) self.assertEqual(converter.strToWideOffsets(0, 0), (0, 0)) self.assertEqual(converter.strToWideOffsets(0, 1), (0, 2)) self.assertEqual(converter.strToWideOffsets(0, 2), (0, 4)) self.assertEqual(converter.strToWideOffsets(0, 3), (0, 6)) self.assertEqual(converter.strToWideOffsets(1, 1), (2, 2)) self.assertEqual(converter.strToWideOffsets(1, 2), (2, 4)) self.assertEqual(converter.strToWideOffsets(1, 3), (2, 6)) self.assertEqual(converter.strToWideOffsets(2, 2), (4, 4)) self.assertEqual(converter.strToWideOffsets(2, 3), (4, 6)) self.assertEqual(converter.strToWideOffsets(3, 3), (6, 6))
def test_strToWideOffsets(self): converter = WideStringOffsetConverter(text="abc") self.assertEqual(converter.wideStringLength, 3) self.assertEqual(converter.strToWideOffsets(-1, 0, raiseOnError=False), (0, 0)) self.assertEqual(converter.strToWideOffsets(0, 4, raiseOnError=False), (0, 3)) self.assertRaises(IndexError, converter.strToWideOffsets, -1, 0, raiseOnError=True) self.assertRaises(IndexError, converter.strToWideOffsets, 0, 4, raiseOnError=True) self.assertRaises(ValueError, converter.strToWideOffsets, 1, 0)
def test_mixedSurrogatePairsNonSurrogatesAndSingleSurrogates(self): """ Tests surrogate pairs, non surrogates as well as single surrogate characters (i.e. incomplete pairs) """ converter = WideStringOffsetConverter(text=u"a" + u"\ud83e" + FACE_PALM + u"\udd26" + u"b") self.assertEqual(converter.wideStringLength, 6) self.assertEqual(converter.strToWideOffsets(0, 0), (0, 0)) self.assertEqual(converter.strToWideOffsets(0, 1), (0, 1)) self.assertEqual(converter.strToWideOffsets(0, 2), (0, 2)) self.assertEqual(converter.strToWideOffsets(0, 3), (0, 4)) self.assertEqual(converter.strToWideOffsets(0, 4), (0, 5)) self.assertEqual(converter.strToWideOffsets(0, 5), (0, 6)) self.assertEqual(converter.strToWideOffsets(1, 1), (1, 1)) self.assertEqual(converter.strToWideOffsets(1, 2), (1, 2)) self.assertEqual(converter.strToWideOffsets(1, 3), (1, 4)) self.assertEqual(converter.strToWideOffsets(1, 4), (1, 5)) self.assertEqual(converter.strToWideOffsets(1, 5), (1, 6)) self.assertEqual(converter.strToWideOffsets(2, 2), (2, 2)) self.assertEqual(converter.strToWideOffsets(2, 3), (2, 4)) self.assertEqual(converter.strToWideOffsets(2, 4), (2, 5)) self.assertEqual(converter.strToWideOffsets(2, 5), (2, 6)) self.assertEqual(converter.strToWideOffsets(3, 3), (4, 4)) self.assertEqual(converter.strToWideOffsets(3, 4), (4, 5)) self.assertEqual(converter.strToWideOffsets(3, 5), (4, 6)) self.assertEqual(converter.strToWideOffsets(4, 4), (5, 5)) self.assertEqual(converter.strToWideOffsets(4, 5), (5, 6)) self.assertEqual(converter.strToWideOffsets(5, 5), (6, 6))