diff --git a/.editorconfig b/.editorconfig
index 43bb3c33a..0562da806 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -147,7 +147,11 @@ resharper_csharp_wrap_before_binary_opsign = true
resharper_csharp_wrap_before_declaration_rpar = true
resharper_csharp_wrap_extends_list_style = chop_if_long
resharper_csharp_wrap_parameters_style = chop_if_long
-resharper_force_attribute_style = join
+resharper_force_attribute_style = separate
+resharper_place_type_attribute_on_same_line = false
+resharper_place_method_attribute_on_same_line = false
+resharper_place_record_field_attribute_on_same_line = false
+resharper_place_accessorholder_attribute_on_same_line = false
resharper_formatter_off_tag = @formatter:off
resharper_formatter_on_tag = @formatter:on
resharper_formatter_tags_enabled = true
@@ -155,7 +159,7 @@ resharper_indent_preprocessor_if = usual_indent
resharper_indent_preprocessor_other = do_not_change
resharper_indent_raw_literal_string = indent
resharper_instance_members_qualify_declared_in =
-resharper_keep_existing_attribute_arrangement = true
+resharper_keep_existing_attribute_arrangement = false
resharper_keep_existing_declaration_block_arrangement = true
resharper_keep_existing_embedded_block_arrangement = true
resharper_max_attribute_length_for_same_line = 10
@@ -163,10 +167,8 @@ resharper_method_or_operator_body = expression_body
resharper_nested_ternary_style = expanded
resharper_object_creation_when_type_evident = target_typed
resharper_parentheses_redundancy_style = remove
-resharper_place_accessorholder_attribute_on_same_line = true
resharper_place_expr_accessor_on_single_line = true
resharper_place_expr_property_on_single_line = true
-resharper_place_record_field_attribute_on_same_line = true
resharper_place_simple_accessor_on_single_line = false
resharper_place_simple_anonymousmethod_on_single_line = false
resharper_place_simple_case_statement_on_same_line = true
@@ -174,7 +176,6 @@ resharper_place_simple_embedded_statement_on_same_line = true
resharper_place_simple_initializer_on_single_line = false
resharper_place_simple_list_pattern_on_single_line = false
resharper_place_single_method_argument_lambda_on_same_line = false
-resharper_place_type_attribute_on_same_line = false
resharper_qualified_using_at_nested_scope = true
resharper_space_in_singleline_anonymous_method = false
resharper_space_within_empty_braces = false
diff --git a/.github/codeql-config.yml b/.github/codeql-config.yml
index 3bb3c721b..cfa784bda 100644
--- a/.github/codeql-config.yml
+++ b/.github/codeql-config.yml
@@ -18,7 +18,7 @@ paths-ignore:
- "src/InfiniFrame.NativeBridge/Native/cmake-build-release/**"
- "src/InfiniFrame.NativeBridge/Native/cmake-build-release-linux/**"
- "src/InfiniFrame.NativeBridge/Native/cmake-build-release-windows/**"
- - "src/InfiniFrame.NativeBridge/Native/Dependencies/**"
+ - "src/InfiniFrame.NativeBridge/Native/src/Dependencies/**"
- "src/InfiniFrame.NativeBridge/Native/packages/**"
- "tests/**"
- "**/node_modules/**"
diff --git a/src/InfiniFrame.Blazor/Components/InfiniFrameWindowButton.razor b/src/InfiniFrame.Blazor/Components/InfiniFrameWindowButton.razor
index f3d48d5e0..27835fa46 100644
--- a/src/InfiniFrame.Blazor/Components/InfiniFrameWindowButton.razor
+++ b/src/InfiniFrame.Blazor/Components/InfiniFrameWindowButton.razor
@@ -182,7 +182,8 @@
@* ------------------------------------------------------------------------------------------------------------------ *@
@code {
- [EditorRequired, Parameter]
+ [EditorRequired]
+ [Parameter]
public required WindowAction WindowAction { get; set; }
[Parameter]
public string? Class { get; set; }
diff --git a/src/InfiniFrame.Blazor/Components/InfiniFrameWindowResizeThumb.razor b/src/InfiniFrame.Blazor/Components/InfiniFrameWindowResizeThumb.razor
index e4e486f2b..94895253c 100644
--- a/src/InfiniFrame.Blazor/Components/InfiniFrameWindowResizeThumb.razor
+++ b/src/InfiniFrame.Blazor/Components/InfiniFrameWindowResizeThumb.razor
@@ -31,7 +31,8 @@
@* ------------------------------------------------------------------------------------------------------------------ *@
@code {
- [EditorRequired, Parameter]
+ [EditorRequired]
+ [Parameter]
public ResizeOrigin ResizeThumb { get; set; }
[Parameter]
public int ResizeArea { get; set; } = ResizeAreaValue;
diff --git a/src/InfiniFrame.BlazorWebView/FileProviders/Static/StaticWebAssetsManifestJsonContext.cs b/src/InfiniFrame.BlazorWebView/FileProviders/Static/StaticWebAssetsManifestJsonContext.cs
index 35a5127d3..bf0c66d4d 100644
--- a/src/InfiniFrame.BlazorWebView/FileProviders/Static/StaticWebAssetsManifestJsonContext.cs
+++ b/src/InfiniFrame.BlazorWebView/FileProviders/Static/StaticWebAssetsManifestJsonContext.cs
@@ -7,5 +7,6 @@ namespace InfiniFrame.BlazorWebView.FileProviders.Static;
// ---------------------------------------------------------------------------------------------------------------------
// Code
// ---------------------------------------------------------------------------------------------------------------------
-[JsonSourceGenerationOptions(PropertyNameCaseInsensitive = true), JsonSerializable(typeof(StaticWebAssetManifest))]
+[JsonSourceGenerationOptions(PropertyNameCaseInsensitive = true)]
+[JsonSerializable(typeof(StaticWebAssetManifest))]
internal sealed partial class StaticWebAssetsManifestJsonContext : JsonSerializerContext;
diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.CustomSchemes.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.CustomSchemes.cs
index 3c1ab8959..1d21d7d77 100644
--- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.CustomSchemes.cs
+++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.CustomSchemes.cs
@@ -9,6 +9,7 @@ namespace InfiniFrame.NativeBridge;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public partial class InfiniFrameNative {
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_AddCustomSchemeName", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_AddCustomSchemeName", SetLastError = true, StringMarshalling = StringMarshalling.Utf8)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus AddCustomSchemeName(IntPtr instance, string scheme);
}
diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dialog.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dialog.cs
index 8725f0910..50153e967 100644
--- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dialog.cs
+++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dialog.cs
@@ -11,7 +11,8 @@ namespace InfiniFrame.NativeBridge;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public partial class InfiniFrameNative {
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_ShowOpenFile", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_ShowOpenFile", SetLastError = true, StringMarshalling = StringMarshalling.Utf8)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
private static partial InfiniFrameNativeInteropStatus ShowOpenFilePtr(IntPtr inst, string title, string defaultPath, [MarshalAs(UnmanagedType.I1)] bool multiSelect, string[] filters, int filtersCount, out int resultCount, out IntPtr values);
internal static InfiniFrameNativeInteropStatus ShowOpenFile(IntPtr instance, string title, string defaultPath, bool multiSelect, string[] filters, int filtersCount, out string?[] values) {
InfiniFrameNativeInteropStatus status = ShowOpenFilePtr(instance, title, defaultPath, multiSelect, filters, filtersCount, out int resultCount, out IntPtr ptrValues);
@@ -19,7 +20,8 @@ internal static InfiniFrameNativeInteropStatus ShowOpenFile(IntPtr instance, str
return status;
}
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_ShowOpenFolder", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_ShowOpenFolder", SetLastError = true, StringMarshalling = StringMarshalling.Utf8)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
private static partial InfiniFrameNativeInteropStatus ShowOpenFolderPtr(IntPtr inst, string title, string defaultPath, [MarshalAs(UnmanagedType.I1)] bool multiSelect, out int resultCount, out IntPtr values);
internal static InfiniFrameNativeInteropStatus ShowOpenFolder(IntPtr instance, string title, string defaultPath, bool multiSelect, out string?[] values) {
InfiniFrameNativeInteropStatus status = ShowOpenFolderPtr(instance, title, defaultPath, multiSelect, out int resultCount, out IntPtr ptrValues);
@@ -27,7 +29,8 @@ internal static InfiniFrameNativeInteropStatus ShowOpenFolder(IntPtr instance, s
return status;
}
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_ShowSaveFile", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_ShowSaveFile", SetLastError = true, StringMarshalling = StringMarshalling.Utf8)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
private static partial InfiniFrameNativeInteropStatus ShowSaveFilePtr(IntPtr inst, string title, string defaultPath, string[] filters, int filtersCount, string? defaultFileName, out IntPtr value);
internal static InfiniFrameNativeInteropStatus ShowSaveFile(IntPtr instance, string title, string defaultPath, string[] filters, int filtersCount, string? defaultFileName, out string? value) {
InfiniFrameNativeInteropStatus status = ShowSaveFilePtr(instance, title, defaultPath, filters, filtersCount, defaultFileName, out IntPtr ptrValue);
@@ -43,7 +46,8 @@ internal static InfiniFrameNativeInteropStatus ShowSaveFile(IntPtr instance, str
return status;
}
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_ShowMessage", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_ShowMessage", SetLastError = true, StringMarshalling = StringMarshalling.Utf8)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus ShowMessage(IntPtr inst, string title, string text, InfiniFrameDialogButtons buttons, InfiniFrameDialogIcon icon, out InfiniFrameDialogResult value);
private static string?[] PtrToNativeStringArray(IntPtr valuesPtr, int count) {
diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dispatch.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dispatch.cs
index f34e9718a..88951aa27 100644
--- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dispatch.cs
+++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Dispatch.cs
@@ -9,6 +9,7 @@ namespace InfiniFrame.NativeBridge;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public partial class InfiniFrameNative {
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_Invoke", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_Invoke", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus Invoke(IntPtr instance, Action callback);
}
diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Events.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Events.cs
index cc5e011a5..daaf9e77c 100644
--- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Events.cs
+++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Events.cs
@@ -10,21 +10,27 @@ namespace InfiniFrame.NativeBridge;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public partial class InfiniFrameNative {
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetClosingCallback", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetClosingCallback", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus SetClosingCallback(IntPtr instance, CppClosingDelegate callback);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_setClosedCallback", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_setClosedCallback", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus SetClosedCallback(IntPtr instance, CppClosedDelegate callback);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetFocusInCallback", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetFocusInCallback", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus SetFocusInCallback(IntPtr instance, CppFocusInDelegate callback);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetFocusOutCallback", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetFocusOutCallback", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus SetFocusOutCallback(IntPtr instance, CppFocusOutDelegate callback);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetMovedCallback", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetMovedCallback", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus SetMovedCallback(IntPtr instance, CppMovedDelegate callback);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetResizedCallback", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetResizedCallback", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus SetResizedCallback(IntPtr instance, CppResizedDelegate callback);
}
diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Lifecycle.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Lifecycle.cs
index 9706fa3e9..3f83bce0c 100644
--- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Lifecycle.cs
+++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Lifecycle.cs
@@ -11,15 +11,19 @@ namespace InfiniFrame.NativeBridge;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public partial class InfiniFrameNative {
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_ctor", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_ctor", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus Constructor([MarshalUsing(typeof(InfiniFrameNativeParametersMarshaller))] in InfiniFrameNativeParameters parameters, out IntPtr value);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_dtor"), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_dtor")]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus Destructor(IntPtr instance);
-
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_Close", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_Close", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus Close(IntPtr instance);
-
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_WaitForExit", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_WaitForExit", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus WaitForExit(IntPtr instance);
}
diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Memory.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Memory.cs
index ada2ca8e5..970a94c2a 100644
--- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Memory.cs
+++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Memory.cs
@@ -9,13 +9,16 @@ namespace InfiniFrame.NativeBridge;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public partial class InfiniFrameNative {
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_FreeString", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_FreeString", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus FreeString(IntPtr value);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_FreeStringArray", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_FreeStringArray", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus FreeStringArray(IntPtr values, int count);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetLastErrorMessage", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetLastErrorMessage", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
private static partial InfiniFrameNativeInteropStatus GetLastErrorMessagePtr(out IntPtr value);
internal static string? GetLastErrorMessage() {
diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Monitors.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Monitors.cs
index 1b3e7f7b6..6e4095aa4 100644
--- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Monitors.cs
+++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Monitors.cs
@@ -10,6 +10,7 @@ namespace InfiniFrame.NativeBridge;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public partial class InfiniFrameNative {
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetAllMonitors", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetAllMonitors", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetAllMonitors(IntPtr instance, CppGetAllMonitorsDelegate callback);
}
diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Platform.MacOs.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Platform.MacOs.cs
index c7efcc656..f08f561d3 100644
--- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Platform.MacOs.cs
+++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Platform.MacOs.cs
@@ -9,6 +9,7 @@ namespace InfiniFrame.NativeBridge;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public partial class InfiniFrameNative {
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_register_mac", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_register_mac", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus RegisterMac();
}
diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Platform.Windows.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Platform.Windows.cs
index 7fbebb5e3..7a82b134b 100644
--- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Platform.Windows.cs
+++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Platform.Windows.cs
@@ -9,16 +9,20 @@ namespace InfiniFrame.NativeBridge;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public partial class InfiniFrameNative {
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_register_win32", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_register_win32", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus RegisterWin32(IntPtr hInstance);
-
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_getHwnd_win32", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_getHwnd_win32", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetWindowHandlerWin32(IntPtr instance, out IntPtr value);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_setWebView2RuntimePath_win32", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_setWebView2RuntimePath_win32", SetLastError = true, StringMarshalling = StringMarshalling.Utf8)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus SetWebView2RuntimePath_win32(IntPtr instance, string webView2RuntimePath);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetNotificationsEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetNotificationsEnabled", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetNotificationsEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled);
}
diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Actions.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Actions.cs
index 0509a826b..0e8fa3192 100644
--- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Actions.cs
+++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Actions.cs
@@ -10,18 +10,23 @@ namespace InfiniFrame.NativeBridge;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public partial class InfiniFrameNative {
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_Center", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_Center", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus Center(IntPtr instance);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_Restore", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_Restore", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus Restore(IntPtr instance);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_ClearBrowserAutoFill", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_ClearBrowserAutoFill", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus ClearBrowserAutoFill(IntPtr instance);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetFocused", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetFocused", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus SetFocused(IntPtr instance);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_ShowNotification", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_ShowNotification", SetLastError = true, StringMarshalling = StringMarshalling.Utf8)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus ShowNotification(IntPtr instance, string title, string body);
}
diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Get.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Get.cs
index 840ee9f0d..6e3265e69 100644
--- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Get.cs
+++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Get.cs
@@ -10,79 +10,104 @@ namespace InfiniFrame.NativeBridge;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public partial class InfiniFrameNative {
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetTransparentEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetTransparentEnabled", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetTransparentEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetContextMenuEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetContextMenuEnabled", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetContextMenuEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetZoomEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetZoomEnabled", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetZoomEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool zoomEnabled);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetDevToolsEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetDevToolsEnabled", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetDevToolsEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetFullScreen", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetFullScreen", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetFullScreen(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool fullScreen);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetGrantBrowserPermissions", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetGrantBrowserPermissions", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetGrantBrowserPermissions(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool grant);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetMediaAutoplayEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetMediaAutoplayEnabled", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetMediaAutoplayEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetFileSystemAccessEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetFileSystemAccessEnabled", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetFileSystemAccessEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetWebSecurityEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetWebSecurityEnabled", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetWebSecurityEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetJavascriptClipboardAccessEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetJavascriptClipboardAccessEnabled", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetJavascriptClipboardAccessEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetMediaStreamEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetMediaStreamEnabled", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetMediaStreamEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetSmoothScrollingEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetSmoothScrollingEnabled", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetSmoothScrollingEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetIgnoreCertificateErrorsEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetIgnoreCertificateErrorsEnabled", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetIgnoreCertificateErrorsEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool enabled);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetMaximized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetMaximized", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetMaximized(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool maximized);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetMinimized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetMinimized", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetMinimized(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool minimized);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetResizable", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetResizable", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetResizable(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool resizable);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetTopmost", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetTopmost", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetTopmost(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool topmost);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetFocused", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetFocused", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetFocused(IntPtr instance, [MarshalAs(UnmanagedType.I1)] out bool isFocused);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetPosition", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetPosition", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetPosition(IntPtr instance, out int x, out int y);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetSize", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetSize(IntPtr instance, out int width, out int height);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetMaxSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetMaxSize", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetMaxSize(IntPtr instance, out int maxWidth, out int maxHeight);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetMinSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetMinSize", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetMinSize(IntPtr instance, out int minWidth, out int minHeight);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetScreenDpi", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetScreenDpi", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetScreenDpi(IntPtr instance, out uint value);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetZoom", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetZoom", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus GetZoom(IntPtr instance, out int zoom);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetUserAgent", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetUserAgent", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
private static partial InfiniFrameNativeInteropStatus GetUserAgentPtr(IntPtr instance, out IntPtr value);
internal static InfiniFrameNativeInteropStatus GetUserAgent(IntPtr instance, out string? userAgent) {
InfiniFrameNativeInteropStatus status = GetUserAgentPtr(instance, out IntPtr ptr);
@@ -98,7 +123,8 @@ internal static InfiniFrameNativeInteropStatus GetUserAgent(IntPtr instance, out
return status;
}
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetTitle", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetTitle", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
private static partial InfiniFrameNativeInteropStatus GetTitlePtr(IntPtr instance, out IntPtr value);
internal static InfiniFrameNativeInteropStatus GetTitle(IntPtr instance, out string? title) {
InfiniFrameNativeInteropStatus status = GetTitlePtr(instance, out IntPtr ptr);
@@ -114,7 +140,8 @@ internal static InfiniFrameNativeInteropStatus GetTitle(IntPtr instance, out str
return status;
}
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetIconFileName", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_GetIconFileName", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
private static partial InfiniFrameNativeInteropStatus GetIconFileNamePtr(IntPtr instance, out IntPtr value);
internal static InfiniFrameNativeInteropStatus GetIconFileName(IntPtr instance, out string iconFileName) {
InfiniFrameNativeInteropStatus status = GetIconFileNamePtr(instance, out IntPtr ptr);
diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Navigation.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Navigation.cs
index 345b5a3f1..deff2e011 100644
--- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Navigation.cs
+++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Navigation.cs
@@ -10,12 +10,15 @@ namespace InfiniFrame.NativeBridge;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public partial class InfiniFrameNative {
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_NavigateToString", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_NavigateToString", SetLastError = true, StringMarshalling = StringMarshalling.Utf8)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus NavigateToString(IntPtr instance, string content);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_NavigateToUrl", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_NavigateToUrl", SetLastError = true, StringMarshalling = StringMarshalling.Utf8)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus NavigateToUrl(IntPtr instance, string url);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SendWebMessage", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SendWebMessage", SetLastError = true, StringMarshalling = StringMarshalling.Utf8)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus SendWebMessage(IntPtr instance, string message);
}
diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Set.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Set.cs
index fb8ccfa79..30d832f3d 100644
--- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Set.cs
+++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Exports/InfiniFrameNative.Window.Set.cs
@@ -10,51 +10,67 @@ namespace InfiniFrame.NativeBridge;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public partial class InfiniFrameNative {
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetTransparentEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetTransparentEnabled", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus SetTransparentEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool enabled);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetContextMenuEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetContextMenuEnabled", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus SetContextMenuEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool enabled);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetZoomEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetZoomEnabled", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus SetZoomEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool zoomEnabled);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetDevToolsEnabled", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetDevToolsEnabled", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus SetDevToolsEnabled(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool enabled);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetFullScreen", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetFullScreen", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus SetFullScreen(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool fullScreen);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetMaximized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetMaximized", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus SetMaximized(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool maximized);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetMinimized", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetMinimized", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus SetMinimized(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool minimized);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetResizable", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetResizable", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus SetResizable(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool resizable);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetTopmost", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetTopmost", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus SetTopmost(IntPtr instance, [MarshalAs(UnmanagedType.I1)] bool topmost);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetIconFile", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetIconFile", SetLastError = true, StringMarshalling = StringMarshalling.Utf8)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus SetIconFile(IntPtr instance, string filename);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetTitle", SetLastError = true, StringMarshalling = StringMarshalling.Utf8), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetTitle", SetLastError = true, StringMarshalling = StringMarshalling.Utf8)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus SetTitle(IntPtr instance, string? title);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetZoom", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetZoom", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus SetZoom(IntPtr instance, int zoom);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetPosition", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetPosition", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus SetPosition(IntPtr instance, int x, int y);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetSize", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus SetSize(IntPtr instance, int width, int height);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetMaxSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetMaxSize", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus SetMaxSize(IntPtr instance, int maxWidth, int maxHeight);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetMinSize", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNative_SetMinSize", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
internal static partial InfiniFrameNativeInteropStatus SetMinSize(IntPtr instance, int minWidth, int minHeight);
}
diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Testing/InfiniFrameNative.Testing.cs b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Testing/InfiniFrameNative.Testing.cs
index 068dbd2bf..75fc815f0 100644
--- a/src/InfiniFrame.NativeBridge/Managed/NativeApi/Testing/InfiniFrameNative.Testing.cs
+++ b/src/InfiniFrame.NativeBridge/Managed/NativeApi/Testing/InfiniFrameNative.Testing.cs
@@ -11,14 +11,16 @@ namespace InfiniFrame.NativeBridge;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public partial class InfiniFrameNativeTesting {
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNativeTests_NativeParametersReturnAsIs", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNativeTests_NativeParametersReturnAsIs", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
private static partial InfiniFrameNativeInteropStatus NativeParametersReturnAsIsNative(
[MarshalUsing(typeof(InfiniFrameNativeParametersMarshaller))]
in InfiniFrameNativeParameters parameters,
out IntPtr newParameters
);
- [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNativeTests_FreeInitParams", SetLastError = true), UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
+ [LibraryImport(ArtifactManifest.NativeLibraryName, EntryPoint = "InfiniFrameNativeTests_FreeInitParams", SetLastError = true)]
+ [UnmanagedCallConv(CallConvs = [typeof(CallConvCdecl)])]
private static partial InfiniFrameNativeInteropStatus FreeInitParamsNative(IntPtr parameters);
///
diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeMonitor.cs b/src/InfiniFrame.NativeBridge/Managed/NativeMonitor.cs
index 091e2dee4..5785b3ea3 100644
--- a/src/InfiniFrame.NativeBridge/Managed/NativeMonitor.cs
+++ b/src/InfiniFrame.NativeBridge/Managed/NativeMonitor.cs
@@ -13,7 +13,8 @@ namespace InfiniFrame.NativeBridge;
/// to and from native system calls. This structure is defined in a sequential layout for direct,
/// unmanaged access to the underlying memory.
///
-[StructLayout(LayoutKind.Sequential), SuppressMessage("ReSharper", "UnusedAutoPropertyAccessor.Global")]
+[StructLayout(LayoutKind.Sequential)]
+[SuppressMessage("ReSharper", "UnusedAutoPropertyAccessor.Global")]
public struct NativeMonitor {
public NativeRect Monitor { get; set; }
public NativeRect Work { get; set; }
diff --git a/src/InfiniFrame.NativeBridge/Managed/NativeRect.cs b/src/InfiniFrame.NativeBridge/Managed/NativeRect.cs
index 500b647bd..82673f368 100644
--- a/src/InfiniFrame.NativeBridge/Managed/NativeRect.cs
+++ b/src/InfiniFrame.NativeBridge/Managed/NativeRect.cs
@@ -11,7 +11,8 @@ namespace InfiniFrame.NativeBridge;
///
/// Represents a 2D rectangle in a native (integer-based) coordinate system.
///
-[StructLayout(LayoutKind.Sequential), SuppressMessage("ReSharper", "UnusedAutoPropertyAccessor.Global")]
+[StructLayout(LayoutKind.Sequential)]
+[SuppressMessage("ReSharper", "UnusedAutoPropertyAccessor.Global")]
public struct NativeRect {
public int X { get; set; }
public int Y { get; set; }
diff --git a/src/InfiniFrame/Window/InfiniFrameWindow.cs b/src/InfiniFrame/Window/InfiniFrameWindow.cs
index 28eca32ab..bce47f1bd 100644
--- a/src/InfiniFrame/Window/InfiniFrameWindow.cs
+++ b/src/InfiniFrame/Window/InfiniFrameWindow.cs
@@ -17,27 +17,29 @@ namespace InfiniFrame;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public sealed class InfiniFrameWindow : IInfiniFrameWindow {
-
- //Pointers to the type and instance.
private static readonly Lazy WindowType = new(NativeLibrary.GetMainProgramHandle);
- private int _shutdownRequested;
- private int _shutdownStarted;
public required ILogger Logger { get; init; }
public required IServiceProvider? ServiceProvider { get; init; }
public required IInfiniFrameEvents Events { get; init; }
public required IInfiniFrameOptions Configuration { get; init; }
public IInfiniFrameStaticAssets? StaticAssets { get; init; }
-
+
public IInfiniFrameEventsStore EventsStore => Events.EventsStore;
-
+
public IntPtr NativeType => WindowType.Value;
+
public IntPtr InstanceHandle { get; private set; }
- public bool IsClosed => Volatile.Read(ref _shutdownStarted) != 0 || InstanceHandle == IntPtr.Zero;
public Rectangle CachedPreFullScreenBounds { get; set; } = Rectangle.Empty;
public Rectangle CachedPreMaximizedBounds { get; set; } = Rectangle.Empty;
+ private int _shutdownState;
+
+ private bool IsClosing => Volatile.Read(ref _shutdownState) != 0;
+ public bool IsClosed => Volatile.Read(ref _shutdownState) == 2;
+ public bool IsClosedOrClosing => IsClosing || InstanceHandle == IntPtr.Zero;
+
// -----------------------------------------------------------------------------------------------------------------
// Methods
// -----------------------------------------------------------------------------------------------------------------
@@ -50,20 +52,26 @@ public sealed class InfiniFrameWindow : IInfiniFrameWindow {
///
/// The delegate encapsulating a method / action to be executed in the UI thread.
public void Invoke(Action workItem) {
- static void RunWithNativeStatusCheck(Action action) {
- Marshal.SetLastPInvokeError(0);
- action();
- InfiniFrameNative.EnsureSucceeded(InfiniFrameNativeInteropStatus.Success, "Invoke");
- }
-
- // If we're already on the UI thread, no need to dispatch
if (Environment.CurrentManagedThreadId == ManagedThreadId) {
- RunWithNativeStatusCheck(workItem);
+ Run(workItem);
+ return;
}
- else {
+
+ IntPtr handle = InstanceHandle;
+
+ InfiniFrameNative.EnsureSucceeded(
+ InfiniFrameNative.Invoke(handle, callback: () => Run(workItem)),
+ nameof(InfiniFrameNative.Invoke)
+ );
+ return;
+
+ static void Run(Action action) {
+ Marshal.SetLastPInvokeError(0);
+ action();
InfiniFrameNative.EnsureSucceeded(
- InfiniFrameNative.Invoke(InstanceHandle, () => RunWithNativeStatusCheck(workItem)),
- nameof(InfiniFrameNative.Invoke));
+ InfiniFrameNativeInteropStatus.Success,
+ "Invoke"
+ );
}
}
@@ -76,35 +84,47 @@ static void RunWithNativeStatusCheck(Action action) {
/// The operation of the message loop is exclusive to the main native window only.
///
public void WaitForClose() {
+ if (IsClosing || IsClosed) {
+ Logger.LogDebug("Skipping WaitForClose during shutdown");
+ return;
+ }
+
try {
Logger.LogDebug("Starting message loop for window.");
- Invoke(() => InfiniFrameNative.WaitForExit(InstanceHandle));
+
+ IntPtr handle = InstanceHandle;
+ if (handle == IntPtr.Zero)
+ return;
+
+ Invoke(() => InfiniFrameNative.WaitForExit(handle));
}
catch (Exception ex) when (ExceptionsUtility.IsNonFatalException(ex)) {
- int lastError = 0;
- if (OperatingSystem.IsWindows()) lastError = Marshal.GetLastWin32Error();
+ int lastError = OperatingSystem.IsWindows()
+ ? Marshal.GetLastWin32Error()
+ : 0;
Logger.LogError(ex, "Error #{LastErrorCode} while running message loop", lastError);
- throw new ApplicationException($"Native code exception. Error # {lastError} See inner exception for details.", ex);
+ throw new ApplicationException(
+ $"Native code exception. Error # {lastError}",
+ ex);
}
finally {
- Interlocked.Exchange(ref _shutdownRequested, 1);
- Interlocked.Exchange(ref _shutdownStarted, 1);
+ InstanceHandle = IntPtr.Zero;
+ Interlocked.Exchange(ref _shutdownState, 2);
}
}
public ValueTask WaitForCloseAsync(CancellationToken ct = default) {
- if (ct.IsCancellationRequested) return ValueTask.FromCanceled(ct);
+ if (ct.IsCancellationRequested)
+ return ValueTask.FromCanceled(ct);
WaitForClose();
return ValueTask.CompletedTask;
}
- // Should only be used internally
void IInfiniFrameWindow.MarkClosedFromNativeCallback() {
- Interlocked.Exchange(ref _shutdownRequested, 1);
- Interlocked.Exchange(ref _shutdownStarted, 1);
InstanceHandle = IntPtr.Zero;
+ Interlocked.Exchange(ref _shutdownState, 2);
}
///
@@ -114,26 +134,34 @@ void IInfiniFrameWindow.MarkClosedFromNativeCallback() {
/// Thrown when the window is not initialized.
///
public void Close() {
- if (Volatile.Read(ref _shutdownStarted) != 0) return;
+ if (Interlocked.Exchange(ref _shutdownState, 1) != 0) {
+ Logger.LogDebug("Skipping Close during shutdown");
+ return;
+ }
Logger.LogDebug(".Close()");
Events.OnWindowClosingRequested();
- if (InstanceHandle == IntPtr.Zero) return;
- Interlocked.Exchange(ref _shutdownRequested, 1);
+ IntPtr handle = InstanceHandle;
+ if (handle == IntPtr.Zero)
+ return;
+
Invoke(() => {
- if (InstanceHandle == IntPtr.Zero) {
- Logger.LogDebug("Window already closed");
+ IntPtr h = InstanceHandle;
+ if (h == IntPtr.Zero)
return;
- }
- InfiniFrameNative.Close(InstanceHandle);
+ InfiniFrameNative.Close(h);
+
InstanceHandle = IntPtr.Zero;
+ Interlocked.Exchange(ref _shutdownState, 2);
});
}
public ValueTask CloseAsync(CancellationToken ct = default) {
- if (ct.IsCancellationRequested) return ValueTask.FromCanceled(ct);
+ if (ct.IsCancellationRequested)
+ return ValueTask.FromCanceled(ct);
+
Close();
return ValueTask.CompletedTask;
}
@@ -149,30 +177,25 @@ public ValueTask CloseAsync(CancellationToken ct = default) {
///
/// Message as string
public void SendWebMessage(string message) {
- if (Volatile.Read(ref _shutdownRequested) != 0
- || Volatile.Read(ref _shutdownStarted) != 0
- || InstanceHandle == IntPtr.Zero) {
- Logger.LogDebug("Skipping SendWebMessage during shutdown");
+ if (IsClosedOrClosing)
+ return;
+
+ IntPtr handle = InstanceHandle;
+ if (handle == IntPtr.Zero)
return;
- }
- Logger.LogDebug(".SendWebMessage({Message})", message);
Invoke(() => {
- if (Volatile.Read(ref _shutdownStarted) != 0 || InstanceHandle == IntPtr.Zero) {
- Logger.LogDebug("Window closed before SendWebMessage could execute");
+ if (InstanceHandle == IntPtr.Zero)
return;
- }
- InfiniFrameNative.SendWebMessage(InstanceHandle, message);
+ InfiniFrameNative.SendWebMessage(handle, message);
});
}
- public Task SendWebMessageAsync(string message, CancellationToken ct = default) {
- if (ct.IsCancellationRequested) return Task.FromCanceled(ct);
-
- SendWebMessage(message);
- return Task.CompletedTask;
- }
+ public Task SendWebMessageAsync(string message, CancellationToken ct = default)
+ => ct.IsCancellationRequested
+ ? Task.FromCanceled(ct)
+ : Task.Run(action: () => SendWebMessage(message), ct);
///
/// Sends a native notification to the OS.
@@ -184,22 +207,22 @@ public Task SendWebMessageAsync(string message, CancellationToken ct = default)
/// The title of the notification
/// The text of the notification
public void SendNotification(string title, string body) {
- if (Volatile.Read(ref _shutdownStarted) != 0 || InstanceHandle == IntPtr.Zero) {
- Logger.LogDebug("Skipping SendNotification during shutdown");
+ if (IsClosedOrClosing)
+ return;
+
+ IntPtr handle = InstanceHandle;
+ if (handle == IntPtr.Zero)
return;
- }
- Logger.LogDebug(".SendNotification({Title}, {Body})", title, body);
Invoke(() => {
- if (Volatile.Read(ref _shutdownStarted) != 0 || InstanceHandle == IntPtr.Zero) {
- Logger.LogDebug("Window closed before SendNotification could execute");
+ if (InstanceHandle == IntPtr.Zero)
return;
- }
- InfiniFrameNative.ShowNotification(InstanceHandle, title, body);
+ InfiniFrameNative.ShowNotification(handle, title, body);
});
}
+
///
/// Show an open file dialog native to the OS.
///
@@ -345,49 +368,45 @@ public bool TryResolveStaticAssetUri(string path, out Uri uri) {
out uri);
}
- private static Task RunDialogAsync(Func workItem, CancellationToken ct = default) {
- return ct.IsCancellationRequested
+ private static Task RunDialogAsync(Func workItem, CancellationToken ct = default) =>
+ ct.IsCancellationRequested
? Task.FromCanceled(ct)
// Dialog calls are intentionally offloaded for Blazor flows where synchronous dialog invocation is unsafe.
: Task.Run(workItem, ct);
- }
public void Initialize() {
InfiniFrameNativeParameters startupParameters = Configuration.StartupParameters;
-
+
try {
if (!InfiniFrameNativeParametersValidator.Validate(startupParameters, Logger)) {
- Logger.LogCritical("Startup Parameters Are Not Valid, please check the logs");
- throw new ArgumentException("Startup Parameters Are Not Valid, please check the logs");
+ throw new ArgumentException("Startup Parameters Are Not Valid");
}
Events.OnWindowCreating();
- // All C++ exceptions will bubble up to here.
try {
- if (OperatingSystem.IsWindows())
- Invoke(() => {
- InfiniFrameNative.RegisterWin32(NativeType);
- });
- else if (OperatingSystem.IsMacOS())
- Invoke(() => {
- InfiniFrameNative.RegisterMac();
- });
+ if (OperatingSystem.IsWindows()) {
+ Invoke(() => InfiniFrameNative.RegisterWin32(NativeType));
+ }
+ else if (OperatingSystem.IsMacOS()) {
+ Invoke(() => InfiniFrameNative.RegisterMac());
+ }
Invoke(() => {
InfiniFrameNative.EnsureSucceeded(
- InfiniFrameNative.Constructor(in startupParameters, out IntPtr instanceHandle),
+ InfiniFrameNative.Constructor(in startupParameters, out IntPtr handle),
nameof(InfiniFrameNative.Constructor));
- InstanceHandle = instanceHandle;
+
+ InstanceHandle = handle;
});
}
catch (Exception ex) when (ExceptionsUtility.IsNonFatalException(ex)) {
- int lastError = 0;
- if (OperatingSystem.IsWindows())
- lastError = Marshal.GetLastWin32Error();
+ int lastError = OperatingSystem.IsWindows()
+ ? Marshal.GetLastWin32Error()
+ : 0;
Logger.LogError(ex, "Error #{LastErrorCode} while creating native window", lastError);
- throw new ApplicationException($"Native code exception. Error # {lastError} See inner exception for details.", ex);
+ throw new ApplicationException($"Native code exception. Error #{lastError}", ex);
}
Events.OnWindowCreated();
@@ -459,7 +478,7 @@ private static string[] GetNativeFilters((string Name, string[] Extensions)[] fi
? InvokeUtility.InvokeAndReturn(
this,
InfiniFrameNative.GetWindowHandlerWin32,
- s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetWindowHandlerWin32)))
+ validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetWindowHandlerWin32)))
: IntPtr.Zero;
///
@@ -497,7 +516,7 @@ private static string[] GetNativeFilters((string Name, string[] Extensions)[] fi
public uint ScreenDpi => InvokeUtility.InvokeAndReturn(
this,
InfiniFrameNative.GetScreenDpi,
- s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetScreenDpi)));
+ validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetScreenDpi)));
///
/// Gets a unique GUID to identify the native window.
@@ -529,51 +548,51 @@ private static string[] GetNativeFilters((string Name, string[] Extensions)[] fi
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
public bool Transparent => OperatingSystem.IsWindows()
? Configuration.StartupParameters.Transparent// on windows it can only be set at startup
- : InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetTransparentEnabled, s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetTransparentEnabled)));
+ : InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetTransparentEnabled, validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetTransparentEnabled)));
///
/// When true, the user can access the browser control's context menu.
/// By default, this is set to true.
///
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
- public bool ContextMenuEnabled => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetContextMenuEnabled, s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetContextMenuEnabled)));
+ public bool ContextMenuEnabled => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetContextMenuEnabled, validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetContextMenuEnabled)));
///
/// When true, the user can access the browser control's developer tools.
/// By default, this is set to true.
///
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
- public bool DevToolsEnabled => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetDevToolsEnabled, s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetDevToolsEnabled)));
+ public bool DevToolsEnabled => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetDevToolsEnabled, validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetDevToolsEnabled)));
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
- public bool MediaAutoplayEnabled => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetMediaAutoplayEnabled, s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetMediaAutoplayEnabled)));
+ public bool MediaAutoplayEnabled => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetMediaAutoplayEnabled, validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetMediaAutoplayEnabled)));
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
public string? UserAgent => InvokeUtility.InvokeAndReturn(
this,
InfiniFrameNative.GetUserAgent,
- s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetUserAgent)));
+ validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetUserAgent)));
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
- public bool FileSystemAccessEnabled => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetFileSystemAccessEnabled, s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetFileSystemAccessEnabled)));
+ public bool FileSystemAccessEnabled => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetFileSystemAccessEnabled, validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetFileSystemAccessEnabled)));
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
- public bool WebSecurityEnabled => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetWebSecurityEnabled, s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetWebSecurityEnabled)));
+ public bool WebSecurityEnabled => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetWebSecurityEnabled, validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetWebSecurityEnabled)));
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
- public bool JavascriptClipboardAccessEnabled => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetJavascriptClipboardAccessEnabled, s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetJavascriptClipboardAccessEnabled)));
+ public bool JavascriptClipboardAccessEnabled => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetJavascriptClipboardAccessEnabled, validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetJavascriptClipboardAccessEnabled)));
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
- public bool MediaStreamEnabled => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetMediaStreamEnabled, s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetMediaStreamEnabled)));
+ public bool MediaStreamEnabled => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetMediaStreamEnabled, validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetMediaStreamEnabled)));
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
- public bool SmoothScrollingEnabled => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetSmoothScrollingEnabled, s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetSmoothScrollingEnabled)));
+ public bool SmoothScrollingEnabled => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetSmoothScrollingEnabled, validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetSmoothScrollingEnabled)));
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
- public bool IgnoreCertificateErrorsEnabled => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetIgnoreCertificateErrorsEnabled, s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetIgnoreCertificateErrorsEnabled)));
+ public bool IgnoreCertificateErrorsEnabled => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetIgnoreCertificateErrorsEnabled, validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetIgnoreCertificateErrorsEnabled)));
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
- public bool NotificationsEnabled => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetNotificationsEnabled, s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetNotificationsEnabled)));
+ public bool NotificationsEnabled => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetNotificationsEnabled, validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetNotificationsEnabled)));
///
/// This property returns or sets the fullscreen status of the window.
@@ -581,14 +600,14 @@ private static string[] GetNativeFilters((string Name, string[] Extensions)[] fi
/// By default, this is set to false.
///
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
- public bool FullScreen => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetFullScreen, s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetFullScreen)));
+ public bool FullScreen => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetFullScreen, validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetFullScreen)));
///
/// Gets whether the native browser control grants all requests for access to local resources
/// such as the user's camera and microphone. By default, this is set to true.
///
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
- public bool GrantBrowserPermissions => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetGrantBrowserPermissions, s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetGrantBrowserPermissions)));
+ public bool GrantBrowserPermissions => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetGrantBrowserPermissions, validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetGrantBrowserPermissions)));
///
/// Gets the Height property of the native window in pixels.
@@ -597,8 +616,8 @@ private static string[] GetNativeFilters((string Name, string[] Extensions)[] fi
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
public int Height => InvokeUtility.InvokeAndReturn(
this,
- (IntPtr handle, out int value) => InfiniFrameNative.GetSize(handle, out _, out value),
- s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetSize)));
+ callback: (IntPtr handle, out int value) => InfiniFrameNative.GetSize(handle, out _, out value),
+ validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetSize)));
///
/// Gets the icon file for the native window title bar.
@@ -607,7 +626,7 @@ private static string[] GetNativeFilters((string Name, string[] Extensions)[] fi
public string IconFilePath => InvokeUtility.InvokeAndReturn(
this,
InfiniFrameNative.GetIconFileName,
- s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetIconFileName)));
+ validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetIconFileName)));
///
/// Gets the native window Left (X) and Top coordinates (Y) in pixels.
@@ -616,12 +635,12 @@ private static string[] GetNativeFilters((string Name, string[] Extensions)[] fi
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
public Point Location => InvokeUtility.InvokeAndReturn(
this,
- (IntPtr handle, out Point value) => {
+ callback: (IntPtr handle, out Point value) => {
InfiniFrameNativeInteropStatus status = InfiniFrameNative.GetPosition(handle, out int left, out int top);
value = new Point(left, top);
return status;
},
- s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetPosition)));
+ validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetPosition)));
///
/// Gets the native window Left (X) coordinate in pixels.
@@ -631,21 +650,21 @@ private static string[] GetNativeFilters((string Name, string[] Extensions)[] fi
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
public int Left => InvokeUtility.InvokeAndReturn(
this,
- (IntPtr handle, out int value) => InfiniFrameNative.GetPosition(handle, out value, out _),
- s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetPosition)));
+ callback: (IntPtr handle, out int value) => InfiniFrameNative.GetPosition(handle, out value, out _),
+ validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetPosition)));
///
/// Gets whether the native window is maximized.
/// Default is false.
///
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
- public bool Maximized => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetMaximized, s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetMaximized)));
+ public bool Maximized => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetMaximized, validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetMaximized)));
///
/// Gets whether the native window is currently within focus
///
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
- public bool Focused => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetFocused, s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetFocused)));
+ public bool Focused => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetFocused, validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetFocused)));
///
/// Gets the maximum size of the native window in pixels.
@@ -653,12 +672,12 @@ private static string[] GetNativeFilters((string Name, string[] Extensions)[] fi
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
public Size MaxSize => InvokeUtility.InvokeAndReturn(
this,
- (IntPtr handle, out Size value) => {
+ callback: (IntPtr handle, out Size value) => {
InfiniFrameNativeInteropStatus status = InfiniFrameNative.GetMaxSize(handle, out int width, out int height);
value = new Size(width, height);
return status;
},
- s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetMaxSize)));
+ validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetMaxSize)));
///
/// Gets the native window maximum height in pixels.
@@ -666,8 +685,8 @@ private static string[] GetNativeFilters((string Name, string[] Extensions)[] fi
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
public int MaxHeight => InvokeUtility.InvokeAndReturn(
this,
- (IntPtr handle, out int value) => InfiniFrameNative.GetMaxSize(handle, out _, out value),
- s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetMaxSize)));
+ callback: (IntPtr handle, out int value) => InfiniFrameNative.GetMaxSize(handle, out _, out value),
+ validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetMaxSize)));
///
/// Gets the native window maximum width in pixels.
@@ -675,14 +694,14 @@ private static string[] GetNativeFilters((string Name, string[] Extensions)[] fi
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
public int MaxWidth => InvokeUtility.InvokeAndReturn(
this,
- (IntPtr handle, out int value) => InfiniFrameNative.GetMaxSize(handle, out value, out _),
- s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetMaxSize)));
+ callback: (IntPtr handle, out int value) => InfiniFrameNative.GetMaxSize(handle, out value, out _),
+ validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetMaxSize)));
///
/// Gets whether the native window is minimized (hidden).
///
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
- public bool Minimized => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetMinimized, s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetMinimized)));
+ public bool Minimized => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetMinimized, validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetMinimized)));
///
/// Gets the minimum size of the native window in pixels.
@@ -690,12 +709,12 @@ private static string[] GetNativeFilters((string Name, string[] Extensions)[] fi
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
public Size MinSize => InvokeUtility.InvokeAndReturn(
this,
- (IntPtr handle, out Size value) => {
+ callback: (IntPtr handle, out Size value) => {
InfiniFrameNativeInteropStatus status = InfiniFrameNative.GetMinSize(handle, out int width, out int height);
value = new Size(width, height);
return status;
},
- s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetMinSize)));
+ validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetMinSize)));
///
/// Gets the native window minimum height in pixels.
@@ -703,8 +722,8 @@ private static string[] GetNativeFilters((string Name, string[] Extensions)[] fi
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
public int MinHeight => InvokeUtility.InvokeAndReturn(
this,
- (IntPtr handle, out int value) => InfiniFrameNative.GetMinSize(handle, out _, out value),
- s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetMinSize)));
+ callback: (IntPtr handle, out int value) => InfiniFrameNative.GetMinSize(handle, out _, out value),
+ validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetMinSize)));
///
/// Gets the native window minimum width in pixels.
@@ -712,15 +731,15 @@ private static string[] GetNativeFilters((string Name, string[] Extensions)[] fi
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
public int MinWidth => InvokeUtility.InvokeAndReturn(
this,
- (IntPtr handle, out int value) => InfiniFrameNative.GetMinSize(handle, out value, out _),
- s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetMinSize)));
+ callback: (IntPtr handle, out int value) => InfiniFrameNative.GetMinSize(handle, out value, out _),
+ validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetMinSize)));
///
/// Gets whether the user can resize the native window.
/// Default is true.
///
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
- public bool Resizable => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetResizable, s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetResizable)));
+ public bool Resizable => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetResizable, validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetResizable)));
///
/// Gets the native window Size. This represents the width and the height of the window in pixels.
@@ -729,12 +748,12 @@ private static string[] GetNativeFilters((string Name, string[] Extensions)[] fi
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
public Size Size => InvokeUtility.InvokeAndReturn(
this,
- (IntPtr handle, out Size value) => {
+ callback: (IntPtr handle, out Size value) => {
InfiniFrameNativeInteropStatus status = InfiniFrameNative.GetSize(handle, out int width, out int height);
value = new Size(width, height);
return status;
},
- s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetSize)));
+ validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetSize)));
///
/// Gets platform-specific initialization parameters for the native browser control on startup.
@@ -813,7 +832,7 @@ private static string[] GetNativeFilters((string Name, string[] Extensions)[] fi
public string? Title => InvokeUtility.InvokeAndReturn(
this,
InfiniFrameNative.GetTitle,
- s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetTitle)));
+ validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetTitle)));
///
/// Gets the native window Top (Y) coordinate in pixels.
@@ -822,15 +841,15 @@ private static string[] GetNativeFilters((string Name, string[] Extensions)[] fi
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
public int Top => InvokeUtility.InvokeAndReturn(
this,
- (IntPtr handle, out int value) => InfiniFrameNative.GetPosition(handle, out _, out value),
- s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetPosition)));
+ callback: (IntPtr handle, out int value) => InfiniFrameNative.GetPosition(handle, out _, out value),
+ validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetPosition)));
///
/// Gets whether the native window is always at the top of the z-order.
/// Default is false.
///
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
- public bool TopMost => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetTopmost, s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetTopmost)));
+ public bool TopMost => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetTopmost, validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetTopmost)));
///
/// Gets the native window width in pixels.
@@ -839,8 +858,8 @@ private static string[] GetNativeFilters((string Name, string[] Extensions)[] fi
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
public int Width => InvokeUtility.InvokeAndReturn(
this,
- (IntPtr handle, out int value) => InfiniFrameNative.GetSize(handle, out value, out _),
- s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetSize)));
+ callback: (IntPtr handle, out int value) => InfiniFrameNative.GetSize(handle, out value, out _),
+ validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetSize)));
///
/// Gets the native browser control .
@@ -848,9 +867,9 @@ private static string[] GetNativeFilters((string Name, string[] Extensions)[] fi
///
/// 100 = 100%, 50 = 50%
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
- public int Zoom => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetZoom, s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetZoom)));
+ public int Zoom => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetZoom, validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetZoom)));
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
- public bool ZoomEnabled => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetZoomEnabled, s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetZoomEnabled)));
+ public bool ZoomEnabled => InvokeUtility.InvokeAndReturn(this, InfiniFrameNative.GetZoomEnabled, validateResult: s => InfiniFrameNative.EnsureSucceeded(s, nameof(InfiniFrameNative.GetZoomEnabled)));
#endregion
}
diff --git a/tests/InfiniAutomationTests.BlazorWebView.MudBlazor/CustomElementsTests.cs b/tests/InfiniAutomationTests.BlazorWebView.MudBlazor/CustomElementsTests.cs
index 733cb2abf..0eb5659aa 100644
--- a/tests/InfiniAutomationTests.BlazorWebView.MudBlazor/CustomElementsTests.cs
+++ b/tests/InfiniAutomationTests.BlazorWebView.MudBlazor/CustomElementsTests.cs
@@ -14,7 +14,8 @@ namespace InfiniAutomationTests.BlazorWebView.MudBlazor;
public sealed class CustomElementsTests : InfiniFramePlaywrightTestBase {
protected override IPlaywrightRuntimeContext RuntimeContext => PlaywrightContext.Instance;
- [Test, NotInParallelInfiniAutomationTests]
+ [Test]
+ [NotInParallelInfiniAutomationTests]
public async Task CustomElement_Registers_Renders_AndUpdatesFromAttributes(CancellationToken ct = default) {
IPage page = await GetRootPageAsync();
@@ -81,7 +82,8 @@ await EvaluateWhenPageReadyAsync(
await Assert.That(renderedBeta).IsEqualTo("beta");
}
- [Test, NotInParallelInfiniAutomationTests]
+ [Test]
+ [NotInParallelInfiniAutomationTests]
public async Task JsComponent_WithoutInitializer_AutoRegisters_AsCustomElement_ByDefault(CancellationToken ct = default) {
IPage page = await GetRootPageAsync();
diff --git a/tests/InfiniAutomationTests.BlazorWebView.MudBlazor/ScriptSrcImportTests.cs b/tests/InfiniAutomationTests.BlazorWebView.MudBlazor/ScriptSrcImportTests.cs
index d5dd03841..cac1f8438 100644
--- a/tests/InfiniAutomationTests.BlazorWebView.MudBlazor/ScriptSrcImportTests.cs
+++ b/tests/InfiniAutomationTests.BlazorWebView.MudBlazor/ScriptSrcImportTests.cs
@@ -15,7 +15,8 @@ namespace InfiniAutomationTests.BlazorWebView.MudBlazor;
public sealed class ScriptSrcImportTests : InfiniFramePlaywrightTestBase {
protected override IPlaywrightRuntimeContext RuntimeContext => PlaywrightContext.Instance;
- [Test, NotInParallelInfiniAutomationTests]
+ [Test]
+ [NotInParallelInfiniAutomationTests]
public async Task ClassicScriptSrc_IsLoaded_AndExecutesCode(CancellationToken ct = default) {
IPage page = await GetRootPageAsync();
diff --git a/tests/InfiniAutomationTests/Tests/SharedJavascriptInteropTests.cs b/tests/InfiniAutomationTests/Tests/SharedJavascriptInteropTests.cs
index 9bc66d986..5594986e9 100644
--- a/tests/InfiniAutomationTests/Tests/SharedJavascriptInteropTests.cs
+++ b/tests/InfiniAutomationTests/Tests/SharedJavascriptInteropTests.cs
@@ -16,7 +16,8 @@ public abstract class SharedJavascriptInteropTests : InfiniFramePlaywrightTestBa
protected virtual string ToggledTitle => "New Title";
- [Test, NotInParallelInfiniAutomationTests]
+ [Test]
+ [NotInParallelInfiniAutomationTests]
public async Task FullscreenHtmlButton_ShouldToggleInfiniFrameFullscreen(CancellationToken ct = default) {
bool originalFullscreenState = RuntimeContext.Window.FullScreen;
IPage page = await GetRootPageAsync();
@@ -38,7 +39,8 @@ public async Task FullscreenHtmlButton_ShouldToggleInfiniFrameFullscreen(Cancell
await Assert.That(finalFullscreenState).IsFalse();
}
- [Test, NotInParallelInfiniAutomationTests]
+ [Test]
+ [NotInParallelInfiniAutomationTests]
public async Task TitleHtmlButton_ShouldToggleInfiniFrameTitle(CancellationToken ct = default) {
IPage page = await GetRootPageAsync();
string? originalTitleState = RuntimeContext.Window.Title;
@@ -70,7 +72,8 @@ await EvaluateWhenPageReadyAsync(
}
}
- [Test, NotInParallelInfiniAutomationTests]
+ [Test]
+ [NotInParallelInfiniAutomationTests]
public async Task GetTitleAsyncFromJs_ShouldReturnNativeWindowTitle(CancellationToken ct = default) {
// Arrange
IPage page = await GetRootPageAsync();
@@ -87,7 +90,8 @@ public async Task GetTitleAsyncFromJs_ShouldReturnNativeWindowTitle(Cancellation
await Assert.That(titleFromJsInitially).IsEqualTo(originalTitleState);
}
- [Test, NotInParallelInfiniAutomationTests]
+ [Test]
+ [NotInParallelInfiniAutomationTests]
public async Task GetTitleAsyncFromJs_ShouldReturnNativeWindowTitle_AndShouldReturnCorrectTitle(CancellationToken ct = default) {
IPage page = await GetRootPageAsync();
string? originalTitleState = RuntimeContext.Window.Title;
diff --git a/tests/InfiniAutomationTests/Tests/SharedJavascriptTests.cs b/tests/InfiniAutomationTests/Tests/SharedJavascriptTests.cs
index b5d20e126..16de90f53 100644
--- a/tests/InfiniAutomationTests/Tests/SharedJavascriptTests.cs
+++ b/tests/InfiniAutomationTests/Tests/SharedJavascriptTests.cs
@@ -16,7 +16,8 @@ public abstract class SharedJavascriptTests : InfiniFramePlaywrightTestBase {
// -----------------------------------------------------------------------------------------------------------------
// Methods
// -----------------------------------------------------------------------------------------------------------------
- [Test, NotInParallelInfiniAutomationTests]
+ [Test]
+ [NotInParallelInfiniAutomationTests]
public async Task InfiniWindowIsInitialized(CancellationToken ct = default) {
IPage page = await GetRootPageAsync();
var initState = await EvaluateWhenPageReadyAsync(
@@ -40,7 +41,8 @@ public async Task InfiniWindowIsInitialized(CancellationToken ct = default) {
await Assert.That(initState.GetProperty("hasUtils").GetBoolean()).IsTrue();
}
- [Test, NotInParallelInfiniAutomationTests]
+ [Test]
+ [NotInParallelInfiniAutomationTests]
public async Task DynamicallyUpdateTitleFromJs(CancellationToken ct = default) {
IPage page = await GetRootPageAsync();
string? originalTitle = RuntimeContext.Window.Title;
@@ -60,7 +62,8 @@ await EvaluateWhenPageReadyAsync(
RuntimeContext.Window.SetTitle(RuntimeContext.DefaultDocumentTitle);
}
- [Test, NotInParallelInfiniAutomationTests]
+ [Test]
+ [NotInParallelInfiniAutomationTests]
public async Task WindowClose(CancellationToken ct = default) {
IPage page = await GetRootPageAsync();
int initialCloseRequestCount = RuntimeContext.GetWindowCloseRequestCount();
diff --git a/tests/InfiniAutomationTests/Tests/SharedWebviewWindowTests.cs b/tests/InfiniAutomationTests/Tests/SharedWebviewWindowTests.cs
index b9a2b290c..ede31607e 100644
--- a/tests/InfiniAutomationTests/Tests/SharedWebviewWindowTests.cs
+++ b/tests/InfiniAutomationTests/Tests/SharedWebviewWindowTests.cs
@@ -9,7 +9,8 @@ namespace InfiniAutomationTests.Tests;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public abstract class SharedWebviewWindowTests : InfiniFramePlaywrightTestBase {
- [Test, NotInParallelInfiniAutomationTests]
+ [Test]
+ [NotInParallelInfiniAutomationTests]
public async Task Title_ShouldBeExpectedValue(CancellationToken ct = default) {
IPage page = await GetRootPageAsync();
diff --git a/tests/InfiniTests.InfiniFrame.BlazorWebView/InfiniFrameBlazorAppBuilderTests.cs b/tests/InfiniTests.InfiniFrame.BlazorWebView/InfiniFrameBlazorAppBuilderTests.cs
index 99a35289d..87949a4fc 100644
--- a/tests/InfiniTests.InfiniFrame.BlazorWebView/InfiniFrameBlazorAppBuilderTests.cs
+++ b/tests/InfiniTests.InfiniFrame.BlazorWebView/InfiniFrameBlazorAppBuilderTests.cs
@@ -163,7 +163,10 @@ public async Task CreateDefault_ExceptionSourceRejectsNullHandler(CancellationTo
await Assert.That(exception!.ParamName).IsEqualTo("handler");
}
- [Test, NotInParallelInfiniTests, SkipOnMacOs, SkipOnLinux]
+ [Test]
+ [NotInParallelInfiniTests]
+ [SkipOnMacOs]
+ [SkipOnLinux]
public async Task Run_WindowAlreadyClosed_DoesNotInvokeWindowAndDisposesServices(CancellationToken ct = default) {
// Arrange
var window = Substitute.For();
@@ -189,7 +192,8 @@ public async Task Run_WindowAlreadyClosed_DoesNotInvokeWindowAndDisposesServices
await Assert.That(disposeProbe.IsDisposed).IsTrue();
}
- [Test, NotInParallelInfiniTests]
+ [Test]
+ [NotInParallelInfiniTests]
public async Task SetBrowserControlInitParameters_ThroughCreateDefault_ShouldWork(CancellationToken ct = default) {
// Arrange
string[] args = Array.Empty();
@@ -214,7 +218,8 @@ await Assert.That(appbuilder.WindowBuilder.Configuration.BrowserControlInitParam
);
}
- [Test, NotInParallelInfiniTests]
+ [Test]
+ [NotInParallelInfiniTests]
public async Task SetBrowserControlInitParameters_ThroughAppBuilder_ShouldWork(CancellationToken ct = default) {
// Arrange
string[] args = Array.Empty();
@@ -239,7 +244,10 @@ await Assert.That(appbuilder.WindowBuilder.Configuration.BrowserControlInitParam
);
}
- [Test, NotInParallelInfiniTests, SkipOnMacOs("Given init parameters are not supported on macOS"), SkipOnLinux("Given init parameters are not supported on Linux")]
+ [Test]
+ [NotInParallelInfiniTests]
+ [SkipOnMacOs("Given init parameters are not supported on macOS")]
+ [SkipOnLinux("Given init parameters are not supported on Linux")]
public async Task SetBrowserControlInitParameters_ThroughCreateDefault_ShouldWorkOnWindow(CancellationToken ct = default) {
// Arrange
string[] args = Array.Empty();
@@ -267,7 +275,10 @@ await Assert.That(window.BrowserControlInitParameters).IsEqualTo(
);
}
- [Test, NotInParallelInfiniTests, SkipOnMacOs("Given init parameters are not supported on macOS"), SkipOnLinux("Given init parameters are not supported on Linux")]
+ [Test]
+ [NotInParallelInfiniTests]
+ [SkipOnMacOs("Given init parameters are not supported on macOS")]
+ [SkipOnLinux("Given init parameters are not supported on Linux")]
public async Task SetBrowserControlInitParameters_ThroughAppBuilder_ShouldWorkOnWindow(CancellationToken ct = default) {
// Arrange
string[] args = Array.Empty();
diff --git a/tests/InfiniTests.InfiniFrame.BlazorWebView/StaticWebAssetsRuntimeFileProviderTests.cs b/tests/InfiniTests.InfiniFrame.BlazorWebView/StaticWebAssetsRuntimeFileProviderTests.cs
index 41cf06e41..fcb29a9af 100644
--- a/tests/InfiniTests.InfiniFrame.BlazorWebView/StaticWebAssetsRuntimeFileProviderTests.cs
+++ b/tests/InfiniTests.InfiniFrame.BlazorWebView/StaticWebAssetsRuntimeFileProviderTests.cs
@@ -11,7 +11,8 @@ namespace InfiniTests.InfiniFrame.BlazorWebView;
// ---------------------------------------------------------------------------------------------------------------------
public class StaticWebAssetsRuntimeFileProviderTests {
// ReSharper disable SimilarAnonymousTypeNearby
- [Test, Retry(5)]
+ [Test]
+ [Retry(5)]
public async Task TryCreate_WithEqualScores_ShouldUseDeterministicManifestTieBreaker(CancellationToken ct = default) {
// Arrange
using var fixture = new TempStaticWebAssetsFixture();
@@ -65,7 +66,8 @@ await fixture.WriteManifestAsync(new {
await Assert.That(content).IsEqualTo("alpha");
}
- [Test, Retry(5)]
+ [Test]
+ [Retry(5)]
public async Task TryCreate_WhenManifestContainsExplicitAsset_ShouldResolveFile(CancellationToken ct = default) {
// Arrange
using var fixture = new TempStaticWebAssetsFixture();
@@ -106,7 +108,8 @@ await fixture.WriteManifestAsync(new {
await Assert.That(fileInfo.Name).IsEqualTo("editor-bridge.js");
}
- [Test, Retry(5)]
+ [Test]
+ [Retry(5)]
public async Task TryCreate_WhenManifestContainsWildcardPattern_ShouldResolveFileFromPattern(CancellationToken ct = default) {
// Arrange
using var fixture = new TempStaticWebAssetsFixture();
@@ -148,7 +151,8 @@ await fixture.WriteManifestAsync(new {
await Assert.That(fileInfo.Name).IsEqualTo("module.js");
}
- [Test, Retry(5)]
+ [Test]
+ [Retry(5)]
public async Task TryCreate_WithMultipleManifests_ShouldPreferAppManifest(CancellationToken ct = default) {
// Arrange
using var fixture = new TempStaticWebAssetsFixture();
@@ -222,7 +226,8 @@ await fixture.WriteManifestAsync(new {
await Assert.That(jsInfo!.Exists).IsTrue();
}
- [Test, Retry(5)]
+ [Test]
+ [Retry(5)]
public async Task GetDirectoryContents_WhenNodeHasPatternsButNoChildren_ReturnsExistingDirectory(CancellationToken ct = default) {
// Arrange
using var fixture = new TempStaticWebAssetsFixture();
@@ -260,7 +265,8 @@ await fixture.WriteManifestAsync(new {
await Assert.That(contents.Any()).IsFalse();
}
- [Test, Retry(5)]
+ [Test]
+ [Retry(5)]
public async Task GetFileInfo_WhenCalledConcurrently_ShouldRemainStable(CancellationToken ct = default) {
// Arrange
using var fixture = new TempStaticWebAssetsFixture();
diff --git a/tests/InfiniTests.InfiniFrame.Tools.Pack/Services/PublishServiceTests.cs b/tests/InfiniTests.InfiniFrame.Tools.Pack/Services/PublishServiceTests.cs
index 834dddc35..832033db1 100644
--- a/tests/InfiniTests.InfiniFrame.Tools.Pack/Services/PublishServiceTests.cs
+++ b/tests/InfiniTests.InfiniFrame.Tools.Pack/Services/PublishServiceTests.cs
@@ -115,7 +115,8 @@ await ExecuteWithTimeout(
await Assert.That(exception!.Message.Contains("Could not resolve required InfiniFrame native artifacts from project publish output.", StringComparison.Ordinal)).IsTrue();
}
- [Test, SkipOnMacOs("4 Hours lost on trying to fix this on macOs... too much time to spent on this.")]
+ [Test]
+ [SkipOnMacOs("4 Hours lost on trying to fix this on macOs... too much time to spent on this.")]
public async Task PublishAsync_ReturnsSuccessAndSingleFileOutput_WhenProjectIncludesInfiniFrame() {
SharedPublishFixture fixture = await ExecuteWithTimeout(
GetOrCreateSharedPublishFixtureAsync(),
@@ -128,7 +129,8 @@ public async Task PublishAsync_ReturnsSuccessAndSingleFileOutput_WhenProjectIncl
await Assert.That(Directory.GetFileSystemEntries(fixture.OutputPath, "*", SearchOption.TopDirectoryOnly).Length).IsEqualTo(1);
}
- [Test, SkipOnMacOs("4 Hours lost on trying to fix this on macOs... too much time to spent on this.")]
+ [Test]
+ [SkipOnMacOs("4 Hours lost on trying to fix this on macOs... too much time to spent on this.")]
public async Task PublishAsync_LaunchedPackedApp_InitializesBootstrapAndExitsSuccessfully() {
SharedPublishFixture fixture = await ExecuteWithTimeout(
GetOrCreateSharedPublishFixtureAsync(),
diff --git a/tests/InfiniTests.InfiniFrame.WebServer/InfiniFrameWebApplicationTests.cs b/tests/InfiniTests.InfiniFrame.WebServer/InfiniFrameWebApplicationTests.cs
index 1473daad5..e1842d3fb 100644
--- a/tests/InfiniTests.InfiniFrame.WebServer/InfiniFrameWebApplicationTests.cs
+++ b/tests/InfiniTests.InfiniFrame.WebServer/InfiniFrameWebApplicationTests.cs
@@ -173,7 +173,8 @@ await Assert.That(appLifetime.ApplicationStopping.IsCancellationRequested)
.IsTrue();
}
- [Test, Retry(5)]
+ [Test]
+ [Retry(5)]
public async Task Stop_ShouldCloseWindowAndStopWebApp() {
// Arrange
IInfiniFrameWindow mockWindow = CreateMockWindow();
diff --git a/tests/InfiniTests.InfiniFrame/Interop/InteropEnvelopeProtocolTests.cs b/tests/InfiniTests.InfiniFrame/Interop/InteropEnvelopeProtocolTests.cs
index 8f48239d9..b1c808fc6 100644
--- a/tests/InfiniTests.InfiniFrame/Interop/InteropEnvelopeProtocolTests.cs
+++ b/tests/InfiniTests.InfiniFrame/Interop/InteropEnvelopeProtocolTests.cs
@@ -44,7 +44,8 @@ private static string ResolveGoldenVectorsPath() {
// -----------------------------------------------------------------------------------------------------------------
// Test Methods
// -----------------------------------------------------------------------------------------------------------------
- [Test, Retry(5)]
+ [Test]
+ [Retry(5)]
public async Task CreateEnvelope_GoldenVectors(CancellationToken ct = default) {
// Arrange
JsonDocument goldenVectorsDocument = await GetGoldenVectorsAsync(ct);
@@ -64,7 +65,8 @@ public async Task CreateEnvelope_GoldenVectors(CancellationToken ct = default) {
}
}
- [Test, Retry(5)]
+ [Test]
+ [Retry(5)]
public async Task ParseEnvelope_GoldenVectors(CancellationToken ct = default) {
// Arrange
JsonDocument goldenVectorsDocument = await GetGoldenVectorsAsync(ct);
@@ -95,7 +97,8 @@ public async Task ParseEnvelope_GoldenVectors(CancellationToken ct = default) {
}
}
- [Test, Retry(5)]
+ [Test]
+ [Retry(5)]
public async Task Parse_TooLargeMessage_IsRejected(CancellationToken ct = default) {
// Arrange
string message = new('a', InteropEnvelopeProtocol.MaxMessageSizeBytes + 1);
diff --git a/tests/InfiniTests.InfiniFrame/WindowEvents/WindowClosedEventTests.cs b/tests/InfiniTests.InfiniFrame/WindowEvents/WindowClosedEventTests.cs
index ede84435b..ef96082ba 100644
--- a/tests/InfiniTests.InfiniFrame/WindowEvents/WindowClosedEventTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowEvents/WindowClosedEventTests.cs
@@ -8,7 +8,10 @@ namespace InfiniTests.InfiniFrame.WindowEvents;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public class WindowClosedEventTests {
- [Test, Retry(5), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [Retry(5)]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task TestWindowClosedEvent(CancellationToken ct = default) {
// Arrange
int closedEventCount = 0;
diff --git a/tests/InfiniTests.InfiniFrame/WindowEvents/WindowClosingRequestedEventTests.cs b/tests/InfiniTests.InfiniFrame/WindowEvents/WindowClosingRequestedEventTests.cs
index c8a4bbaff..35010e435 100644
--- a/tests/InfiniTests.InfiniFrame/WindowEvents/WindowClosingRequestedEventTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowEvents/WindowClosingRequestedEventTests.cs
@@ -8,7 +8,10 @@ namespace InfiniTests.InfiniFrame.WindowEvents;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public class WindowClosingRequestedEventTests {
- [Test, Retry(5), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [Retry(5)]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task TestWindowClosingRequestedEvent(CancellationToken ct = default) {
// Arrange
int closingRequestedEventCount = 0;
diff --git a/tests/InfiniTests.InfiniFrame/WindowEvents/WindowCreatedEventTests.cs b/tests/InfiniTests.InfiniFrame/WindowEvents/WindowCreatedEventTests.cs
index 304425563..71e29d1bf 100644
--- a/tests/InfiniTests.InfiniFrame/WindowEvents/WindowCreatedEventTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowEvents/WindowCreatedEventTests.cs
@@ -8,7 +8,10 @@ namespace InfiniTests.InfiniFrame.WindowEvents;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public class WindowCreatedEventTests {
- [Test, Retry(5), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [Retry(5)]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task TestWindowCreatedEvent(CancellationToken ct = default) {
// Arrange
int createdEventCount = 0;
@@ -25,7 +28,10 @@ public async Task TestWindowCreatedEvent(CancellationToken ct = default) {
await Assert.That(createdEventCount).IsEqualTo(1);
}
- [Test, Retry(3), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [Retry(3)]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task TestSendWebMessageFromWindowCreatedDoesNotCrash(CancellationToken ct = default) {
// Arrange: register a WindowCreated handler that immediately calls SendWebMessage.
// Before the fix this raised SystemAccessViolationException on Windows because
diff --git a/tests/InfiniTests.InfiniFrame/WindowEvents/WindowCreatingEventTests.cs b/tests/InfiniTests.InfiniFrame/WindowEvents/WindowCreatingEventTests.cs
index 14c992eed..f96a8504b 100644
--- a/tests/InfiniTests.InfiniFrame/WindowEvents/WindowCreatingEventTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowEvents/WindowCreatingEventTests.cs
@@ -8,7 +8,10 @@ namespace InfiniTests.InfiniFrame.WindowEvents;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public class WindowCreatingEventTests {
- [Test, Retry(5), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [Retry(5)]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task TestWindowCreatingEvent(CancellationToken ct = default) {
// Arrange
int creatingEventCount = 0;
diff --git a/tests/InfiniTests.InfiniFrame/WindowEvents/WindowFocusInEventTests.cs b/tests/InfiniTests.InfiniFrame/WindowEvents/WindowFocusInEventTests.cs
index e9537fce2..57331aa67 100644
--- a/tests/InfiniTests.InfiniFrame/WindowEvents/WindowFocusInEventTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowEvents/WindowFocusInEventTests.cs
@@ -8,7 +8,11 @@ namespace InfiniTests.InfiniFrame.WindowEvents;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public class WindowFocusInEventTests {
- [Test, Retry(5), SkipOnMacOs, SkipOnLinux("Focus transitions are desktop-state dependent under WSLg/local Linux runs"), NotInParallelInfiniTests]
+ [Test]
+ [Retry(5)]
+ [SkipOnMacOs]
+ [SkipOnLinux("Focus transitions are desktop-state dependent under WSLg/local Linux runs")]
+ [NotInParallelInfiniTests]
public async Task TestWindowFocusInEvent(CancellationToken ct = default) {
// Arrange
int focusInEventCount = 0;
diff --git a/tests/InfiniTests.InfiniFrame/WindowEvents/WindowFocusOutEventTests.cs b/tests/InfiniTests.InfiniFrame/WindowEvents/WindowFocusOutEventTests.cs
index d2022f078..c14a82ecb 100644
--- a/tests/InfiniTests.InfiniFrame/WindowEvents/WindowFocusOutEventTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowEvents/WindowFocusOutEventTests.cs
@@ -8,7 +8,12 @@ namespace InfiniTests.InfiniFrame.WindowEvents;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public class WindowFocusOutEventTests {
- [Test, Retry(5), SkipOnMacOs, SkipOnWindowsArm("WM_ACTIVATE WA_INACTIVE is not reliably delivered on headless ARM64 CI runners"), SkipOnLinux("Focus transitions are desktop-state dependent under WSLg/local Linux runs"), NotInParallelInfiniTests]
+ [Test]
+ [Retry(5)]
+ [SkipOnMacOs]
+ [SkipOnWindowsArm("WM_ACTIVATE WA_INACTIVE is not reliably delivered on headless ARM64 CI runners")]
+ [SkipOnLinux("Focus transitions are desktop-state dependent under WSLg/local Linux runs")]
+ [NotInParallelInfiniTests]
public async Task TestWindowFocusOutEvent(CancellationToken ct = default) {
// Arrange
int focusOutEventCount = 0;
diff --git a/tests/InfiniTests.InfiniFrame/WindowEvents/WindowLocationChangedEventTests.cs b/tests/InfiniTests.InfiniFrame/WindowEvents/WindowLocationChangedEventTests.cs
index 857c13f8b..5354d2bfa 100644
--- a/tests/InfiniTests.InfiniFrame/WindowEvents/WindowLocationChangedEventTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowEvents/WindowLocationChangedEventTests.cs
@@ -8,7 +8,11 @@ namespace InfiniTests.InfiniFrame.WindowEvents;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public class WindowLocationChangedEventTests {
- [Test, Retry(5), SkipOnMacOs, SkipOnLinux("Location transitions are desktop-state dependent under WSLg/local Linux runs"), NotInParallelInfiniTests]
+ [Test]
+ [Retry(5)]
+ [SkipOnMacOs]
+ [SkipOnLinux("Location transitions are desktop-state dependent under WSLg/local Linux runs")]
+ [NotInParallelInfiniTests]
public async Task TestWindowLocationChangedEvent(CancellationToken ct = default) {
// Arrange
int locationChangedCount = 0;
diff --git a/tests/InfiniTests.InfiniFrame/WindowEvents/WindowMaximizedEventTests.cs b/tests/InfiniTests.InfiniFrame/WindowEvents/WindowMaximizedEventTests.cs
index 960e826c2..3366a7687 100644
--- a/tests/InfiniTests.InfiniFrame/WindowEvents/WindowMaximizedEventTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowEvents/WindowMaximizedEventTests.cs
@@ -8,7 +8,10 @@ namespace InfiniTests.InfiniFrame.WindowEvents;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public class WindowMaximizedEventTests {
- [Test, Retry(5), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [Retry(5)]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task TestWindowMaximizedEvent(CancellationToken ct = default) {
// Arrange
int maximizedEventCount = 0;
diff --git a/tests/InfiniTests.InfiniFrame/WindowEvents/WindowMinimizedEventTests.cs b/tests/InfiniTests.InfiniFrame/WindowEvents/WindowMinimizedEventTests.cs
index ff22cfdb1..dfb89a804 100644
--- a/tests/InfiniTests.InfiniFrame/WindowEvents/WindowMinimizedEventTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowEvents/WindowMinimizedEventTests.cs
@@ -8,7 +8,11 @@ namespace InfiniTests.InfiniFrame.WindowEvents;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public class WindowMinimizedEventTests {
- [Test, Retry(5), SkipOnMacOs, SkipOnLinux("desktop-state dependent under WSLg/local Linux runs"), NotInParallelInfiniTests]
+ [Test]
+ [Retry(5)]
+ [SkipOnMacOs]
+ [SkipOnLinux("desktop-state dependent under WSLg/local Linux runs")]
+ [NotInParallelInfiniTests]
public async Task TestWindowMinimizedEvent(CancellationToken ct = default) {
// Arrange
int minimizedEventCount = 0;
diff --git a/tests/InfiniTests.InfiniFrame/WindowEvents/WindowRestoredEventTests.cs b/tests/InfiniTests.InfiniFrame/WindowEvents/WindowRestoredEventTests.cs
index c5c189310..7e6a7ecad 100644
--- a/tests/InfiniTests.InfiniFrame/WindowEvents/WindowRestoredEventTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowEvents/WindowRestoredEventTests.cs
@@ -8,7 +8,10 @@ namespace InfiniTests.InfiniFrame.WindowEvents;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public class WindowRestoredEventTests {
- [Test, Retry(5), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [Retry(5)]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task TestWindowRestoredFromMaximized(CancellationToken ct = default) {
// Arrange
int restoredEventCount = 0;
@@ -31,7 +34,11 @@ public async Task TestWindowRestoredFromMaximized(CancellationToken ct = default
await Assert.That(restoredEventCount).IsEqualTo(baseline + 1);
}
- [Test, Retry(5), SkipOnMacOs, SkipOnLinux("desktop-state dependent under WSLg/local Linux runs"), NotInParallelInfiniTests]
+ [Test]
+ [Retry(5)]
+ [SkipOnMacOs]
+ [SkipOnLinux("desktop-state dependent under WSLg/local Linux runs")]
+ [NotInParallelInfiniTests]
public async Task TestWindowRestoredFromMinimized(CancellationToken ct = default) {
// Arrange
int restoredEventCount = 0;
diff --git a/tests/InfiniTests.InfiniFrame/WindowEvents/WindowSizeChangedEventTests.cs b/tests/InfiniTests.InfiniFrame/WindowEvents/WindowSizeChangedEventTests.cs
index 62c1822ab..200c3f8d7 100644
--- a/tests/InfiniTests.InfiniFrame/WindowEvents/WindowSizeChangedEventTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowEvents/WindowSizeChangedEventTests.cs
@@ -8,7 +8,10 @@ namespace InfiniTests.InfiniFrame.WindowEvents;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public class WindowSizeChangedEventTests {
- [Test, Retry(5), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [Retry(5)]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task TestWindowSizeChangedEvent(CancellationToken ct = default) {
// Arrange: start at a known size so the second SetSize guarantees a change
int sizeChangedCount = 0;
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/BrowserControlInitParametersTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/BrowserControlInitParametersTests.cs
index 5afe56b0b..298979627 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/BrowserControlInitParametersTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/BrowserControlInitParametersTests.cs
@@ -10,7 +10,10 @@ namespace InfiniTests.InfiniFrame.WindowFunctionalities;
// ---------------------------------------------------------------------------------------------------------------------
public class BrowserControlInitParametersTests {
- [Test, DisplayName($"{nameof(BrowserControlInitParametersTests)}.{nameof(Builder)}"), SkipOnMacOs, SkipOnLinux]
+ [Test]
+ [DisplayName($"{nameof(BrowserControlInitParametersTests)}.{nameof(Builder)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux]
public async Task Builder(CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/CenterOnCurrentMonitorTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/CenterOnCurrentMonitorTests.cs
index 2471611fd..e209452be 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/CenterOnCurrentMonitorTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/CenterOnCurrentMonitorTests.cs
@@ -10,7 +10,11 @@ namespace InfiniTests.InfiniFrame.WindowFunctionalities;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public class CenterOnCurrentMonitorTests {
- [Test, DisplayName($"{nameof(CenterOnCurrentMonitorTests)}.{nameof(Window)}"), SkipOnMacOs, SkipOnLinux(SkipUtility.LinuxMovement), NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(CenterOnCurrentMonitorTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux(SkipUtility.LinuxMovement)]
+ [NotInParallelInfiniTests]
public async Task Window(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/CenterOnMonitorTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/CenterOnMonitorTests.cs
index 48992677d..1d16357dc 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/CenterOnMonitorTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/CenterOnMonitorTests.cs
@@ -10,7 +10,11 @@ namespace InfiniTests.InfiniFrame.WindowFunctionalities;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public class CenterOnMonitorTests {
- [Test, DisplayName($"{nameof(CenterOnMonitorTests)}.{nameof(Window)}"), SkipOnMacOs, SkipOnLinux(SkipUtility.LinuxMovement), NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(CenterOnMonitorTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux(SkipUtility.LinuxMovement)]
+ [NotInParallelInfiniTests]
public async Task Window(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/CenterTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/CenterTests.cs
index 3c6a38355..0ec228d35 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/CenterTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/CenterTests.cs
@@ -12,7 +12,10 @@ namespace InfiniTests.InfiniFrame.WindowFunctionalities;
// ---------------------------------------------------------------------------------------------------------------------
public class CenterTests {
- [Test, DisplayName($"{nameof(CenterTests)}.{nameof(Builder)}"), Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(CenterTests)}.{nameof(Builder)}")]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task Builder(bool state, CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -27,7 +30,11 @@ public async Task Builder(bool state, CancellationToken ct = default) {
await Assert.That(configParameters.CenterOnInitialize).IsEqualTo(state);
}
- [Test, DisplayName($"{nameof(CenterTests)}.{nameof(Window)}"), SkipOnMacOs, SkipOnLinux(SkipUtility.LinuxMovement), NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(CenterTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux(SkipUtility.LinuxMovement)]
+ [NotInParallelInfiniTests]
public async Task Window(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -49,7 +56,13 @@ public async Task Window(CancellationToken ct = default) {
await Assert.That(window.Location).IsEqualTo(new Point(centerX, centerY));
}
- [Test, DisplayName($"{nameof(CenterTests)}.{nameof(FullIntegration)}"), SkipOnMacOs, SkipOnLinux(SkipUtility.LinuxMovement), NotInParallelInfiniTests, Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(CenterTests)}.{nameof(FullIntegration)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux(SkipUtility.LinuxMovement)]
+ [NotInParallelInfiniTests]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task FullIntegration(bool state, CancellationToken ct = default) {
// Arrange
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/ContextMenuTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/ContextMenuTests.cs
index d277bf631..9a48f1461 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/ContextMenuTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/ContextMenuTests.cs
@@ -10,7 +10,10 @@ namespace InfiniTests.InfiniFrame.WindowFunctionalities;
// ---------------------------------------------------------------------------------------------------------------------
public class ContextMenuTests {
- [Test, DisplayName($"{nameof(ContextMenuTests)}.{nameof(Builder)}"), Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(ContextMenuTests)}.{nameof(Builder)}")]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task Builder(bool state, CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -25,7 +28,12 @@ public async Task Builder(bool state, CancellationToken ct = default) {
await Assert.That(configParameters.ContextMenuEnabled).IsEqualTo(state);
}
- [Test, DisplayName($"{nameof(ContextMenuTests)}.{nameof(Window)}"), SkipOnMacOs, NotInParallelInfiniTests, Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(ContextMenuTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task Window(bool state, CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -39,7 +47,12 @@ public async Task Window(bool state, CancellationToken ct = default) {
await Assert.That(foundState).IsEqualTo(state);
}
- [Test, DisplayName($"{nameof(ContextMenuTests)}.{nameof(FullIntegration)}"), SkipOnMacOs, NotInParallelInfiniTests, Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(ContextMenuTests)}.{nameof(FullIntegration)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task FullIntegration(bool state, CancellationToken ct = default) {
// Arrange
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/DevToolsTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/DevToolsTests.cs
index d1ec350f4..3962ad402 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/DevToolsTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/DevToolsTests.cs
@@ -10,7 +10,10 @@ namespace InfiniTests.InfiniFrame.WindowFunctionalities;
// ---------------------------------------------------------------------------------------------------------------------
public class DevToolsTests {
- [Test, DisplayName($"{nameof(DevToolsTests)}.{nameof(Builder)}"), Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(DevToolsTests)}.{nameof(Builder)}")]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task Builder(bool state, CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -25,7 +28,12 @@ public async Task Builder(bool state, CancellationToken ct = default) {
await Assert.That(configParameters.DevToolsEnabled).IsEqualTo(state);
}
- [Test, DisplayName($"{nameof(DevToolsTests)}.{nameof(Window)}"), SkipOnMacOs, NotInParallelInfiniTests, Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(DevToolsTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task Window(bool state, CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -39,7 +47,12 @@ public async Task Window(bool state, CancellationToken ct = default) {
await Assert.That(foundState).IsEqualTo(state);
}
- [Test, DisplayName($"{nameof(DevToolsTests)}.{nameof(FullIntegration)}"), SkipOnMacOs, NotInParallelInfiniTests, Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(DevToolsTests)}.{nameof(FullIntegration)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task FullIntegration(bool state, CancellationToken ct = default) {
// Arrange
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/FocusedTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/FocusedTests.cs
index 523c66d5b..3067ac1d8 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/FocusedTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/FocusedTests.cs
@@ -8,7 +8,12 @@ namespace InfiniTests.InfiniFrame.WindowFunctionalities;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public class FocusedTests {
- [Test, DisplayName($"{nameof(FocusedTests)}.{nameof(Window)}"), SkipOnMacOs(SkipUtility.MacOsMainThreadIssue), SkipOnLinux("Given that the window is virtualized, this test is not applicable."), NotInParallelInfiniTests, Retry(5)]
+ [Test]
+ [DisplayName($"{nameof(FocusedTests)}.{nameof(Window)}")]
+ [SkipOnMacOs(SkipUtility.MacOsMainThreadIssue)]
+ [SkipOnLinux("Given that the window is virtualized, this test is not applicable.")]
+ [NotInParallelInfiniTests]
+ [Retry(5)]
public async Task Window(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/FullscreenTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/FullscreenTests.cs
index 7402c08e7..ed051aacb 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/FullscreenTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/FullscreenTests.cs
@@ -10,7 +10,10 @@ namespace InfiniTests.InfiniFrame.WindowFunctionalities;
// ---------------------------------------------------------------------------------------------------------------------
public class FullScreenTests {
- [Test, DisplayName($"{nameof(FullScreenTests)}.{nameof(Builder)}"), Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(FullScreenTests)}.{nameof(Builder)}")]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task Builder(bool state, CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -25,7 +28,12 @@ public async Task Builder(bool state, CancellationToken ct = default) {
await Assert.That(configParameters.FullScreen).IsEqualTo(state);
}
- [Test, DisplayName($"{nameof(FullScreenTests)}.{nameof(Window)}"), SkipOnMacOs, NotInParallelInfiniTests, Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(FullScreenTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task Window(bool state, CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -38,7 +46,12 @@ public async Task Window(bool state, CancellationToken ct = default) {
await Assert.That(window.FullScreen).IsEqualTo(state);
}
- [Test, DisplayName($"{nameof(FullScreenTests)}.{nameof(FullIntegration)}"), SkipOnMacOs, NotInParallelInfiniTests, Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(FullScreenTests)}.{nameof(FullIntegration)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task FullIntegration(bool state, CancellationToken ct = default) {
// Arrange
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/HeightTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/HeightTests.cs
index 1193993ce..f1417029b 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/HeightTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/HeightTests.cs
@@ -14,7 +14,8 @@ public class HeightTests {
// -----------------------------------------------------------------------------------------------------------------
// Test Methods
// -----------------------------------------------------------------------------------------------------------------
- [Test, DisplayName($"{nameof(HeightTests)}.{nameof(FullIntegration)}")]
+ [Test]
+ [DisplayName($"{nameof(HeightTests)}.{nameof(FullIntegration)}")]
public async Task Builder(CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -30,7 +31,8 @@ public async Task Builder(CancellationToken ct = default) {
await Assert.That(configParameters.Height).IsEqualTo(Height);
}
- [Test, DisplayName($"{nameof(HeightTests)}.{nameof(Builder_ShouldOverwriteOsDefaultSizeAndCentered)}")]
+ [Test]
+ [DisplayName($"{nameof(HeightTests)}.{nameof(Builder_ShouldOverwriteOsDefaultSizeAndCentered)}")]
public async Task Builder_ShouldOverwriteOsDefaultSizeAndCentered() {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -53,7 +55,11 @@ public async Task Builder_ShouldOverwriteOsDefaultSizeAndCentered() {
await Assert.That(configParameters).IsEqualTo(expectedConfigParameters);
}
- [Test, DisplayName($"{nameof(HeightTests)}.{nameof(Window)}"), SkipOnMacOs, SkipOnLinux(SkipUtility.LinuxMovement), NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(HeightTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux(SkipUtility.LinuxMovement)]
+ [NotInParallelInfiniTests]
public async Task Window(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -66,7 +72,10 @@ public async Task Window(CancellationToken ct = default) {
await Assert.That(window.Height).IsEqualTo(500);
}
- [Test, DisplayName($"{nameof(HeightTests)}.{nameof(FullIntegration)}"), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(HeightTests)}.{nameof(FullIntegration)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task FullIntegration(CancellationToken ct = default) {
// Arrange
@@ -83,7 +92,11 @@ public async Task FullIntegration(CancellationToken ct = default) {
await Assert.That(window.Height).IsEqualTo(500);
}
- [Test, DisplayName($"{nameof(HeightTests)}.{nameof(Window_WithChromelessToGetSmallestHeight)}"), SkipOnMacOs, SkipOnLinux(SkipUtility.LinuxMovement), NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(HeightTests)}.{nameof(Window_WithChromelessToGetSmallestHeight)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux(SkipUtility.LinuxMovement)]
+ [NotInParallelInfiniTests]
public async Task Window_WithChromelessToGetSmallestHeight(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(
@@ -99,7 +112,10 @@ public async Task Window_WithChromelessToGetSmallestHeight(CancellationToken ct
await Assert.That(window.Height).IsEqualTo(Height);
}
- [Test, DisplayName($"{nameof(HeightTests)}.{nameof(FullIntegration_WithChromelessToGetSmallestHeight)}"), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(HeightTests)}.{nameof(FullIntegration_WithChromelessToGetSmallestHeight)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task FullIntegration_WithChromelessToGetSmallestHeight(CancellationToken ct = default) {
// Arrange
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/IconFilePathTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/IconFilePathTests.cs
index 2e9bfe344..8844caaed 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/IconFilePathTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/IconFilePathTests.cs
@@ -15,7 +15,8 @@ public class IconFilePathTests {
// -----------------------------------------------------------------------------------------------------------------
// Test Methods
// -----------------------------------------------------------------------------------------------------------------
- [Test, DisplayName($"{nameof(IconFilePathTests)}.{nameof(Builder)}")]
+ [Test]
+ [DisplayName($"{nameof(IconFilePathTests)}.{nameof(Builder)}")]
public async Task Builder(CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -28,7 +29,8 @@ public async Task Builder(CancellationToken ct = default) {
await Assert.That(builder.Configuration.ToNativeParameters().WindowIconFile).IsEqualTo(ResolvedIconFilePath);
}
- [Test, DisplayName($"{nameof(IconFilePathTests)}.{nameof(Builder_ShouldNotSetInvalidIconFilePath)}")]
+ [Test]
+ [DisplayName($"{nameof(IconFilePathTests)}.{nameof(Builder_ShouldNotSetInvalidIconFilePath)}")]
public async Task Builder_ShouldNotSetInvalidIconFilePath(CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -41,7 +43,11 @@ public async Task Builder_ShouldNotSetInvalidIconFilePath(CancellationToken ct =
await Assert.That(builder.Configuration.ToNativeParameters().WindowIconFile).IsNull();
}
- [Test, DisplayName($"{nameof(IconFilePathTests)}.{nameof(Window)}"), SkipOnMacOs, SkipOnLinux, NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(IconFilePathTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux]
+ [NotInParallelInfiniTests]
public async Task Window(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -55,7 +61,11 @@ public async Task Window(CancellationToken ct = default) {
await Assert.That(foundPath).IsEqualTo(ResolvedIconFilePath);
}
- [Test, DisplayName($"{nameof(IconFilePathTests)}.{nameof(Window_ShouldNotSetInvalidIconFilePath)}"), SkipOnMacOs, SkipOnLinux, NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(IconFilePathTests)}.{nameof(Window_ShouldNotSetInvalidIconFilePath)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux]
+ [NotInParallelInfiniTests]
public async Task Window_ShouldNotSetInvalidIconFilePath(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -68,7 +78,11 @@ public async Task Window_ShouldNotSetInvalidIconFilePath(CancellationToken ct =
await Assert.That(window.IconFilePath).IsEqualTo(string.Empty);
}
- [Test, DisplayName($"{nameof(IconFilePathTests)}.{nameof(FullIntegration)}"), SkipOnMacOs, SkipOnLinux, NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(IconFilePathTests)}.{nameof(FullIntegration)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux]
+ [NotInParallelInfiniTests]
public async Task FullIntegration(CancellationToken ct = default) {
// Arrange
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/LeftTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/LeftTests.cs
index 5ae0ba710..3109d0a63 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/LeftTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/LeftTests.cs
@@ -14,7 +14,8 @@ public class LeftTests {
// -----------------------------------------------------------------------------------------------------------------
// Test Methods
// -----------------------------------------------------------------------------------------------------------------
- [Test, DisplayName($"{nameof(LeftTests)}.{nameof(Builder)}")]
+ [Test]
+ [DisplayName($"{nameof(LeftTests)}.{nameof(Builder)}")]
public async Task Builder(CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -29,7 +30,8 @@ public async Task Builder(CancellationToken ct = default) {
await Assert.That(configParameters.Left).IsEqualTo(Left);
}
- [Test, DisplayName($"{nameof(LeftTests)}.{nameof(Builder_ShouldOverwriteOsDefaultLocationAndCentered)}")]
+ [Test]
+ [DisplayName($"{nameof(LeftTests)}.{nameof(Builder_ShouldOverwriteOsDefaultLocationAndCentered)}")]
public async Task Builder_ShouldOverwriteOsDefaultLocationAndCentered(CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -53,7 +55,11 @@ public async Task Builder_ShouldOverwriteOsDefaultLocationAndCentered(Cancellati
await Assert.That(configParameters).IsEqualTo(expectedConfigParameters);
}
- [Test, DisplayName($"{nameof(LeftTests)}.{nameof(Window)}"), SkipOnMacOs, SkipOnLinux(SkipUtility.LinuxMovement), NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(LeftTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux(SkipUtility.LinuxMovement)]
+ [NotInParallelInfiniTests]
public async Task Window(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -66,7 +72,11 @@ public async Task Window(CancellationToken ct = default) {
await Assert.That(window.Left).IsEqualTo(Left);
}
- [Test, DisplayName($"{nameof(LeftTests)}.{nameof(FullIntegration)}"), SkipOnMacOs, SkipOnLinux(SkipUtility.LinuxMovement), NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(LeftTests)}.{nameof(FullIntegration)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux(SkipUtility.LinuxMovement)]
+ [NotInParallelInfiniTests]
public async Task FullIntegration(CancellationToken ct = default) {
// Arrange
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/LocationTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/LocationTests.cs
index f4c69c073..40758f36f 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/LocationTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/LocationTests.cs
@@ -16,7 +16,8 @@ public class LocationTests {
// -----------------------------------------------------------------------------------------------------------------
// Test Methods
// -----------------------------------------------------------------------------------------------------------------
- [Test, DisplayName($"{nameof(LocationTests)}.{nameof(Builder)}")]
+ [Test]
+ [DisplayName($"{nameof(LocationTests)}.{nameof(Builder)}")]
public async Task Builder(CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -34,7 +35,8 @@ public async Task Builder(CancellationToken ct = default) {
await Assert.That(configParameters.Top).IsEqualTo(Top);
}
- [Test, DisplayName($"{nameof(LocationTests)}.{nameof(Builder_ShouldOverwriteOsDefaultLocationAndCentered)}")]
+ [Test]
+ [DisplayName($"{nameof(LocationTests)}.{nameof(Builder_ShouldOverwriteOsDefaultLocationAndCentered)}")]
public async Task Builder_ShouldOverwriteOsDefaultLocationAndCentered(CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -59,7 +61,11 @@ public async Task Builder_ShouldOverwriteOsDefaultLocationAndCentered(Cancellati
await Assert.That(configParameters).IsEqualTo(expectedConfigParameters);
}
- [Test, DisplayName($"{nameof(LocationTests)}.{nameof(Window)}"), SkipOnMacOs, SkipOnLinux(SkipUtility.LinuxMovement), NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(LocationTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux(SkipUtility.LinuxMovement)]
+ [NotInParallelInfiniTests]
public async Task Window(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -72,7 +78,11 @@ public async Task Window(CancellationToken ct = default) {
await Assert.That(window.Location).IsEqualTo(new Point(Left, Top));
}
- [Test, DisplayName($"{nameof(LocationTests)}.{nameof(Window_AsPoint)}"), SkipOnMacOs, SkipOnLinux(SkipUtility.LinuxMovement), NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(LocationTests)}.{nameof(Window_AsPoint)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux(SkipUtility.LinuxMovement)]
+ [NotInParallelInfiniTests]
public async Task Window_AsPoint(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -85,7 +95,11 @@ public async Task Window_AsPoint(CancellationToken ct = default) {
await Assert.That(window.Location).IsEqualTo(new Point(Left, Top));
}
- [Test, DisplayName($"{nameof(LocationTests)}.{nameof(FullIntegration)}"), SkipOnMacOs, SkipOnLinux(SkipUtility.LinuxMovement), NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(LocationTests)}.{nameof(FullIntegration)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux(SkipUtility.LinuxMovement)]
+ [NotInParallelInfiniTests]
public async Task FullIntegration(CancellationToken ct = default) {
// Arrange
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MaxHeightTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MaxHeightTests.cs
index 889181696..77187425f 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MaxHeightTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MaxHeightTests.cs
@@ -11,7 +11,8 @@ namespace InfiniTests.InfiniFrame.WindowFunctionalities;
public class MaxHeightTests {
private const int MaxHeight = 20;
- [Test, DisplayName($"{nameof(MaxHeightTests)}.{nameof(Builder)}")]
+ [Test]
+ [DisplayName($"{nameof(MaxHeightTests)}.{nameof(Builder)}")]
public async Task Builder(CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -26,7 +27,10 @@ public async Task Builder(CancellationToken ct = default) {
await Assert.That(configParameters.MaxHeight).IsEqualTo(MaxHeight);
}
- [Test, DisplayName($"{nameof(MaxHeightTests)}.{nameof(Window)}"), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(MaxHeightTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task Window(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -39,7 +43,10 @@ public async Task Window(CancellationToken ct = default) {
await Assert.That(window.MaxHeight).IsEqualTo(500);
}
- [Test, DisplayName($"{nameof(MaxHeightTests)}.{nameof(FullIntegration)}"), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(MaxHeightTests)}.{nameof(FullIntegration)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task FullIntegration(CancellationToken ct = default) {
// Arrange
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MaxSizeTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MaxSizeTests.cs
index 73f30be69..d873daf04 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MaxSizeTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MaxSizeTests.cs
@@ -16,7 +16,8 @@ public class MaxSizeTests {
// -----------------------------------------------------------------------------------------------------------------
// Test Methods
// -----------------------------------------------------------------------------------------------------------------
- [Test, DisplayName($"{nameof(MaxSizeTests)}.{nameof(Builder)}")]
+ [Test]
+ [DisplayName($"{nameof(MaxSizeTests)}.{nameof(Builder)}")]
public async Task Builder(CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -33,7 +34,10 @@ public async Task Builder(CancellationToken ct = default) {
await Assert.That(configParameters.MaxHeight).IsEqualTo(Height);
}
- [Test, DisplayName($"{nameof(MaxSizeTests)}.{nameof(Window)}"), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(MaxSizeTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task Window(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -46,7 +50,10 @@ public async Task Window(CancellationToken ct = default) {
await Assert.That(window.MaxSize).IsEqualTo(new Size(400, 500));
}
- [Test, DisplayName($"{nameof(MaxSizeTests)}.{nameof(Window_AsSize)}"), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(MaxSizeTests)}.{nameof(Window_AsSize)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task Window_AsSize(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -59,7 +66,10 @@ public async Task Window_AsSize(CancellationToken ct = default) {
await Assert.That(window.MaxSize).IsEqualTo(new Size(400, 500));
}
- [Test, DisplayName($"{nameof(MaxSizeTests)}.{nameof(FullIntegration)}"), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(MaxSizeTests)}.{nameof(FullIntegration)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task FullIntegration(CancellationToken ct = default) {
// Arrange
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MaxWidthTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MaxWidthTests.cs
index a3e1daf8a..15fd2634b 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MaxWidthTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MaxWidthTests.cs
@@ -14,7 +14,8 @@ public class MaxWidthTests {
// -----------------------------------------------------------------------------------------------------------------
// Test Methods
// -----------------------------------------------------------------------------------------------------------------
- [Test, DisplayName($"{nameof(MaxWidthTests)}.{nameof(Builder)}")]
+ [Test]
+ [DisplayName($"{nameof(MaxWidthTests)}.{nameof(Builder)}")]
public async Task Builder(CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -29,7 +30,10 @@ public async Task Builder(CancellationToken ct = default) {
await Assert.That(configParameters.MaxWidth).IsEqualTo(MaxWidth);
}
- [Test, DisplayName($"{nameof(MaxWidthTests)}.{nameof(Window)}"), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(MaxWidthTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task Window(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -42,7 +46,10 @@ public async Task Window(CancellationToken ct = default) {
await Assert.That(window.MaxWidth).IsEqualTo(500);
}
- [Test, DisplayName($"{nameof(MaxWidthTests)}.{nameof(FullIntegration)}"), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(MaxWidthTests)}.{nameof(FullIntegration)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task FullIntegration(CancellationToken ct = default) {
// Arrange
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MaximizeTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MaximizeTests.cs
index 9e003589b..ad5624bcb 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MaximizeTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MaximizeTests.cs
@@ -10,7 +10,10 @@ namespace InfiniTests.InfiniFrame.WindowFunctionalities;
// ---------------------------------------------------------------------------------------------------------------------
public class MaximizeTests {
- [Test, DisplayName($"{nameof(MaximizeTests)}.{nameof(Builder)}"), Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(MaximizeTests)}.{nameof(Builder)}")]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task Builder(bool state, CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -25,7 +28,12 @@ public async Task Builder(bool state, CancellationToken ct = default) {
await Assert.That(configParameters.Maximized).IsEqualTo(state);
}
- [Test, DisplayName($"{nameof(MaximizeTests)}.{nameof(Window)}"), SkipOnMacOs, NotInParallelInfiniTests, Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(MaximizeTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task Window(bool state, CancellationToken ct = default) {
SkipUtility.SkipOnLinux(state);
@@ -40,7 +48,13 @@ public async Task Window(bool state, CancellationToken ct = default) {
await Assert.That(window.Maximized).IsEqualTo(state);
}
- [Test, DisplayName($"{nameof(MaximizeTests)}.{nameof(Window_Toggle)}"), SkipOnMacOs, SkipOnLinux, NotInParallelInfiniTests, Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(MaximizeTests)}.{nameof(Window_Toggle)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux]
+ [NotInParallelInfiniTests]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task Window_Toggle(bool state, CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -54,7 +68,12 @@ public async Task Window_Toggle(bool state, CancellationToken ct = default) {
await Assert.That(window.Maximized).IsEqualTo(!state);
}
- [Test, DisplayName($"{nameof(MaximizeTests)}.{nameof(FullIntegration)}"), SkipOnMacOs, NotInParallelInfiniTests, Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(MaximizeTests)}.{nameof(FullIntegration)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task FullIntegration(bool state, CancellationToken ct = default) {
SkipUtility.SkipOnLinux(state);
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MinHeightTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MinHeightTests.cs
index 993e3e8c2..96cc2a5b7 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MinHeightTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MinHeightTests.cs
@@ -14,7 +14,8 @@ public class MinHeightTests {
// -----------------------------------------------------------------------------------------------------------------
// Test Methods
// -----------------------------------------------------------------------------------------------------------------
- [Test, DisplayName($"{nameof(MinHeightTests)}.{nameof(Builder)}")]
+ [Test]
+ [DisplayName($"{nameof(MinHeightTests)}.{nameof(Builder)}")]
public async Task Builder(CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -29,7 +30,10 @@ public async Task Builder(CancellationToken ct = default) {
await Assert.That(configParameters.MinHeight).IsEqualTo(MinHeight);
}
- [Test, DisplayName($"{nameof(MinHeightTests)}.{nameof(Window)}"), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(MinHeightTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task Window(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -42,7 +46,10 @@ public async Task Window(CancellationToken ct = default) {
await Assert.That(window.MinHeight).IsEqualTo(500);
}
- [Test, DisplayName($"{nameof(MinHeightTests)}.{nameof(FullIntegration)}"), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(MinHeightTests)}.{nameof(FullIntegration)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task FullIntegration(CancellationToken ct = default) {
// Arrange
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MinSizeTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MinSizeTests.cs
index 318eaee38..55803c998 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MinSizeTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MinSizeTests.cs
@@ -16,7 +16,8 @@ public class MinSizeTests {
// -----------------------------------------------------------------------------------------------------------------
// Test Methods
// -----------------------------------------------------------------------------------------------------------------
- [Test, DisplayName($"{nameof(MinSizeTests)}.{nameof(Builder)}")]
+ [Test]
+ [DisplayName($"{nameof(MinSizeTests)}.{nameof(Builder)}")]
public async Task Builder(CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -33,7 +34,10 @@ public async Task Builder(CancellationToken ct = default) {
await Assert.That(configParameters.MinHeight).IsEqualTo(Height);
}
- [Test, DisplayName($"{nameof(MinSizeTests)}.{nameof(Window)}"), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(MinSizeTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task Window(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -46,7 +50,10 @@ public async Task Window(CancellationToken ct = default) {
await Assert.That(window.MinSize).IsEqualTo(new Size(400, 500));
}
- [Test, DisplayName($"{nameof(MinSizeTests)}.{nameof(Window_AsSize)}"), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(MinSizeTests)}.{nameof(Window_AsSize)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task Window_AsSize(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -59,7 +66,10 @@ public async Task Window_AsSize(CancellationToken ct = default) {
await Assert.That(window.MinSize).IsEqualTo(new Size(400, 500));
}
- [Test, DisplayName($"{nameof(MinSizeTests)}.{nameof(FullIntegration)}"), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(MinSizeTests)}.{nameof(FullIntegration)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task FullIntegration(CancellationToken ct = default) {
// Arrange
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MinWidthTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MinWidthTests.cs
index d8b53340c..809dd054e 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MinWidthTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MinWidthTests.cs
@@ -14,7 +14,8 @@ public class MinWidthTests {
// -----------------------------------------------------------------------------------------------------------------
// Test Methods
// -----------------------------------------------------------------------------------------------------------------
- [Test, DisplayName($"{nameof(MinWidthTests)}.{nameof(Builder)}")]
+ [Test]
+ [DisplayName($"{nameof(MinWidthTests)}.{nameof(Builder)}")]
public async Task Builder(CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -29,7 +30,10 @@ public async Task Builder(CancellationToken ct = default) {
await Assert.That(configParameters.MinWidth).IsEqualTo(MinWidth);
}
- [Test, DisplayName($"{nameof(MinWidthTests)}.{nameof(Window)}"), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(MinWidthTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task Window(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -42,7 +46,10 @@ public async Task Window(CancellationToken ct = default) {
await Assert.That(window.MinWidth).IsEqualTo(500);
}
- [Test, DisplayName($"{nameof(MinWidthTests)}.{nameof(FullIntegration)}"), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(MinWidthTests)}.{nameof(FullIntegration)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task FullIntegration(CancellationToken ct = default) {
// Arrange
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MinimizeTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MinimizeTests.cs
index 719debbab..cded14ec2 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MinimizeTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MinimizeTests.cs
@@ -10,7 +10,10 @@ namespace InfiniTests.InfiniFrame.WindowFunctionalities;
// ---------------------------------------------------------------------------------------------------------------------
public class MinimizeTests {
- [Test, DisplayName($"{nameof(MinimizeTests)}.{nameof(Builder)}"), Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(MinimizeTests)}.{nameof(Builder)}")]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task Builder(bool state, CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -25,7 +28,12 @@ public async Task Builder(bool state, CancellationToken ct = default) {
await Assert.That(configParameters.Minimized).IsEqualTo(state);
}
- [Test, DisplayName($"{nameof(MinimizeTests)}.{nameof(Window)}"), SkipOnMacOs, NotInParallelInfiniTests, Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(MinimizeTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task Window(bool state, CancellationToken ct = default) {
SkipUtility.SkipOnLinux(state);
@@ -40,7 +48,12 @@ public async Task Window(bool state, CancellationToken ct = default) {
await Assert.That(window.Minimized).IsEqualTo(state);
}
- [Test, DisplayName($"{nameof(MinimizeTests)}.{nameof(FullIntegration)}"), SkipOnMacOs, NotInParallelInfiniTests, Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(MinimizeTests)}.{nameof(FullIntegration)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task FullIntegration(bool state, CancellationToken ct = default) {
SkipUtility.SkipOnLinux(state);
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MoveWithinCurrentMonitorAreaTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MoveWithinCurrentMonitorAreaTests.cs
index 76e245f2a..e1834a17d 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MoveWithinCurrentMonitorAreaTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/MoveWithinCurrentMonitorAreaTests.cs
@@ -11,7 +11,14 @@ namespace InfiniTests.InfiniFrame.WindowFunctionalities;
// ---------------------------------------------------------------------------------------------------------------------
public class MoveWithinCurrentMonitorAreaTests {
- [Test, DisplayName($"{nameof(MoveWithinCurrentMonitorAreaTests)}.{nameof(Window)}"), SkipOnMacOs, SkipOnLinux(SkipUtility.LinuxMovement), NotInParallelInfiniTests, Arguments(0, 0, 0, 0), Arguments(100, 100, 100, 100), Arguments(-100, -100, 0, 0)]
+ [Test]
+ [DisplayName($"{nameof(MoveWithinCurrentMonitorAreaTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux(SkipUtility.LinuxMovement)]
+ [NotInParallelInfiniTests]
+ [Arguments(0, 0, 0, 0)]
+ [Arguments(100, 100, 100, 100)]
+ [Arguments(-100, -100, 0, 0)]
public async Task Window(int x, int y, int expectedX, int expectedY, CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -34,7 +41,14 @@ public async Task Window(int x, int y, int expectedX, int expectedY, Cancellatio
await Assert.That(location.Y).IsEqualTo(offsetY + expectedY);
}
- [Test, DisplayName($"{nameof(MoveWithinCurrentMonitorAreaTests)}.{nameof(Window_AsPoint)}"), SkipOnMacOs, SkipOnLinux(SkipUtility.LinuxMovement), NotInParallelInfiniTests, Arguments(0, 0, 0, 0), Arguments(100, 100, 100, 100), Arguments(-100, -100, 0, 0)]
+ [Test]
+ [DisplayName($"{nameof(MoveWithinCurrentMonitorAreaTests)}.{nameof(Window_AsPoint)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux(SkipUtility.LinuxMovement)]
+ [NotInParallelInfiniTests]
+ [Arguments(0, 0, 0, 0)]
+ [Arguments(100, 100, 100, 100)]
+ [Arguments(-100, -100, 0, 0)]
public async Task Window_AsPoint(int x, int y, int expectedX, int expectedY, CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -57,7 +71,14 @@ public async Task Window_AsPoint(int x, int y, int expectedX, int expectedY, Can
await Assert.That(location.Y).IsEqualTo(offsetY + expectedY);
}
- [Test, DisplayName($"{nameof(MoveWithinCurrentMonitorAreaTests)}.{nameof(Window_AsDouble)}"), SkipOnMacOs, SkipOnLinux(SkipUtility.LinuxMovement), NotInParallelInfiniTests, Arguments(0, 0, 0, 0), Arguments(100, 100, 100, 100), Arguments(-100, -100, 0, 0)]
+ [Test]
+ [DisplayName($"{nameof(MoveWithinCurrentMonitorAreaTests)}.{nameof(Window_AsDouble)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux(SkipUtility.LinuxMovement)]
+ [NotInParallelInfiniTests]
+ [Arguments(0, 0, 0, 0)]
+ [Arguments(100, 100, 100, 100)]
+ [Arguments(-100, -100, 0, 0)]
public async Task Window_AsDouble(double x, double y, int expectedX, int expectedY, CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/OffsetTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/OffsetTests.cs
index 5be4dea37..96ec3f403 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/OffsetTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/OffsetTests.cs
@@ -10,7 +10,14 @@ namespace InfiniTests.InfiniFrame.WindowFunctionalities;
// ---------------------------------------------------------------------------------------------------------------------
public class OffsetTests {
- [Test, DisplayName($"{nameof(OffsetTests)}.{nameof(Window)}"), SkipOnMacOs, SkipOnLinux(SkipUtility.LinuxMovement), NotInParallelInfiniTests, Arguments(0, 0), Arguments(100, 100), Arguments(-100, -100)]
+ [Test]
+ [DisplayName($"{nameof(OffsetTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux(SkipUtility.LinuxMovement)]
+ [NotInParallelInfiniTests]
+ [Arguments(0, 0)]
+ [Arguments(100, 100)]
+ [Arguments(-100, -100)]
public async Task Window(int x, int y, CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -26,7 +33,14 @@ public async Task Window(int x, int y, CancellationToken ct = default) {
await Assert.That(location.Y).IsEqualTo(initialLocation.Y + y);
}
- [Test, DisplayName($"{nameof(OffsetTests)}.{nameof(Window_AsPoint)}"), SkipOnMacOs, SkipOnLinux(SkipUtility.LinuxMovement), NotInParallelInfiniTests, Arguments(0, 0), Arguments(100, 100), Arguments(-100, -100)]
+ [Test]
+ [DisplayName($"{nameof(OffsetTests)}.{nameof(Window_AsPoint)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux(SkipUtility.LinuxMovement)]
+ [NotInParallelInfiniTests]
+ [Arguments(0, 0)]
+ [Arguments(100, 100)]
+ [Arguments(-100, -100)]
public async Task Window_AsPoint(int x, int y, CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -42,7 +56,14 @@ public async Task Window_AsPoint(int x, int y, CancellationToken ct = default) {
await Assert.That(location.Y).IsEqualTo(initialLocation.Y + y);
}
- [Test, DisplayName($"{nameof(OffsetTests)}.{nameof(Window_AsDouble)}"), SkipOnMacOs, SkipOnLinux(SkipUtility.LinuxMovement), NotInParallelInfiniTests, Arguments(0, 0), Arguments(100, 100), Arguments(-100, -100)]
+ [Test]
+ [DisplayName($"{nameof(OffsetTests)}.{nameof(Window_AsDouble)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux(SkipUtility.LinuxMovement)]
+ [NotInParallelInfiniTests]
+ [Arguments(0, 0)]
+ [Arguments(100, 100)]
+ [Arguments(-100, -100)]
public async Task Window_AsDouble(double x, double y, CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/RegisterCustomSchemeHandlerTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/RegisterCustomSchemeHandlerTests.cs
index 9ee4c897e..67643e39b 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/RegisterCustomSchemeHandlerTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/RegisterCustomSchemeHandlerTests.cs
@@ -17,7 +17,8 @@ private static (Stream? Data, string? ContentType) EmptyHandler(IInfiniFrameWind
// -----------------------------------------------------------------------------------------------------------------
// Test Methods
// -----------------------------------------------------------------------------------------------------------------
- [Test, DisplayName($"{nameof(RegisterCustomSchemeHandlerTests)}.{nameof(Builder)}")]
+ [Test]
+ [DisplayName($"{nameof(RegisterCustomSchemeHandlerTests)}.{nameof(Builder)}")]
public async Task Builder(CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -37,7 +38,8 @@ public async Task Builder(CancellationToken ct = default) {
await Assert.That(found).IsTrue();
}
- [Test, DisplayName($"{nameof(RegisterCustomSchemeHandlerTests)}.{nameof(Builder_ReRegisteringSameScheme_DoesNotDuplicateConfigurationEntry)}")]
+ [Test]
+ [DisplayName($"{nameof(RegisterCustomSchemeHandlerTests)}.{nameof(Builder_ReRegisteringSameScheme_DoesNotDuplicateConfigurationEntry)}")]
public async Task Builder_ReRegisteringSameScheme_DoesNotDuplicateConfigurationEntry(CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -61,7 +63,10 @@ public async Task Builder_ReRegisteringSameScheme_DoesNotDuplicateConfigurationE
await Assert.That(nativeAppCount).IsEqualTo(1);
}
- [Test, DisplayName($"{nameof(RegisterCustomSchemeHandlerTests)}.{nameof(Window)}"), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(RegisterCustomSchemeHandlerTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task Window(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -82,7 +87,10 @@ public async Task Window(CancellationToken ct = default) {
await Assert.That(customScheme).IsTrue();
}
- [Test, DisplayName($"{nameof(RegisterCustomSchemeHandlerTests)}.{nameof(FullIntegration)}"), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(RegisterCustomSchemeHandlerTests)}.{nameof(FullIntegration)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task FullIntegration(CancellationToken ct = default) {
// Arrange
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/ResizableTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/ResizableTests.cs
index e25e17ed8..ce6ec65bc 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/ResizableTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/ResizableTests.cs
@@ -10,7 +10,10 @@ namespace InfiniTests.InfiniFrame.WindowFunctionalities;
// ---------------------------------------------------------------------------------------------------------------------
public class ResizableTests {
- [Test, DisplayName($"{nameof(ResizableTests)}.{nameof(Builder)}"), Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(ResizableTests)}.{nameof(Builder)}")]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task Builder(bool state) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -25,7 +28,12 @@ public async Task Builder(bool state) {
await Assert.That(configParameters.Resizable).IsEqualTo(state);
}
- [Test, DisplayName($"{nameof(ResizableTests)}.{nameof(Window)}"), SkipOnMacOs, NotInParallelInfiniTests, Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(ResizableTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task Window(bool state, CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -39,7 +47,12 @@ public async Task Window(bool state, CancellationToken ct = default) {
await Assert.That(foundState).IsEqualTo(state);
}
- [Test, DisplayName($"{nameof(ResizableTests)}.{nameof(FullIntegration)}"), SkipOnMacOs, NotInParallelInfiniTests, Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(ResizableTests)}.{nameof(FullIntegration)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task FullIntegration(bool state, CancellationToken ct = default) {
// Arrange
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/ResizeTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/ResizeTests.cs
index b50ae233b..c2b7ca001 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/ResizeTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/ResizeTests.cs
@@ -10,9 +10,51 @@ namespace InfiniTests.InfiniFrame.WindowFunctionalities;
// ---------------------------------------------------------------------------------------------------------------------
public class ResizeTests {
- [Test, DisplayName($"{nameof(ResizeTests)}.{nameof(Window)}"), SkipOnMacOs, SkipOnLinux, NotInParallelInfiniTests, Arguments(0, 0, ResizeOrigin.TopLeft), Arguments(0, 0, ResizeOrigin.Top), Arguments(0, 0, ResizeOrigin.TopRight), Arguments(0, 0, ResizeOrigin.Right), Arguments(0, 0, ResizeOrigin.BottomRight), Arguments(0, 0, ResizeOrigin.Bottom), Arguments(0, 0, ResizeOrigin.BottomLeft), Arguments(0, 0, ResizeOrigin.Left), Arguments(10, 10, ResizeOrigin.TopLeft), Arguments(10, 10, ResizeOrigin.Top), Arguments(10, 10, ResizeOrigin.TopRight), Arguments(10, 10, ResizeOrigin.Right), Arguments(10, 10, ResizeOrigin.BottomRight), Arguments(10, 10, ResizeOrigin.Bottom),
- Arguments(10, 10, ResizeOrigin.BottomLeft), Arguments(10, 10, ResizeOrigin.Left), Arguments(-10, -10, ResizeOrigin.TopLeft), Arguments(-10, -10, ResizeOrigin.Top), Arguments(-10, -10, ResizeOrigin.TopRight), Arguments(-10, -10, ResizeOrigin.Right), Arguments(-10, -10, ResizeOrigin.BottomRight), Arguments(-10, -10, ResizeOrigin.Bottom), Arguments(-10, -10, ResizeOrigin.BottomLeft), Arguments(-10, -10, ResizeOrigin.Left), Arguments(10, -10, ResizeOrigin.TopLeft), Arguments(10, -10, ResizeOrigin.Top), Arguments(10, -10, ResizeOrigin.TopRight), Arguments(10, -10, ResizeOrigin.Right), Arguments(10, -10, ResizeOrigin.BottomRight), Arguments(10, -10, ResizeOrigin.Bottom),
- Arguments(10, -10, ResizeOrigin.BottomLeft), Arguments(10, -10, ResizeOrigin.Left), Arguments(-10, 10, ResizeOrigin.TopLeft), Arguments(-10, 10, ResizeOrigin.Top), Arguments(-10, 10, ResizeOrigin.TopRight), Arguments(-10, 10, ResizeOrigin.Right), Arguments(-10, 10, ResizeOrigin.BottomRight), Arguments(-10, 10, ResizeOrigin.Bottom), Arguments(-10, 10, ResizeOrigin.BottomLeft), Arguments(-10, 10, ResizeOrigin.Left)]
+ [Test]
+ [DisplayName($"{nameof(ResizeTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux]
+ [NotInParallelInfiniTests]
+ [Arguments(0, 0, ResizeOrigin.TopLeft)]
+ [Arguments(0, 0, ResizeOrigin.Top)]
+ [Arguments(0, 0, ResizeOrigin.TopRight)]
+ [Arguments(0, 0, ResizeOrigin.Right)]
+ [Arguments(0, 0, ResizeOrigin.BottomRight)]
+ [Arguments(0, 0, ResizeOrigin.Bottom)]
+ [Arguments(0, 0, ResizeOrigin.BottomLeft)]
+ [Arguments(0, 0, ResizeOrigin.Left)]
+ [Arguments(10, 10, ResizeOrigin.TopLeft)]
+ [Arguments(10, 10, ResizeOrigin.Top)]
+ [Arguments(10, 10, ResizeOrigin.TopRight)]
+ [Arguments(10, 10, ResizeOrigin.Right)]
+ [Arguments(10, 10, ResizeOrigin.BottomRight)]
+ [Arguments(10, 10, ResizeOrigin.Bottom)]
+ [Arguments(10, 10, ResizeOrigin.BottomLeft)]
+ [Arguments(10, 10, ResizeOrigin.Left)]
+ [Arguments(-10, -10, ResizeOrigin.TopLeft)]
+ [Arguments(-10, -10, ResizeOrigin.Top)]
+ [Arguments(-10, -10, ResizeOrigin.TopRight)]
+ [Arguments(-10, -10, ResizeOrigin.Right)]
+ [Arguments(-10, -10, ResizeOrigin.BottomRight)]
+ [Arguments(-10, -10, ResizeOrigin.Bottom)]
+ [Arguments(-10, -10, ResizeOrigin.BottomLeft)]
+ [Arguments(-10, -10, ResizeOrigin.Left)]
+ [Arguments(10, -10, ResizeOrigin.TopLeft)]
+ [Arguments(10, -10, ResizeOrigin.Top)]
+ [Arguments(10, -10, ResizeOrigin.TopRight)]
+ [Arguments(10, -10, ResizeOrigin.Right)]
+ [Arguments(10, -10, ResizeOrigin.BottomRight)]
+ [Arguments(10, -10, ResizeOrigin.Bottom)]
+ [Arguments(10, -10, ResizeOrigin.BottomLeft)]
+ [Arguments(10, -10, ResizeOrigin.Left)]
+ [Arguments(-10, 10, ResizeOrigin.TopLeft)]
+ [Arguments(-10, 10, ResizeOrigin.Top)]
+ [Arguments(-10, 10, ResizeOrigin.TopRight)]
+ [Arguments(-10, 10, ResizeOrigin.Right)]
+ [Arguments(-10, 10, ResizeOrigin.BottomRight)]
+ [Arguments(-10, 10, ResizeOrigin.Bottom)]
+ [Arguments(-10, 10, ResizeOrigin.BottomLeft)]
+ [Arguments(-10, 10, ResizeOrigin.Left)]
public async Task Window(int widthOffset, int heightOffset, ResizeOrigin origin, CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/SizeTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/SizeTests.cs
index 39b995c77..e53191a3f 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/SizeTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/SizeTests.cs
@@ -16,7 +16,8 @@ public class SizeTests {
// -----------------------------------------------------------------------------------------------------------------
// Test Methods
// -----------------------------------------------------------------------------------------------------------------
- [Test, DisplayName($"{nameof(SizeTests)}.{nameof(Builder)}")]
+ [Test]
+ [DisplayName($"{nameof(SizeTests)}.{nameof(Builder)}")]
public async Task Builder(CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -33,7 +34,8 @@ public async Task Builder(CancellationToken ct = default) {
await Assert.That(configParameters.Height).IsEqualTo(Height);
}
- [Test, DisplayName($"{nameof(SizeTests)}.{nameof(Builder_ShouldOverwriteOsDefaultSizeAndCentered)}")]
+ [Test]
+ [DisplayName($"{nameof(SizeTests)}.{nameof(Builder_ShouldOverwriteOsDefaultSizeAndCentered)}")]
public async Task Builder_ShouldOverwriteOsDefaultSizeAndCentered(CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -58,7 +60,11 @@ public async Task Builder_ShouldOverwriteOsDefaultSizeAndCentered(CancellationTo
await Assert.That(configParameters).IsEqualTo(expectedConfigParameters);
}
- [Test, DisplayName($"{nameof(SizeTests)}.{nameof(Window)}"), SkipOnMacOs, SkipOnLinux(SkipUtility.LinuxMovement), NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(SizeTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux(SkipUtility.LinuxMovement)]
+ [NotInParallelInfiniTests]
public async Task Window(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -71,7 +77,11 @@ public async Task Window(CancellationToken ct = default) {
await Assert.That(window.Size).IsEqualTo(new Size(400, 500));
}
- [Test, DisplayName($"{nameof(SizeTests)}.{nameof(Window_AsSize)}"), SkipOnMacOs, SkipOnLinux(SkipUtility.LinuxMovement), NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(SizeTests)}.{nameof(Window_AsSize)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux(SkipUtility.LinuxMovement)]
+ [NotInParallelInfiniTests]
public async Task Window_AsSize(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -84,7 +94,10 @@ public async Task Window_AsSize(CancellationToken ct = default) {
await Assert.That(window.Size).IsEqualTo(new Size(400, 500));
}
- [Test, DisplayName($"{nameof(SizeTests)}.{nameof(FullIntegration)}"), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(SizeTests)}.{nameof(FullIntegration)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task FullIntegration(CancellationToken ct = default) {
// Arrange
@@ -101,7 +114,11 @@ public async Task FullIntegration(CancellationToken ct = default) {
await Assert.That(window.Size).IsEqualTo(new Size(400, 500));
}
- [Test, DisplayName($"{nameof(SizeTests)}.{nameof(Window_WithChromelessToGetSmallestSize)}"), SkipOnMacOs, SkipOnLinux(SkipUtility.LinuxMovement), NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(SizeTests)}.{nameof(Window_WithChromelessToGetSmallestSize)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux(SkipUtility.LinuxMovement)]
+ [NotInParallelInfiniTests]
public async Task Window_WithChromelessToGetSmallestSize(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(
@@ -117,7 +134,10 @@ public async Task Window_WithChromelessToGetSmallestSize(CancellationToken ct =
await Assert.That(window.Size).IsEqualTo(new Size(Width, Height));
}
- [Test, DisplayName($"{nameof(SizeTests)}.{nameof(FullIntegration_WithChromelessToGetSmallestSize)}"), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(SizeTests)}.{nameof(FullIntegration_WithChromelessToGetSmallestSize)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task FullIntegration_WithChromelessToGetSmallestSize(CancellationToken ct = default) {
// Arrange
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/TitleTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/TitleTests.cs
index b9a25bd6a..35455f059 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/TitleTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/TitleTests.cs
@@ -10,7 +10,12 @@ namespace InfiniTests.InfiniFrame.WindowFunctionalities;
// ---------------------------------------------------------------------------------------------------------------------
public class TitleTests {
- [Test, DisplayName($"{nameof(TitleTests)}.{nameof(Builder)}"), Arguments(""), Arguments("InfiniWindow"), Arguments("Ω"), Arguments("🏳️⚧️")]
+ [Test]
+ [DisplayName($"{nameof(TitleTests)}.{nameof(Builder)}")]
+ [Arguments("")]
+ [Arguments("InfiniWindow")]
+ [Arguments("Ω")]
+ [Arguments("🏳️⚧️")]
public async Task Builder(string title, CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -25,7 +30,8 @@ public async Task Builder(string title, CancellationToken ct = default) {
await Assert.That(configParameters.Title).IsEqualTo(title);
}
- [Test, DisplayName($"{nameof(TitleTests)}.{nameof(Builder_OnNull)}")]
+ [Test]
+ [DisplayName($"{nameof(TitleTests)}.{nameof(Builder_OnNull)}")]
public async Task Builder_OnNull(CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -40,7 +46,14 @@ public async Task Builder_OnNull(CancellationToken ct = default) {
await Assert.That(configParameters.Title).IsNull();
}
- [Test, DisplayName($"{nameof(TitleTests)}.{nameof(Window)}"), SkipOnMacOs, NotInParallelInfiniTests, Arguments(""), Arguments("InfiniWindow"), Arguments("Ω"), Arguments("🏳️⚧️")]
+ [Test]
+ [DisplayName($"{nameof(TitleTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
+ [Arguments("")]
+ [Arguments("InfiniWindow")]
+ [Arguments("Ω")]
+ [Arguments("🏳️⚧️")]
public async Task Window(string title, CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -53,7 +66,10 @@ public async Task Window(string title, CancellationToken ct = default) {
await Assert.That(window.Title).IsEqualTo(title);
}
- [Test, DisplayName($"{nameof(TitleTests)}.{nameof(Window_OnNull)}"), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(TitleTests)}.{nameof(Window_OnNull)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task Window_OnNull(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -66,7 +82,14 @@ public async Task Window_OnNull(CancellationToken ct = default) {
await Assert.That(window.Title).IsEmpty();
}
- [Test, DisplayName($"{nameof(TitleTests)}.{nameof(FullIntegration)}"), SkipOnMacOs, NotInParallelInfiniTests, Arguments(""), Arguments("InfiniWindow"), Arguments("Ω"), Arguments("🏳️⚧️")]
+ [Test]
+ [DisplayName($"{nameof(TitleTests)}.{nameof(FullIntegration)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
+ [Arguments("")]
+ [Arguments("InfiniWindow")]
+ [Arguments("Ω")]
+ [Arguments("🏳️⚧️")]
public async Task FullIntegration(string title, CancellationToken ct = default) {
// Arrange
@@ -81,7 +104,10 @@ public async Task FullIntegration(string title, CancellationToken ct = default)
await Assert.That(window.Title).IsEqualTo(title);
}
- [Test, DisplayName($"{nameof(TitleTests)}.{nameof(FullIntegration)}"), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(TitleTests)}.{nameof(FullIntegration)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task FullIntegration_OnNull(CancellationToken ct = default) {
// Arrange
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/TopMostTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/TopMostTests.cs
index d15f1b0ab..15065e444 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/TopMostTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/TopMostTests.cs
@@ -10,7 +10,10 @@ namespace InfiniTests.InfiniFrame.WindowFunctionalities;
// ---------------------------------------------------------------------------------------------------------------------
public class TopMostTests {
- [Test, DisplayName($"{nameof(TopMostTests)}.{nameof(Builder)}"), Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(TopMostTests)}.{nameof(Builder)}")]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task Builder(bool state, CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -25,7 +28,13 @@ public async Task Builder(bool state, CancellationToken ct = default) {
await Assert.That(configParameters.Topmost).IsEqualTo(state);
}
- [Test, DisplayName($"{nameof(TopMostTests)}.{nameof(Window)}"), SkipOnMacOs, SkipOnLinux, NotInParallelInfiniTests, Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(TopMostTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux]
+ [NotInParallelInfiniTests]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task Window(bool state, CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -38,7 +47,13 @@ public async Task Window(bool state, CancellationToken ct = default) {
await Assert.That(window.TopMost).IsEqualTo(state);
}
- [Test, DisplayName($"{nameof(TopMostTests)}.{nameof(FullIntegration)}"), SkipOnMacOs, SkipOnLinux, NotInParallelInfiniTests, Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(TopMostTests)}.{nameof(FullIntegration)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux]
+ [NotInParallelInfiniTests]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task FullIntegration(bool state, CancellationToken ct = default) {
// Arrange
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/TopTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/TopTests.cs
index 517f6fbd4..54a5dcf84 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/TopTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/TopTests.cs
@@ -11,7 +11,8 @@ namespace InfiniTests.InfiniFrame.WindowFunctionalities;
public class TopTests {
private const int Top = 20;
- [Test, DisplayName($"{nameof(TopTests)}.{nameof(Builder)}")]
+ [Test]
+ [DisplayName($"{nameof(TopTests)}.{nameof(Builder)}")]
public async Task Builder(CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -26,7 +27,8 @@ public async Task Builder(CancellationToken ct = default) {
await Assert.That(configParameters.Top).IsEqualTo(Top);
}
- [Test, DisplayName($"{nameof(TopTests)}.{nameof(Builder_ShouldOverwriteOsDefaultLocationAndCentered)}")]
+ [Test]
+ [DisplayName($"{nameof(TopTests)}.{nameof(Builder_ShouldOverwriteOsDefaultLocationAndCentered)}")]
public async Task Builder_ShouldOverwriteOsDefaultLocationAndCentered(CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -50,7 +52,11 @@ public async Task Builder_ShouldOverwriteOsDefaultLocationAndCentered(Cancellati
await Assert.That(configParameters).IsEqualTo(expectedConfigParameters);
}
- [Test, DisplayName($"{nameof(TopTests)}.{nameof(Window)}"), SkipOnMacOs, SkipOnLinux(SkipUtility.LinuxMovement), NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(TopTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux(SkipUtility.LinuxMovement)]
+ [NotInParallelInfiniTests]
public async Task Window(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -63,7 +69,11 @@ public async Task Window(CancellationToken ct = default) {
await Assert.That(window.Top).IsEqualTo(Top);
}
- [Test, DisplayName($"{nameof(TopTests)}.{nameof(FullIntegration)}"), SkipOnMacOs, SkipOnLinux(SkipUtility.LinuxMovement), NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(TopTests)}.{nameof(FullIntegration)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux(SkipUtility.LinuxMovement)]
+ [NotInParallelInfiniTests]
public async Task FullIntegration(CancellationToken ct = default) {
// Arrange
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/TransparentTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/TransparentTests.cs
index 38d554608..96bc45e32 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/TransparentTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/TransparentTests.cs
@@ -10,7 +10,10 @@ namespace InfiniTests.InfiniFrame.WindowFunctionalities;
// ---------------------------------------------------------------------------------------------------------------------
public class TransparentTests {
- [Test, DisplayName($"{nameof(TransparentTests)}.{nameof(Builder)}"), Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(TransparentTests)}.{nameof(Builder)}")]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task Builder(bool state, CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -25,7 +28,13 @@ public async Task Builder(bool state, CancellationToken ct = default) {
await Assert.That(configParameters.Transparent).IsEqualTo(state);
}
- [Test, DisplayName($"{nameof(TransparentTests)}.{nameof(Window)}"), SkipOnMacOs, SkipOnLinux("Headless display lacks compositing support for post-init transparency changes"), NotInParallelInfiniTests, Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(TransparentTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux("Headless display lacks compositing support for post-init transparency changes")]
+ [NotInParallelInfiniTests]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task Window(bool state, CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -39,7 +48,12 @@ public async Task Window(bool state, CancellationToken ct = default) {
await Assert.That(window.Transparent).IsEqualTo(state);
}
- [Test, DisplayName($"{nameof(TransparentTests)}.{nameof(FullIntegration)}"), SkipOnMacOs, NotInParallelInfiniTests, Arguments(true), Arguments(false)]
+ [Test]
+ [DisplayName($"{nameof(TransparentTests)}.{nameof(FullIntegration)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
+ [Arguments(true)]
+ [Arguments(false)]
public async Task FullIntegration(bool state, CancellationToken ct = default) {
// Arrange
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/WidthTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/WidthTests.cs
index f73b47dff..880a16257 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/WidthTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/WidthTests.cs
@@ -14,7 +14,8 @@ public class WidthTests {
// -----------------------------------------------------------------------------------------------------------------
// Test Methods
// -----------------------------------------------------------------------------------------------------------------
- [Test, DisplayName($"{nameof(WidthTests)}.{nameof(Builder)}")]
+ [Test]
+ [DisplayName($"{nameof(WidthTests)}.{nameof(Builder)}")]
public async Task Builder(CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -30,7 +31,8 @@ public async Task Builder(CancellationToken ct = default) {
await Assert.That(configParameters.Width).IsEqualTo(Width);
}
- [Test, DisplayName($"{nameof(WidthTests)}.{nameof(Builder_ShouldOverwriteOsDefaultSizeAndCentered)}")]
+ [Test]
+ [DisplayName($"{nameof(WidthTests)}.{nameof(Builder_ShouldOverwriteOsDefaultSizeAndCentered)}")]
public async Task Builder_ShouldOverwriteOsDefaultSizeAndCentered() {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -53,7 +55,11 @@ public async Task Builder_ShouldOverwriteOsDefaultSizeAndCentered() {
await Assert.That(configParameters).IsEqualTo(expectedConfigParameters);
}
- [Test, DisplayName($"{nameof(WidthTests)}.{nameof(Window)}"), SkipOnMacOs, SkipOnLinux(SkipUtility.LinuxMovement), NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(WidthTests)}.{nameof(Window)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux(SkipUtility.LinuxMovement)]
+ [NotInParallelInfiniTests]
public async Task Window(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -66,7 +72,11 @@ public async Task Window(CancellationToken ct = default) {
await Assert.That(window.Width).IsEqualTo(500);
}
- [Test, DisplayName($"{nameof(WidthTests)}.{nameof(FullIntegration)}"), SkipOnMacOs, SkipOnLinux(SkipUtility.LinuxMovement), NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(WidthTests)}.{nameof(FullIntegration)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux(SkipUtility.LinuxMovement)]
+ [NotInParallelInfiniTests]
public async Task FullIntegration(CancellationToken ct = default) {
// Arrange
@@ -83,7 +93,11 @@ public async Task FullIntegration(CancellationToken ct = default) {
await Assert.That(window.Width).IsEqualTo(500);
}
- [Test, DisplayName($"{nameof(WidthTests)}.{nameof(Window_WithChromelessToGetSmallestWidth)}"), SkipOnMacOs, SkipOnLinux(SkipUtility.LinuxMovement), NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(WidthTests)}.{nameof(Window_WithChromelessToGetSmallestWidth)}")]
+ [SkipOnMacOs]
+ [SkipOnLinux(SkipUtility.LinuxMovement)]
+ [NotInParallelInfiniTests]
public async Task Window_WithChromelessToGetSmallestWidth(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(
@@ -99,7 +113,10 @@ public async Task Window_WithChromelessToGetSmallestWidth(CancellationToken ct =
await Assert.That(window.Width).IsEqualTo(Width);
}
- [Test, DisplayName($"{nameof(WidthTests)}.{nameof(FullIntegration_WithChromelessToGetSmallestWidth)}"), SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [DisplayName($"{nameof(WidthTests)}.{nameof(FullIntegration_WithChromelessToGetSmallestWidth)}")]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task FullIntegration_WithChromelessToGetSmallestWidth(CancellationToken ct = default) {
// Arrange
diff --git a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/ZoomTests.cs b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/ZoomTests.cs
index ac9b1e9d1..023f71db4 100644
--- a/tests/InfiniTests.InfiniFrame/WindowFunctionalities/ZoomTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowFunctionalities/ZoomTests.cs
@@ -9,7 +9,9 @@ namespace InfiniTests.InfiniFrame.WindowFunctionalities;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public class ZoomTests {
- [Test, DisplayName($"{nameof(ZoomTests)}.{nameof(Builder)}"), MatrixDataSource]
+ [Test]
+ [DisplayName($"{nameof(ZoomTests)}.{nameof(Builder)}")]
+ [MatrixDataSource]
public async Task Builder([MatrixRange(10, 200, 10)] int zoom, CancellationToken ct = default) {
// Arrange
var builder = InfiniFrameWindowBuilder.Create();
@@ -24,7 +26,11 @@ public async Task Builder([MatrixRange(10, 200, 10)] int zoom, Cancellation
await Assert.That(configParameters.Zoom).IsEqualTo(zoom);
}
- [Test, DisplayName($"{nameof(ZoomTests)}.{nameof(Window)}"), NotInParallelInfiniTests, SkipOnLinux, SkipOnMacOs]
+ [Test]
+ [DisplayName($"{nameof(ZoomTests)}.{nameof(Window)}")]
+ [NotInParallelInfiniTests]
+ [SkipOnLinux]
+ [SkipOnMacOs]
public async Task Window(CancellationToken ct = default) {
// Arrange
const int zoom = 120;
@@ -44,7 +50,12 @@ public async Task Window(CancellationToken ct = default) {
await Assert.That(window.Zoom).IsEqualTo(zoom);
}
- [Test, DisplayName($"{nameof(ZoomTests)}.{nameof(FullIntegration)}"), NotInParallelInfiniTests, SkipOnLinux, SkipOnMacOs, MatrixDataSource]
+ [Test]
+ [DisplayName($"{nameof(ZoomTests)}.{nameof(FullIntegration)}")]
+ [NotInParallelInfiniTests]
+ [SkipOnLinux]
+ [SkipOnMacOs]
+ [MatrixDataSource]
public async Task FullIntegration([MatrixRange(26, 250, 10)] int zoom, CancellationToken ct = default) {
// Arrange
diff --git a/tests/InfiniTests.InfiniFrame/ParentChildLogic/ParentChildWindowTests.cs b/tests/InfiniTests.InfiniFrame/WindowLifecycles/ParentChildWindowTests.cs
similarity index 93%
rename from tests/InfiniTests.InfiniFrame/ParentChildLogic/ParentChildWindowTests.cs
rename to tests/InfiniTests.InfiniFrame/WindowLifecycles/ParentChildWindowTests.cs
index 3d18934e9..bb0c780eb 100644
--- a/tests/InfiniTests.InfiniFrame/ParentChildLogic/ParentChildWindowTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowLifecycles/ParentChildWindowTests.cs
@@ -5,7 +5,7 @@
using System.Diagnostics;
using System.Runtime.InteropServices;
-namespace InfiniTests.InfiniFrame.ParentChildLogic;
+namespace InfiniTests.InfiniFrame.WindowLifecycles;
// ---------------------------------------------------------------------------------------------------------------------
// Code
// ---------------------------------------------------------------------------------------------------------------------
@@ -44,7 +44,10 @@ private static void WriteDiagnostics(string context) {
}
}
- [Test, SkipOnMacOs, SkipOnWindowsArm, NotInParallelInfiniTests]
+ [Test]
+ [SkipOnMacOs]
+ [SkipOnWindowsArm]
+ [NotInParallelInfiniTests]
public async Task TestParentChildWindow(CancellationToken ct = default) {
WriteDiagnostics(nameof(TestParentChildWindow));
@@ -64,7 +67,11 @@ public async Task TestParentChildWindow(CancellationToken ct = default) {
await Assert.That(childWindow.Configuration.StartupParameters.NativeParent).IsEqualTo(parentWindow.InstanceHandle);
}
- [Test, SkipOnMacOs, SkipOnWindowsArm, DefaultInfiniTestsTimeout(6_000), NotInParallelInfiniTests]
+ [Test]
+ [SkipOnMacOs]
+ [SkipOnWindowsArm]
+ [DefaultInfiniTestsTimeout(6_000)]
+ [NotInParallelInfiniTests]
public async Task ClosingParent_ShouldCloseChildWindow(CancellationToken ct = default) {
WriteDiagnostics(nameof(ClosingParent_ShouldCloseChildWindow));
@@ -86,7 +93,9 @@ public async Task ClosingParent_ShouldCloseChildWindow(CancellationToken ct = de
await Assert.That(childWindow.IsClosed).IsTrue();
}
- [Test, OnlyRunOnWindowsX64, NotInParallelInfiniTests]
+ [Test]
+ [OnlyRunOnWindowsX64]
+ [NotInParallelInfiniTests]
public async Task ChildWindow_ShouldHaveNativeOwnerWindow_OnWindows(CancellationToken ct = default) {
WriteDiagnostics(nameof(ChildWindow_ShouldHaveNativeOwnerWindow_OnWindows));
diff --git a/tests/InfiniTests.InfiniFrame/WindowLifecycles/ReOpeningAnotherWindowTests.cs b/tests/InfiniTests.InfiniFrame/WindowLifecycles/ReOpeningAnotherWindowTests.cs
new file mode 100644
index 000000000..22f72d243
--- /dev/null
+++ b/tests/InfiniTests.InfiniFrame/WindowLifecycles/ReOpeningAnotherWindowTests.cs
@@ -0,0 +1,34 @@
+// ---------------------------------------------------------------------------------------------------------------------
+// Imports
+// ---------------------------------------------------------------------------------------------------------------------
+namespace InfiniTests.InfiniFrame.WindowLifecycles;
+// ---------------------------------------------------------------------------------------------------------------------
+// Code
+// ---------------------------------------------------------------------------------------------------------------------
+public class ReOpeningAnotherWindowTests {
+ [Test]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
+ public async Task CreateAnotherWindowAfterClosingOthers(CancellationToken ct = default) {
+ // Arrange
+ var window1Utility = InfiniFrameTestWindow.Create(ct);
+ var window2Utility = InfiniFrameTestWindow.Create(ct);
+
+ try {
+ await Task.Run(() => window1Utility.Window.Close(), ct);
+ window1Utility.Window.WaitForClose();
+
+ // Act
+ await Task.Run(() => window2Utility.Window.Close(), ct);
+ window2Utility.Window.WaitForClose();
+
+ // Assert
+ await Assert.That(window1Utility.Window.IsClosed).IsTrue();
+ await Assert.That(window2Utility.Window.IsClosed).IsTrue();
+ }
+ finally {
+ window1Utility.Dispose();
+ window2Utility.Dispose();
+ }
+ }
+}
diff --git a/tests/InfiniTests.InfiniFrame/WindowTests.cs b/tests/InfiniTests.InfiniFrame/WindowTests.cs
index eec2980dc..b346b95e3 100644
--- a/tests/InfiniTests.InfiniFrame/WindowTests.cs
+++ b/tests/InfiniTests.InfiniFrame/WindowTests.cs
@@ -13,7 +13,9 @@ public class WindowTests {
// -----------------------------------------------------------------------------------------------------------------
// Tests
// -----------------------------------------------------------------------------------------------------------------
- [Test, SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task InstanceHandle_IsDefined(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -25,7 +27,9 @@ public async Task InstanceHandle_IsDefined(CancellationToken ct = default) {
await Assert.That(window.InstanceHandle).IsNotDefault();
}
- [Test, SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task WindowHandle_IsDefined(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -39,7 +43,9 @@ public async Task WindowHandle_IsDefined(CancellationToken ct = default) {
else await Assert.That(handle).IsEqualTo(IntPtr.Zero);
}
- [Test, SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task Monitors_IsNotEmpty(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -52,7 +58,9 @@ public async Task Monitors_IsNotEmpty(CancellationToken ct = default) {
await Assert.That(monitors).IsNotEmpty();
}
- [Test, SkipOnMacOs, NotInParallelInfiniTests]
+ [Test]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
public async Task NativeType_IsDefined(CancellationToken ct = default) {
// Arrange
using var windowUtility = InfiniFrameTestWindow.Create(ct);
@@ -64,7 +72,12 @@ public async Task NativeType_IsDefined(CancellationToken ct = default) {
await Assert.That(window.NativeType).IsNotDefault();
}
- [Test, Retry(5), SkipOnMacOs, NotInParallelInfiniTests, DefaultInfiniTestsTimeout(1_000), SuppressMessage("ReSharper", "MethodSupportsCancellation")]
+ [Test]
+ [Retry(5)]
+ [SkipOnMacOs]
+ [NotInParallelInfiniTests]
+ [DefaultInfiniTestsTimeout(1_000)]
+ [SuppressMessage("ReSharper", "MethodSupportsCancellation")]
// Sometimes fails on CI due to timing issues
public async Task Close_IsDefined(CancellationToken ct = default) {
// Arrange
@@ -86,7 +99,11 @@ public async Task Close_IsDefined(CancellationToken ct = default) {
await Assert.That(windowClosing).IsTrue();
}
- [Test, Retry(5), SkipOnMacOs, DefaultInfiniTestsTimeout(6_000), NotInParallelInfiniTests]
+ [Test]
+ [Retry(5)]
+ [SkipOnMacOs]
+ [DefaultInfiniTestsTimeout(6_000)]
+ [NotInParallelInfiniTests]
public async Task IsClosed_TracksWindowState(CancellationToken ct = default) {
using var windowUtility = InfiniFrameTestWindow.Create(ct);
IInfiniFrameWindow window = windowUtility.Window;
diff --git a/tests/InfiniTests/InfiniFrameTestWindow.Linux.cs b/tests/InfiniTests/InfiniFrameTestWindow.Linux.cs
index 32974a54e..99f00324d 100644
--- a/tests/InfiniTests/InfiniFrameTestWindow.Linux.cs
+++ b/tests/InfiniTests/InfiniFrameTestWindow.Linux.cs
@@ -62,7 +62,8 @@ private static IInfiniFrameWindow EnsureGtkHost() {
}
}
- [SupportedOSPlatform("linux"), MustDisposeResource]
+ [SupportedOSPlatform("linux")]
+ [MustDisposeResource]
private static partial InfiniFrameTestWindow CreateLinux(InfiniFrameWindowBuilder windowBuilder) {
IInfiniFrameWindow host = EnsureGtkHost();
diff --git a/tests/InfiniTests/InfiniFrameTestWindow.MacOs.cs b/tests/InfiniTests/InfiniFrameTestWindow.MacOs.cs
index 930850041..d7c24803b 100644
--- a/tests/InfiniTests/InfiniFrameTestWindow.MacOs.cs
+++ b/tests/InfiniTests/InfiniFrameTestWindow.MacOs.cs
@@ -10,7 +10,8 @@ namespace InfiniTests;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public sealed partial class InfiniFrameTestWindow {
- [SupportedOSPlatform("macos"), MustDisposeResource]
+ [SupportedOSPlatform("macos")]
+ [MustDisposeResource]
private static partial InfiniFrameTestWindow CreateMacOs(InfiniFrameWindowBuilder windowBuilder) {
IInfiniFrameWindow window = windowBuilder.Build();
diff --git a/tests/InfiniTests/InfiniFrameTestWindow.Windows.cs b/tests/InfiniTests/InfiniFrameTestWindow.Windows.cs
index 8a29ebe2f..d45ca248a 100644
--- a/tests/InfiniTests/InfiniFrameTestWindow.Windows.cs
+++ b/tests/InfiniTests/InfiniFrameTestWindow.Windows.cs
@@ -11,7 +11,8 @@ namespace InfiniTests;
// Code
// ---------------------------------------------------------------------------------------------------------------------
public sealed partial class InfiniFrameTestWindow {
- [SupportedOSPlatform("windows"), MustDisposeResource]
+ [SupportedOSPlatform("windows")]
+ [MustDisposeResource]
private static partial InfiniFrameTestWindow CreateWindows(InfiniFrameWindowBuilder windowBuilder) {
var windowSource = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously);