public static void unreallisttypereference_is_initiated_as_expected_when_passed_a_list_type_reference_with_a_built_in_type_as_contained_type()
        {
            var listTypeRaw = new FieldDefinitionRaw.ListTypeRaw()
            {
                valueType = new TypeReferenceRaw()
                {
                    sourceReference = new SourceReferenceRaw {
                        line = "1", column = "1"
                    },
                    builtInType = "float",
                    userType    = null
                }
            };

            var containedTypeReference = new UnrealBuiltInTypeReference(listTypeRaw.valueType);

            var unrealListTypeReference = new UnrealListTypeReference(containedTypeReference);

            Assert.That(unrealListTypeReference.UnderlyingCapitalisedName == "Float");
            Assert.That(unrealListTypeReference.RequiredIncludes.Count == 1);
            Assert.That(unrealListTypeReference.RequiredIncludes.Contains("\"FloatList.h\""));
            Assert.That(unrealListTypeReference.UnderlyingQualifiedName == "float");
            Assert.That(unrealListTypeReference.UnrealType == "UFloatList*");

            Assert.That(unrealListTypeReference.AssignUnderlyingValueToUnrealMemberVariable("TestField", "val") == "if (TestField == nullptr) { TestField = NewObject<UFloatList>(this); } TestField->Init(val)");
            Assert.That(unrealListTypeReference.ConvertUnderlyingValueToUnrealLocalVariable("val") == "NewObject<UFloatList>()->Init(val)");
            Assert.That(unrealListTypeReference.ConvertUnderlyingValueToUnrealMemberVariable("val") == "NewObject<UFloatList>(this)->Init(val)");
            Assert.That(unrealListTypeReference.ConvertUnrealValueToSnapshotValue("val") == "val->GetUnderlying()");
            Assert.That(unrealListTypeReference.ConvertUnrealValueToUnderlyingValue("val") == "val->GetUnderlying()");
            Assert.That(unrealListTypeReference.DefaultInitialisationString == "worker::List<float>()");
            Assert.That(unrealListTypeReference.SnapshotType == "worker::List<float>");
        }
        public static void unrealcommanddetails_has_the_correct_underlying_capitalised_name_upon_creation()
        {
            var capitalisedName           = "CapitalisedName";
            var qualifiedName             = "improbable.codegen.Test";
            var capitalisedOwnerComponent = "OwnerComponent";
            var commandDefinition         = GenerateCommandDefinition("Test",
                                                                      new TypeReferenceRaw
            {
                sourceReference = new SourceReferenceRaw {
                    line = "1", column = "1"
                },
                builtInType = "double"
            },
                                                                      new TypeReferenceRaw
            {
                sourceReference = new SourceReferenceRaw {
                    line = "1", column = "1"
                },
                builtInType = "double"
            });
            var packageDetails = GeneratePackageDetails();

            var requestTypeReference  = new UnrealBuiltInTypeReference(commandDefinition.requestType);
            var responseTypeReference = new UnrealBuiltInTypeReference(commandDefinition.responseType);

            var commandDetails = new UnrealCommandDetails(commandDefinition, capitalisedName, qualifiedName, capitalisedOwnerComponent, requestTypeReference, responseTypeReference, packageDetails);

            Assert.That(commandDetails.UnderlyingCapitalisedName == Formatting.SnakeCaseToCapitalisedCamelCase(commandDefinition.name), "the field UnderlyingCapitalisedName did not have the expected value upon creation");
        }
Beispiel #3
0
        public static void run_executes_the_expected_file_operations_when_running_an_unrealcommandjob()
        {
            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 responseTypeReference = new UnrealBuiltInTypeReference(GenerateTypeReferenceRaw());
            var requestTypeReference  = new UnrealBuiltInTypeReference(GenerateTypeReferenceRaw());
            var unrealCommandDetails  = new UnrealCommandDetails(GenerateCommandDefinition(), "TestCommand", "improbable.codegen.TestComponent", "TestComponent", requestTypeReference, responseTypeReference, unrealPackageDetails);
            var commandJob            = new UnrealCommandJob(unrealCommandDetails, Path.Combine("OutputDir", "test"), mockFileSystem);

            var jobRunner = new JobRunner(mockFileSystem);

            jobRunner.Run(new List <ICodegenJob>()
            {
                commandJob
            }, 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, "TestCommandCommandResponder.h")));
            Assert.That(mockFileSystem.WrittenFiles.Contains(Path.Combine(OutputDirectory, "TestCommandCommandResponder.cpp")));
        }
