Example #1
0
        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();
        }
Example #2
0
        /// <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);
        }
Example #3
0
        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();
        }