Beispiel #1
0
        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);
        }
Beispiel #2
0
        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);
        }
Beispiel #3
0
        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);
        }
Beispiel #4
0
        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());
        }
Beispiel #5
0
        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());
        }
Beispiel #6
0
        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) { }
        }
Beispiel #7
0
        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());
        }
Beispiel #8
0
        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());
        }
Beispiel #9
0
        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());
        }
Beispiel #10
0
        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());
        }
Beispiel #11
0
        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');
        }
Beispiel #12
0
        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) { }
        }
Beispiel #13
0
        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
        }
Beispiel #14
0
 private static GCodeFieldSpan Parse(string line, out ReadOnlySpan <char> tail)
 {
     return(GCodeFieldSpan.TryParse(line, out tail, GCodeParsingSettings.Default));
 }