public void RealScaling05() { var field = GCodeFieldSpan.TryParse( "X+21474.8364789", out _, new GCodeParsingSettings(integerArgumentScale: 5)); Assert.AreEqual(21474, field.IntArgument); Assert.AreEqual(2147483647, field.ScaledIntArgument); Assert.AreEqual(21474.8364789f, field.FloatArgument); Assert.AreEqual(21474.8364789d, field.DoubleArgument); Assert.AreEqual(21474.8364789m, field.DecimalArgument); }
public void RealScaling02() { var field = GCodeFieldSpan.TryParse( "X-214.748364", out _, new GCodeParsingSettings(integerArgumentScale: 5)); Assert.IsTrue(field.HasArgument); Assert.AreEqual(-214, field.IntArgument); Assert.AreEqual(-21474836, field.ScaledIntArgument); Assert.AreEqual(-214.748364f, field.FloatArgument); Assert.AreEqual(-214.748364d, field.DoubleArgument); Assert.AreEqual(-214.748364m, field.DecimalArgument); }
public void IntScaling06() { var field = GCodeFieldSpan.TryParse( "X21474", out _, new GCodeParsingSettings(integerArgumentScale: 5)); Assert.IsTrue(field.HasArgument); Assert.AreEqual(21474, field.IntArgument); Assert.AreEqual(2147400000, field.ScaledIntArgument); Assert.AreEqual(21474f, field.FloatArgument); Assert.AreEqual(21474d, field.DoubleArgument); Assert.AreEqual(21474m, field.DecimalArgument); }
public void StringArgument07() { var field = GCodeFieldSpan.TryParse("S\"'Foo''Bar", out var tail, new GCodeParsingSettings(enableSingleQuoteEscapingInStringLiterals: true)); Assert.IsTrue(field.IsValid); Assert.IsTrue(field.HasArgument); Assert.AreEqual('S', field.Word); Assert.AreEqual("S\"'Foo''Bar", field.Raw.ToString()); Assert.AreEqual("foo'Bar", field.StringArgument.ToString()); Assert.AreEqual("", tail.ToString()); }
public void IntScaling01() { var field = GCodeFieldSpan.TryParse("Y-123 ", out var tail, new GCodeParsingSettings(integerArgumentScale: 1)); Assert.IsTrue(field.HasArgument); Assert.AreEqual(-123, field.IntArgument); Assert.AreEqual(-1230, field.ScaledIntArgument); Assert.AreEqual(-123f, field.FloatArgument); Assert.AreEqual(-123d, field.DoubleArgument); Assert.AreEqual(-123m, field.DecimalArgument); Assert.AreEqual(" ", tail.ToString()); }
public void RealScaling04() { var field = GCodeFieldSpan.TryParse( "X+21474.83648", out _, new GCodeParsingSettings(integerArgumentScale: 5)); Assert.AreEqual(21474, field.IntArgument); Assert.AreEqual(21474.83648f, field.FloatArgument); Assert.AreEqual(21474.83648d, field.DoubleArgument); Assert.AreEqual(21474.83648m, field.DecimalArgument); try { _ = field.ScaledIntArgument; Assert.Fail("Must be unreachable"); } catch (OverflowException) { } }
public void RealArgument10([Range(0, 5)] int scale) { var field = GCodeFieldSpan.TryParse( "Z . 34tail", out var tail, new GCodeParsingSettings(integerArgumentScale: scale)); Assert.IsTrue(field.IsValid); Assert.IsTrue(field.HasArgument); Assert.AreEqual('Z', field.Word); Assert.AreEqual("Z . 34", field.Raw.ToString()); Assert.AreEqual(0, field.IntArgument); Assert.AreEqual(.34f, field.FloatArgument); Assert.AreEqual(.34d, field.DoubleArgument); Assert.AreEqual(.34m, field.DecimalArgument); Assert.AreEqual(". 34", field.StringArgument.ToString()); Assert.AreEqual("tail", tail.ToString()); }
public void RealArgument11() { var field = GCodeFieldSpan.TryParse( "X-.1tail", out var tail, new GCodeParsingSettings(integerArgumentScale: 2)); Assert.IsTrue(field.IsValid); Assert.IsTrue(field.HasArgument); Assert.AreEqual('X', field.Word); Assert.AreEqual("X-.1", field.Raw.ToString()); Assert.AreEqual(0, field.IntArgument); Assert.AreEqual(-10, field.ScaledIntArgument); Assert.AreEqual(-.1f, field.FloatArgument); Assert.AreEqual(-.1d, field.DoubleArgument); Assert.AreEqual(-.1m, field.DecimalArgument); Assert.AreEqual("-.1", field.StringArgument.ToString()); Assert.AreEqual("tail", tail.ToString()); }
public void IntArgument03() { var field = GCodeFieldSpan.TryParse( "Y + 2147483647 tail", out var tail, new GCodeParsingSettings(integerArgumentScale: 0)); Assert.IsTrue(field.IsValid); Assert.IsTrue(field.HasArgument); Assert.AreEqual('Y', field.Word); Assert.AreEqual("Y + 2147483647", field.Raw.ToString()); Assert.AreEqual(2147483647, field.IntArgument); Assert.AreEqual(2147483647f, field.FloatArgument); Assert.AreEqual(2147483647d, field.DoubleArgument); Assert.AreEqual(2147483647m, field.DecimalArgument); Assert.AreEqual("+ 2147483647", field.StringArgument.ToString()); Assert.AreEqual(" tail", tail.ToString()); }
public void IntArgument02([Range(0, 5)] int scale) { var field = GCodeFieldSpan.TryParse( "Y-42tail", out var tail, new GCodeParsingSettings(integerArgumentScale: scale)); Assert.IsTrue(field.IsValid); Assert.IsTrue(field.HasArgument); Assert.AreEqual('Y', field.Word); Assert.AreEqual("Y-42", field.Raw.ToString()); Assert.AreEqual(-42, field.IntArgument); Assert.AreEqual(-42f, field.FloatArgument); Assert.AreEqual(-42d, field.DoubleArgument); Assert.AreEqual(-42m, field.DecimalArgument); Assert.AreEqual("-42", field.StringArgument.ToString()); Assert.AreEqual("tail", tail.ToString()); }
public void CaseToNormalization() { var toUpper = GCodeFieldSpan.TryParse( "x", out _, new GCodeParsingSettings(caseNormalization: GCodeCaseNormalization.ToUppercase)); Assert.AreEqual('X', toUpper.Word); var toLower = GCodeFieldSpan.TryParse( "X", out _, new GCodeParsingSettings(caseNormalization: GCodeCaseNormalization.ToLowercase)); Assert.AreEqual(toLower.Word, 'x'); var doNotTouch = GCodeFieldSpan.TryParse( "x", out _, new GCodeParsingSettings(caseNormalization: GCodeCaseNormalization.DoNotTouch)); Assert.AreEqual(doNotTouch.Word, 'x'); }
public void IntScaling07() { var field = GCodeFieldSpan.TryParse( "X21475", out _, new GCodeParsingSettings(integerArgumentScale: 5)); Assert.IsTrue(field.HasArgument); Assert.AreEqual(21475, field.IntArgument); Assert.AreEqual(21475f, field.FloatArgument); Assert.AreEqual(21475d, field.DoubleArgument); Assert.AreEqual(21475m, field.DecimalArgument); try { _ = field.ScaledIntArgument; Assert.Fail("Must be unreachable"); } catch (OverflowException) { } }
public void IntArgument01([Range(0, 5)] int scale) { var field = GCodeFieldSpan.TryParse( "*123y1", out var tail, new GCodeParsingSettings(integerArgumentScale: scale)); Assert.IsTrue(field.IsValid); Assert.IsTrue(field.HasArgument); Assert.AreEqual('*', field.Word); Assert.AreEqual(123, field.IntArgument); Assert.AreEqual(123.0f, field.FloatArgument); Assert.AreEqual(123.0d, field.DoubleArgument); Assert.AreEqual(123.0m, field.DecimalArgument); Assert.AreEqual("123", field.StringArgument.ToString()); Assert.AreEqual("y1", tail.ToString()); // todo: do not insert pair "" after 123 literal }
private static GCodeFieldSpan Parse(string line, out ReadOnlySpan <char> tail) { return(GCodeFieldSpan.TryParse(line, out tail, GCodeParsingSettings.Default)); }