Пример #1
0
        public void TypeNameWithoutGenericTypes()
        {
            var tp = new TypeName("Int32");

            Assert.AreEqual("Int32", SourceCodeGenerator.Write(SourceCodeLanguage.CSharp, tp));
            Assert.AreEqual("Int32", SourceCodeGenerator.Write(SourceCodeLanguage.VB, tp));
        }
Пример #2
0
        public string Build()
        {
            var objectsCodeStringBuilder = new StringBuilder();
            var schemaTuples             = new List <SchemaInfoTuple>();

            foreach (var keyValue in _jsonSchemaDictionary)
            {
                JSchema jsonSchema = JSchema.Parse(keyValue.Value);
                schemaTuples.Add(new SchemaInfoTuple(jsonSchema, keyValue.Key));
            }

            var schemaGenerator = new SourceCodeGenerator <CSharpObjectDefinition>(schemaTuples);

            objectsCodeStringBuilder.AppendLine(schemaGenerator.Generate());
            var sourceCode = $@"
using System;
using System.Collections.Generic;
using System.Text;
namespace Theia
{{
{objectsCodeStringBuilder}
}}
";

            return(sourceCode);
        }
Пример #3
0
        public void InterfaceMethodBasicFeature()
        {
            var md = new InterfaceMethod("GetNumber");

            Assert.AreEqual("void GetNumber();" + SourceCodeGenerator.NewLine
                            , SourceCodeGenerator.Write(SourceCodeLanguage.CSharp, md));
        }
Пример #4
0
        protected override void RunStartedCore(Dictionary <string, string> replacementsDictionary)
        {
            ContextDiscovery discovery = new ContextDiscovery(_dte);

            discovery.DiscoverCore(out ProjectItemOrProject projectItemorProject);
            SourceText text           = SourceCodeGenerator.GenerateXamlPropertyRuleSourceText(RootName);
            string     codeBehindText = XamlPropertyRuleGenerator.GenerateCodeBehindContent(RootName, RootNamespace);
            string     filePath       = null;
            string     codeBehindPath = null;

            if (projectItemorProject.IsProject)
            {
                string directory = Path.GetDirectoryName(projectItemorProject.Project.FullName);
                filePath       = Path.Combine(directory, $"{RootName}.xaml");
                codeBehindPath = Path.Combine(directory, $"{RootName}.xaml.cs");
            }
            else
            {
                filePath       = Path.Combine(projectItemorProject.ProjectItem.FileNames[0], $"{RootName}.xaml");
                codeBehindPath = Path.Combine(projectItemorProject.ProjectItem.FileNames[0], $"{RootName}.xaml.cs");
            }

            File.WriteAllText(codeBehindPath, codeBehindText);
            File.WriteAllText(filePath, text.ToString(), Encoding.ASCII);

            ProjectItem projectItem = projectItemorProject.ProjectItem.ProjectItems.AddFromFile(filePath);

            SetXamlPropertyRuleBuildProperties(projectItem);
        }
Пример #5
0
        public void PropertySetModifierPrivate()
        {
            var p = new Property("Int32", "Age");

            p.Get.Body.Add(new CodeBlock(SourceCodeLanguage.CSharp, "return _Age;"));
            p.Set.Modifier = AccessModifier.Private;
            p.Set.Body.Add(new CodeBlock(SourceCodeLanguage.CSharp, "_Age = value;"));
            var sw = new StringWriter();
            var cs = new CSharpSourceCodeGenerator(sw);

            cs.Write(p);

            Assert.AreEqual("public Int32 Age" + SourceCodeGenerator.NewLine
                            + "{" + SourceCodeGenerator.NewLine
                            + "    get" + SourceCodeGenerator.NewLine
                            + "    {" + SourceCodeGenerator.NewLine
                            + "        return _Age;" + SourceCodeGenerator.NewLine
                            + "    }" + SourceCodeGenerator.NewLine
                            + "    private set" + SourceCodeGenerator.NewLine
                            + "    {" + SourceCodeGenerator.NewLine
                            + "        _Age = value;" + SourceCodeGenerator.NewLine
                            + "    }" + SourceCodeGenerator.NewLine
                            + "}" + SourceCodeGenerator.NewLine
                            , SourceCodeGenerator.Write(SourceCodeLanguage.CSharp, p));
        }
