public void NullConversion() { //Create a test conversion for all of types from null. AlgoValue nullVal = AlgoValue.Null; ANTLRDebug.EnterTestMode(); //Test all conversions (these are expected to throw). for (int i = 0; i < Enum.GetNames(typeof(AlgoValueType)).Length; i++) { try { var attemptConv = AlgoOperators.ConvertType(null, nullVal, (AlgoValueType)i); } catch { Assert.Pass(); } } Assert.Fail(); }
/// <summary> /// Converts a string in JSON format to an Algo object. /// </summary> public static AlgoValue FromJson(ParserRuleContext context, params AlgoValue[] args) { //Check the JSON being parsed is of type string. if (args[0].Type != AlgoValueType.String) { Error.Fatal(context, "Invalid JSON to parse, must be a string."); return(null); } dynamic deserialized = null; try { if (((string)args[0].Value).StartsWith("{")) { deserialized = JObject.Parse((string)args[0].Value); } else { deserialized = JArray.Parse((string)args[0].Value); } } catch (Exception e) { Error.Fatal(context, "Error occured when parsing JSON, '" + e.Message + "'."); return(null); } //Enumerate over properties and parse. AlgoValue returned = null; if (((string)args[0].Value).StartsWith("{")) { returned = ParseJsonObject(context, deserialized); } else { returned = ParseJsonArray(context, deserialized); } return(returned); }
public void StringConversions() { //Create test conversions for strings. AlgoValue stringVal = new AlgoValue() { Type = AlgoValueType.String, Value = "the quick brown fox jumps over the lazy dog" }; ANTLRDebug.EnterTestMode(); //Values that should pass. AlgoValue testVal; try { testVal = AlgoOperators.ConvertType(null, stringVal, AlgoValueType.String); } catch { Assert.Fail(); } //Values that should fail. for (int i = 0; i < Enum.GetNames(typeof(AlgoValueType)).Length; i++) { if ((AlgoValueType)i == AlgoValueType.String) { continue; } try { testVal = AlgoOperators.ConvertType(null, stringVal, (AlgoValueType)i); Assert.Fail(); } catch { } } Assert.Pass(); }