コード例 #1
0
ファイル: JobRunnerTest.cs プロジェクト: m10ev/UnrealGDK
        public static void run_executes_the_expected_file_operations_when_running_an_unrealtypejob()
        {
            var mockFileSystem = GenerateMockFileSystem();

            mockFileSystem.GetFileInfoMock = (path) =>
            {
                var file = new MockFileWrapper(path, Path.GetDirectoryName(path), new DateTime(1, 1, 1));
                file.ExistsMock = () => { return(false); };
                return(file);
            };
            mockFileSystem.GetFilesInDirectoryMock = (path, searchpattern, recursive) => { return(new List <IFile>()); };

            var unrealPackageDetails = new UnrealPackageDetails("improbable.codegen.TestComponent", TestSchemaPath, "improbable.codegen");
            var unrealTypeDetails    = new UnrealTypeDetails(GenerateTypeDefinition("TestType", "improbable.codegen.TestType"), "TestType", new List <UnrealFieldDetails>(), unrealPackageDetails);
            var typeJob = new UnrealTypeJob(unrealTypeDetails, new HashSet <string>(), new HashSet <string>(), new HashSet <string>(), Path.Combine("OutputDir", "test"), mockFileSystem);

            var jobRunner = new JobRunner(mockFileSystem);

            jobRunner.Run(new List <ICodegenJob>()
            {
                typeJob
            }, new List <string>()
            {
                OutputDirectory
            });

            Assert.That(mockFileSystem.DirectoryExistsCallCount == 2);
            Assert.That(mockFileSystem.WriteToFileCallCount == 2);
            Assert.That(mockFileSystem.WrittenFiles.Count == 2);
            Assert.That(mockFileSystem.WrittenFiles.Contains(Path.Combine(OutputDirectory, "TestType.h")));
            Assert.That(mockFileSystem.WrittenFiles.Contains(Path.Combine(OutputDirectory, "TestType.cpp")));
        }
コード例 #2
0
ファイル: JobRunnerTest.cs プロジェクト: m10ev/UnrealGDK
        public static void run_does_not_clean_output_folders_of_jobs_if_the_output_folder_contains_the_files_to_be_generated()
        {
            var mockFileSystem = GenerateMockFileSystem();

            mockFileSystem.GetFilesInDirectoryMock = (path, searchpatter, recursive) =>
            {
                return(new List <IFile>()
                {
                    new MockFileWrapper(Path.Combine(path, "TestType.h"), path, new DateTime(1, 1, 1)),
                    new MockFileWrapper(Path.Combine(path, "TestType.cpp"), path, new DateTime(1, 1, 1))
                });
            };

            mockFileSystem.GetFileInfoMock = (path) =>
            {
                var fileMock = new MockFileWrapper(path, Path.GetDirectoryName(path), new DateTime(1, 1, 1));
                fileMock.ExistsMock = () => { return(true); };
                return(fileMock);
            };

            var unrealPackageDetails   = new UnrealPackageDetails("improbable.codegen.TestComponent", TestSchemaPath, "improbable.codegen");
            var cleanUnrealTypeDetails = new UnrealTypeDetails(GenerateTypeDefinition("TestType", "improbable.codegen.TestType"), "TestType", new List <UnrealFieldDetails>(), unrealPackageDetails);
            var cleanTypeJob           = new UnrealTypeJob(cleanUnrealTypeDetails, new HashSet <string>(), new HashSet <string>(), new HashSet <string>(), OutputDirectory, mockFileSystem);

            var jobRunner = new JobRunner(mockFileSystem);

            jobRunner.Run(new List <ICodegenJob>()
            {
                cleanTypeJob
            }, new List <string>()
            {
                OutputDirectory
            });


            //This validates that the output folder was not deleted
            Assert.That(mockFileSystem.DeleteDirectoryCallCount == 0);
            Assert.That(mockFileSystem.GetFilesInDirectoryCallCount == 1);

            //This validates that no codegen jobs were run as they were expected to not be dirty.
            Assert.That(mockFileSystem.WriteToFileCallCount == 0);
            Assert.That(mockFileSystem.DirectoryExistsCallCount == 0);
            Assert.That(mockFileSystem.DirectoryExistsCallCount == 0);
            Assert.That(mockFileSystem.WriteToFileCallCount == 0);
            Assert.That(cleanTypeJob.IsDirty() == false);
        }