Пример #6
0
        public void InterfacePropertyGetFeature()
        {
            var p = new InterfaceProperty(new TypeName("String"), "DisplayName", true, false);

            Assert.AreEqual("String DisplayName { get; }" + SourceCodeGenerator.NewLine
                            , SourceCodeGenerator.Write(SourceCodeLanguage.CSharp, p));
        }
Пример #7
0
        public void CodeBlockBasicFeature()
        {
            var cb = new CodeBlock(SourceCodeLanguage.CSharp, "Int32 x = 12;");

            Assert.AreEqual("Int32 x = 12;" + SourceCodeGenerator.NewLine
                            , SourceCodeGenerator.Write(SourceCodeLanguage.CSharp, cb));
        }
        protected override void RunStartedCore(Dictionary <string, string> replacementsDictionary)
        {
            string           name          = replacementsDictionary["$rootname$"];
            string           rootnamespace = replacementsDictionary["$rootnamespace$"];
            ContextDiscovery discovery     = new ContextDiscovery(_dte);

            discovery.DiscoverCore(out ProjectItemOrProject projectItemorProject);
            CodeAnalysis.Text.SourceText text = SourceCodeGenerator.GenerateAsyncCommandGroupHandlerSourceText(rootnamespace, name);
            string filePath = null;

            if (projectItemorProject.IsProject)
            {
                filePath = Path.Combine(Path.GetDirectoryName(projectItemorProject.Project.FullName), $"{name}.cs");
            }
            else
            {
                filePath = Path.Combine(projectItemorProject.ProjectItem.FileNames[0], $"{name}.cs");
            }

            File.WriteAllText(filePath, text.ToString(), Encoding.ASCII);

            ProjectItem projectItem = projectItemorProject.ProjectItem.ProjectItems.AddFromFile(filePath);

            Service.Open(projectItem);
        }
Пример #9
0
        public void GeneratedSourceCodeBeginsWithPrefix()
        {
            const string prefix = "testPrefix";

            ISourceCodeGenerator sourceCodeGenerator = new SourceCodeGenerator(prefix);
            string sourceCode = sourceCodeGenerator.GenerateSourceCode();

            Assert.That(sourceCode.StartsWith(prefix));
        }
Пример #10
0
        public void TestAutomaticProperty()
        {
            var p = new PropertyBody(PropertyBodyType.Get);

            p.IsAutomaticProperty = true;

            Assert.AreEqual("get;" + SourceCodeGenerator.NewLine
                            , SourceCodeGenerator.Write(SourceCodeLanguage.CSharp, p));
        }
Пример #11
0
        public void TypeNameWithGenericTypes()
        {
            var tp = new TypeName("Func");

            tp.GenericTypes.Add(new TypeName("String"));
            tp.GenericTypes.Add(new TypeName("Int32"));

            Assert.AreEqual("Func<String, Int32>", SourceCodeGenerator.Write(SourceCodeLanguage.CSharp, tp));
            Assert.AreEqual("Func(Of String, Int32)", SourceCodeGenerator.Write(SourceCodeLanguage.VB, tp));
        }
        public void FieldBasic1()
        {
            var f = new Field("String", "_name")
            {
                Initializer = "\"Default Name\""
            };

            Assert.AreEqual("private String _name = \"Default Name\";" + SourceCodeGenerator.NewLine
                            , SourceCodeGenerator.Write(SourceCodeLanguage.CSharp, f));
        }
Пример #13
0
        public void GeneratedSourceCodeLengthIsLengthOfPrefixPlusSourceCodeLength()
        {
            const string prefix = "testPrefix";
            int          length = prefix.Length + SourceCodeGenerator.DEFAULT_SOURCE_CODE_LENGTH;

            ISourceCodeGenerator sourceCodeGenerator = new SourceCodeGenerator(prefix);
            string sourceCode = sourceCodeGenerator.GenerateSourceCode();

            Assert.AreEqual(length, sourceCode.Length);
        }
