コード例 #1
0
        public void TestAddingAssemblyReferences_PropertyInitializer()
        {
            // Arrange
            string fileName      = "TestFile";
            string fileExtension = "cs";
            string fullFileName  = $"{fileName}.{fileExtension}";
            string assemblyName  = "System";
            string assemblyName2 = "System.Text";
            SGAssemblyReference assemblyReference  = new SGAssemblyReference(assemblyName);
            SGAssemblyReference assemblyReference2 = new SGAssemblyReference(assemblyName2);

            // Act
            SGFile file = new SGFile(fullFileName)
            {
                AssemblyReferences =
                {
                    assemblyReference,
                    assemblyReference2
                }
            };

            // Assert
            Assert.IsTrue(file.AssemblyReferences.ContainsAll(new List <SGAssemblyReference>
            {
                assemblyReference,
                assemblyReference2
            }));
        }
コード例 #2
0
        public void TestAddingNamespaces_PropertyInitializer()
        {
            // Arrange
            string      fileName       = "TestFile";
            string      fileExtension  = "cs";
            string      fullFileName   = $"{fileName}.{fileExtension}";
            string      namespaceName  = "SlnGen.Core";
            string      namespaceName2 = "SlnGen.Core.Code";
            SGNamespace namespace1     = new SGNamespace(namespaceName);
            SGNamespace namespace2     = new SGNamespace(namespaceName2);

            // Act
            SGFile file = new SGFile(fullFileName)
            {
                Namespaces =
                {
                    namespace1,
                    namespace2
                }
            };

            // Assert
            Assert.IsTrue(file.Namespaces.ContainsAll(new List <SGNamespace>
            {
                namespace1,
                namespace2
            }));
        }
コード例 #3
0
        public void TestEmptyName_ThrowsArgumentException()
        {
            // Arrange
            string fullFileName = String.Empty;

            // Act
            SGFile file = new SGFile(fullFileName);
        }
コード例 #4
0
        public void TestNullName_ThrowsArgumentNullException()
        {
            // Arrange
            string fullFileName = null;

            // Act
            SGFile file = new SGFile(fullFileName);
        }
コード例 #5
0
        public void TestFileNameEndsInPeriod_ThrowsException()
        {
            // Arrange
            string fileName      = "TestFile.";
            string fileExtension = "cs";

            // Act
            SGFile file = new SGFile(fileName, fileExtension);
        }
コード例 #6
0
        public void TestEmptyFileExtension_ThrowsArgumentException()
        {
            // Arrange
            string fileName      = "TestFile";
            string fileExtension = String.Empty;

            // Act
            SGFile file = new SGFile(fileName, fileExtension);
        }
コード例 #7
0
        public void TestFileExtensionContainsPeriods_ThrowsArgumentException()
        {
            // Arrange
            string fileName      = "TestFile";
            string fileExtension = ".cs";

            // Act
            SGFile file = new SGFile(fileName, fileExtension);
        }
コード例 #8
0
        public void TestNullFileName_ThrowsArgumentNullException()
        {
            // Arrange
            string fileName      = null;
            string fileExtension = "cs";

            // Act
            SGFile file = new SGFile(fileName, fileExtension);
        }
コード例 #9
0
        public void TestFileNameStartsWithPeriod_ThrowsException()
        {
            // Arrange
            string fileName      = ".TestFile";
            string fileExtension = "cs";

            // Act
            SGFile file = new SGFile(fileName, fileExtension);
        }
コード例 #10
0
        public void TestNameWithNoPeriod_ThrowsArgumentException()
        {
            // Arrange
            string fileName      = "TestFile";
            string fileExtension = "cs";
            string fullFileName  = $"{fileName}{fileExtension}";

            // Act
            SGFile file = new SGFile(fullFileName);
        }