コード例 #3
0
ファイル: JobRunnerTest.cs プロジェクト: m10ev/UnrealGDK
        public void run_does_clean_if_files_are_present_in_output_folder_that_should_not_be_there()
        {
            var mockFileSystem = GenerateMockFileSystem();

            mockFileSystem.GetFilesInDirectoryMock = (path, searchpatter, recursive) =>
            {
                return(new List <IFile>()
                {
                    new MockFileWrapper(Path.Combine(path, "TestType.h"), path, new DateTime(1, 1, 1)),
                    new MockFileWrapper(Path.Combine(path, "TestType.cpp"), path, new DateTime(1, 1, 1)),
                    new MockFileWrapper(Path.Combine(path, "Invalid.cpp"), path, new DateTime(1, 1, 1)),
                });
            };
            mockFileSystem.DeleteDirectoryMock = (path) => { };
            mockFileSystem.GetFileInfoMock     = (path) =>
            {
                var fileMock = new MockFileWrapper(path, Path.GetDirectoryName(path), new DateTime(1, 1, 1));

                bool fileExists = false;
                var  fileName   = Path.GetFileName(path);
                if (fileName == "TestType.h" || fileName == "TestType.cpp" || fileName == "Invalid.cpp")
                {
                    fileExists = true;
                }

                fileMock.ExistsMock = () => { return(fileExists); };
                return(fileMock);
            };

            var unrealPackageDetails = new UnrealPackageDetails("improbable.codegen.TestComponent", TestSchemaPath, "improbable.codegen");

            var cleanUnrealTypeDetails = new UnrealTypeDetails(GenerateTypeDefinition("TestType", "improbable.codegen.TestType"), "TestType", new List <UnrealFieldDetails>(), unrealPackageDetails);
            var cleanTypeJob           = new UnrealTypeJob(cleanUnrealTypeDetails, new HashSet <string>(), new HashSet <string>(), new HashSet <string>(), OutputDirectory, mockFileSystem);

            var dirtyUnrealTypeDetails = new UnrealTypeDetails(GenerateTypeDefinition("DirtyTestType", "improbable.codegen.DirtyTestType"), "DirtyTestType", new List <UnrealFieldDetails>(), unrealPackageDetails);
            var dirtyTypeJob           = new UnrealTypeJob(dirtyUnrealTypeDetails, new HashSet <string>(), new HashSet <string>(), new HashSet <string>(), OutputDirectory, mockFileSystem);

            var jobRunner = new JobRunner(mockFileSystem);

            jobRunner.Run(new List <ICodegenJob>()
            {
                cleanTypeJob, dirtyTypeJob
            }, new List <string>()
            {
                OutputDirectory
            });

            //Validate that the folder check was correct
            Assert.That(mockFileSystem.DeleteDirectoryCallCount == 1);
            Assert.That(mockFileSystem.GetFilesInDirectoryCallCount == 1);

            //Validate that the correct jobs were run and expected files were written
            Assert.That(mockFileSystem.GetFileInfoCallCount == 4);
            Assert.That(mockFileSystem.DirectoryExistsCallCount == 4);
            Assert.That(mockFileSystem.WriteToFileCallCount == 4);
            Assert.That(mockFileSystem.WrittenFiles.Count == 4);
            Assert.That(mockFileSystem.WrittenFiles.Contains(Path.Combine(OutputDirectory, "TestType.h")));
            Assert.That(mockFileSystem.WrittenFiles.Contains(Path.Combine(OutputDirectory, "TestType.cpp")));
            Assert.That(mockFileSystem.WrittenFiles.Contains(Path.Combine(OutputDirectory, "DirtyTestType.h")));
            Assert.That(mockFileSystem.WrittenFiles.Contains(Path.Combine(OutputDirectory, "DirtyTestType.cpp")));

            Assert.That(cleanTypeJob.IsDirty());
            Assert.That(dirtyTypeJob.IsDirty());
        }