public static IEnumerable <object[]> GetBreakTestCases() { return(new[] { GenerateTestCases("Pln Text"), GenerateTestCases("AB జోCD"), GenerateTestCases("Abజో Tt"), GenerateTestCases("Ab జో Tt"), }.SelectMany(it => it)); IEnumerable <object[]> GenerateTestCases(string testString) { var graphemes = GraphemeHelper.GetGraphemes(testString).ToArray(); for (int i = 0; i < graphemes.Length; i++) { var left = string.Join("", graphemes.Take(i)); var right = string.Join("", graphemes.Skip(i)); yield return(new object[] { left + right, i, left, right }); } } }
public void VerifyGraphemeHelperLength(int index, int expectedLength) { var text = "a\u0304\u0308bc\u0327"; int length = GraphemeHelper.GetGraphemeLength(text, index); DidYouKnow.That(length).Should().Be(expectedLength); }
public static IEnumerable <object[]> DeleteCharacterTestCases() { string text = "TheజోWord"; var graphemes = GraphemeHelper.GetGraphemes(text).ToArray(); // we start at 0 and go up to length (but not including) because we're deleting the next // character. for (int i = 0; i < graphemes.Length; i++) { var deleteIndex = i; var expected = string.Join("", graphemes.Where((_, index) => index != deleteIndex)); yield return(new object[] { text, deleteIndex, expected }); } }