Beispiel #4
0
        public static void unrealbuiltintypereference_is_initiated_as_expected_when_passed_a_built_in_type_reference()
        {
            var builtInTypeReference = GenerateBuiltInTypeReference("int32");

            var unrealBuiltInTypeReference = new UnrealBuiltInTypeReference(builtInTypeReference);

            Assert.That(unrealBuiltInTypeReference.UnderlyingCapitalisedName == "StdInt32T");
            Assert.That(unrealBuiltInTypeReference.RequiredIncludes.Count == 0);
            Assert.That(unrealBuiltInTypeReference.UnderlyingQualifiedName == "std::int32_t");
            Assert.That(unrealBuiltInTypeReference.UnrealType == "int");

            Assert.That(unrealBuiltInTypeReference.AssignUnderlyingValueToUnrealMemberVariable("TestField", "val") == "TestField = static_cast<int>(val)");
            Assert.That(unrealBuiltInTypeReference.ConvertUnderlyingValueToUnrealLocalVariable("val") == "static_cast<int>(val)");
            Assert.That(unrealBuiltInTypeReference.ConvertUnderlyingValueToUnrealMemberVariable("val") == "static_cast<int>(val)");
            Assert.That(unrealBuiltInTypeReference.ConvertUnrealValueToSnapshotValue("val") == "val");
            Assert.That(unrealBuiltInTypeReference.ConvertUnrealValueToUnderlyingValue("1") == "static_cast<std::int32_t>(1)");
            Assert.That(unrealBuiltInTypeReference.DefaultInitialisationString == "0");
            Assert.That(unrealBuiltInTypeReference.SnapshotType == "int");
        }
