@@ -486,3 +486,34 @@ def test_word_at_position():
486486 )
487487 == "unicode."
488488 )
489+
490+
491+ def test_position_at_offset_utf16 ():
492+ doc = TextDocument (DOC_URI , DOC )
493+ assert doc .client_position_at_offset (8 ) == types .Position (line = 0 , character = 8 )
494+ assert doc .client_position_at_offset (12 ) == types .Position (line = 1 , character = 3 )
495+ assert doc .client_position_at_offset (13 ) == types .Position (line = 2 , character = 0 )
496+ assert doc .client_position_at_offset (17 ) == types .Position (line = 2 , character = 4 )
497+ assert doc .client_position_at_offset (27 ) == types .Position (line = 3 , character = 6 )
498+ assert doc .client_position_at_offset (28 ) == types .Position (line = 3 , character = 8 )
499+ assert doc .client_position_at_offset (40 ) == types .Position (line = 4 , character = 0 )
500+
501+
502+ def test_position_at_offset_utf32 ():
503+ doc = TextDocument (
504+ DOC_URI ,
505+ DOC ,
506+ position_codec = PositionCodec (encoding = types .PositionEncodingKind .Utf32 ),
507+ )
508+ assert doc .client_position_at_offset (8 ) == types .Position (line = 0 , character = 8 )
509+ assert doc .client_position_at_offset (39 ) == types .Position (line = 4 , character = 0 )
510+
511+
512+ def test_position_at_offset_utf8 ():
513+ doc = TextDocument (
514+ DOC_URI ,
515+ DOC ,
516+ position_codec = PositionCodec (encoding = types .PositionEncodingKind .Utf8 ),
517+ )
518+ assert doc .client_position_at_offset (8 ) == types .Position (line = 0 , character = 8 )
519+ assert doc .client_position_at_offset (41 ) == types .Position (line = 4 , character = 0 )
0 commit comments