public void TestEnum() { CommandReflection.AddMappedType(typeof(EnumClass)); var c1 = (EnumClass)CommandMapping.Parse("M999 X1"); Assert.IsTrue(c1.X == EnumObject.A); Assert.IsTrue(c1.ToGCode() == "M999 X1"); var c2 = (EnumClass)CommandMapping.Parse("M999 X2"); Assert.IsTrue(c2.X == EnumObject.B); Assert.IsTrue(c2.ToGCode() == "M999 X2"); var c3 = (EnumClass)CommandMapping.Parse("M999 X5"); Assert.IsTrue(c3.X == (EnumObject)5); Assert.IsTrue(c3.ToGCode() == "M999 X5"); var c4 = (EnumClass)CommandMapping.Parse("M999 X"); Assert.IsTrue(c4.X == (EnumObject)0); Assert.IsTrue(c4.ToGCode() == "M999 X0"); var c5 = (EnumClass)CommandMapping.Parse("M999"); Assert.IsTrue(c5.X == (EnumObject)0); Assert.IsTrue(c5.ToGCode() == "M999 X0"); var c6 = (EnumClass)CommandMapping.Parse("M999 X-1.1"); Assert.IsTrue(c6.X == (EnumObject)(-1)); Assert.IsTrue(c6.ToGCode() == "M999 X-1"); }
public void TestNullableEnum() { CommandReflection.AddMappedType(typeof(EnumClass)); var c1 = (EnumClass)CommandMapping.Parse("M999 Y1"); Assert.IsTrue(c1.Y == EnumObject.A); Assert.IsTrue(c1.ToGCode() == "M999 X0 Y1"); var c2 = (EnumClass)CommandMapping.Parse("M999 Y2"); Assert.IsTrue(c2.Y == EnumObject.B); Assert.IsTrue(c2.ToGCode() == "M999 X0 Y2"); var c3 = (EnumClass)CommandMapping.Parse("M999 Y5"); Assert.IsTrue(c3.Y == (EnumObject)5); Assert.IsTrue(c3.ToGCode() == "M999 X0 Y5"); var c4 = (EnumClass)CommandMapping.Parse("M999 Y"); Assert.IsTrue(c4.Y == null); Assert.IsTrue(c4.ToGCode() == "M999 X0"); var c5 = (EnumClass)CommandMapping.Parse("M999"); Assert.IsTrue(c5.Y == null); Assert.IsTrue(c5.ToGCode() == "M999 X0"); var c6 = (EnumClass)CommandMapping.Parse("M999 Y-1.1"); Assert.IsTrue(c6.Y == (EnumObject)(-1)); Assert.IsTrue(c6.ToGCode() == "M999 X0 Y-1"); }
public void DescribeParameterWithAliases_AliasesDescribed() { var parameters = CommandReflection.Describe <ArgumentWithAlias>().Arguments; ValidateParameterDescription <int>( parameters.First(), "MyProperty", 'p'); }
private CommandInfo ValidateCommandDescription <T>( string name = null) { var info = CommandReflection.Describe <T>(); info.Should().NotBeNull(); info.Type.Should().Be <T>(); info.Description.Should().BeNull(); info.Name.Should().Be(name ?? typeof(T).Name); info.Arguments.Should().BeEmpty(); return(info); }
public void DescribeCommandInvalidExecuteReturnAsync_Exception() { try { CommandReflection.Describe <InvalidExecuteReturnAsync>(); } catch (CommandReflectionException ex) { ex.InnerException.Should().NotBeNull(); ex.InnerException.Message.Should().Contain("The async Execute function must return a Task<int>"); throw ex; } }
public void DescribeCommandInvalidExecuteParametersAsync_Exception() { try { CommandReflection.Describe <InvalidExecuteParametersAsync>(); } catch (CommandReflectionException ex) { ex.InnerException.Should().NotBeNull(); ex.InnerException.Message.Should().Contain("The Execute function must accept a CommandExecutionContext parameter"); throw ex; } }
public void DescribeCommandInvalidExecuteReturn_Exception() { try { CommandReflection.Describe <InvalidExecuteReturn>(); } catch (CommandReflectionException ex) { ex.InnerException.Should().NotBeNull(); ex.InnerException.Message.Should().Be("the Execute function must return an int."); throw ex; } }
public void DescribeCommandWithNoExecute_Exception() { try { CommandReflection.Describe <NoExecute>(); } catch (CommandReflectionException ex) { ex.InnerException.Should().NotBeNull(); ex.InnerException.Message.Should().Contain("The command must implement a public Execute function"); throw ex; } }
public void RegisterCommand(Type type) { // describe command var info = CommandReflection.Describe(type); // check for duplicate command var duplicateCmd = _commands.Where(c => c.Name.Equals(info.Name, StringComparison.InvariantCultureIgnoreCase)).FirstOrDefault(); if (duplicateCmd != null) { throw new ArgumentException($"Cannot register command type {type.FullName} because a command with the same name is already registered :: {duplicateCmd.Type.FullName}"); } _commands.Add(info); }
public void TestNullableByte() { CommandReflection.AddMappedType(typeof(ByteClass)); var c2 = (ByteClass)CommandMapping.Parse("M999 Y1.1"); Assert.IsTrue(c2.Y == 1); Assert.IsTrue(c2.ToGCode() == "M999 X0 Y1"); var c3 = (ByteClass)CommandMapping.Parse("M999 Y1"); Assert.IsTrue(c3.Y == 1); Assert.IsTrue(c3.ToGCode() == "M999 X0 Y1"); var c4 = (ByteClass)CommandMapping.Parse("M999 Y"); Assert.IsTrue(c4.Y == null); Assert.IsTrue(c4.ToGCode() == "M999 X0"); var c5 = (ByteClass)CommandMapping.Parse("M999"); Assert.IsTrue(c5.Y == null); Assert.IsTrue(c5.ToGCode() == "M999 X0"); }
public void TestByte() { CommandReflection.AddMappedType(typeof(ByteClass)); var c2 = (ByteClass)CommandMapping.Parse("M999 X1.1"); Assert.IsTrue(c2.X == 1); Assert.IsTrue(c2.ToGCode() == "M999 X1"); var c3 = (ByteClass)CommandMapping.Parse("M999 X1"); Assert.IsTrue(c3.X == 1); Assert.IsTrue(c3.ToGCode() == "M999 X1"); var c4 = (ByteClass)CommandMapping.Parse("M999 X"); Assert.IsTrue(c4.X == 0); Assert.IsTrue(c4.ToGCode() == "M999 X0"); var c5 = (ByteClass)CommandMapping.Parse("M999"); Assert.IsTrue(c5.X == 0); Assert.IsTrue(c5.ToGCode() == "M999 X0"); }
public void TestDecimal() { CommandReflection.AddMappedType(typeof(DecimalClass)); var c1 = (DecimalClass)CommandMapping.Parse("M999 X-1.1"); Assert.IsTrue(c1.X == -1.1m); Assert.IsTrue(c1.ToGCode() == "M999 X-1.1"); var c2 = (DecimalClass)CommandMapping.Parse("M999 X1.1"); Assert.IsTrue(c2.X == 1.1m); Assert.IsTrue(c2.ToGCode() == "M999 X1.1"); var c3 = (DecimalClass)CommandMapping.Parse("M999 X1"); Assert.IsTrue(c3.X == 1); Assert.IsTrue(c3.ToGCode() == "M999 X1"); var c4 = (DecimalClass)CommandMapping.Parse("M999 X"); Assert.IsTrue(c4.X == 0); Assert.IsTrue(c4.ToGCode() == "M999 X0"); var c5 = (DecimalClass)CommandMapping.Parse("M999"); Assert.IsTrue(c5.X == 0); Assert.IsTrue(c5.ToGCode() == "M999 X0"); }
public void TestBool() { CommandReflection.AddMappedType(typeof(BoolClass)); var c1 = (BoolClass)CommandMapping.Parse("M999 X-1.1"); Assert.IsTrue(c1.X == true); Assert.IsTrue(c1.ToGCode() == "M999 X"); var c2 = (BoolClass)CommandMapping.Parse("M999 X1.1"); Assert.IsTrue(c2.X == true); Assert.IsTrue(c2.ToGCode() == "M999 X"); var c3 = (BoolClass)CommandMapping.Parse("M999 X1"); Assert.IsTrue(c3.X == true); Assert.IsTrue(c3.ToGCode() == "M999 X"); var c4 = (BoolClass)CommandMapping.Parse("M999 X"); Assert.IsTrue(c4.X == true); Assert.IsTrue(c4.ToGCode() == "M999 X"); var c5 = (BoolClass)CommandMapping.Parse("M999"); Assert.IsTrue(c5.X == false); Assert.IsTrue(c5.ToGCode() == "M999"); }
public void AutoAddCustomCommand() { CommandReflection.ClearMappings(); var cmd = new CustomCommand(); var g = cmd.ToGCode(); }
public void AutoAddCustomCommand2() { CommandReflection.ClearMappings(); var cmd = CommandMapping.Parse(typeof(CustomCommand), "M999 X"); var g = cmd.ToGCode(); }
public void CustomCommandAddAssembly() { CommandReflection.ClearMappings(); CommandReflection.AddMappedTypesFromAssembly(System.Reflection.Assembly.GetExecutingAssembly()); var cmd = CommandMapping.Parse("M999 X"); }
public void CustomCommandAddType() { CommandReflection.ClearMappings(); CommandReflection.AddMappedType(typeof(CustomCommand)); var cmd = CommandMapping.Parse("M999 X"); }
public void CustomCommandMappingException() { CommandReflection.ClearMappings(); Assert.Catch(typeof(Exception), () => { var cmd = CommandMapping.Parse("M999 X"); }); }
public void DescribeWithOneEmptyParameter_ParameterDescribed() { var parameters = CommandReflection.Describe <EmptyArgumentAttribute>().Arguments; ValidateParameterDescription <string>(parameters.First(), "TestArg"); }
public void DescribeCommandOfWrongBaseType_Exception() { CommandReflection.Describe <CommandWithWrongBase>(); }
public void DescribeWithOneParameter_ParameterDescribed() { var parameters = CommandReflection.Describe <ArgumentAttributeCmd>().Arguments; ValidateParameterDescription <int>(parameters.First(), "MyName"); }