Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
49 changes: 49 additions & 0 deletions Assets/Tests/Editor/HotReload/HotReloadEntryResolutionTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,16 +26,19 @@ public class HotReloadEntryResolutionTests
private static Assembly ShimAssembly => typeof(HotReloadHandwrittenShims).Assembly;

private HotReloadDomainTestScope _scope;
private HotReloadMethodMatcher _matcher;

[SetUp]
public void SetUp()
{
_scope = new HotReloadDomainTestScope();
_matcher = HotReloadMethodMatcher.CreateReadingFromDisk();
}

[TearDown]
public void TearDown()
{
_matcher.Dispose();
_scope.Dispose();
}

Expand Down Expand Up @@ -80,6 +83,7 @@ public void ResolveEntries_WhenEveryEntryResolves_ReportsAllResolved()
HotReloadEntryResolution.Result result = HotReloadEntryResolution.ResolveEntries(
TestAssemblyHome,
FileHomeResolver,
_matcher.Resolve,
FilePath,
ShimAssembly,
entries,
Expand All @@ -91,6 +95,45 @@ public void ResolveEntries_WhenEveryEntryResolves_ReportsAllResolved()
Assert.That(result.FailureOutcomes, Is.Empty);
}

/// <summary>
/// What: every entry that patches an existing method is resolved through the resolver the
/// caller passes in, which is how one matcher of the run answers all of a group's entries.
/// </summary>
[Test]
public void ResolveEntries_ResolvesEachExistingMethodEntryThroughTheGivenResolver()
{
TransformWorkerEntryDto[] entries =
{
BuildExistingMethodEntry(
nameof(HotReloadCoreFixture.StaticPing),
new string[0],
"StaticPing__shim0"),
BuildExistingMethodEntry(
nameof(HotReloadCoreFixture.ReplaceableCompute),
new[] { "System.Int32" },
"ReplaceableCompute__shim0")
};
int resolveCalls = 0;
HotReloadMethodResolver counting = (home, typeMetadataName, methodName, parameterTypeFullNames, genericArity) =>
{
resolveCalls++;
return _matcher.Resolve(home, typeMetadataName, methodName, parameterTypeFullNames, genericArity);
};

HotReloadEntryResolution.Result result = HotReloadEntryResolution.ResolveEntries(
TestAssemblyHome,
FileHomeResolver,
counting,
FilePath,
ShimAssembly,
entries,
new Dictionary<string, string>(),
new HotReloadAddedCalleeIndex(entries));

Assert.That(result.AllResolved, Is.True);
Assert.That(resolveCalls, Is.EqualTo(2));
}

/// <summary>
/// What: an entry naming a shim method the shim assembly does not declare fails the whole
/// file — the result is not all-resolved, the failing row is reported Failed, and every
Expand All @@ -114,6 +157,7 @@ public void ResolveEntries_WhenShimMethodIsMissing_FailsTheFileAtomically()
HotReloadEntryResolution.Result result = HotReloadEntryResolution.ResolveEntries(
TestAssemblyHome,
FileHomeResolver,
_matcher.Resolve,
FilePath,
ShimAssembly,
entries,
Expand Down Expand Up @@ -158,6 +202,7 @@ public void ResolveEntries_WhenAddedMethodHasNoUsableCounter_FailsTheFileAtomica
HotReloadEntryResolution.Result result = HotReloadEntryResolution.ResolveEntries(
TestAssemblyHome,
FileHomeResolver,
_matcher.Resolve,
FilePath,
ShimAssembly,
entries,
Expand Down Expand Up @@ -197,6 +242,7 @@ public void ResolveEntries_WhenEntryIsAnAddedMethod_ResolvesWithoutAnOriginalMet
HotReloadEntryResolution.Result result = HotReloadEntryResolution.ResolveEntries(
TestAssemblyHome,
FileHomeResolver,
_matcher.Resolve,
FilePath,
ShimAssembly,
entries,
Expand Down Expand Up @@ -233,6 +279,7 @@ public void ResolveEntries_RecordsTheAddedMembersEachEntryCalls()
HotReloadEntryResolution.Result result = HotReloadEntryResolution.ResolveEntries(
TestAssemblyHome,
FileHomeResolver,
_matcher.Resolve,
FilePath,
ShimAssembly,
entries,
Expand Down Expand Up @@ -273,6 +320,7 @@ public void ResolveEntries_WhenACallNamesNoAddedEntry_FailsTheFileAtomically()
HotReloadEntryResolution.Result result = HotReloadEntryResolution.ResolveEntries(
TestAssemblyHome,
FileHomeResolver,
_matcher.Resolve,
FilePath,
ShimAssembly,
entries,
Expand Down Expand Up @@ -310,6 +358,7 @@ public void ResolveEntries_WhenATransplantShimTypeFailedToBind_FailsTheEntry()
HotReloadEntryResolution.Result result = HotReloadEntryResolution.ResolveEntries(
TestAssemblyHome,
FileHomeResolver,
_matcher.Resolve,
FilePath,
ShimAssembly,
entries,
Expand Down
Loading
Loading