123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- #if NUGET_MOQ_AVAILABLE && UNITY_EDITOR
- using System;
- using System.Collections;
- using Moq;
- using NUnit.Framework;
- using UnityEngine.Advertisements.Utilities;
- using UnityEngine.TestTools;
-
- namespace UnityEngine.Advertisements.Tests
- {
- public class BannerTests
- {
- private Mock<IUnityLifecycleManager> m_CoroutineExecutorMock;
- private Mock<INativeBanner> m_NativeBannerMock;
-
- [SetUp]
- public void Setup()
- {
- m_CoroutineExecutorMock = new Mock<IUnityLifecycleManager>(MockBehavior.Strict);
- m_NativeBannerMock = new Mock<INativeBanner>(MockBehavior.Default);
-
- m_CoroutineExecutorMock.Setup(x => x.Post(It.IsAny<Action>())).Callback<Action>((action) => { action?.Invoke(); });
- m_CoroutineExecutorMock.Setup(x => x.StartCoroutine(It.IsAny<IEnumerator>())).Callback<IEnumerator>(x => {
- while (x.MoveNext()) {}
- }).Returns<Coroutine>(null);
- }
-
- [Test]
- [TestCase(false, false)]
- [TestCase(true, true)]
- [TestCase(null, false)]
- public void GetIsLoaded(bool actual, bool expected)
- {
- m_NativeBannerMock.Setup(x => x.IsLoaded).Returns(actual);
- var banner = new Banner(m_NativeBannerMock.Object, m_CoroutineExecutorMock.Object);
- Assert.That(banner.IsLoaded, Is.EqualTo(expected), "IsLoaded did not return the correct value");
- }
-
- [Test]
- [TestCase(false, false)]
- [TestCase(true, true)]
- [TestCase(null, false)]
- public void GetAndSetShowAfterLoad(bool actual, bool expected)
- {
- var banner = new Banner(m_NativeBannerMock.Object, m_CoroutineExecutorMock.Object);
- banner.ShowAfterLoad = actual;
- Assert.That(banner.ShowAfterLoad, Is.EqualTo(expected), "ShowAfterLoad did not return the correct value");
- }
-
- [Test]
- [TestCase("loadBanner")]
- [TestCase("")]
- [TestCase(null)]
- public void NativeBannerLoad(string placementId)
- {
- m_NativeBannerMock.Setup(x => x.Load(It.IsAny<string>(), It.IsAny<BannerLoadOptions>()));
- var banner = new Banner(m_NativeBannerMock.Object, m_CoroutineExecutorMock.Object);
- banner.Load(placementId, new BannerLoadOptions());
- m_NativeBannerMock.Verify(x => x.Load(It.IsAny<string>(), It.IsAny<BannerLoadOptions>()), Times.Once(), "Banner.Load() was not called as expected");
- }
-
- [Test]
- [TestCase("loadBanner")]
- [TestCase("")]
- [TestCase(null)]
- public void NativeBannerShow(string placementId)
- {
- m_NativeBannerMock.Setup(x => x.Show(It.IsAny<string>(), It.IsAny<BannerOptions>()));
- var banner = new Banner(m_NativeBannerMock.Object, m_CoroutineExecutorMock.Object);
- banner.Show(placementId, new BannerOptions());
- m_NativeBannerMock.Verify(x => x.Show(It.IsAny<string>(), It.IsAny<BannerOptions>()), Times.Once(), "Banner.Show() was not called as expected");
- }
-
- [Test]
- [TestCase(true)]
- [TestCase(false)]
- [TestCase(null)]
- public void NativeBannerHide(bool destroy)
- {
- m_NativeBannerMock.Setup(x => x.Hide(It.IsAny<bool>()));
- var banner = new Banner(m_NativeBannerMock.Object, m_CoroutineExecutorMock.Object);
- banner.Hide();
- m_NativeBannerMock.Verify(x => x.Hide(It.IsAny<bool>()), Times.Once(), "Banner.Hide() was not called as expected");
- }
-
- [Test]
- [TestCase(BannerPosition.CENTER)]
- [TestCase(BannerPosition.TOP_LEFT)]
- [TestCase(BannerPosition.TOP_RIGHT)]
- [TestCase(BannerPosition.TOP_CENTER)]
- [TestCase(BannerPosition.BOTTOM_LEFT)]
- [TestCase(BannerPosition.BOTTOM_RIGHT)]
- [TestCase(BannerPosition.BOTTOM_CENTER)]
- public void NativePlatformSetPosition(BannerPosition bannerPosition)
- {
- m_NativeBannerMock.Setup(x => x.SetPosition(It.IsAny<BannerPosition>()));
- var banner = new Banner(m_NativeBannerMock.Object, m_CoroutineExecutorMock.Object);
- banner.SetPosition(bannerPosition);
- m_NativeBannerMock.Verify(x => x.SetPosition(It.IsAny<BannerPosition>()), Times.Once(), "Banner.SetPosition() was not called as expected");
- }
-
- [UnityTest]
- [TestCase("randomPlacementId", ExpectedResult = null)]
- [Timeout(1000)]
- public IEnumerator UnityAdsBannerDidLoad(string expectedPlacementId)
- {
- var hasCalledListener = false;
- var banner = new Banner(m_NativeBannerMock.Object, m_CoroutineExecutorMock.Object);
- var bannerLoadOptions = new BannerLoadOptions();
- bannerLoadOptions.loadCallback += () => {
- hasCalledListener = true;
- };
- banner.UnityAdsBannerDidLoad(expectedPlacementId, bannerLoadOptions);
- while (!hasCalledListener) yield return null;
- Assert.That(hasCalledListener, Is.True, "The loadCallback should have been called");
- m_CoroutineExecutorMock.Verify(x => x.Post(It.IsAny<Action>()), Times.Once(), "Calls should happen on the main thread and should all batched together as 1 call");
- }
-
- [UnityTest]
- [TestCase("randomPlacementId", ExpectedResult = null)]
- [Timeout(1000)]
- public IEnumerator UnityAdsBannerDidLoadNullOptions(string expectedPlacementId)
- {
- var banner = new Banner(m_NativeBannerMock.Object, m_CoroutineExecutorMock.Object);
- banner.UnityAdsBannerDidLoad(expectedPlacementId, null);
- yield return null;
- m_CoroutineExecutorMock.Verify(x => x.Post(It.IsAny<Action>()), Times.Never(), "There should have been no calls to the coroutineExecutor");
- }
-
- [UnityTest]
- [TestCase("Some error message", ExpectedResult = null)]
- [Timeout(1000)]
- public IEnumerator UnityAdsBannerDidError(string expectedErrorMessage)
- {
- var hasCalledListener = false;
- var banner = new Banner(m_NativeBannerMock.Object, m_CoroutineExecutorMock.Object);
- var bannerLoadOptions = new BannerLoadOptions();
- bannerLoadOptions.errorCallback += (message) => {
- hasCalledListener = true;
- Assert.That(message, Is.EqualTo(expectedErrorMessage), "The error message should be: ");
- };
- banner.UnityAdsBannerDidError(expectedErrorMessage, bannerLoadOptions);
- while (!hasCalledListener) yield return null;
- Assert.That(hasCalledListener, Is.True, "The errorCallback should have been called");
- m_CoroutineExecutorMock.Verify(x => x.Post(It.IsAny<Action>()), Times.Once(), "Calls should happen on the main thread and should all batched together as 1 call");
- }
-
- [UnityTest]
- [TestCase("Some error message", ExpectedResult = null)]
- [Timeout(1000)]
- public IEnumerator UnityAdsBannerDidErrorNullOptions(string expectedErrorMessage)
- {
- var banner = new Banner(m_NativeBannerMock.Object, m_CoroutineExecutorMock.Object);
- banner.UnityAdsBannerDidError(expectedErrorMessage, null);
- yield return null;
- m_CoroutineExecutorMock.Verify(x => x.Post(It.IsAny<Action>()), Times.Never(), "There should have been no calls to the coroutineExecutor");
- }
-
- [UnityTest]
- [TestCase("randomPlacementId", ExpectedResult = null)]
- [Timeout(1000)]
- public IEnumerator UnityAdsBannerDidShow(string expectedPlacementId)
- {
- var hasCalledListener = false;
- var banner = new Banner(m_NativeBannerMock.Object, m_CoroutineExecutorMock.Object);
- var bannerLoadOptions = new BannerOptions();
- bannerLoadOptions.showCallback += () => {
- hasCalledListener = true;
- };
- banner.UnityAdsBannerDidShow(expectedPlacementId, bannerLoadOptions);
- while (!hasCalledListener) yield return null;
- Assert.That(hasCalledListener, Is.True, "The loadCallback should have been called");
- m_CoroutineExecutorMock.Verify(x => x.Post(It.IsAny<Action>()), Times.Once(), "Calls should happen on the main thread and should all batched together as 1 call");
- }
-
- [UnityTest]
- [TestCase("randomPlacementId", ExpectedResult = null)]
- [Timeout(1000)]
- public IEnumerator UnityAdsBannerDidShowNullOptions(string expectedPlacementId)
- {
- var banner = new Banner(m_NativeBannerMock.Object, m_CoroutineExecutorMock.Object);
- banner.UnityAdsBannerDidShow(expectedPlacementId, null);
- yield return null;
- m_CoroutineExecutorMock.Verify(x => x.Post(It.IsAny<Action>()), Times.Never(), "There should have been no calls to the coroutineExecutor");
- }
-
- [UnityTest]
- [TestCase("randomPlacementId", ExpectedResult = null)]
- [Timeout(1000)]
- public IEnumerator UnityAdsBannerClick(string expectedPlacementId)
- {
- var hasCalledListener = false;
- var banner = new Banner(m_NativeBannerMock.Object, m_CoroutineExecutorMock.Object);
- var bannerLoadOptions = new BannerOptions();
- bannerLoadOptions.clickCallback += () => {
- hasCalledListener = true;
- };
- banner.UnityAdsBannerClick(expectedPlacementId, bannerLoadOptions);
- while (!hasCalledListener) yield return null;
- Assert.That(hasCalledListener, Is.True, "The clickCallback should have been called");
- m_CoroutineExecutorMock.Verify(x => x.Post(It.IsAny<Action>()), Times.Once(), "Calls should happen on the main thread and should all batched together as 1 call");
- }
-
- [UnityTest]
- [TestCase("randomPlacementId", ExpectedResult = null)]
- [Timeout(1000)]
- public IEnumerator UnityAdsBannerClickNullOptions(string expectedPlacementId)
- {
- var banner = new Banner(m_NativeBannerMock.Object, m_CoroutineExecutorMock.Object);
- banner.UnityAdsBannerClick(expectedPlacementId, null);
- yield return null;
- m_CoroutineExecutorMock.Verify(x => x.Post(It.IsAny<Action>()), Times.Never(), "There should have been no calls to the coroutineExecutor");
- }
-
- [UnityTest]
- [TestCase("randomPlacementId", ExpectedResult = null)]
- [Timeout(1000)]
- public IEnumerator UnityAdsBannerDidHide(string expectedPlacementId)
- {
- var hasCalledListener = false;
- var banner = new Banner(m_NativeBannerMock.Object, m_CoroutineExecutorMock.Object);
- var bannerLoadOptions = new BannerOptions();
- bannerLoadOptions.hideCallback += () => {
- hasCalledListener = true;
- };
- banner.UnityAdsBannerDidHide(expectedPlacementId, bannerLoadOptions);
- while (!hasCalledListener) yield return null;
- Assert.That(hasCalledListener, Is.True, "The hideCallback should have been called");
- m_CoroutineExecutorMock.Verify(x => x.Post(It.IsAny<Action>()), Times.Once(), "Calls should happen on the main thread and should all batched together as 1 call");
- }
-
- [UnityTest]
- [TestCase("randomPlacementId", ExpectedResult = null)]
- [Timeout(1000)]
- public IEnumerator UnityAdsBannerDidHideNullOptions(string expectedPlacementId)
- {
- var banner = new Banner(m_NativeBannerMock.Object, m_CoroutineExecutorMock.Object);
- banner.UnityAdsBannerDidHide(expectedPlacementId, null);
- yield return null;
- m_CoroutineExecutorMock.Verify(x => x.Post(It.IsAny<Action>()), Times.Never(), "There should have been no calls to the coroutineExecutor");
- }
- }
- }
- #endif
|