コード例 #11
0
        public MainActivityFile(string appName, string assemblyName) : base("MainActivity.cs")
        {
            SGFile file = new SGFile("MainActivity.cs")
            {
                UsingStatements =
                {
                    new CGUsingStatement("System"),
                    new CGUsingStatement("Android.App"),
                    new CGUsingStatement("Android.Content.PM"),
                    new CGUsingStatement("Android.Runtime"),
                    new CGUsingStatement("Android.Views"),
                    new CGUsingStatement("Android.Widget"),
                    new CGUsingStatement("Android.OS")
                },
                Namespaces =
                {
                    new CGNamespace(assemblyName)
                    {
                        Classes =
                        {
                            new CGClass("MainActivity",                                              "global::Xamarin.Forms.Platform.Android.FormsAppCompatActivity")
                            {
                                ClassAttributes =
                                {
                                    $"[Activity(Label = \"{appName}\", Icon = \"@drawable/icon\", Theme = \"@style/MainTheme\", MainLauncher = true, ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation)]"
                                },
                                ClassMethods =
                                {
                                    new CGMethod(new CGMethodSignature(AccessibilityLevel.Protected, "OnCreate",                                         "void",          false, true)
                                    {
                                        Arguments =
                                        {
                                            new CGMethodArgument("Bundle",                           "bundle")
                                        }
                                    })
                                    {
                                        MethodText = String.Concat(
                                            "TabLayoutResource = Resource.Layout.Tabbar;",           Environment.NewLine,
                                            "ToolbarResource = Resource.Layout.Toolbar;",            Environment.NewLine,
                                            Environment.NewLine,
                                            "base.OnCreate(bundle);",                                Environment.NewLine,
                                            Environment.NewLine,
                                            "global::Xamarin.Forms.Forms.Init(this, bundle);",       Environment.NewLine,
                                            "LoadApplication(new App());"
                                            )
                                    }
                                }
                            }
                        }
                    }
                }
            };

            this.FileContents = file.ToString();
        }
コード例 #12
0
 public AppDelegateFile(string rootNamespace) : base(s_fileName, true, false)
 {
     FileContents = new SGFile(s_fileName)
     {
         AssemblyReferences =
         {
             new SGAssemblyReference("System"),
             new SGAssemblyReference("System.Collections.Generic"),
             new SGAssemblyReference("System.Linq"),
             new SGAssemblyReference("Foundation"),
             new SGAssemblyReference("UIKit")
         },
         Namespaces =
         {
             new SGNamespace(rootNamespace)
             {
                 Classes =
                 {
                     new SGClass("AppDelegate",                                      SGAccessibilityLevel.Public, false, false, true)
                     {
                         BaseClass = "global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate",
                         //Comments =
                         Attributes =
                         {
                             new SGAttribute("Register",                             "\"AppDelegate\"")
                         },
                         Methods =
                         {
                             new SGMethod(new SGMethodSignature("FinishedLaunching", SGAccessibilityLevel.Public, false, false, true, "bool")
                             {
                                 Arguments =
                                 {
                                     new SGArgument("UIApplication", "app"),
                                     new SGArgument("NSDictionary",  "options")
                                 }
                             })
                             {
                                 //Comments =
                                 Lines =
                                 {
                                     "global::Xamarin.Forms.Forms.Init();",
                                     "LoadApplication(new App());",
                                     "",
                                     "return base.FinishedLaunching(app, options);"
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }.ToString();
 }
コード例 #13
0
        public void TestFileNameContainsMultiplePeriods_InitsFields()
        {
            // Arrange
            string fileName      = "TestFile.Test.MoreTests";
            string fileExtension = "cs";

            // Act
            SGFile file = new SGFile(fileName, fileExtension);

            // Assert
            Assert.AreEqual(fileName, file.FileName);
            Assert.AreEqual(fileExtension, file.FileExtension);
        }
コード例 #14
0
        public void TestFileNameAndExtensionCtor_InitsFields()
        {
            // Arrange
            string fileName      = "TestFile";
            string fileExtension = "cs";

            // Act
            SGFile file = new SGFile(fileName, fileExtension);

            // Assert
            Assert.AreEqual(fileName, file.FileName);
            Assert.AreEqual(fileExtension, file.FileExtension);
        }
コード例 #15
0
        public void TestStingleStringCtor_InitsFields()
        {
            // Arrange
            string fileName      = "TestFile";
            string fileExtension = "cs";
            string fullFileName  = $"{fileName}.{fileExtension}";

            // Act
            SGFile file = new SGFile(fullFileName);

            // Assert
            Assert.AreEqual(fileName, file.FileName);
            Assert.AreEqual(fileExtension, file.FileExtension);
        }
コード例 #16
0
        public void TestSingleStringContainsMultiplePeriods_InitsFields()
        {
            // Arrange
            string fileName      = "TestFile.MoreTests.Test";
            string fileExtension = "cs";
            string fullFileName  = $"{fileName}.{fileExtension}";

            // Act
            SGFile file = new SGFile(fullFileName);

            // Assert
            Assert.AreEqual(fileName, file.FileName);
            Assert.AreEqual(fileExtension, file.FileExtension);
        }
コード例 #17
0
        public void TestAddingAssemblyReference_FluentAPI()
        {
            // Arrange
            string fileName      = "TestFile";
            string fileExtension = "cs";
            string fullFileName  = $"{fileName}.{fileExtension}";
            string assemblyName  = "System";
            SGAssemblyReference assemblyReference = new SGAssemblyReference(assemblyName);

            // Act
            SGFile file = new SGFile(fullFileName).WithAssemblies(assemblyReference);

            // Assert
            Assert.IsTrue(file.AssemblyReferences.Contains(assemblyReference));
        }
コード例 #18
0
        public void TestAddingNamespace_FluentAPI()
        {
            // Arrange
            string      fileName      = "TestFile";
            string      fileExtension = "cs";
            string      fullFileName  = $"{fileName}.{fileExtension}";
            string      namespaceName = "SlnGen.Core";
            SGNamespace @namespace    = new SGNamespace(namespaceName);

            // Act
            SGFile file = new SGFile(fullFileName).WithNamespaces(@namespace);

            // Assert
            Assert.IsTrue(file.Namespaces.Contains(@namespace));
        }
コード例 #19
0
 public MainActivityFile(string appName, string rootNamespace) : base("MainActivity.cs")
 {
     SGFile file = new SGFile("MainActivity.cs")
     {
         AssemblyReferences =
         {
             new SGAssemblyReference("System"),
             new SGAssemblyReference("Android.App"),
             new SGAssemblyReference("Android.Content.PM"),
             new SGAssemblyReference("Android.Runtime"),
             new SGAssemblyReference("Android.Views"),
             new SGAssemblyReference("Android.Widget"),
             new SGAssemblyReference("Android.OS")
         },
         Namespaces =
         {
             new SGNamespace(rootNamespace)
             {
                 Classes =
                 {
                     new SGClass("MainActivity",                                                    SGAccessibilityLevel.Public)
                     {
                         Attributes =
                         {
                             new SGAttribute("Activity",            $"Label = \"{appName}\"",                                            "Icon = \"@mipmap/icon\"",       "Theme = \"@style/MainTheme\"",
                                             "MainLauncher = true", "ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation")
                         },
                         Methods =
                         {
                             new SGMethod(new SGMethodSignature("OnCreate",                         SGAccessibilityLevel.Protected,                         false, false,                     true, "void"))
                             {
                                 Lines =
                                 {
                                     "TabLayoutResource = Resource.Layout.Tabbar;",
                                     "ToolbarResrouce = Resource.Layout.Toolbar;",
                                     "",
                                     "base.OnCreate(savedInstanceState);",
                                     "global::Xamarin.Forms.Forms.Init(this, savedInstanceState);",
                                     "LoadApplication(new App());"
                                 }
                             }
                         }
                     }
                 }
             }
         }
     };
 }
コード例 #20
0
ファイル: iOSMainFile.cs プロジェクト: chriszumberge/SlnGen
 public IOSMainFile(string assemblyName) : base("Main.cs", true, false)
 {
     SGFile file = new SGFile("Main.cs")
     {
         UsingStatements =
         {
             new CGUsingStatement("System"),
             new CGUsingStatement("System.Collections.Generic"),
             new CGUsingStatement("System.Linq"),
             new CGUsingStatement("Foundation"),
             new CGUsingStatement("UIKit")
         },
         Namespaces =
         {
             new CGNamespace(assemblyName)
             {
                 Classes =
                 {
                     new CGClass("Application")
                     {
                         ClassMethods =
                         {
                             new CGMethod(new CGMethodSignature("Main",                                                   "void",              true, false)
                             {
                                 Arguments =
                                 {
                                     new CGMethodArgument("string[]",                                                     "args")
                                 }
                             })
                             {
                                 MethodComments =
                                 {
                                     "This is the main entry point of the application."
                                 },
                                 MethodText = String.Concat(
                                     "// if you want to use a different Application Delegate class from \"AppDelegate\"", Environment.NewLine,
                                     "// you can specify it here.",                                                       Environment.NewLine,
                                     "UIApplication.Main(args, null, \"AppDelegate\");"
                                     )
                             }
                         }
                     }
                 }
             }
         }
     };
 }
コード例 #21
0
        public void TestAddingMultipleAssemblyReferences_FluentAPI()
        {
            // Arrange
            string fileName      = "TestFile";
            string fileExtension = "cs";
            string fullFileName  = $"{fileName}.{fileExtension}";
            string assemblyName  = "System";
            string assemblyName2 = "System.Text";
            SGAssemblyReference assemblyReference  = new SGAssemblyReference(assemblyName);
            SGAssemblyReference assemblyReference2 = new SGAssemblyReference(assemblyName2);

            // Act
            SGFile file = new SGFile(fullFileName).WithAssemblies(assemblyReference, assemblyReference2);

            // Assert
            Assert.IsTrue(file.AssemblyReferences.ContainsAll(new List <SGAssemblyReference>
            {
                assemblyReference,
                assemblyReference2
            }));
        }
コード例 #22
0
        public void TestAddingMultipleNamespaces_FluentAPI()
        {
            // Arrange
            string      fileName       = "TestFile";
            string      fileExtension  = "cs";
            string      fullFileName   = $"{fileName}.{fileExtension}";
            string      namespaceName  = "SlnGen.Core";
            string      namespaceName2 = "SlnGen.Core.Code";
            SGNamespace namespace1     = new SGNamespace(namespaceName);
            SGNamespace namespace2     = new SGNamespace(namespaceName2);

            // Act
            SGFile file = new SGFile(fullFileName).WithNamespaces(namespace1, namespace2);

            // Assert
            Assert.IsTrue(file.Namespaces.ContainsAll(new List <SGNamespace>
            {
                namespace1,
                namespace2
            }));
        }
コード例 #23
0
ファイル: iOSMainFile.cs プロジェクト: chriszumberge/SlnGen
 public iOSMainFile(string rootNamespace) : base(s_fileName, true, false)
 {
     FileContents = new SGFile(s_fileName)
     {
         AssemblyReferences =
         {
             new SGAssemblyReference("System"),
             new SGAssemblyReference("System",      "Collections", "Generic"),
             new SGAssemblyReference("System.Linq"),
             new SGAssemblyReference("Foundation"),
             new SGAssemblyReference("UIKit")
         },
         Namespaces =
         {
             new SGNamespace(rootNamespace)
             {
                 Classes =
                 {
                     new SGClass("Application",                                                                           SGAccessibilityLevel.Public)
                     {
                         Methods =
                         {
                             new SGMethod(new SGMethodSignature("Main",                                                   SGAccessibilityLevel.None, true))
                             {
                                 //Comments = { }
                                 Lines =
                                 {
                                     "// if you want to use a different Application Delegate class from \"AppDelegate\"",
                                     "// you can specify it here.",
                                     "UIApplication.Main(args, null, \"AppDelegate\");"
                                 }
                             }
                         }
                     }
                 }
             }
         }
     }.ToString();
 }
コード例 #24
0
 /// <summary>
 /// Initializes a new instance of the <see cref="EmbeddedResourceProjectFile"/> class.
 /// </summary>
 /// <param name="file">The file.</param>
 /// <param name="subType">The subtype.</param>
 /// <param name="generator">The generator.</param>
 public EmbeddedResourceProjectFile(SGFile file, string subType, string generator) : base(file)
 {
     SubType   = subType;
     Generator = generator;
 }
コード例 #25
0
 /// <summary>
 /// Initializes a new instance of the <see cref="FileTemplate"/> class.
 /// </summary>
 /// <param name="file">The file.</param>
 public FileTemplate(SGFile file)
 {
     TemplateText = file.ToString();
 }
コード例 #26
0
        public DefaultAppXamlFile(string namespaceName) : base("App")
        {
            XNamespace @namespace = "http://xamarin.com/schemas/2014/forms";
            XNamespace xNamespace = "http://schemas.microsoft.com/winfx/2009/xaml";

            XElement rootNode = new XElement(@namespace + "Application",
                                             //new XAttribute("xmlns", "http://xamarin.com/schemas/2014/forms"),
                                             //new XAttribute("xmlns", "http://schemas.microsoft.com/winfx/2009/xaml"),
                                             new XAttribute(xNamespace + "Class", $"{namespaceName}.App"),
                                             new XElement(@namespace + "Application.Resources"
                                                          )
                                             );

            using (var memoryStream = new MemoryStream())
            {
                rootNode.Save(memoryStream);

                memoryStream.Position = 0;
                using (var streamReader = new StreamReader(memoryStream))
                {
                    XamlFileContents = streamReader.ReadToEnd();
                }
            }

            SGFile file = new SGFile("App.xaml.cs")
            {
                AssemblyReferences =
                {
                    new SGAssemblyReference("System"),
                    new SGAssemblyReference("Xamarin.Forms"),
                    new SGAssemblyReference("Xamarin.Forms.Xaml")
                },
                Namespaces =
                {
                    new SGNamespace(namespaceName)
                    {
                        Attributes =
                        {
                            new SGAttribute("XamlCompilation", "XamlCompilationOptions.Compile").WithNamespace("assembly")
                        },
                        Classes =
                        {
                            new SGClass("App",                                     SGAccessibilityLevel.Public,    false,            false, true)
                            {
                                Constructors =
                                {
                                    new SGClassConstructor("App",                  SGAccessibilityLevel.Public)
                                    {
                                        Lines =
                                        {
                                            "InitializeComponent();",
                                            "",
                                            "MainPage = new MainPage();"
                                        }
                                    }
                                },
                                Methods =
                                {
                                    new SGMethod(new SGMethodSignature("OnStart",  SGAccessibilityLevel.Protected,  isOverride: true, returnType: "void"))
                                    {
                                        Lines ={ "// Handle when your app starts"         }
                                    },
                                    new SGMethod(new SGMethodSignature("OnSleep",  SGAccessibilityLevel.Protected,  isOverride: true, returnType: "void"))
                                    {
                                        Lines ={ "// Handle when your app sleeps"         }
                                    },
                                    new SGMethod(new SGMethodSignature("OnResume", SGAccessibilityLevel.Protected,  isOverride: true, returnType: "void"))
                                    {
                                        Lines ={ "// Handle when your app resumes"        }
                                    }
                                }
                            }.WithBaseClass("Application")
                        }
                    }
                }
            };

            XamlCsFileContents = file.ToString();
        }
コード例 #27
0
        public DefaultMainPageXamlFile(string assemblyName) : base("MainPage")
        {
            XNamespace @namespace     = "http://xamarin.com/schemas/2014/forms";
            XNamespace xNamespace     = "http://schemas.microsoft.com/winfx/2009/xaml";
            XNamespace localNamespace = $"clr-namespace:{assemblyName}";

            XElement rootNode = new XElement(@namespace + "ContentPage",
                                             //new XAttribute(@namespace+"xmlns", "http://xamarin.com/schemas/2014/forms"),
                                             //new XAttribute(xNamespace+"xmlns", "http://schemas.microsoft.com/winfx/2009/xaml"),
                                             //new XAttribute(localNamespace+"xmlns", $"clr-namespace:{assemblyName}"),
                                             new XAttribute(xNamespace + "Class", $"{assemblyName}.MainPage"),
                                             new XElement(@namespace + "Label",
                                                          new XAttribute("Text", "Welcome to Xamarin Forms!"),
                                                          new XAttribute("VerticalOptions", "Center"),
                                                          new XAttribute("HorizontalOptions", "Center")
                                                          )
                                             );

            using (var memoryStream = new MemoryStream())
            {
                rootNode.Save(memoryStream);

                memoryStream.Position = 0;
                using (var streamReader = new StreamReader(memoryStream))
                {
                    XamlFileContents = streamReader.ReadToEnd();
                }
            }

            SGFile file = new SGFile("MainPage.xaml.cs")
            {
                UsingStatements =
                {
                    new CGUsingStatement("System"),
                    new CGUsingStatement("System.Collections.Generic"),
                    new CGUsingStatement("System.Linq"),
                    new CGUsingStatement("System.Text"),
                    new CGUsingStatement("System.Threading.Tasks"),
                    new CGUsingStatement("Xamarin.Forms")
                },
                Namespaces =
                {
                    new CGNamespace(assemblyName)
                    {
                        Classes =
                        {
                            new CGClass("MainPage", "ContentPage", false, false, true)
                            {
                                ClassConstructors =
                                {
                                    new CGClassConstructor("MainPage")
                                    {
                                        ConstructorText =
                                        {
                                            "InitializeComponent();"
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            };

            XamlCsFileContents = file.ToString();
        }
コード例 #28
0
 public AndroidResourceProjectFile(SGFile file) : base(file, false, false)
 {
 }
コード例 #29
0
ファイル: ProjectFile.cs プロジェクト: chriszumberge/SlnGen
 /// <summary>
 /// Initializes a new instance of the <see cref="ProjectFile"/> class.
 /// </summary>
 /// <param name="file">The file.</param>
 /// <param name="shouldCompile">if set to <c>true</c> [should compile].</param>
 /// <param name="isContent">if set to <c>true</c> [is content].</param>
 public ProjectFile(SGFile file, bool shouldCompile, bool isContent) :
     this(String.Concat(file.FileName, ".", file.FileExtension), shouldCompile, isContent, file.ToString())
 {
 }
コード例 #30
0
ファイル: ProjectFile.cs プロジェクト: chriszumberge/SlnGen
 /// <summary>
 /// Initializes a new instance of the <see cref="ProjectFile"/> class.
 /// </summary>
 /// <param name="file">The file.</param>
 public ProjectFile(SGFile file) :
     this(String.Concat(file.FileName, ".", file.FileExtension), true, false, file.ToString())
 {
 }