public override string Template() { var endFunc = Healpers.GetFunctionId(); var falseFunc = Healpers.GetFunctionId(); var compare = $"cmpq\t$0, %rax\nje\t{falseFunc}"; return($"{Expression.Template()}\n{compare}\n{TrueResult.Template()}\njmp\t{endFunc}\n{falseFunc}:\n{FalseResult.Template()}\n{endFunc}:"); }
public override object GetProcessedValue() { if (Expression.StartsWith("$if{") && Expression.EndsWith("}")) { int len = Expression.Length - 4; string[] args = Expression.Remove(0, 4).Remove(len - 1, 1).Split(','); var rpnExp = ExpressionTools.ExpressionTools.ConvertToRpnExpression(args[0]); TrueResult = args[1]; FalseResult = args[2]; if (!TrueResult.StartsWith("\"") && !TrueResult.EndsWith("\"")) { TrueResult = ExpressionTools.ExpressionTools.CalcRpnExpression(ExpressionTools.ExpressionTools.ConvertToRpnExpression(TrueResult), Target); } else { TrueResult = TrueResult.Trim('\"'); } if (!FalseResult.StartsWith("\"") && !FalseResult.EndsWith("\"")) { FalseResult = ExpressionTools.ExpressionTools.CalcRpnExpression(ExpressionTools.ExpressionTools.ConvertToRpnExpression(FalseResult), Target); } else { FalseResult = FalseResult.Trim('\"'); } if (bool.Parse(ExpressionTools.ExpressionTools.CalcRpnExpression(rpnExp, Target))) { return(TrueResult); } return(FalseResult); } else { return("Invalid Format! Please use $if{<condition>,<ifTrue>,<ifFalse>}"); } }
public void FutureResultTests_True_Or_False_EqualsTrue() { Assert.IsTrue(TrueResult.Or(FalseResult).Result); }
public void FutureResultTests_True_And_False_EqualsFalse() { Assert.IsFalse(TrueResult.And(FalseResult).Result); }