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"); }
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"))); }
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"); }
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"); }
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); }