public void testMultipleErrors()
        {
            CSharpParser parser = new CSharpParser();
            parser.ParseCode(@"using System
            using NUnit.Framework;
            class Hahaha
            {
                publi TestMethod()
                {
                }
            }");
            Assert.That(parser.ErrorOccurred, Is.True);
            Assert.That(parser.SyntaxErrors, Has.Count(2));
            Assert.That(parser.SyntaxErrors[0].LineNumber, Is.EqualTo(0));
            Assert.That(parser.SyntaxErrors[1].LineNumber, Is.EqualTo(4));

            parser = new CSharpParser();
            parser.ParseCode(@"using System
            using NUnit.Framework;
            class Hahaha
            {
                publi TestMethod()
                {
                }

                public testOtherMethod(
                {
                }
            }");
            Assert.That(parser.ErrorOccurred, Is.True);
            Assert.That(parser.SyntaxErrors, Has.Count(3));
            Assert.That(parser.SyntaxErrors[0].LineNumber, Is.EqualTo(0));
            Assert.That(parser.SyntaxErrors[1].LineNumber, Is.EqualTo(4));
            Assert.That(parser.SyntaxErrors[2].LineNumber, Is.EqualTo(8));
        }
        public void Test()
        {
            string codeText = File.ReadAllText("Resources\\BasicClass.txt");

            var parser = new CSharpParser();
            parser.ParseCode(codeText);

            var codeRoot = (CodeRoot)parser.CreatedCodeRoot;
            //Actions actions = Test2(codeRoot);//Test1(codeRoot);

            Actions actions = new Actions();

            Entity entity = new EntityImpl("BasicClass");
            entity.AddProperty(new PropertyImpl { Name = "Property5", Type = "Entity" });

            Entity entity1 = new EntityImpl("Class1");
            entity1.AddProperty(new PropertyImpl { Name = "Property5", Type = "Entity" });

            entity.MappedClass = codeRoot.Namespaces[0].Classes[0];
            entity1.MappedClass = codeRoot.Namespaces[0].Classes[1];

            CheckEntity(entity, actions);

            codeText = actions.RunActions(codeText, codeRoot, true);
            actions = new Actions();

            actions.AddAction(new AddAttributeToPropertyAction(entity.MappedClass.Properties[0], new Attribute(codeRoot.Controller){Name = "Attr"}));
            CheckEntity(entity1, actions);

            var output = actions.RunActions(codeText, codeRoot, false);
        }
        public void Attributes()
        {
            const string code = @"
            namespace n1
            {
                [Serializable]
                [SomeAttribute(NamedParam = ""Nothing"")]
                public class Class1
                {

                }
                [Positional(1, ""string"")]
                public class Class2
                {

                }
            }";

            CSharpParser parser = new CSharpParser();
            parser.FormatSettings.ReorderBaseConstructs = false;
            parser.ParseCode(code);

            ICodeRoot codeRoot = parser.CreatedCodeRoot;
            Namespace n1 = (Namespace)codeRoot.WalkChildren()[0];

            Class clazz = n1.Classes[0];
            Assert.That(clazz.Attributes, Has.Count(2));
            Assert.That(clazz.Attributes[0].ToString(), Is.EqualTo("Serializable"));
            Assert.That(clazz.Attributes[1].ToString(), Is.EqualTo("SomeAttribute(NamedParam = \"Nothing\")"));

            clazz = n1.Classes[1];
            Assert.That(clazz.Attributes, Has.Count(1));
            Assert.That(clazz.Attributes[0].ToString(), Is.EqualTo("Positional(1, \"string\")"));
        }
        public void TestPosition()
        {
            CSharpParser parser = new CSharpParser();
            parser.ParseCode(@"using System;
            using NUnit.Framework;
            class Hahaha
            {
            ");

            Assert.That(parser.ErrorOccurred, Is.True);
            Assert.That(parser.SyntaxErrors, Has.Count(1));
            Assert.That(parser.SyntaxErrors[0].LineNumber, Is.EqualTo(3));

            parser = new CSharpParser();
            parser.ParseCode(@"using System;
            using NUnit.Framework;
            class Hahaha
            {
                public TestMethod(){ }");

            Assert.That(parser.ErrorOccurred, Is.True);
            Assert.That(parser.SyntaxErrors, Has.Count(1));
            Assert.That(parser.SyntaxErrors[0].LineNumber, Is.EqualTo(4));

            parser = new CSharpParser();
            parser.ParseCode(@"using System");

            Assert.That(parser.ErrorOccurred, Is.True);
            Assert.That(parser.SyntaxErrors, Has.Count(1));
            Assert.That(parser.SyntaxErrors[0].LineNumber, Is.EqualTo(0));
        }
        /// <summary>
        /// Parses the source-code in the csharpFileText.
        /// </summary>
        /// <param name="vbFileText"></param>
        /// <returns></returns>
        public static CodeRoot ParseVbCode(string vbFileText)
        {
            var parser = new CSharpParser();
            var parseResults = new ParseResults();

            parser.Reset();
            parser.ParseCode(vbFileText);

            return (CodeRoot)parser.CreatedCodeRoot;
        }
        public void Reparse()
        {
            ClearErrors();

            CSharpParser formatter = new CSharpParser();
            formatter.ParseCode(editor.Text);
            if(formatter.ErrorOccurred)
            {
                AddAllErrors(formatter.SyntaxErrors);
            }
            DisplayErrors();
        }
        public void TestBasicSyntaxError()
        {
            CSharpParser parser = new CSharpParser();
            parser.ParseCode("using System;");

            Assert.That(parser.ErrorOccurred, Is.False);

            parser = new CSharpParser();
            parser.ParseCode("lkjakjlawel;rfjaolkjnawlekmfpijsdpv;je;kf23-54-9845emadvlz");

            Assert.That(parser.ErrorOccurred, Is.True);
            Assert.That(parser.SyntaxErrors, Has.Count(1));
        }
        public void Comments()
        {
            const string code = @"
            /// <summary>
            /// Xml Comment line\r\n
            /// break.
            ///</summary>
            public class Class1 // Class Trailing Comment
            {
                // Comment1-1
                // Comment1-2
                public int i = 0; // Trailing Comment
                // Comment2-1
                public int j = 0;
            }";
            CSharpParser parser = new CSharpParser();
            parser.ParseCode(code);

            ICodeRoot codeRoot = parser.CreatedCodeRoot;

            Assert.That(codeRoot, Is.InstanceOfType(typeof (CodeRoot)));
            Assert.That(codeRoot.WalkChildren(), Has.Count(1));

            Class clazz = (Class) codeRoot.WalkChildren()[0];
            Assert.That(clazz, Is.Not.Null);

            Assert.That(clazz.Name, Is.EqualTo("Class1"));
            Assert.That(clazz.XmlComments, Has.Count(4));
            Assert.That(clazz.XmlComments[0].Trim(), Is.EqualTo(@"<summary>"));
            Assert.That(clazz.XmlComments[1].Trim(), Is.EqualTo(@"Xml Comment line\r\n"));
            Assert.That(clazz.XmlComments[2].Trim(), Is.EqualTo(@"break."));
            Assert.That(clazz.XmlComments[3].Trim(), Is.EqualTo(@"</summary>"));

            Assert.That(clazz.Comments.TrailingComment, Is.EqualTo("// Class Trailing Comment"));

            Assert.That(clazz.WalkChildren(), Has.Count(2));
            Field field = (Field) clazz.WalkChildren()[0];
            Assert.That(field.Name, Is.EqualTo("i"));
            Assert.That(field.Comments.PreceedingComments, Has.Count(2));
            Assert.That(field.Comments.PreceedingComments[0], Is.EqualTo("// Comment1-1"));
            Assert.That(field.Comments.PreceedingComments[1], Is.EqualTo("// Comment1-2"));
            Assert.That(field.Comments.TrailingComment, Is.EqualTo("// Trailing Comment"));

            field = (Field)clazz.WalkChildren()[1];
            Assert.That(field.Name, Is.EqualTo("j"));
            Assert.That(field.Comments.PreceedingComments, Has.Count(1));
            Assert.That(field.Comments.PreceedingComments[0], Is.EqualTo("// Comment2-1"));
        }
        public void Diff_Result_Is_Exact_Copy()
        {
            string original = Path.Combine(ResourcePath, "Class1.cs");

            CodeRootMap codeRootMap = new CodeRootMap();

            CSharpParser formatter = new CSharpParser();
            formatter.ParseCode(File.ReadAllText(original));
            ICodeRoot codeRoot = formatter.CreatedCodeRoot;

            codeRootMap.AddCodeRoot(codeRoot, Version.User);
            codeRootMap.AddCodeRoot(codeRoot, Version.NewGen);
            codeRootMap.AddCodeRoot(codeRoot, Version.PrevGen);

            Assert.That(codeRootMap.Diff(), Is.EqualTo(TypeOfDiff.ExactCopy));
        }
Exemple #10
0
        public static ParseResults ParseCSharpFiles(IEnumerable<string> csharpFiles)
        {
            var parser = new CSharpParser();
            var parseResults = new ParseResults();

            foreach (var file in csharpFiles)
            {
                if (File.Exists(file) == false)
                    continue;

                parser.Reset();
                parser.ParseCode(file, File.ReadAllText(file));
                parseResults.AddParsedFile(file, parser.CreatedCodeRoot as CodeRoot);
            }

            return parseResults;
        }
 private void TestFiles()
 {
     foreach(string file in _Files)
     {
         try
         {
             GC.Collect();
             CSharpParser parser = new CSharpParser();
             parser.ParseCode(file, File.ReadAllText(file));
             if (parser.ErrorOccurred == false) continue;
             Assert.IsNull(parser.ExceptionThrown, parser.ExceptionThrown == null ? "" : parser.ExceptionThrown.ToString());
             Assert.That(parser.SyntaxErrors.Count, Is.EqualTo(0), "There were syntax errors in file " + file);
         }
         catch(Exception e)
         {
             Assert.Fail(e.ToString());
         }
     }
 }
        public void TestFile(string filename, bool stripText, CSharpFormatSettings settings)
        {
            string fileText = File.ReadAllText(filename);

            CSharpParser formatter = new CSharpParser();
            formatter.FormatSettings.SetFrom(settings);
            formatter.ParseCode(fileText);

            Assert.IsFalse(formatter.ErrorOccurred);

            string formattedText = formatter.CreatedCodeRoot.ToString();

            formattedText =
                Slyce.Common.Utility.StandardizeLineBreaks(formattedText, Slyce.Common.Utility.LineBreaks.Windows);

            string strippedFileText = Diff.StripWhitespace(new[] {fileText}, stripText)[0].Replace("\t", "    ");
            string strippedFormattedText = Diff.StripWhitespace(new[] { formattedText }, stripText)[0].Replace("\t", "    ");

            Assert.That(strippedFormattedText, Is.EqualTo(strippedFileText));
        }
        public void They_Are_Added_Correctly()
        {
            var parser = new CSharpParser();
            parser.ParseCode(Code.Class1Text);

            var codeRoot = (CodeRoot)parser.CreatedCodeRoot;
            var basicClass = codeRoot.Namespaces[0].Classes[0];

            var property2 = new Property(codeRoot.Controller, "Property1", new DataType(codeRoot.Controller, "string"), "public");
            var property3 = new Property(codeRoot.Controller, "Property2", new DataType(codeRoot.Controller, "Class1"), "private");

            var action1 = new AddPropertyToClassAction(property2, AdditionPoint.EndOfParent, basicClass);
            var action2 = new AddPropertyToClassAction(property3, AdditionPoint.EndOfParent, basicClass);

            Actions actions = new Actions();
            actions.AddAction(action1);
            actions.AddAction(action2);

            string output = actions.RunActions(parser);
            output = Slyce.Common.Utility.StandardizeLineBreaks(output, Environment.NewLine);
            Assert.That(output, Is.EqualTo(Code.Class1Plus2PropertiesText));
        }
        public void Regions()
        {
            const string code = @"
            namespace N1
            {
                #region Region Name
                public class Class1
                {
                }
                #endregion
            }";

            CSharpParser parser = new CSharpParser();
            parser.ParseCode(code);

            ICodeRoot codeRoot = parser.CreatedCodeRoot;
            Namespace ns = (Namespace)codeRoot.WalkChildren()[0];

            Assert.That(ns.WalkChildren(), Has.Count(1));

            Region region = ns.SortedConstructs[0] as Region;
            Assert.IsNotNull(region);
            Assert.That(region.Name, Is.EqualTo("Region Name"));

            Assert.That(region.WalkChildren(), Has.Count(1));
            Assert.That(region.SortedConstructs[0], Is.InstanceOfType(typeof(Class)));
        }
        public void Interface_Methods()
        {
            const string code = @"
            public interface Interface1
            {
                string Method1(int param, Interface1 i);
            }
            ";

            CSharpParser parser = new CSharpParser();
            parser.ParseCode(code);

            ICodeRoot codeRoot = parser.CreatedCodeRoot;
            Interface clazz = (Interface) codeRoot.WalkChildren()[0];

            InterfaceMethod inter = (InterfaceMethod) clazz.WalkChildren()[0];
            Assert.That(inter.Name, Is.EqualTo("Method1"));
            Assert.That(inter.ReturnType.ToString(), Is.EqualTo("string"));
            Assert.That(inter.Parameters, Has.Count(2));
            Assert.That(inter.Parameters[0].Name, Is.EqualTo("param"));
            Assert.That(inter.Parameters[0].DataType, Is.EqualTo("int"));
            Assert.That(inter.Parameters[1].Name, Is.EqualTo("i"));
            Assert.That(inter.Parameters[1].DataType, Is.EqualTo("Interface1"));
        }
        public void Interface_Properties()
        {
            const string code = @"
            public interface Interface1
            {
                string Property1 { get; set; }
            }
            ";

            CSharpParser parser = new CSharpParser();
            parser.ParseCode(code);

            ICodeRoot codeRoot = parser.CreatedCodeRoot;
            Interface clazz = (Interface) codeRoot.WalkChildren()[0];

            InterfaceProperty inter = (InterfaceProperty) clazz.WalkChildren()[0];
            Assert.That(inter.Name, Is.EqualTo("Property1"));
            Assert.That(inter.DataType.ToString(), Is.EqualTo("string"));
            Assert.That(inter.GetAccessor, Is.Not.Null);
            Assert.That(inter.SetAccessor, Is.Not.Null);
        }
        public void Methods()
        {
            const string code = @"
            public class Class1
            {
                public void Class1(string param1)
                {
                    int i = 0;
                }
            }
            ";

            CSharpParser parser = new CSharpParser();
            parser.ParseCode(code);

            ICodeRoot codeRoot = parser.CreatedCodeRoot;
            Class clazz = (Class) codeRoot.WalkChildren()[0];

            Function con = (Function) clazz.WalkChildren()[0];
            Assert.That(con.Name, Is.EqualTo("Class1"));
            Assert.That(con.ReturnType.ToString(), Is.EqualTo("void"));
            Assert.That(con.Modifiers, Has.Count(1));
            Assert.That(con.Modifiers[0], Is.EqualTo("public"));
            Assert.That(con.Parameters, Has.Count(1));
            Assert.That(con.Parameters[0].Name, Is.EqualTo("param1"));
            Assert.That(con.Parameters[0].DataType, Is.EqualTo("string"));
            Assert.That(con.BodyText, Is.EqualTo("{\r\n\tint i = 0;\r\n}\r\n"));
        }
        public void MultiLineComments()
        {
            const string code = @"
            /* adfjlaskdjflkasdjflkjdf */
            public class Class1
            {
                /* Comment1-1
                 * Comment1-2 */
                public int i = 0; /* Trailing Comment
                * Comment2-1 */
                public int j = 0;
            }";
            CSharpParser parser = new CSharpParser();
            parser.ParseCode(code);

            ICodeRoot codeRoot = parser.CreatedCodeRoot;

            Assert.That(codeRoot, Is.InstanceOfType(typeof(CodeRoot)));
            Assert.That(codeRoot.WalkChildren(), Has.Count(1));

            Class clazz = (Class)codeRoot.WalkChildren()[0];
            Assert.That(clazz, Is.Not.Null);

            Assert.That(clazz.Name, Is.EqualTo("Class1"));
            Assert.That(clazz.Comments.PreceedingComments, Has.Count(1));
            Assert.That(clazz.Comments.PreceedingComments[0].Trim(), Is.EqualTo("/* adfjlaskdjflkasdjflkjdf */"));

            Assert.That(clazz.WalkChildren(), Has.Count(2));
            Field field = (Field)clazz.WalkChildren()[0];
            Assert.That(field.Name, Is.EqualTo("i"));
            Assert.That(field.Comments.PreceedingComments, Has.Count(1));
            Assert.That(field.Comments.PreceedingComments[0], Is.EqualTo(@"/* Comment1-1
                 * Comment1-2 */"));
            Assert.That(field.Comments.TrailingComment, Is.EqualTo(@"/* Trailing Comment
                * Comment2-1 */"));

            field = (Field)clazz.WalkChildren()[1];
            Assert.That(field.Name, Is.EqualTo("j"));
            Assert.That(field.Comments.PreceedingComments, Has.Count(0));
        }
Exemple #19
0
        private static List<Function> GetFunctionsInFileWithAttribute(string file, string attributeName)
        {
            List<Function> functions = new List<Function>();
            string code = Slyce.Common.Utility.ReadTextFile(file);
            CSharpParser csf = new CSharpParser();
            csf.FormatSettings.CommentLinesAsCommentBlock = true;
            csf.ParseCode(code);

            if (csf.ErrorOccurred)
            {
                // TODO: what do we do here?
                throw new Exception("Parser error. Please contact [email protected]");
            }

            CodeRoot root = (CodeRoot)csf.CreatedCodeRoot;

            foreach (Namespace ns in root.Namespaces)
            {
                foreach (Class c in ns.Classes)
                {
                    functions.AddRange(GetFunctionsInClassWithAttribute(c, attributeName));
                }
            }
            foreach (Class c in root.Classes)
            {
                functions.AddRange(GetFunctionsInClassWithAttribute(c, attributeName));
            }
            return functions;
        }
        public void Namespaces()
        {
            string code = @"namespace n1 { }";

            CSharpParser parser = new CSharpParser();
            parser.ParseCode(code);

            ICodeRoot codeRoot = parser.CreatedCodeRoot;
            Namespace n1 = (Namespace)codeRoot.WalkChildren()[0];

            Assert.That(n1.Name, Is.EqualTo("n1"));

            code = @"namespace n1 { namespace n2 { } }";

            parser = new CSharpParser();
            parser.ParseCode(code);

            codeRoot = parser.CreatedCodeRoot;
            n1 = (Namespace)codeRoot.WalkChildren()[0];
            Namespace n2 = n1.InnerNamespaces[0];

            Assert.That(n2.Name, Is.EqualTo("n2"));
            Assert.That(n2.FullyQualifiedName, Is.EqualTo("n1.n2"));
        }
        public void UsingStatements()
        {
            string code = @"using System;
            namespace n1 { }";

            CSharpParser parser = new CSharpParser();
            parser.FormatSettings.ReorderBaseConstructs = false;
            parser.ParseCode(code);

            ICodeRoot codeRoot = parser.CreatedCodeRoot;
            Assert.That(((CodeRoot)codeRoot).UsingStatements[0].ToString(), Is.EqualTo("using System;"));
            Namespace n1 = (Namespace)codeRoot.WalkChildren()[0];

            Assert.That(n1.Name, Is.EqualTo("n1"));
            Assert.That(n1.UsingStatements, Is.Empty);

            code = @"using System;
            namespace n1
            {
            using System.Web;
            namespace n2
            {
            using Slyce.Common;
            }
            }";

            parser = new CSharpParser();
            parser.ParseCode(code);

            codeRoot = parser.CreatedCodeRoot;
            Assert.That(((CodeRoot)codeRoot).UsingStatements[0].ToString(), Is.EqualTo("using System;"));

            n1 = (Namespace)codeRoot.WalkChildren()[0];
            Assert.That(n1.UsingStatements[0].ToString(), Is.EqualTo("using System.Web;"));

            Namespace n2 = n1.InnerNamespaces[0];

            Assert.That(n2.Name, Is.EqualTo("n2"));
            Assert.That(n2.FullyQualifiedName, Is.EqualTo("n1.n2"));
            Assert.That(n2.UsingStatements[0].ToString(), Is.EqualTo("using Slyce.Common;"));
        }
 internal static ICodeRoot GetCodeRoot(string fileName)
 {
     CSharpParser formatter = new CSharpParser();
     formatter.ParseCode(File.ReadAllText(fileName));
     return formatter.CreatedCodeRoot;
 }
        public void Operators()
        {
            const string code = @"
            public class Class1
            {
                public static int operator +(Class1 self, string param1)
                {
                    int i = 0;
                    return i;
                }
            }";

            CSharpParser parser = new CSharpParser();
            parser.ParseCode(code);

            ICodeRoot codeRoot = parser.CreatedCodeRoot;
            Class clazz = (Class) codeRoot.WalkChildren()[0];

            Operator con = (Operator) clazz.WalkChildren()[0];
            Assert.That(con.Name, Is.EqualTo("+"));
            Assert.That(con.DataType.ToString(), Is.EqualTo("int"));
            Assert.That(con.Modifiers, Has.Count(2));
            Assert.That(con.Modifiers[0], Is.EqualTo("public"));
            Assert.That(con.Modifiers[1], Is.EqualTo("static"));
            Assert.That(con.Parameters, Has.Count(2));
            Assert.That(con.Parameters[0].Name, Is.EqualTo("self"));
            Assert.That(con.Parameters[0].DataType, Is.EqualTo("Class1"));
            Assert.That(con.Parameters[1].Name, Is.EqualTo("param1"));
            Assert.That(con.Parameters[1].DataType, Is.EqualTo("string"));
            Assert.That(con.BodyText, Is.EqualTo("{\r\n\tint i = 0;\r\n\treturn i;\r\n}\r\n"));
        }
        public void Properties()
        {
            const string code = @"
            public class Class1
            {
                public static int SomeValue
                {
                    get { return i; }
                    set { }
                }
            }";

            CSharpParser parser = new CSharpParser();
            parser.FormatSettings.InlineSingleLineGettersAndSetters = true;
            parser.FormatSettings.PutBracesOnNewLines = false;
            parser.ParseCode(code);

            ICodeRoot codeRoot = parser.CreatedCodeRoot;
            Class clazz = (Class)codeRoot.WalkChildren()[0];

            Property con = (Property)clazz.WalkChildren()[0];
            Assert.That(con.Name, Is.EqualTo("SomeValue"));
            Assert.That(con.DataType.ToString(), Is.EqualTo("int"));
            Assert.That(con.Modifiers, Has.Count(2));
            Assert.That(con.Modifiers[0], Is.EqualTo("public"));
            Assert.That(con.Modifiers[1], Is.EqualTo("static"));
            Assert.That(con.GetAccessor, Is.Not.Null);
            Assert.That(con.GetAccessor.AccessorType, Is.EqualTo(PropertyAccessor.AccessorTypes.Get));
            Assert.That(con.GetAccessor.BodyText, Is.EqualTo("{ return i; }"));
            Assert.That(con.SetAccessor, Is.Not.Null);
            Assert.That(con.SetAccessor.AccessorType, Is.EqualTo(PropertyAccessor.AccessorTypes.Set));
            Assert.That(con.SetAccessor.BodyText, Is.EqualTo("{ }"));
        }
        public void PrimitiveTypes_ShortNames()
        {
            const string code = @"public class Class1
            {
                public int a = 0;
                public string b = """";
                public short c = 0;
                public long d = 0;
                public float e = 0;
                public double f = 0;
                public bool g = false;
                public char h = 'c';
                public byte i = 0;
                public object j = null;
                public decimal k = 0m;
            }";

            CSharpParser parser = new CSharpParser();
            parser.FormatSettings.ReorderBaseConstructs = false;
            parser.ParseCode(code);

            ICodeRoot codeRoot = parser.CreatedCodeRoot;
            Class clazz = (Class) codeRoot.WalkChildren()[0];

            Field con = (Field) clazz.WalkChildren()[0];
            Assert.That(con.Name, Is.EqualTo("a"));
            Assert.That(con.DataType.Name, Is.EqualTo("int"));

            con = (Field) clazz.WalkChildren()[1];
            Assert.That(con.Name, Is.EqualTo("b"));
            Assert.That(con.DataType.Name, Is.EqualTo("string"));

            con = (Field) clazz.WalkChildren()[2];
            Assert.That(con.Name, Is.EqualTo("c"));
            Assert.That(con.DataType.Name, Is.EqualTo("short"));

            con = (Field) clazz.WalkChildren()[3];
            Assert.That(con.Name, Is.EqualTo("d"));
            Assert.That(con.DataType.Name, Is.EqualTo("long"));

            con = (Field) clazz.WalkChildren()[4];
            Assert.That(con.Name, Is.EqualTo("e"));
            Assert.That(con.DataType.Name, Is.EqualTo("float"));

            con = (Field) clazz.WalkChildren()[5];
            Assert.That(con.Name, Is.EqualTo("f"));
            Assert.That(con.DataType.Name, Is.EqualTo("double"));

            con = (Field) clazz.WalkChildren()[6];
            Assert.That(con.Name, Is.EqualTo("g"));
            Assert.That(con.DataType.Name, Is.EqualTo("bool"));

            con = (Field) clazz.WalkChildren()[7];
            Assert.That(con.Name, Is.EqualTo("h"));
            Assert.That(con.DataType.Name, Is.EqualTo("char"));

            con = (Field)clazz.WalkChildren()[8];
            Assert.That(con.Name, Is.EqualTo("i"));
            Assert.That(con.DataType.Name, Is.EqualTo("byte"));

            con = (Field)clazz.WalkChildren()[9];
            Assert.That(con.Name, Is.EqualTo("j"));
            Assert.That(con.DataType.Name, Is.EqualTo("object"));

            con = (Field)clazz.WalkChildren()[10];
            Assert.That(con.Name, Is.EqualTo("k"));
            Assert.That(con.DataType.Name, Is.EqualTo("decimal"));
        }
        public void PrimitiveTypes_LongNames()
        {
            const string code = @"public class Class1
            {
                public Int32 a = 0;
                public String b = """";
                public Int16 c = 0;
                public Int64 d = 0;
                public Single e = 0;
                public Double f = 0;
                public Bool g = false;
                public Char h = 'c';
                public Byte i = 0;
                public Object j = null;
                public Decimal k = 0.0m;
            }";

            CSharpParser parser = new CSharpParser();
            parser.FormatSettings.ReorderBaseConstructs = false;
            parser.ParseCode(code);

            ICodeRoot codeRoot = parser.CreatedCodeRoot;
            Class clazz = (Class) codeRoot.WalkChildren()[0];

            Field con = (Field) clazz.WalkChildren()[0];
            Assert.That(con.Name, Is.EqualTo("a"));
            Assert.That(con.DataType.Name, Is.EqualTo("Int32"));

            con = (Field) clazz.WalkChildren()[1];
            Assert.That(con.Name, Is.EqualTo("b"));
            Assert.That(con.DataType.Name, Is.EqualTo("String"));

            con = (Field) clazz.WalkChildren()[2];
            Assert.That(con.Name, Is.EqualTo("c"));
            Assert.That(con.DataType.Name, Is.EqualTo("Int16"));

            con = (Field) clazz.WalkChildren()[3];
            Assert.That(con.Name, Is.EqualTo("d"));
            Assert.That(con.DataType.Name, Is.EqualTo("Int64"));

            con = (Field) clazz.WalkChildren()[4];
            Assert.That(con.Name, Is.EqualTo("e"));
            Assert.That(con.DataType.Name, Is.EqualTo("Single"));

            con = (Field) clazz.WalkChildren()[5];
            Assert.That(con.Name, Is.EqualTo("f"));
            Assert.That(con.DataType.Name, Is.EqualTo("Double"));

            con = (Field) clazz.WalkChildren()[6];
            Assert.That(con.Name, Is.EqualTo("g"));
            Assert.That(con.DataType.Name, Is.EqualTo("Bool"));

            con = (Field) clazz.WalkChildren()[7];
            Assert.That(con.Name, Is.EqualTo("h"));
            Assert.That(con.DataType.Name, Is.EqualTo("Char"));

            con = (Field)clazz.WalkChildren()[8];
            Assert.That(con.Name, Is.EqualTo("i"));
            Assert.That(con.DataType.Name, Is.EqualTo("Byte"));

            con = (Field)clazz.WalkChildren()[9];
            Assert.That(con.Name, Is.EqualTo("j"));
            Assert.That(con.DataType.Name, Is.EqualTo("Object"));

            con = (Field)clazz.WalkChildren()[10];
            Assert.That(con.Name, Is.EqualTo("k"));
            Assert.That(con.DataType.Name, Is.EqualTo("Decimal"));
        }
        internal static void AssertFilesAreSame(string original, string changed)
        {
            CodeRootMap codeRootMap = new CodeRootMap();

            CSharpParser formatter = new CSharpParser();
            formatter.FormatSettings.ReorderBaseConstructs = true;
            formatter.ParseCode(File.ReadAllText(original));
            ICodeRoot codeRoot = formatter.CreatedCodeRoot;

            codeRootMap.AddCodeRoot(codeRoot, Version.NewGen);
            codeRootMap.AddCodeRoot(codeRoot, Version.PrevGen);

            formatter = new CSharpParser();
            formatter.FormatSettings.ReorderBaseConstructs = true;
            formatter.ParseCode(File.ReadAllText(changed));
            codeRoot = formatter.CreatedCodeRoot;

            codeRootMap.AddCodeRoot(codeRoot, Version.User);

            Assert.That(codeRootMap.Diff(), Is.EqualTo(TypeOfDiff.ExactCopy));
        }
        public void Structures()
        {
            const string code = @"
            public class Class1
            {
                public struct Structure1 { }
            }
            ";

            CSharpParser parser = new CSharpParser();
            parser.ParseCode(code);

            ICodeRoot codeRoot = parser.CreatedCodeRoot;
            Class clazz = (Class) codeRoot.WalkChildren()[0];

            Struct con = (Struct) clazz.WalkChildren()[0];
            Assert.That(con.Name, Is.EqualTo("Structure1"));
            Assert.That(con.Modifiers, Has.Count(1));
            Assert.That(con.Modifiers[0], Is.EqualTo("public"));
        }
        private void CallFunction()
        {
            try
            {
                SetUserOptionValues();
                string fileName = System.IO.Path.Combine(System.IO.Path.GetTempPath(), "temp.aal");
                string str = (string)Loader.Instance.CallTemplateFunction(TheFunction.Name, ref ParametersToPass);

                if (TheFunction.IsTemplateFunction)
                {
                    //SetSyntaxLanguage(Slyce.Common.SyntaxEditorHelper.LanguageEnumFromName(TheFunction.ReturnType.Name));
                }
                else
                {
                    //SetSyntaxLanguage(Project.OutputLanguageTypes.PlainText);
                }
                syntaxEditor1.Text = str;

                if (Project.Instance.TextLanguage == TemplateContentLanguage.CSharp)
                {
                    CSharpParser formatter = new CSharpParser();
                    formatter.ParseCode(str);

                    if(formatter.ErrorOccurred)
                    {
                        StringBuilder errorMsg = new StringBuilder();
                        foreach(ParserSyntaxError error in formatter.SyntaxErrors)
                        {
                            errorMsg.AppendFormat("An error occurred on line {1}:\n\n{0}", error.ErrorMessage, error.LineNumber);
                            errorMsg.AppendLine();
                        }
                        MessageBox.Show(this, errorMsg.ToString(), "Formatting Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                    {
                        str = formatter.CreatedCodeRoot.ToString();
                        syntaxEditorFormatted.Text = Utility.StandardizeLineBreaks(str, Utility.LineBreaks.Windows);
                    }
                }
            }
            catch (Exception ex)
            {
                Controller.ReportError(ex);
            }
        }
        public void Structures_MultipleFields()
        {
            const string code = @"
            public class Class1
            {
                public struct Structure1
                {
                    public int i;
                    public int j;
                }
            }
            ";

            CSharpParser parser = new CSharpParser();
            parser.ParseCode(code);

            ICodeRoot codeRoot = parser.CreatedCodeRoot;
            Class clazz = (Class)codeRoot.WalkChildren()[0];

            Struct con = (Struct)clazz.WalkChildren()[0];
            Assert.That(con.Name, Is.EqualTo("Structure1"));
            Assert.That(con.Modifiers, Has.Count(1));
            Assert.That(con.Modifiers[0], Is.EqualTo("public"));

            Field f1 = con.Fields[0];
            Assert.That(f1.Name, Is.EqualTo("i"));
            Assert.That(f1.Modifiers, Has.Count(1));
            Assert.That(f1.Modifiers[0], Is.EqualTo("public"));
            Assert.That(f1.DataType.Name, Is.EqualTo("int"));

            Field f2 = con.Fields[1];
            Assert.That(f2.Name, Is.EqualTo("j"));
            Assert.That(f2.Modifiers, Has.Count(1));
            Assert.That(f2.Modifiers[0], Is.EqualTo("public"));
            Assert.That(f2.DataType.Name, Is.EqualTo("int"));
        }