Skip to content

Commit e3ac1e5

Browse files
committed
Add warmup for certain assembly.
1 parent 9911a0d commit e3ac1e5

File tree

5 files changed

+42
-6
lines changed

5 files changed

+42
-6
lines changed

src/UnityMvvmToolkit.Core/BindingContextObjectProvider.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,12 @@ public BindingContextObjectProvider(IValueConverter[] converters,
3232

3333
public IObjectProvider WarmupAssemblyViewModels()
3434
{
35-
var assemblyTypes = Assembly
36-
.GetCallingAssembly()
35+
return WarmupAssemblyViewModels(Assembly.GetCallingAssembly());
36+
}
37+
38+
public IObjectProvider WarmupAssemblyViewModels(Assembly assembly)
39+
{
40+
var assemblyTypes = assembly
3741
.GetTypes()
3842
.Where(type => type.IsInterface == false && type.IsAbstract == false &&
3943
typeof(IBindingContext).IsAssignableFrom(type));

src/UnityMvvmToolkit.Core/Interfaces/IObjectProvider.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
using System;
2+
using System.Reflection;
23
using UnityMvvmToolkit.Core.Enums;
34

45
namespace UnityMvvmToolkit.Core.Interfaces
56
{
67
public interface IObjectProvider
78
{
89
IObjectProvider WarmupAssemblyViewModels();
10+
IObjectProvider WarmupAssemblyViewModels(Assembly assembly);
911
IObjectProvider WarmupViewModel<TBindingContext>() where TBindingContext : IBindingContext;
1012
IObjectProvider WarmupViewModel(Type bindingContextType);
1113

src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/Core/BindingContextObjectProvider.cs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,12 @@ public BindingContextObjectProvider(IValueConverter[] converters,
3232

3333
public IObjectProvider WarmupAssemblyViewModels()
3434
{
35-
var assemblyTypes = Assembly
36-
.GetCallingAssembly()
35+
return WarmupAssemblyViewModels(Assembly.GetCallingAssembly());
36+
}
37+
38+
public IObjectProvider WarmupAssemblyViewModels(Assembly assembly)
39+
{
40+
var assemblyTypes = assembly
3741
.GetTypes()
3842
.Where(type => type.IsInterface == false && type.IsAbstract == false &&
3943
typeof(IBindingContext).IsAssignableFrom(type));

src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/Core/Interfaces/IObjectProvider.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
using System;
2+
using System.Reflection;
23
using UnityMvvmToolkit.Core.Enums;
34

45
namespace UnityMvvmToolkit.Core.Interfaces
56
{
67
public interface IObjectProvider
78
{
89
IObjectProvider WarmupAssemblyViewModels();
10+
IObjectProvider WarmupAssemblyViewModels(Assembly assembly);
911
IObjectProvider WarmupViewModel<TBindingContext>() where TBindingContext : IBindingContext;
1012
IObjectProvider WarmupViewModel(Type bindingContextType);
1113

tests/UnityMvvmToolkit.Test.Integration/BindingContextObjectProviderTests.cs

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using FluentAssertions;
1+
using System.Reflection;
2+
using FluentAssertions;
23
using UnityMvvmToolkit.Core;
34
using UnityMvvmToolkit.Core.Converters.ParameterValueConverters;
45
using UnityMvvmToolkit.Core.Converters.PropertyValueConverters;
@@ -14,7 +15,7 @@ namespace UnityMvvmToolkit.Test.Integration;
1415
public class BindingContextObjectProviderTests
1516
{
1617
[Fact]
17-
public void WarmupAssemblyViewModels_ShouldWarmupAllViewModels()
18+
public void WarmupAssemblyViewModels_ShouldWarmupCallingAssemblyViewModels()
1819
{
1920
// Arrange
2021
var objectProvider = new BindingContextObjectProvider(Array.Empty<IValueConverter>());
@@ -36,6 +37,29 @@ public void WarmupAssemblyViewModels_ShouldWarmupAllViewModels()
3637
.WithMessage($"{nameof(EmptyBindingContext)} already warmed up.");
3738
}
3839

40+
[Fact]
41+
public void WarmupAssemblyViewModels_ShouldWarmupAssemblyViewModels()
42+
{
43+
// Arrange
44+
var objectProvider = new BindingContextObjectProvider(Array.Empty<IValueConverter>());
45+
46+
// Act
47+
objectProvider.WarmupAssemblyViewModels(Assembly.GetExecutingAssembly());
48+
49+
// Assert
50+
objectProvider
51+
.Invoking(sut => sut.WarmupViewModel<MyBindingContext>())
52+
.Should()
53+
.Throw<InvalidOperationException>()
54+
.WithMessage($"{nameof(MyBindingContext)} already warmed up.");
55+
56+
objectProvider
57+
.Invoking(sut => sut.WarmupViewModel<EmptyBindingContext>())
58+
.Should()
59+
.Throw<InvalidOperationException>()
60+
.WithMessage($"{nameof(EmptyBindingContext)} already warmed up.");
61+
}
62+
3963
[Fact]
4064
public void WarmupViewModelT_ShouldWarmupBindingContext_WhenBindingContextIsNotWarmup()
4165
{

0 commit comments

Comments
 (0)