102 lines
3.7 KiB
C#
102 lines
3.7 KiB
C#
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using NUnit.Framework;
|
|
using UnityEngine;
|
|
using UnityEngine.EventSystems;
|
|
using UnityEngine.UI;
|
|
using Vanguard.Board3D;
|
|
using Vanguard.Shared.Protocol;
|
|
using Vanguard.UI;
|
|
using Vanguard.UI.Overlays;
|
|
|
|
namespace Vanguard.Tests
|
|
{
|
|
public sealed class CardOverlayTests
|
|
{
|
|
[Test]
|
|
public void Zone_Content_Shows_Last_Added_First_And_Hides_Opponent_Hand()
|
|
{
|
|
var first = Card("BT01/001EN", 1);
|
|
var last = Card("BT01/002EN", 2);
|
|
var player = new PlayerView
|
|
{
|
|
Index = 0,
|
|
Hand = new List<CardView> { first, last },
|
|
HandCount = 2,
|
|
Drop = new List<CardView> { first, last },
|
|
FaceUpDamage = new List<CardView> { first },
|
|
FaceDownDamage = 2,
|
|
Soul = new List<CardView> { first, last },
|
|
};
|
|
|
|
var drop = CardZoneContent.Build(player, viewer: 0, BoardZone.Drop);
|
|
Assert.AreSame(last, drop.Entries[0].Card);
|
|
|
|
var ownHand = CardZoneContent.Build(player, viewer: 0, BoardZone.Hand);
|
|
Assert.AreSame(last, ownHand.Entries[0].Card);
|
|
|
|
var opponentHand = CardZoneContent.Build(player, viewer: 1, BoardZone.Hand);
|
|
Assert.AreEqual(2, opponentHand.Entries.Count);
|
|
Assert.IsTrue(opponentHand.Entries.All(entry => entry.Hidden));
|
|
|
|
var damage = CardZoneContent.Build(player, viewer: 0, BoardZone.Damage);
|
|
Assert.AreEqual(3, damage.Entries.Count);
|
|
Assert.IsTrue(damage.Entries.Skip(1).All(entry => entry.Hidden));
|
|
}
|
|
|
|
[Test]
|
|
public void CardList_Opens_Detail_And_Returns_To_List()
|
|
{
|
|
var canvas = UiKit.CreateCanvas("Overlay Test Canvas");
|
|
var overlays = new OverlayNavigationService(canvas.transform, _ => null);
|
|
try
|
|
{
|
|
var request = new CardListRequest("Тест", 0, BoardZone.Drop);
|
|
request.Entries.Add(new CardListEntry(Card("BT01/001EN", 1)));
|
|
request.Entries.Add(new CardListEntry(null, true, "Закрытая карта"));
|
|
|
|
overlays.OpenList(request);
|
|
Assert.IsTrue(overlays.IsOpen);
|
|
Assert.IsTrue(Exists("CardListView"));
|
|
|
|
var tile = Resources.FindObjectsOfTypeAll<Button>()
|
|
.FirstOrDefault(button => button.name.StartsWith("Card_"));
|
|
Assert.IsNotNull(tile);
|
|
tile.onClick.Invoke();
|
|
|
|
Assert.IsTrue(Exists("CardDetailOverlay"));
|
|
|
|
var back = Resources.FindObjectsOfTypeAll<Button>()
|
|
.FirstOrDefault(button => button.name == "Back");
|
|
Assert.IsNotNull(back);
|
|
back.onClick.Invoke();
|
|
Assert.IsTrue(Exists("CardListView"));
|
|
Assert.IsFalse(Exists("CardDetailOverlay"));
|
|
}
|
|
finally
|
|
{
|
|
overlays.Dispose();
|
|
Object.DestroyImmediate(canvas.gameObject);
|
|
var eventSystem = Object.FindAnyObjectByType<EventSystem>();
|
|
if (eventSystem != null)
|
|
Object.DestroyImmediate(eventSystem.gameObject);
|
|
}
|
|
}
|
|
|
|
private static CardView Card(string id, int instanceId) => new CardView
|
|
{
|
|
PrintingId = id,
|
|
InstanceId = instanceId,
|
|
FaceUp = true,
|
|
Power = 8000,
|
|
BasePower = 8000,
|
|
Critical = 1,
|
|
BaseCritical = 1,
|
|
};
|
|
|
|
private static bool Exists(string name) =>
|
|
Resources.FindObjectsOfTypeAll<GameObject>()
|
|
.Any(go => go.name == name && go.activeInHierarchy);
|
|
}
|
|
}
|