public virtual void TestValidExternals()
        {
            SimpleBindings bindings = new SimpleBindings();

            bindings.Add(new SortField("valid0", SortField.Type_e.INT));
            bindings.Add(new SortField("valid1", SortField.Type_e.INT));
            bindings.Add(new SortField("valid2", SortField.Type_e.INT));
            bindings.Add(new SortField("_score", SortField.Type_e.SCORE));
            bindings.Add("valide0", JavascriptCompiler.Compile("valid0 - valid1 + valid2 + _score"
                                                               ));
            bindings.Validate();
            bindings.Add("valide1", JavascriptCompiler.Compile("valide0 + valid0"));
            bindings.Validate();
            bindings.Add("valide2", JavascriptCompiler.Compile("valide0 * valide1"));
            bindings.Validate();
        }
        public virtual void TestSelfRecursion()
        {
            SimpleBindings bindings = new SimpleBindings();

            bindings.Add("cycle0", JavascriptCompiler.Compile("cycle0"));
            try
            {
                bindings.Validate();
                Fail("didn't get expected exception");
            }
            catch (ArgumentException expected)
            {
                IsTrue(expected.Message.Contains("Cycle detected"));
            }
        }
        public virtual void TestInvalidExternal2()
        {
            SimpleBindings bindings = new SimpleBindings();

            bindings.Add(new SortField("valid", SortField.Type_e.INT));
            bindings.Add("invalid", JavascriptCompiler.Compile("valid + badreference"));
            try
            {
                bindings.Validate();
                Fail("didn't get expected exception");
            }
            catch (ArgumentException expected)
            {
                IsTrue(expected.Message.Contains("Invalid reference"));
            }
        }