private static AssertionError CreateVMError(ErrorInfo info) { var message = new StringBuilder(); var expression = String.Empty; var kind = String.Empty; var offenders = new List <string>(); var parts = new List <string>(); message.Append(ErrorKindString[info.Kind]); message.Append(": "); switch (info.Code) { case ErrorCode.BinaryOperationInvalidOperand: offenders.Add(Stringify.Object((Object)info.Offenders.First())); offenders.Add(Stringify.Opcode((byte)info.Offenders[1])); offenders.Add(Stringify.Object((Object)info.Offenders.Last())); expression = ComposeExpression(info, offenders, arrow: true); parts.Add(expression); parts.Add(Stringify.Kind(((Object)info.Offenders.First()).Kind)); break; } message.Append(ComposeErrorMessage(parts, ErrorMessages[info.Code])); return(new AssertionError(message.ToString())); }
private static string StringifyHash(Object obj) { var hashtable = (Dictionary <string, Object>)obj.Value; var sb = new StringBuilder(); sb.Append("{ "); hashtable.Keys.ToList().ForEach(key => { sb.Append(key); sb.Append(": "); sb.Append(Stringify.Object(hashtable[key])); }); sb.Append(" }"); return(sb.ToString()); }
private static string StringifyArray(Object obj) { var array = (List <Object>)obj.Value; var sb = new StringBuilder(); sb.Append("["); array.ForEach(element => { sb.Append(Stringify.Object(element)); if (element != array.Last()) { sb.Append(", "); } }); sb.Append("]"); return(sb.ToString()); }
private static AssertionError CreateEvaluationError(ErrorInfo info) { List <string> offenders = new List <string>(); var sb = new StringBuilder(); sb.Append(ErrorKindString[info.Kind]); sb.Append(": "); switch (info.Code) { case ErrorCode.ArrayExpressionEvaluation: case ErrorCode.ArrayIndexExpressionEvaluation: case ErrorCode.HashIndexExpressionEvaluation: case ErrorCode.InfixExpressionEvaluation: offenders = new List <String> { Stringify.Object((Object)info.Offenders.First()), Stringify.Object((Object)info.Offenders.Last()) }; break; case ErrorCode.BangOperatorExpressionEvaluation: offenders = new List <String> { Stringify.Object((Object)info.Offenders.First()) }; break; case ErrorCode.IdentifierExpressionEvaluation: offenders = new List <String> { Stringify.Object(info.Offenders.First()) }; break; case ErrorCode.MinusOperatorExpressionEvaluation: offenders = new List <String> { Stringify.Object((Object)info.Offenders.First()), Stringify.Kind(((Object)info.Offenders.First()).Kind) }; break; case ErrorCode.InfixExpressionOperatorEvaluation: offenders = new List <String> { Stringify.Object((Object)info.Offenders.First()), ((Token)info.Offenders[1]).Literal, Stringify.Object((Object)info.Offenders.Last()) }; break; case ErrorCode.BooleanInfixExpressionEvaluation: case ErrorCode.StringExpressionOperatorEvaluation: offenders = new List <String> { Stringify.Object(info.Offenders.First()), ((Token)info.Offenders[1]).Literal, Stringify.Object(info.Offenders.Last()) }; break; case ErrorCode.BuiltInLenUnexpectedNoOfArguments: case ErrorCode.BuiltInFirstUnexpectedNoOfArguments: case ErrorCode.BuiltInLastUnexpectedNoOfArguments: case ErrorCode.BuiltInRestUnexpectedNoOfArguments: case ErrorCode.BuiltInPushUnexpectedNoOfArguments: offenders = new List <String> { info.Offenders.First().ToString() }; break; case ErrorCode.BuiltInLenInvalidArgument: case ErrorCode.BuiltInFirstInvalidArgument: case ErrorCode.BuiltInLastInvalidArgument: case ErrorCode.BuiltInRestInvalidArgument: offenders = new List <String> { info.Offenders.First().ToString(), Stringify.Object((Object)info.Offenders.Last()) }; break; case ErrorCode.BuiltInPushInvalidArgument: offenders = new List <String> { info.Offenders.First().ToString(), Stringify.Object((Object)info.Offenders[1]), Stringify.Object((Object)info.Offenders.Last()) }; break; case ErrorCode.UnknownOperator: offenders = new List <string> { ((Token)info.Offenders.First()).Literal }; break; } sb.Append(ComposeErrorMessage(offenders, ErrorMessages[info.Code])); return(new AssertionError(sb.ToString())); }