Skip to content

Commit 5a8d437

Browse files
committed
Adding unit tests.
1 parent 1357768 commit 5a8d437

File tree

44 files changed

+1122
-101
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

44 files changed

+1122
-101
lines changed

UnityMvvmToolkit.sln

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "tests", "tests", "{A9EFA272
1313
EndProject
1414
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnityMvvmToolkit.Test.Unit", "tests\UnityMvvmToolkit.Test.Unit\UnityMvvmToolkit.Test.Unit.csproj", "{DAE87E24-B2B1-4B61-B411-17201146670A}"
1515
EndProject
16+
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "UnityMvvmToolkit.Test.Integration", "tests\UnityMvvmToolkit.Test.Integration\UnityMvvmToolkit.Test.Integration.csproj", "{D278ACF8-97BE-495A-A197-F86C248E2346}"
17+
EndProject
1618
Global
1719
GlobalSection(SolutionConfigurationPlatforms) = preSolution
1820
Debug|Any CPU = Debug|Any CPU
@@ -27,13 +29,18 @@ Global
2729
{DAE87E24-B2B1-4B61-B411-17201146670A}.Debug|Any CPU.Build.0 = Debug|Any CPU
2830
{DAE87E24-B2B1-4B61-B411-17201146670A}.Release|Any CPU.ActiveCfg = Release|Any CPU
2931
{DAE87E24-B2B1-4B61-B411-17201146670A}.Release|Any CPU.Build.0 = Release|Any CPU
32+
{D278ACF8-97BE-495A-A197-F86C248E2346}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
33+
{D278ACF8-97BE-495A-A197-F86C248E2346}.Debug|Any CPU.Build.0 = Debug|Any CPU
34+
{D278ACF8-97BE-495A-A197-F86C248E2346}.Release|Any CPU.ActiveCfg = Release|Any CPU
35+
{D278ACF8-97BE-495A-A197-F86C248E2346}.Release|Any CPU.Build.0 = Release|Any CPU
3036
EndGlobalSection
3137
GlobalSection(SolutionProperties) = preSolution
3238
HideSolutionNode = FALSE
3339
EndGlobalSection
3440
GlobalSection(NestedProjects) = preSolution
3541
{A8734DD9-F957-4315-B270-1E3FD81F5537} = {566BFBA3-9616-448A-B1AF-7750539D1A12}
3642
{DAE87E24-B2B1-4B61-B411-17201146670A} = {A9EFA272-7925-416B-A4B7-450672CD05C7}
43+
{D278ACF8-97BE-495A-A197-F86C248E2346} = {A9EFA272-7925-416B-A4B7-450672CD05C7}
3744
EndGlobalSection
3845
GlobalSection(ExtensibilityGlobals) = postSolution
3946
SolutionGuid = {F2B8E625-E8D2-4679-8F1B-9FB4E6532EA4}

src/UnityMvvmToolkit.Core/Converters/ParameterValueConverters/ParameterToFloatConverter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public sealed class ParameterToFloatConverter : ParameterValueConverter<float>
88
[MethodImpl(MethodImplOptions.AggressiveInlining)]
99
public override float Convert(string parameter)
1010
{
11-
parameter.TryParse(out var result);
11+
_ = parameter.TryParse(out var result);
1212
return result;
1313
}
1414
}

src/UnityMvvmToolkit.Core/Converters/PropertyValueConverters/FloatToStrConverter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public override string Convert(float value)
1515
[MethodImpl(MethodImplOptions.AggressiveInlining)]
1616
public override float ConvertBack(string value)
1717
{
18-
value.TryParse(out var result);
18+
_ = value.TryParse(out var result);
1919
return result;
2020
}
2121
}

