Exemplo n.º 1
0
        public void NotExistPropShouldFail()
        {
            var code = "sql v1{#iif<A, 'Yes#', 'hello'}";
            var rt   = new SdmapCompiler();

            rt.AddSourceCode(code);
            var result = rt.TryEmit("v1", new { B = true });

            Assert.False(result.IsSuccess);
        }
Exemplo n.º 2
0
        public void DateTypeShouldFail()
        {
            var code = "sql v1{#iif<A, 'Yes#', 2016-1-1}";
            var rt   = new SdmapCompiler();

            rt.AddSourceCode(code);
            var result = rt.TryEmit("v1", new { A = true });

            Assert.False(result.IsSuccess);
        }
Exemplo n.º 3
0
        public void InsuficientArgumentShouldFail()
        {
            var code = "sql v1{#iif<A, 'Yes#'}";
            var rt   = new SdmapCompiler();

            rt.AddSourceCode(code);
            var result = rt.TryEmit("v1", new { A = true });

            Assert.False(result.IsSuccess);
        }
Exemplo n.º 4
0
        public void NestedPropTest()
        {
            var code = "sql v1{#prop<A.B>}";
            var rt   = new SdmapCompiler();

            rt.AddSourceCode(code);
            var result = rt.TryEmit("v1", new { A = new { B = 3 } });

            Assert.Equal("3", result.Value);
        }
Exemplo n.º 5
0
        public void NoPropTest()
        {
            var code = "namespace v1{sql v1{#prop<V>}}";
            var rt   = new SdmapCompiler();

            rt.AddSourceCode(code);
            var result = rt.TryEmit("v1.v1", new { });

            Assert.False(result.IsSuccess);
        }
Exemplo n.º 6
0
        public void CanRunInnerMacro()
        {
            var code = "sql v1{#iif<A, sql{#prop<A>}, sql{}>}";
            var rt   = new SdmapCompiler();

            rt.AddSourceCode(code);
            var result = rt.TryEmit("v1", new { A = true });

            Assert.True(result.IsSuccess);
            Assert.Equal(true.ToString(), result.Value);
        }
Exemplo n.º 7
0
        public void CanNestUnnamedSql(bool input, string expected)
        {
            var code = "sql v1{#iif<A, sql{Yes}, sql{No!<>}";
            var rt   = new SdmapCompiler();

            rt.AddSourceCode(code);
            var result = rt.TryEmit("v1", new { A = input });

            Assert.True(result.IsSuccess);
            Assert.Equal(expected, result.Value);
        }
Exemplo n.º 8
0
        public void PropNotExists()
        {
            var code = "sql v1{#isEqual<A, true, #prop<B>>}";
            var rt   = new SdmapCompiler();

            rt.AddSourceCode(code);
            var result = rt.TryEmit("v1", new { A = true });

            Assert.False(result.IsSuccess);
            Assert.Equal("Query requires property 'B' in macro 'Prop'.", result.Error);
        }
Exemplo n.º 9
0
        public void IfTest()
        {
            var rt = new SdmapCompiler();

            rt.AddSourceCode("sql v1{#if(A){A}}");
            var result = rt.TryEmit("v1", new Dictionary <string, object>
            {
                ["A"] = true
            });

            Assert.True(result.IsSuccess);
            Assert.Equal("A", result.Value);
        }
Exemplo n.º 10
0
        public void AddArgumentWillDoRuntimeCheck()
        {
            var code = "sql v1{#hello<3>}";
            var rt   = new SdmapCompiler();

            rt.AddSourceCode(code);
            rt.AddMacro("hello", new SdmapTypes[0], (context, ns, self, arguments) =>
            {
                return(Result.Ok("Hello World"));
            });
            var result = rt.TryEmit("v1", null);

            Assert.False(result.IsSuccess);
        }
Exemplo n.º 11
0
        public void OnlyRunOnce()
        {
            var code = "sql v1{#iif<A, sql{#record<>}, sql{#record<>}}";
            var rt   = new SdmapCompiler();

            rt.AddSourceCode(code);
            var times = 0;

            rt.AddMacro("record", null, (ctx, ns, self, args) =>
            {
                ++times;
                return(Result.Ok(string.Empty));
            });
            var result = rt.TryEmit("v1", new { A = true });

            Assert.True(result.IsSuccess);
            Assert.Equal(1, times);
        }