Beispiel #5
0
        public static void unrealbuiltintypereference_is_initiated_as_expected_when_passed_a_standard_library_type()
        {
            var builtInTypeReference = GenerateStandardLibraryReference();

            var unrealBuiltInTypeReference = new UnrealBuiltInTypeReference(builtInTypeReference);

            Assert.That(unrealBuiltInTypeReference.UnderlyingCapitalisedName == "ImprobableCoordinates");
            Assert.That(unrealBuiltInTypeReference.RequiredIncludes.Count == 2);
            Assert.That(unrealBuiltInTypeReference.RequiredIncludes.Contains("\"improbable/standard_library.h\""));
            Assert.That(unrealBuiltInTypeReference.RequiredIncludes.Contains("\"SpatialOSConversionFunctionLibrary.h\""));
            Assert.That(unrealBuiltInTypeReference.UnderlyingQualifiedName == "improbable::Coordinates");
            Assert.That(unrealBuiltInTypeReference.UnrealType == "FVector");

            Assert.That(unrealBuiltInTypeReference.AssignUnderlyingValueToUnrealMemberVariable("TestField", "val") == "TestField = USpatialOSConversionFunctionLibrary::SpatialOsCoordinatesToUnrealCoordinates(FVector(static_cast<float>(val.x()), static_cast<float>(val.y()), static_cast<float>(val.z())))");
            Assert.That(unrealBuiltInTypeReference.ConvertUnderlyingValueToUnrealLocalVariable("val") == "USpatialOSConversionFunctionLibrary::SpatialOsCoordinatesToUnrealCoordinates(FVector(static_cast<float>(val.x()), static_cast<float>(val.y()), static_cast<float>(val.z())))");
            Assert.That(unrealBuiltInTypeReference.ConvertUnderlyingValueToUnrealMemberVariable("val") == "USpatialOSConversionFunctionLibrary::SpatialOsCoordinatesToUnrealCoordinates(FVector(static_cast<float>(val.x()), static_cast<float>(val.y()), static_cast<float>(val.z())))");
            Assert.That(unrealBuiltInTypeReference.ConvertUnrealValueToSnapshotValue("val") == "val");
            Assert.That(unrealBuiltInTypeReference.ConvertUnrealValueToUnderlyingValue("val") == "USpatialOSConversionFunctionLibrary::UnrealCoordinatesToSpatialOsCoordinatesCast(val)");
            Assert.That(unrealBuiltInTypeReference.DefaultInitialisationString == "improbable::Coordinates(0, 0, 0)");
            Assert.That(unrealBuiltInTypeReference.SnapshotType == "FVector");
        }
        public static void unrealcommanddetails_has_the_correct_unreal_request_type_details_upon_creation()
        {
            var capitalisedName      = "CapitalisedName";
            var qualifiedOwnerName   = "improbable.codegen.Test";
            var captialisedOwnerName = "improbable.codegen.OwnerComponent";
            var commandDefinition    = GenerateCommandDefinition("Test",
                                                                 new TypeReferenceRaw
            {
                sourceReference = new SourceReferenceRaw {
                    line = "1", column = "1"
                },
                builtInType = "float"
            },
                                                                 new TypeReferenceRaw
            {
                sourceReference = new SourceReferenceRaw {
                    line = "1", column = "1"
                },
                builtInType = "float"
            });
            var packageDetails = GeneratePackageDetails();

            var requestTypeReference  = new UnrealBuiltInTypeReference(commandDefinition.requestType);
            var responseTypeReference = new UnrealBuiltInTypeReference(commandDefinition.responseType);

            var commandDetails = new UnrealCommandDetails(commandDefinition, capitalisedName, qualifiedOwnerName, captialisedOwnerName, requestTypeReference, responseTypeReference, packageDetails);

            Assert.That(commandDetails.UnrealRequestTypeDetails.UnderlyingCapitalisedName == requestTypeReference.UnderlyingCapitalisedName &&
                        commandDetails.UnrealRequestTypeDetails.UnderlyingQualifiedName == requestTypeReference.UnderlyingQualifiedName &&
                        commandDetails.UnrealRequestTypeDetails.UnrealType == requestTypeReference.UnrealType &&
                        commandDetails.UnrealRequestTypeDetails.RequiredIncludes == requestTypeReference.RequiredIncludes,
                        "the field UnrealRequestTypeDetails did not have the expected value upon creation");

            Assert.That(commandDetails.UnrealResponseTypeDetails.UnderlyingCapitalisedName == responseTypeReference.UnderlyingCapitalisedName &&
                        commandDetails.UnrealResponseTypeDetails.UnderlyingQualifiedName == responseTypeReference.UnderlyingQualifiedName &&
                        commandDetails.UnrealResponseTypeDetails.UnrealType == responseTypeReference.UnrealType &&
                        commandDetails.UnrealResponseTypeDetails.RequiredIncludes == responseTypeReference.RequiredIncludes,
                        "the field UnrealResponseTypeDetails did not have the expected value upon creation");
        }
Beispiel #7
0
        private IUnrealTypeReference GenerateUnrealTypeReference(TypeReferenceRaw typeReference)
        {
            IUnrealTypeReference unrealTypeReference;

            if (typeReference.IsBuiltInType)
            {
                unrealTypeReference = new UnrealBuiltInTypeReference(typeReference);
            }
            else if (qualifiedNameToEnumDefinition.ContainsKey(typeReference.TypeName))
            {
                var enumDefinition    = qualifiedNameToEnumDefinition[typeReference.TypeName];
                var unrealEnumDetails = enumDefinitionToUnrealEnum[enumDefinition];
                unrealTypeReference = new UnrealEnumTypeReference(unrealEnumDetails);
            }
            else
            {
                var typeDefinition    = qualifiedNameToTypeDefinition[typeReference.TypeName];
                var unrealTypeDetails = typeDefinitionToUnrealType[typeDefinition];
                unrealTypeReference = new UnrealUserTypeReference(unrealTypeDetails);
            }

            return(unrealTypeReference);
        }