src/UnityMvvmToolkit.Core/Extensions/ReadOnlyMemoryExtensions.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,6 @@ namespace UnityMvvmToolkit.Core.Extensions
66
{
77
public static class ReadOnlyMemoryExtensions
88
{
9-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
10-
public static bool IsEmptyOrWhiteSpace(this ReadOnlyMemory<char> memory)
11-
{
12-
return memory.Span.IsEmptyOrWhiteSpace();
13-
}
14-
159
[MethodImpl(MethodImplOptions.AggressiveInlining)]
1610
internal static LineSplitEnumerator Split(this ReadOnlyMemory<char> memory, char separator, bool trim = false)
1711
{

src/UnityMvvmToolkit.Core/Extensions/ReadOnlySpanExtensions.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,6 @@ namespace UnityMvvmToolkit.Core.Extensions
55
{
66
public static class ReadOnlySpanExtensions
77
{
8-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
9-
public static bool IsEmptyOrWhiteSpace(this ReadOnlySpan<char> span)
10-
{
11-
return span.IsEmpty || span.IsWhiteSpace();
12-
}
13-
148
[MethodImpl(MethodImplOptions.AggressiveInlining)]
159
public static bool Contains(this ReadOnlySpan<char> span, char value, out int index)
1610
{

src/UnityMvvmToolkit.Core/Internal/BindingContextMemberProvider.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@ internal sealed class BindingContextMemberProvider : IClassMemberProvider
1313
{
1414
public void GetBindingContextMembers(Type bindingContextType, IDictionary<int, MemberInfo> result)
1515
{
16+
if (typeof(IBindingContext).IsAssignableFrom(bindingContextType) == false)
17+
{
18+
throw new InvalidOperationException(
19+
$"{bindingContextType.Name} is not assignable from {nameof(IBindingContext)}.");
20+
}
21+
1622
var memberInfosSpan = bindingContextType
1723
.GetMembers(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
1824
.AsSpan();
@@ -23,7 +29,7 @@ public void GetBindingContextMembers(Type bindingContextType, IDictionary<int, M
2329

2430
if (TryGetMemberHashCode(bindingContextType, memberInfo, out var hashCode))
2531
{
26-
result.TryAdd(hashCode, memberInfo);
32+
result.Add(hashCode, memberInfo);
2733
}
2834
}
2935
}

src/UnityMvvmToolkit.Core/Internal/StringParsers/BindingStringParser.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ protected static bool IsBindingOption(ReadOnlySpan<char> optionOpen, LineSplitDa
4141
}
4242

4343
[MethodImpl(MethodImplOptions.AggressiveInlining)]
44-
protected void AssureLineIsNotEmpty(ReadOnlySpan<char> lineData)
44+
protected static void AssureLineIsNotEmpty(ReadOnlySpan<char> lineData)
4545
{
46-
if (lineData.IsEmptyOrWhiteSpace())
46+
if (lineData.IsWhiteSpace())
4747
{
4848
throw new NullReferenceException(nameof(lineData));
4949
}

src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/Core/Converters/ParameterValueConverters/ParameterToFloatConverter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ public sealed class ParameterToFloatConverter : ParameterValueConverter<float>
88
[MethodImpl(MethodImplOptions.AggressiveInlining)]
99
public override float Convert(string parameter)
1010
{
11-
parameter.TryParse(out var result);
11+
_ = parameter.TryParse(out var result);
1212
return result;
1313
}
1414
}

src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/Core/Converters/PropertyValueConverters/FloatToStrConverter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public override string Convert(float value)
1515
[MethodImpl(MethodImplOptions.AggressiveInlining)]
1616
public override float ConvertBack(string value)
1717
{
18-
value.TryParse(out var result);
18+
_ = value.TryParse(out var result);
1919
return result;
2020
}
2121
}

src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/Core/Extensions/ReadOnlyMemoryExtensions.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,6 @@ namespace UnityMvvmToolkit.Core.Extensions
66
{
77
public static class ReadOnlyMemoryExtensions
88
{
9-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
10-
public static bool IsEmptyOrWhiteSpace(this ReadOnlyMemory<char> memory)
11-
{
12-
return memory.Span.IsEmptyOrWhiteSpace();
13-
}
14-
159
[MethodImpl(MethodImplOptions.AggressiveInlining)]
1610
internal static LineSplitEnumerator Split(this ReadOnlyMemory<char> memory, char separator, bool trim = false)
1711
{

src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/Core/Extensions/ReadOnlySpanExtensions.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,6 @@ namespace UnityMvvmToolkit.Core.Extensions
55
{
66
public static class ReadOnlySpanExtensions
77
{
8-
[MethodImpl(MethodImplOptions.AggressiveInlining)]
9-
public static bool IsEmptyOrWhiteSpace(this ReadOnlySpan<char> span)
10-
{
11-
return span.IsEmpty || span.IsWhiteSpace();
12-
}
13-
148
[MethodImpl(MethodImplOptions.AggressiveInlining)]
159
public static bool Contains(this ReadOnlySpan<char> span, char value, out int index)
1610
{

src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/Core/Internal/BindingContextMemberProvider.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,12 @@ internal sealed class BindingContextMemberProvider : IClassMemberProvider
1313
{
1414
public void GetBindingContextMembers(Type bindingContextType, IDictionary<int, MemberInfo> result)
1515
{
16+
if (typeof(IBindingContext).IsAssignableFrom(bindingContextType) == false)
17+
{
18+
throw new InvalidOperationException(
19+
$"{bindingContextType.Name} is not assignable from {nameof(IBindingContext)}.");
20+
}
21+
1622
var memberInfosSpan = bindingContextType
1723
.GetMembers(BindingFlags.Instance | BindingFlags.Public | BindingFlags.NonPublic)
1824
.AsSpan();
@@ -23,7 +29,7 @@ public void GetBindingContextMembers(Type bindingContextType, IDictionary<int, M
2329

2430
if (TryGetMemberHashCode(bindingContextType, memberInfo, out var hashCode))
2531
{
26-
result.TryAdd(hashCode, memberInfo);
32+
result.Add(hashCode, memberInfo);
2733
}
2834
}
2935
}

src/UnityMvvmToolkit.UnityPackage/Assets/Plugins/UnityMvvmToolkit/Runtime/Core/Internal/StringParsers/BindingStringParser.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,9 @@ protected static bool IsBindingOption(ReadOnlySpan<char> optionOpen, LineSplitDa
4141
}
4242

4343
[MethodImpl(MethodImplOptions.AggressiveInlining)]
44-
protected void AssureLineIsNotEmpty(ReadOnlySpan<char> lineData)
44+
protected static void AssureLineIsNotEmpty(ReadOnlySpan<char> lineData)
4545
{
46-
if (lineData.IsEmptyOrWhiteSpace())
46+
if (lineData.IsWhiteSpace())
4747
{
4848
throw new NullReferenceException(nameof(lineData));
4949
}

tests/UnityMvvmToolkit.Test.Unit/BindingContextObjectProviderTests.cs renamed to tests/UnityMvvmToolkit.Test.Integration/BindingContextObjectProviderTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@
44
using UnityMvvmToolkit.Core.Converters.PropertyValueConverters;
55
using UnityMvvmToolkit.Core.Extensions;
66
using UnityMvvmToolkit.Core.Interfaces;
7-
using UnityMvvmToolkit.Test.Unit.TestBindingContext;
7+
using UnityMvvmToolkit.Test.Integration.TestBindingContext;
88

9-
namespace UnityMvvmToolkit.Test.Unit;
9+
namespace UnityMvvmToolkit.Test.Integration;
1010

1111
public class BindingContextObjectProviderTests
1212
{

tests/UnityMvvmToolkit.Test.Unit/TestBindingContext/MyBindingContext.cs renamed to tests/UnityMvvmToolkit.Test.Integration/TestBindingContext/MyBindingContext.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
using UnityMvvmToolkit.Core;
22
using UnityMvvmToolkit.Core.Interfaces;
3-
using UnityMvvmToolkit.Test.Unit.Interfaces;
43
using UnityMvvmToolkit.Test.Unit.TestCommands;
54

65
// ReSharper disable InconsistentNaming
76

8-
namespace UnityMvvmToolkit.Test.Unit.TestBindingContext;
7+
namespace UnityMvvmToolkit.Test.Integration.TestBindingContext;
98

109
public class MyBindingContext : IBindingContext
1110
{
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net6.0</TargetFramework>
5+
<ImplicitUsings>enable</ImplicitUsings>
6+
<Nullable>enable</Nullable>
7+
8+
<IsPackable>false</IsPackable>
9+
</PropertyGroup>
10+
11+
<ItemGroup>
12+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
13+
<PackageReference Include="xunit" Version="2.4.1" />
14+
<PackageReference Include="xunit.runner.visualstudio" Version="2.4.3">
15+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
16+
<PrivateAssets>all</PrivateAssets>
17+
</PackageReference>
18+
<PackageReference Include="coverlet.collector" Version="3.1.2">
19+
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
20+
<PrivateAssets>all</PrivateAssets>
21+
</PackageReference>
22+
</ItemGroup>
23+
24+
<ItemGroup>
25+
<ProjectReference Include="..\UnityMvvmToolkit.Test.Unit\UnityMvvmToolkit.Test.Unit.csproj" />
26+
</ItemGroup>
27+
28+
</Project>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
global using Xunit;
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
{
2+
"version": 1,
3+
"isRoot": true,
4+
"tools": {
5+
"dotnet-stryker": {
6+
"version": "3.7.1",
7+
"commands": [
8+
"dotnet-stryker"
9+
]
10+
}
11+
}
12+
}

0 commit comments

Comments
 (0)