Пример #14
0
        public void InterfaceMethodParameters()
        {
            var md = new InterfaceMethod("GetDisplayName");

            md.Parameters.Add(new MethodParameter("String", "name"));
            md.Parameters.Add(new MethodParameter("Int32", "age"));

            Assert.AreEqual("void GetDisplayName(String name, Int32 age);" + SourceCodeGenerator.NewLine
                            , SourceCodeGenerator.Write(SourceCodeLanguage.CSharp, md));
        }
Пример #15
0
        public void ClassInheritance()
        {
            var c = new Class(AccessModifier.Public, "Person");

            c.BaseClass = new TypeName("PersonBase");

            Assert.AreEqual("public class Person : PersonBase" + SourceCodeGenerator.NewLine
                            + "{" + SourceCodeGenerator.NewLine
                            + "}" + SourceCodeGenerator.NewLine
                            , SourceCodeGenerator.Write(SourceCodeLanguage.CSharp, c));
        }
Пример #16
0
        public void ConstructorBasicFeature()
        {
            var md = new Constructor(AccessModifier.Public, "BigNumber");

            md.Body.Add(SourceCodeLanguage.CSharp, "this.Value = 123;");

            Assert.AreEqual("public BigNumber()" + SourceCodeGenerator.NewLine
                            + "{" + SourceCodeGenerator.NewLine
                            + SourceCodeGenerator.Default.Indent + "this.Value = 123;" + SourceCodeGenerator.NewLine
                            + "}" + SourceCodeGenerator.NewLine, SourceCodeGenerator.Write(SourceCodeLanguage.CSharp, md));
        }
        /// <summary>
        /// Metoda folosita pentru generarea codului sursa.
        /// </summary>
        /// <returns></returns>
        private async Task ExecutaAplicatie()
        {
            if (string.IsNullOrEmpty(InputString))
            {
                MessageBox.Show("Trebuie trimit un input pentru a putea executa programul!");
                return;
            }
            SourceCodeGenerator.RuleazaAplicatie(Path.GetFileNameWithoutExtension(_fileName) + ".exe", InputString);

            await Task.Delay(1);
        }
Пример #18
0
        public void ClassModifierStaticAbstractPriority()
        {
            var c = new Class(AccessModifier.Public, "StringUtility");

            c.Modifier.Static   = true;
            c.Modifier.Abstract = true;

            Assert.AreEqual("public static class StringUtility" + SourceCodeGenerator.NewLine
                            + "{" + SourceCodeGenerator.NewLine
                            + "}" + SourceCodeGenerator.NewLine
                            , SourceCodeGenerator.Write(SourceCodeLanguage.CSharp, c));
        }
            public CStyleIndentationContext(SourceCodeGenerator generator, BraceLanguageStyleIndentationOptions options)
            {
                this.generator = generator;
                this.options = options;

                if ((options & BraceLanguageStyleIndentationOptions.IncludeBraces) != 0)
                {
                    generator.WriteLine("{");
                }

                this.generator.CurrentIndent++;
            }
Пример #20
0
        public void MethodBasicFeature()
        {
            var md = new Method(MethodAccessModifier.Public, "GetNumber");

            md.Body.Add(SourceCodeLanguage.CSharp, "return 123;");

            Assert.AreEqual("public void GetNumber()" + SourceCodeGenerator.NewLine
                            + "{" + SourceCodeGenerator.NewLine
                            + SourceCodeGenerator.Default.Indent + "return 123;" + SourceCodeGenerator.NewLine
                            + "}" + SourceCodeGenerator.NewLine
                            , SourceCodeGenerator.Write(SourceCodeLanguage.CSharp, md));
        }
