public void Rgi絵文字シーケンス全体をGetEmojiSequenceLengthにかける()
 {
     foreach (var s in Data.RgiEmojiSequenceList)
     {
         var(type, length) = GraphemeBreak.GetEmojiSequence(s);
         Assert.Equal(s.Length, length);
         Assert.NotEqual(EmojiSequenceType.NotEmoji, type);
     }
 }
        public void Rgi絵文字シーケンスの前後にAsciiを挟んでからGetEmojiSequenceLengthにかける()
        {
            const string NonEmoji = "abc";

            foreach (var s in Data.RgiEmojiSequenceList)
            {
                var           s2 = NonEmoji + s + NonEmoji;
                EmojiSequence emoji;

                var span = s2.AsSpan();

                // 非絵文字部分、常に0が返ってきて1文字進めればいいはず。
                for (int i = 0; i < NonEmoji.Length; i++)
                {
                    emoji = GraphemeBreak.GetEmojiSequence(span);
                    Assert.Equal(EmojiSequenceType.NotEmoji, emoji.Type);
                    span = span.Slice(emoji.LengthInUtf16);
                }

                // 絵文字部分、元の文字列と同じはず。
                emoji = GraphemeBreak.GetEmojiSequence(span);
                Assert.NotEqual(EmojiSequenceType.NotEmoji, emoji.Type);
                Assert.Equal(s.Length, emoji.LengthInUtf16);
                span = span.Slice(emoji.LengthInUtf16);

                // 非絵文字部分、常に0が返ってきて1文字進めればいいはず。
                for (int i = 0; i < NonEmoji.Length; i++)
                {
                    emoji = GraphemeBreak.GetEmojiSequence(span);
                    Assert.Equal(EmojiSequenceType.NotEmoji, emoji.Type);
                    span = span.Slice(emoji.LengthInUtf16);
                }

                // 最後まで読み切ったはず。
                Assert.Equal(0, span.Length);
            }
        }