コード例 #1
0
        public void GetSectionNameTest()
        {
            var sectionName = "MySectionName";
            var result      = SectionControlBuilder.GetSectionName(GetBuildMembers(), defaultIndex);

            Assert.AreEqual(sectionName, result);
        }
コード例 #2
0
        public void GetSectionRenderMethodTest()
        {
            var members = GetRenderMembers();
            var result  = SectionControlBuilder.GetSectionRenderMethod(members, defaultIndex);

            Assert.AreEqual(members[0], result);
        }
コード例 #3
0
        public void GetDefineSectionStartSnippetTest()
        {
            var snippetStmt = SectionControlBuilder.GetDefineSectionStartSnippet("HelloWorld", Language.CSharp) as CodeSnippetStatement;

            Assert.AreEqual("DefineSection(\"HelloWorld\", delegate () {", snippetStmt.Value);
            snippetStmt = SectionControlBuilder.GetDefineSectionStartSnippet("HelloWorld", Language.VisualBasic) as CodeSnippetStatement;
            Assert.AreEqual("DefineSection(\"HelloWorld\", Sub()", snippetStmt.Value);
        }
コード例 #4
0
        public void GetDefineSectionStatementsTest()
        {
            var renderMembers = GetRenderMembers();
            var buildMembers  = GetBuildMembers();
            var members       = new List <CodeTypeMember>(renderMembers);

            foreach (var m in buildMembers)
            {
                members.Add(m);
            }
            var result = SectionControlBuilder.GetDefineSectionStatements(members, defaultIndex, Language.CSharp);

            VerifyDefineSection(((CodeMemberMethod)renderMembers[0]).Statements[0], result);
        }
コード例 #5
0
        public void ProcessRenderControlMethodFalseTest()
        {
            Assert.IsFalse(SectionControlBuilder.ProcessRenderControlMethod(null, null, null, Language.CSharp));
            Assert.IsFalse(SectionControlBuilder.ProcessRenderControlMethod(null, null, new CodeExpressionStatement(new CodeSnippetExpression("test")), Language.CSharp));

            var invoke = new CodeMethodInvokeExpression(null, "RenderControlX", new CodeExpression[] { new CodeArgumentReferenceExpression("__w") });
            var stmt   = new CodeExpressionStatement(invoke);

            Assert.IsFalse(SectionControlBuilder.ProcessRenderControlMethod(null, null, stmt, Language.CSharp));

            invoke = new CodeMethodInvokeExpression(new CodeSnippetExpression(""), "RenderControl", new CodeExpression[] { new CodeArgumentReferenceExpression("__w") });
            stmt   = new CodeExpressionStatement(invoke);
            Assert.IsFalse(SectionControlBuilder.ProcessRenderControlMethod(null, null, stmt, Language.CSharp));

            var indexer = new CodeIndexerExpression(new CodeSnippetExpression(""), new CodeExpression[] { new CodePrimitiveExpression(defaultIndex) });

            invoke = new CodeMethodInvokeExpression(indexer, "RenderControl", new CodeExpression[] { new CodeArgumentReferenceExpression("__w") });
            stmt   = new CodeExpressionStatement(invoke);
            Assert.IsFalse(SectionControlBuilder.ProcessRenderControlMethod(null, null, stmt, Language.CSharp));

            var container = new CodeArgumentReferenceExpression("parameterContainer");
            var controls  = new CodePropertyReferenceExpression(container, "Controls");

            indexer = new CodeIndexerExpression(controls, new CodeExpression[] { new CodeSnippetExpression("") });
            invoke  = new CodeMethodInvokeExpression(indexer, "RenderControl", new CodeExpression[] { new CodeArgumentReferenceExpression("__w") });
            stmt    = new CodeExpressionStatement(invoke);
            Assert.IsFalse(SectionControlBuilder.ProcessRenderControlMethod(null, null, stmt, Language.CSharp));

            controls = new CodePropertyReferenceExpression(container, "ControlsX");
            indexer  = new CodeIndexerExpression(controls, new CodeExpression[] { new CodePrimitiveExpression(defaultIndex) });
            invoke   = new CodeMethodInvokeExpression(indexer, "RenderControl", new CodeExpression[] { new CodeArgumentReferenceExpression("__w") });
            stmt     = new CodeExpressionStatement(invoke);
            Assert.IsFalse(SectionControlBuilder.ProcessRenderControlMethod(null, null, stmt, Language.CSharp));

            controls = new CodePropertyReferenceExpression(new CodeSnippetExpression("test"), "Controls");
            indexer  = new CodeIndexerExpression(controls, new CodeExpression[] { new CodePrimitiveExpression(defaultIndex) });
            invoke   = new CodeMethodInvokeExpression(indexer, "RenderControl", new CodeExpression[] { new CodeArgumentReferenceExpression("__w") });
            stmt     = new CodeExpressionStatement(invoke);
            Assert.IsFalse(SectionControlBuilder.ProcessRenderControlMethod(null, null, stmt, Language.CSharp));

            container = new CodeArgumentReferenceExpression("parameterContainerX");
            controls  = new CodePropertyReferenceExpression(container, "Controls");
            indexer   = new CodeIndexerExpression(controls, new CodeExpression[] { new CodePrimitiveExpression(defaultIndex) });
            invoke    = new CodeMethodInvokeExpression(indexer, "RenderControl", new CodeExpression[] { new CodeArgumentReferenceExpression("__w") });
            stmt      = new CodeExpressionStatement(invoke);
            Assert.IsFalse(SectionControlBuilder.ProcessRenderControlMethod(null, null, stmt, Language.CSharp));
        }
コード例 #6
0
        public void GetSectionNameNullTest()
        {
            var index      = defaultIndexAfterOffset;
            var methodName = "__BuildControl__control";

            Assert.IsNull(SectionControlBuilder.GetSectionName(new CodeTypeMember[] { }, defaultIndex));

            var method = new CodeMemberMethod();

            method = new CodeMemberMethod()
            {
                Name = methodName + index.ToString()
            };
            method.Statements.Add(new CodeSnippetStatement("test"));
            Assert.IsNull(SectionControlBuilder.GetSectionName(new CodeTypeMember[] { method }, defaultIndex));

            var statement = new CodeAssignStatement(null, null);

            method.Statements.Clear();
            method.Statements.Add(statement);
            Assert.IsNull(SectionControlBuilder.GetSectionName(new CodeTypeMember[] { method }, defaultIndex));

            var left = new CodePropertyReferenceExpression(null, "test");

            statement = new CodeAssignStatement(left, null);
            method.Statements.Clear();
            method.Statements.Add(statement);
            Assert.IsNull(SectionControlBuilder.GetSectionName(new CodeTypeMember[] { method }, defaultIndex));

            left      = new CodePropertyReferenceExpression(null, "Name");
            statement = new CodeAssignStatement(left, null);
            method.Statements.Clear();
            method.Statements.Add(statement);
            Assert.IsNull(SectionControlBuilder.GetSectionName(new CodeTypeMember[] { method }, defaultIndex));

            left      = new CodePropertyReferenceExpression(new CodeVariableReferenceExpression("test"), "Name");
            statement = new CodeAssignStatement(left, null);
            method.Statements.Clear();
            method.Statements.Add(statement);
            Assert.IsNull(SectionControlBuilder.GetSectionName(new CodeTypeMember[] { method }, defaultIndex));
        }
コード例 #7
0
        public void ProcessRenderControlMethodTest()
        {
            // Create a statement of the following form:
            // parameterContainer.Controls[0].RenderControl(@__w);
            // where parameterContainer is a parameter.
            var container     = new CodeArgumentReferenceExpression("parameterContainer");
            var controls      = new CodePropertyReferenceExpression(container, "Controls");
            var indexer       = new CodeIndexerExpression(controls, new CodeExpression[] { new CodePrimitiveExpression(defaultIndex) });
            var invoke        = new CodeMethodInvokeExpression(indexer, "RenderControl", new CodeExpression[] { new CodeArgumentReferenceExpression("__w") });
            var stmt          = new CodeExpressionStatement(invoke);
            var renderMethod  = new CodeMemberMethod();
            var renderMembers = GetRenderMembers();
            var buildMembers  = GetBuildMembers();
            var members       = new List <CodeTypeMember>(renderMembers);

            foreach (var m in buildMembers)
            {
                members.Add(m);
            }
            SectionControlBuilder.ProcessRenderControlMethod(members, renderMethod, stmt, Language.CSharp);
            VerifyDefineSection(((CodeMemberMethod)renderMembers[0]).Statements[0], renderMethod.Statements.OfType <CodeStatement>().ToList());
        }