Пример #21
0
        public void InterfaceMethodPartialFeature()
        {
            var md = new InterfaceMethod("GetNumber");

            //These will be ignored
            md.Parameters.Add(new MethodParameter("Int32", "number"));
            md.GenericParameters.Add("T");
            md.ReturnTypeName = new TypeName("Int32");

            Assert.AreEqual("Int32 GetNumber<T>(Int32 number);" + SourceCodeGenerator.NewLine
                            , SourceCodeGenerator.Write(SourceCodeLanguage.CSharp, md));
        }
Пример #22
0
        public void ClassInheritanceAndImplement()
        {
            var c = new Class(AccessModifier.Public, "Person");

            c.BaseClass = new TypeName("PersonBase");
            c.ImplementInterfaces.Add(new TypeName("IDisposable"));
            c.ImplementInterfaces.Add(new TypeName("IEnumerable"));

            Assert.AreEqual("public class Person : PersonBase, IDisposable, IEnumerable" + SourceCodeGenerator.NewLine
                            + "{" + SourceCodeGenerator.NewLine
                            + "}" + SourceCodeGenerator.NewLine
                            , SourceCodeGenerator.Write(SourceCodeLanguage.CSharp, c));
        }
Пример #23
0
        public void MethodPartialFeature()
        {
            var md = new Method(MethodAccessModifier.Partial, "GetNumber");

            //These will be ignored
            md.Parameters.Add(new MethodParameter("Int32", "number"));
            md.GenericParameters.Add("T");
            md.ReturnTypeName = new TypeName("void");
            md.Body.Add(SourceCodeLanguage.CSharp, "return 123;");

            Assert.AreEqual("partial void GetNumber<T>(Int32 number);" + SourceCodeGenerator.NewLine
                            , SourceCodeGenerator.Write(SourceCodeLanguage.CSharp, md));
        }
Пример #24
0
        public void ConstructorParameters()
        {
            var md = new Constructor(AccessModifier.Public, "Person");

            md.Parameters.Add(new MethodParameter("String", "name"));
            md.Parameters.Add(new MethodParameter("Int32", "age"));
            md.Body.Add(SourceCodeLanguage.CSharp, "this.DisplayName = name + \":\" + age.ToString();");

            Assert.AreEqual("public Person(String name, Int32 age)" + SourceCodeGenerator.NewLine
                            + "{" + SourceCodeGenerator.NewLine
                            + SourceCodeGenerator.Default.Indent + "this.DisplayName = name + \":\" + age.ToString();" + SourceCodeGenerator.NewLine
                            + "}" + SourceCodeGenerator.NewLine, SourceCodeGenerator.Write(SourceCodeLanguage.CSharp, md));
        }
Пример #25
0
        public void CodeBlockForStatement()
        {
            var cb = new CodeBlock(SourceCodeLanguage.CSharp, "for (int i = 0; i < length; i++)");

            cb.CurlyBracket = true;
            cb.CodeBlocks.Add(new CodeBlock(SourceCodeLanguage.CSharp, "x = x + 1;"));

            Assert.AreEqual("for (int i = 0; i < length; i++)" + SourceCodeGenerator.NewLine
                            + "{" + SourceCodeGenerator.NewLine
                            + "    x = x + 1;" + SourceCodeGenerator.NewLine
                            + "}" + SourceCodeGenerator.NewLine
                            , SourceCodeGenerator.Write(SourceCodeLanguage.CSharp, cb));
        }
Пример #26
0
        public void CodeBlockIfStatement()
        {
            var cb = new CodeBlock(SourceCodeLanguage.CSharp, "if (bl == true)");

            cb.CurlyBracket = true;
            cb.CodeBlocks.Add(new CodeBlock(SourceCodeLanguage.CSharp, "MessageBox.Show(\"Update successfully!\");"));

            Assert.AreEqual("if (bl == true)" + SourceCodeGenerator.NewLine
                            + "{" + SourceCodeGenerator.NewLine
                            + "    MessageBox.Show(\"Update successfully!\");" + SourceCodeGenerator.NewLine
                            + "}" + SourceCodeGenerator.NewLine
                            , SourceCodeGenerator.Write(SourceCodeLanguage.CSharp, cb));
        }
