public void ConvertSimpleExpression(string input, ConditionCompare compareOperation, int expectedValue) { Parser parser = new Parser(); var tree = parser.Parse(input); var achivementInstruction = AstToEvaluator.FromAST(tree); Assert.NotNull(achivementInstruction.Core); var conditionGroup = achivementInstruction.Core; Assert.Single(conditionGroup.Conditions); var condition = conditionGroup.Conditions[0]; Assert.NotNull(condition.CompareInstruction); Assert.Equal(compareOperation, condition.CompareInstruction.Operation); Assert.IsType <ReadMemoryValue>(condition.CompareInstruction.Left); var readMemoryValue = condition.CompareInstruction.Left as ReadMemoryValue; Assert.Equal(0x1234, readMemoryValue.Address); Assert.Equal(MemoryAddressKind.Int8, readMemoryValue.Kind); Assert.IsType <ConstValue>(condition.CompareInstruction.Right); Assert.Equal(expectedValue, condition.CompareInstruction.Right.GetValue(null, null)); }
public void ShouldParseComparisonOperators(string input, ConditionCompare compareOp) { Parser parser = new Parser(); var tree = parser.Parse(input); var condition = tree.Core.Conditions[0]; Assert.Equal(compareOp, condition.CompareOperator); Assert.Equal(0, condition.HitCount); Assert.IsType <MemoryAddressAST>(condition.Left); Assert.IsType <NumberAST>(condition.Right); var left = condition.Left as MemoryAddressAST; var right = condition.Right as NumberAST; Assert.Equal(0x1234, left.Address); Assert.Equal(MemoryAddressKind.Int8, left.Kind); Assert.Equal(OperandType.Standard, left.Type); Assert.Equal(OperandFlag.None, left.Flag); Assert.Equal(8, right.Value); }
public ConditionCompare(ConditionCompare other) { this.ValueProvider = other.ValueProvider; this.Operation = other.Operation; this.Value = other.Value; }