gather-and-defend/Assets/Tests/Playmode/TestLevelManager.cs
Felix Boucher dec5aeb857 ajouter la tile directement au LevelManager
au lieu d'ajouter une classe data intermédiaire.

l'idée est que ça rend les modifications complexes d'avoir un intermédiaire. Autant ajouter la tuile direct.
2023-05-20 23:27:43 -04:00

57 lines
1.9 KiB
C#

using System.Collections;
using System.Collections.Generic;
using NUnit.Framework;
using UnityEngine;
using UnityEngine.TestTools;
using UnityEngine.Tilemaps;
public class TestLevelManager
{
private ResourceTile _farm;
private Tilemap _tilemap;
const int size = 25;
const int sqrt_size = 5;
private YieldInstruction Timing => new WaitForSeconds(0.1f);
[SetUp]
public void SetUp()
{
_farm = ScriptableObject.CreateInstance<ResourceTile>();
_farm.name = nameof(_farm);
_tilemap = new GameObject("Tilemap").AddComponent<Tilemap>();
for (int i = 0; i < size; i++)
{
var pos = new Vector3Int(i % sqrt_size, i / sqrt_size);
_tilemap.SetTile(pos, _farm);
}
}
[TearDown]
public void TearDown()
{
Object.Destroy(_tilemap.gameObject);
}
// A UnityTest behaves like a coroutine in Play Mode. In Edit Mode you can use
// `yield return null;` to skip a frame.
[UnityTest]
public IEnumerator TestLevelManagerWithEnumeratorPasses()
{
yield return Timing;
Assert.AreEqual(size, LevelManager.Instance.Count<ResourceTile>(), "there should be " + size + " tiles");
for (int i = 0; i < 25; i++)
{
var pos = new Vector3(i % sqrt_size, i / sqrt_size);
var tileExists = LevelManager.Instance.Has<ResourceTile>(t => Mathf.Approximately(Vector2.Distance(pos, t.Position), 0));
Assert.True(tileExists, "there should be a tile at position " + pos);
}
var newPos = new Vector3Int(-5, -5);
_tilemap.SetTile(newPos, _farm);
yield return Timing;
var newTileExists = LevelManager.Instance.Has<ResourceTile>(t => Mathf.Approximately(Vector3.Distance(t.Position, newPos), 0));
Assert.True(newTileExists, "new tile wasn't added to level manager");
}
}