Пример #27
0
        public void MethodParameters()
        {
            var md = new Method(MethodAccessModifier.Public, "GetDisplayName");

            md.Parameters.Add(new MethodParameter("String", "name"));
            md.Parameters.Add(new MethodParameter("Int32", "age"));
            md.Body.Add(SourceCodeLanguage.CSharp, "return name + \":\" + age.ToString();");

            Assert.AreEqual("public void GetDisplayName(String name, Int32 age)" + SourceCodeGenerator.NewLine
                            + "{" + SourceCodeGenerator.NewLine
                            + SourceCodeGenerator.Default.Indent + "return name + \":\" + age.ToString();" + SourceCodeGenerator.NewLine
                            + "}" + SourceCodeGenerator.NewLine
                            , SourceCodeGenerator.Write(SourceCodeLanguage.CSharp, md));
        }
Пример #28
0
        public void TypeNameWithNestedGenericTypes()
        {
            var tp = new TypeName("Func");

            tp.GenericTypes.Add(new TypeName("String"));
            var tp1 = new TypeName("Action");

            tp1.GenericTypes.Add(new TypeName("String"));
            tp1.GenericTypes.Add(new TypeName("Int32"));
            tp.GenericTypes.Add(tp1);

            Assert.AreEqual("Func<String, Action<String, Int32>>", SourceCodeGenerator.Write(SourceCodeLanguage.CSharp, tp));
            Assert.AreEqual("Func(Of String, Action(Of String, Int32))", SourceCodeGenerator.Write(SourceCodeLanguage.VB, tp));
        }
Пример #29
0
        public void SourceCodeBasicFeature()
        {
            var sc = new SourceCode();

            sc.UsingNamespaces.Add("System");
            sc.UsingNamespaces.Add("System.Collection");
            sc.UsingNamespaces.Add("System.Data");
            sc.UsingNamespaces.Add("System.IO");

            Assert.AreEqual("using System;" + SourceCodeGenerator.NewLine
                            + "using System.Collection;" + SourceCodeGenerator.NewLine
                            + "using System.Data;" + SourceCodeGenerator.NewLine
                            + "using System.IO;" + SourceCodeGenerator.NewLine
                            + SourceCodeGenerator.NewLine
                            , SourceCodeGenerator.Write(SourceCodeLanguage.CSharp, sc));
        }
Пример #30
0
        public void PropertyGetOnly()
        {
            var p = new Property("Int32", "Age");

            p.Get.Body.Add(new CodeBlock(SourceCodeLanguage.CSharp, "return _Age;"));
            p.Set = null;

            Assert.AreEqual("public Int32 Age" + SourceCodeGenerator.NewLine
                            + "{" + SourceCodeGenerator.NewLine
                            + "    get" + SourceCodeGenerator.NewLine
                            + "    {" + SourceCodeGenerator.NewLine
                            + "        return _Age;" + SourceCodeGenerator.NewLine
                            + "    }" + SourceCodeGenerator.NewLine
                            + "}" + SourceCodeGenerator.NewLine
                            , SourceCodeGenerator.Write(SourceCodeLanguage.CSharp, p));
        }
Пример #31
0
        public void ClassLineBreakFeature()
        {
            var c = new Class(AccessModifier.Public, "Person");

            var md = new Method(MethodAccessModifier.Public, "GetNumber");

            md.Body.Add(SourceCodeLanguage.CSharp, "return 123;");
            c.Methods.Add(md);

            Assert.AreEqual("public class Person" + SourceCodeGenerator.NewLine
                            + "{" + SourceCodeGenerator.NewLine
                            + "    public void GetNumber()" + SourceCodeGenerator.NewLine
                            + "    {" + SourceCodeGenerator.NewLine
                            + "        return 123;" + SourceCodeGenerator.NewLine
                            + "    }" + SourceCodeGenerator.NewLine
                            + "}" + SourceCodeGenerator.NewLine
                            , SourceCodeGenerator.Write(SourceCodeLanguage.CSharp, c));
        }