Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 0 additions & 6 deletions CSharpMath.CoreTests/MathListTest.cs
Original file line number Diff line number Diff line change
Expand Up @@ -30,12 +30,6 @@ public void TestAdd() {
Assert.Equal(atom2, list[1]);
}

[Fact]
public void TestAddErrors() {
var list = new MathList();
Assert.Throws<ArgumentNullException>(() => list.Add(null!));
}

[Fact]
public void TestInsert() {
var list = new MathList();
Expand Down
105 changes: 101 additions & 4 deletions CSharpMath.Editor.Tests/KeyPressTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -227,18 +227,116 @@ public void Return(params K[] inputs) =>
[
Theory,
T(@"", K.Backspace, K.Backspace, K.Backspace, K.Backspace, K.Backspace),
T(@"2", K.Backspace, K.Backspace, K.D1, K.Backspace, K.D2),
T(@"1", K.D1, K.D2, K.Backspace),
T(@"x^2", K.SmallX, K.Power, K.D2, K.D1, K.Backspace),
T(@"y_{3_4}", K.SmallY, K.Subscript, K.D3, K.Subscript, K.Backspace, K.Backspace, K.D4, K.D5, K.Backspace),
T(@"5^■", K.D5, K.Power, K.Iota, K.Kappa, K.SmallEta, K.Backspace, K.Backspace, K.Backspace, K.Backspace),
T(@"\frac{■}{\square }", K.Fraction, K.Backspace),
T(@"5", K.D5, K.Power, K.Iota, K.Kappa, K.SmallEta, K.Backspace, K.Backspace, K.Backspace, K.Backspace),
T(@"", K.Fraction, K.Backspace),
T(@"", K.Power, K.Backspace),
T(@"", K.Subscript, K.Backspace),
T(@"", K.SquareRoot, K.Backspace),
T(@"3", K.CubeRoot, K.Backspace),
T(@"", K.NthRoot, K.Backspace),
T(@"a", K.SmallA, K.Fraction, K.Backspace),
T(@"a", K.SmallA, K.SquareRoot, K.Backspace),
T(@"a3", K.SmallA, K.CubeRoot, K.Backspace),
T(@"a", K.SmallA, K.NthRoot, K.Backspace),
T(@"a", K.SmallA, K.Power, K.Backspace),
T(@"a", K.SmallA, K.Subscript, K.Backspace),
T(@"\square ^■", K.Power, K.Subscript, K.Backspace),
T(@"\square ^■", K.Power, K.Power, K.Backspace),
T(@"\square _■", K.Subscript, K.Power, K.Backspace),
T(@"\square _■", K.Subscript, K.Subscript, K.Backspace),
T(@"y_4", K.SmallY, K.Subscript, K.D3, K.Subscript, K.Backspace, K.Backspace, K.D4, K.D5, K.Backspace),
T(@"", K.VerticalBar, K.VerticalBar, K.Backspace, K.Backspace, K.Backspace)
]
public void Backspace(string latex, params K[] inputs) => Test(latex, inputs);

[
Theory,
T(@"", K.Left, K.Left, K.Backspace, K.Backspace, K.Right, K.Right, K.Backspace, K.Backspace, K.Left),
T(@"", K.Power, K.Left, K.Backspace),
T(@"", K.Subscript, K.Left, K.Backspace),
T(@".\frac{\square }{\square }", K.Fraction, K.Left, K.Backspace, K.Decimal),
T(@".\sqrt{\square }", K.SquareRoot, K.Left, K.Backspace, K.Decimal),
T(@".\sqrt[\square ]{\square }", K.NthRoot, K.Left, K.Backspace, K.Decimal),
T(@".\left( \square \right) ", K.BothRoundBrackets, K.Left, K.Backspace, K.Decimal),
T(@".", K.Power, K.Left, K.Backspace, K.Decimal),
T(@".", K.Subscript, K.Left, K.Backspace, K.Decimal),
T(@".\frac{\square }{\square }", K.SmallA, K.Fraction, K.Left, K.Backspace, K.Decimal),
T(@".\sqrt{\square }", K.SmallA, K.SquareRoot, K.Left, K.Backspace, K.Decimal),
T(@".\sqrt[\square ]{\square }", K.SmallA, K.NthRoot, K.Left, K.Backspace, K.Decimal),
T(@".\left( \square \right) ", K.SmallA, K.BothRoundBrackets, K.Left, K.Backspace, K.Decimal),
T(@".^{\square }", K.SmallA, K.Power, K.Left, K.Backspace, K.Decimal),
T(@"._{\square }", K.SmallA, K.Subscript, K.Left, K.Backspace, K.Decimal),
T(@".", K.Fraction, K.Right, K.Backspace, K.Decimal),
T(@".", K.SquareRoot, K.Right, K.Backspace, K.Decimal),
T(@".", K.NthRoot, K.Right, K.Backspace, K.Decimal),
T(@".", K.BothRoundBrackets, K.Right, K.Backspace, K.Decimal),
T(@".", K.Power, K.Right, K.Backspace, K.Decimal),
T(@".", K.Subscript, K.Right, K.Backspace, K.Decimal),
T(@"a.", K.SmallA, K.Fraction, K.Right, K.Backspace, K.Decimal),
T(@"a.", K.SmallA, K.SquareRoot, K.Right, K.Backspace, K.Decimal),
T(@"a.", K.SmallA, K.NthRoot, K.Right, K.Backspace, K.Decimal),
T(@"a.", K.SmallA, K.BothRoundBrackets, K.Right, K.Backspace, K.Decimal),
T(@".", K.SmallA, K.Power, K.Right, K.Backspace, K.Decimal),
T(@".", K.SmallA, K.Subscript, K.Right, K.Backspace, K.Decimal),
T(@".", K.Fraction, K.Right, K.Right, K.Backspace, K.Decimal),
T(@".", K.SquareRoot, K.Right, K.Right, K.Backspace, K.Decimal),
T(@".", K.NthRoot, K.Right, K.Right, K.Backspace, K.Decimal),
T(@".", K.BothRoundBrackets, K.Right, K.Right, K.Backspace, K.Decimal),
T(@".", K.Power, K.Right, K.Right, K.Backspace, K.Decimal),
T(@".", K.Subscript, K.Right, K.Right, K.Backspace, K.Decimal),
T(@"a.", K.SmallA, K.Fraction, K.Right, K.Right, K.Backspace, K.Decimal),
T(@"a.", K.SmallA, K.SquareRoot, K.Right, K.Right, K.Backspace, K.Decimal),
T(@"a.", K.SmallA, K.NthRoot, K.Right, K.Right, K.Backspace, K.Decimal),
T(@"a.", K.SmallA, K.BothRoundBrackets, K.Right, K.Right, K.Backspace, K.Decimal),
T(@".", K.SmallA, K.Power, K.Right, K.Right, K.Backspace, K.Decimal),
T(@".", K.SmallA, K.Subscript, K.Right, K.Right, K.Backspace, K.Decimal),
T(@".bcd", K.Fraction, K.SmallB, K.SmallC, K.SmallD, K.Left, K.Left, K.Left, K.Backspace, K.Decimal),
T(@".bcd", K.SquareRoot, K.SmallB, K.SmallC, K.SmallD, K.Left, K.Left, K.Left, K.Backspace, K.Decimal),
T(@".bcd", K.NthRoot, K.SmallB, K.SmallC, K.SmallD, K.Left, K.Left, K.Left, K.Backspace, K.Decimal),
T(@".bcd", K.BothRoundBrackets, K.SmallB, K.SmallC, K.SmallD, K.Left, K.Left, K.Left, K.Backspace, K.Decimal),
T(@".bcd", K.Power, K.SmallB, K.SmallC, K.SmallD, K.Left, K.Left, K.Left, K.Backspace, K.Decimal),
T(@".bcd", K.Subscript, K.SmallB, K.SmallC, K.SmallD, K.Left, K.Left, K.Left, K.Backspace, K.Decimal),
T(@"a.bcd", K.SmallA, K.Fraction, K.SmallB, K.SmallC, K.SmallD, K.Left, K.Left, K.Left, K.Backspace, K.Decimal),
T(@"a.bcd", K.SmallA, K.SquareRoot, K.SmallB, K.SmallC, K.SmallD, K.Left, K.Left, K.Left, K.Backspace, K.Decimal),
T(@"a.bcd", K.SmallA, K.NthRoot, K.SmallB, K.SmallC, K.SmallD, K.Left, K.Left, K.Left, K.Backspace, K.Decimal),
T(@"a.bcd", K.SmallA, K.BothRoundBrackets, K.SmallB, K.SmallC, K.SmallD, K.Left, K.Left, K.Left, K.Backspace, K.Decimal),
T(@"a.bcd", K.SmallA, K.Power, K.SmallB, K.SmallC, K.SmallD, K.Left, K.Left, K.Left, K.Backspace, K.Decimal),
T(@"a.bcd", K.SmallA, K.Subscript, K.SmallB, K.SmallC, K.SmallD, K.Left, K.Left, K.Left, K.Backspace, K.Decimal),
T(@"bcd.", K.Fraction, K.SmallB, K.SmallC, K.SmallD, K.Right, K.Backspace, K.Decimal),
T(@"bcd.", K.NthRoot, K.SmallB, K.SmallC, K.SmallD, K.Right, K.Backspace, K.Decimal),
T(@"abcd.", K.SmallA, K.Fraction, K.SmallB, K.SmallC, K.SmallD, K.Right, K.Backspace, K.Decimal),
T(@"abcd.", K.SmallA, K.NthRoot, K.SmallB, K.SmallC, K.SmallD, K.Right, K.Backspace, K.Decimal),
T(@"bcd.", K.Fraction, K.Right, K.SmallB, K.SmallC, K.SmallD, K.Left, K.Left, K.Left, K.Backspace, K.Decimal),
T(@"bcd.", K.NthRoot, K.Right, K.SmallB, K.SmallC, K.SmallD, K.Left, K.Left, K.Left, K.Backspace, K.Decimal),
T(@"abcd.", K.SmallA, K.Fraction, K.Right, K.SmallB, K.SmallC, K.SmallD, K.Left, K.Left, K.Left, K.Backspace, K.Decimal),
T(@"abcd.", K.SmallA, K.NthRoot, K.Right, K.SmallB, K.SmallC, K.SmallD, K.Left, K.Left, K.Left, K.Backspace, K.Decimal),
T(@"bcd.efg", K.Fraction, K.SmallB, K.SmallC, K.SmallD, K.Right, K.SmallE, K.SmallF, K.SmallG, K.Left, K.Left, K.Left, K.Backspace, K.Decimal),
T(@"bcd.efg", K.NthRoot, K.SmallB, K.SmallC, K.SmallD, K.Right, K.SmallE, K.SmallF, K.SmallG, K.Left, K.Left, K.Left, K.Backspace, K.Decimal),
T(@"abcd.efg", K.SmallA, K.Fraction, K.SmallB, K.SmallC, K.SmallD, K.Right, K.SmallE, K.SmallF, K.SmallG, K.Left, K.Left, K.Left, K.Backspace, K.Decimal),
T(@"abcd.efg", K.SmallA, K.NthRoot, K.SmallB, K.SmallC, K.SmallD, K.Right, K.SmallE, K.SmallF, K.SmallG, K.Left, K.Left, K.Left, K.Backspace, K.Decimal),
T(@".456", K.Subscript, K.D4, K.D5, K.D6, K.Left, K.Left, K.Left, K.Left, K.Backspace, K.Decimal),
T(@".789", K.Power, K.D7, K.D8, K.D9, K.Left, K.Left, K.Left, K.Left, K.Backspace, K.Decimal),
T(@".456789", K.Subscript, K.D4, K.D5, K.D6, K.Right, K.Power, K.D7, K.D8, K.D9, K.Left, K.Left, K.Left, K.Left, K.Left, K.Left, K.Left, K.Left, K.Backspace, K.Decimal),
T(@".456789", K.Power, K.D7, K.D8, K.D9, K.Right, K.Subscript, K.D4, K.D5, K.D6, K.Left, K.Left, K.Left, K.Left, K.Backspace, K.Decimal),
T(@"\square ^{\square }", K.Power, K.Right, K.Subscript, K.Backspace),
T(@"\square _{\square }", K.Subscript, K.Right, K.Power, K.Backspace),
T(@"X^{\square }", K.X, K.Power, K.Right, K.Subscript, K.Backspace),
T(@"X_{\square }", K.X, K.Subscript, K.Right, K.Power, K.Backspace),
T(@"\square ^Z", K.Power, K.Z, K.Right, K.Subscript, K.Backspace),
T(@"\square _{\square }Z", K.Subscript, K.Right, K.Power, K.Z, K.Left, K.Backspace),
T(@"X^Z", K.X, K.Power, K.Z, K.Right, K.Subscript, K.Backspace),
T(@"X_{\square }Z", K.X, K.Subscript, K.Right, K.Power, K.Z, K.Left, K.Backspace),
T(@"\square ^{\square }Y", K.Power, K.Right, K.Subscript, K.Y, K.Left, K.Backspace),
T(@"\square _Y", K.Subscript, K.Y, K.Right, K.Power, K.Backspace),
T(@"X^{\square }Y", K.X, K.Power, K.Right, K.Subscript, K.Y, K.Left, K.Backspace),
T(@"X_Y", K.X, K.Subscript, K.Y, K.Right, K.Power, K.Backspace),
T(@"\square ^ZY", K.Power, K.Z, K.Right, K.Subscript, K.Y, K.Left, K.Backspace),
T(@"\square _YZ", K.Subscript, K.Y, K.Right, K.Power, K.Z, K.Left, K.Backspace),
T(@"X^ZY", K.X, K.Power, K.Z, K.Right, K.Subscript, K.Y, K.Left, K.Backspace),
T(@"X_YZ", K.X, K.Subscript, K.Y, K.Right, K.Power, K.Z, K.Left, K.Backspace),
T(@"\frac{\square }{3}", K.Slash, K.D3, K.Left, K.Left, K.Backspace, K.Left),
T(@"1_3", K.D1, K.D2, K.Subscript, K.D3, K.Left, K.Left, K.Backspace),
T(@"1_3^2", K.D1, K.D4, K.Subscript, K.D3, K.Left, K.Left, K.Power, K.D2, K.Left, K.Left, K.Left, K.Left, K.Backspace),
Expand All @@ -247,7 +345,6 @@ public void Return(params K[] inputs) =>
T(@"\sqrt[■]{\square }", K.NthRoot, K.SmallA, K.Backspace),
T(@"\sqrt{■}", K.SquareRoot, K.SmallA, K.Backspace),
T(@"\frac{1}{■}", K.Slash, K.D6, K.Backspace),
T(@"■_5", K.Subscript, K.D5, K.Left, K.Left, K.Backspace, K.X, K.Left, K.Left, K.Left, K.Backspace),
T(@"7+1^X", K.D7, K.Plus, K.D1, K.D2, K.Power, K.X, K.Left, K.Left, K.Backspace),
T(@"7.^X", K.D7, K.Decimal, K.D1, K.Power, K.X, K.Left, K.Left, K.Backspace),
T(@"7+■^X", K.D7, K.Plus, K.D1, K.Power, K.X, K.Left, K.Left, K.Backspace),
Expand Down
Loading