generated from vrchat-community/template-package
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
feat: add support for declaring ProvidesParametersFor via base classe…
…s and interfaces Closes: #194
- Loading branch information
1 parent
bfdfc68
commit c2e581b
Showing
13 changed files
with
229 additions
and
15 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
using UnityEngine; | ||
|
||
namespace nadena.dev.ndmf.UnitTestSupport | ||
{ | ||
interface ITestInterface2 | ||
{ | ||
} | ||
|
||
[AddComponentMenu("")] | ||
internal class PTCConflictComponent : MonoBehaviour, ITestInterface1, ITestInterface2 | ||
{ | ||
|
||
} | ||
} |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
namespace nadena.dev.ndmf.UnitTestSupport | ||
{ | ||
internal class PTCDepthResolutionComponent : PTCDepthResolutionComponentBase, ITestInterface2 | ||
{ | ||
|
||
} | ||
} |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,11 @@ | ||
using UnityEngine; | ||
|
||
namespace nadena.dev.ndmf.UnitTestSupport | ||
{ | ||
internal abstract class PTCDepthResolutionComponentBase : PTCDepthResolutionComponentBase2 | ||
{ | ||
} | ||
|
||
internal abstract class PTCDepthResolutionComponentBase2 : MonoBehaviour | ||
{ } | ||
} |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
using UnityEngine; | ||
|
||
namespace nadena.dev.ndmf.UnitTestSupport | ||
{ | ||
interface ITestInterface1 | ||
{ | ||
} | ||
|
||
[AddComponentMenu("")] | ||
internal class PTCInheritanceComponent : MonoBehaviour, ITestInterface1 | ||
{ | ||
|
||
} | ||
} |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,98 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.Text.RegularExpressions; | ||
using nadena.dev.ndmf; | ||
using nadena.dev.ndmf.UnitTestSupport; | ||
using NUnit.Framework; | ||
using UnityEngine; | ||
using UnityEngine.TestTools; | ||
|
||
#if NDMF_VRCSDK3_AVATARS | ||
|
||
namespace UnitTests.Parameters | ||
{ | ||
[ParameterProviderFor(typeof(ITestInterface1))] | ||
internal class TestInterface1Provider : IParameterProvider | ||
{ | ||
public TestInterface1Provider(ITestInterface1 _) | ||
{ | ||
|
||
} | ||
|
||
public IEnumerable<ProvidedParameter> GetSuppliedParameters(BuildContext context = null) | ||
{ | ||
return Array.Empty<ProvidedParameter>(); | ||
} | ||
} | ||
|
||
[ParameterProviderFor(typeof(ITestInterface2))] | ||
internal class TestInterface2Provider : IParameterProvider | ||
{ | ||
public TestInterface2Provider(ITestInterface2 _) | ||
{ | ||
|
||
} | ||
|
||
public IEnumerable<ProvidedParameter> GetSuppliedParameters(BuildContext context = null) | ||
{ | ||
return Array.Empty<ProvidedParameter>(); | ||
} | ||
} | ||
|
||
[ParameterProviderFor(typeof(PTCDepthResolutionComponentBase2))] | ||
internal class DepthResolutionProvider : IParameterProvider | ||
{ | ||
public DepthResolutionProvider(PTCDepthResolutionComponentBase2 _) | ||
{ | ||
|
||
} | ||
|
||
public IEnumerable<ProvidedParameter> GetSuppliedParameters(BuildContext context = null) | ||
{ | ||
return Array.Empty<ProvidedParameter>(); | ||
} | ||
} | ||
|
||
public class InheritanceTest : TestBase | ||
{ | ||
[Test] | ||
public void ResolvesInterface() | ||
{ | ||
var root = CreateRoot("root"); | ||
var obj = root.AddComponent<PTCInheritanceComponent>(); | ||
|
||
Assert.IsTrue(EnhancerDatabase<ParameterProviderFor, IParameterProvider>.Query( | ||
obj, out var provider | ||
)); | ||
|
||
Assert.IsTrue(provider is TestInterface1Provider); | ||
} | ||
|
||
[Test] | ||
public void DoesNotResolveAmbiguous() | ||
{ | ||
var root = CreateRoot("root"); | ||
var obj = root.AddComponent<PTCConflictComponent>(); | ||
|
||
Assert.IsFalse(EnhancerDatabase<ParameterProviderFor, IParameterProvider>.Query( | ||
obj, out var provider | ||
)); | ||
LogAssert.Expect(LogType.Error, new Regex("Multiple candidate .*ParameterProviderFor attributes")); | ||
} | ||
|
||
[Test] | ||
public void ResolvesByDepth() | ||
{ | ||
var root = CreateRoot("root"); | ||
var obj = root.AddComponent<PTCDepthResolutionComponent>(); | ||
|
||
Assert.IsTrue(EnhancerDatabase<ParameterProviderFor, IParameterProvider>.Query( | ||
obj, out var provider | ||
)); | ||
|
||
Assert.IsTrue(provider is TestInterface2Provider); | ||
} | ||
} | ||
} | ||
|
||
#endif |
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters