public void GetArgumentSyntax_WhenUsingNormalValueAsNamedArgument_ShouldGetCode()
        {
            var argument = new VariableArgument("variableName", "namedArgument");
            var syntax   = argument.GetArgumentSyntax();

            Assert.IsInstanceOf <ArgumentSyntax>(syntax);
            Assert.AreEqual("namedArgument:variableName", syntax.ToString());
        }
示例#2
0
        // direct: If true then .Set method follows .Declare method.
        internal SetChainer(Chainer prev, string variableName, VariableArgument argument, bool direct = false)
            : base(prev)
        {
            var root = GetRoot();

            if (argument == null)
            {
                argument = Designer.Null;
            }

            if (direct && prev is DeclareChainer)
            {
                variableName = ((DeclareChainer)prev).VariableName;
            }

            CheckAndThrow(variableName, root, Method);
            TryThrow(argument.Exception);

            Build = (buildContext, buildArgs) =>
            {
                var variable = buildContext.TryGetVariable(variableName, out chainException, Variable.SearchType.Variable);
                if (chainException != null)
                {
                    root.TryThrow(chainException, Method);
                }
                argument.DataType = variable.DataType;

                return(Text.GenerateSql(20)
                       .NewLine(Text.Set).S()
                       .Append(variableName)
                       .Append(Text._Equal_)
                       .Append(argument.Build(buildContext, buildArgs))
                       .Terminate()
                       .ToString());
            };
        }