123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238 |
- using UnityEngine;
- using UnityEngine.TestTools;
- using NUnit.Framework;
- using System.Collections;
- using UnityEditor;
- public class WeaponTests
- {
- GameObject projectilePrefab;
- GameObject laserPrefab;
- GameObject asteroidPrefab;
- GameObject spaceshipPrefab;
- [SetUp]
- public void Setup()
- {
- GameManager.InitializeTestingEnvironment(false, false, false, false, false);
- spaceshipPrefab = ((GameObject)Resources.Load("TestsReferences", typeof(GameObject))).GetComponent<TestsReferences>().spaceshipPrefab;
- asteroidPrefab = ((GameObject)Resources.Load("TestsReferences", typeof(GameObject))).GetComponent<TestsReferences>().asteroidPrefab;
- projectilePrefab = ((GameObject)Resources.Load("TestsReferences", typeof(GameObject))).GetComponent<TestsReferences>().projectilePrefab;
- laserPrefab = ((GameObject)Resources.Load("TestsReferences", typeof(GameObject))).GetComponent<TestsReferences>().laserPrefab;
- }
- void ClearScene()
- {
- Transform[] objects = Object.FindObjectsOfType<Transform>();
- foreach (Transform obj in objects)
- {
- if(obj != null)
- Object.DestroyImmediate(obj.gameObject);
- }
- }
- /*
- // Uncomment the code from line 35 up to line 237, run the tests again and compare the code coverage results
- [Test]
- public void _01_ProjectilePrefabExists()
- {
- Assert.NotNull(projectilePrefab);
- }
- [Test]
- public void _02_ProjectilePrefabCanBeInstantiated()
- {
- ClearScene();
- GameObject projectile = (GameObject)Object.Instantiate(projectilePrefab);
- projectile.name = "Projectile";
- Assert.NotNull(GameObject.Find("Projectile"));
- }
- [Test]
- public void _03_ProjectilePrefabHasRequiredComponentTransform()
- {
- Assert.IsNotNull(projectilePrefab.GetComponent<Transform>());
- }
- [Test]
- public void _04_ProjectilePrefabHasRequiredComponentCollider()
- {
- Assert.IsNotNull(projectilePrefab.GetComponent<BoxCollider2D>());
- Assert.IsTrue(projectilePrefab.GetComponent<BoxCollider2D>().size == new Vector2(0.2f, 0.2f));
- }
- [Test]
- public void _05_ProjectilePrefabHasRequiredComponentControllerScript()
- {
- Assert.IsNotNull(projectilePrefab.GetComponent<ProjectileController>());
- }
- [Test]
- public void _06_ProjectilePrefabHasRequiredVisual()
- {
- Transform visualChild = projectilePrefab.transform.GetChild(0);
- Assert.IsTrue(visualChild.name == "Visual");
- Assert.IsNotNull(visualChild);
- Assert.IsNotNull(visualChild.GetComponent<MeshRenderer>());
- Assert.IsNotNull(visualChild.GetComponent<MeshRenderer>().sharedMaterials[0]);
- Assert.IsNotNull(visualChild.GetComponent<MeshFilter>());
- Assert.IsNotNull(visualChild.GetComponent<MeshFilter>().sharedMesh);
- }
- [Test]
- public void _07_ProjectileCanMove()
- {
- ClearScene();
- ProjectileController projectile = Object.Instantiate(projectilePrefab, Vector3.zero, Quaternion.identity).GetComponent<ProjectileController>();
- projectile.Move();
- Assert.IsTrue(projectile.transform.position != Vector3.zero);
- }
- [Test]
- public void _08_ProjectileDirectionCanBeChanged()
- {
- ClearScene();
- ProjectileController projectile = Object.Instantiate(projectilePrefab, Vector3.zero, Quaternion.identity).GetComponent<ProjectileController>();
- projectile.SetDirection(Vector2.up);
- Assert.IsTrue(projectile.GetDirection() == Vector2.up);
- }
- [UnityTest]
- public IEnumerator _09_ProjectileMovesAccordingToItsDirectionVector()
- {
- ClearScene();
- ProjectileController projectile = Object.Instantiate(projectilePrefab, Vector3.zero, Quaternion.identity).GetComponent<ProjectileController>();
- projectile.SetDirection(Vector2.up);
- Assert.IsTrue(projectile.GetDirection() == Vector2.up);
-
- float t = 0.5f;
- while (t > 0.0f)
- {
- t -= Time.deltaTime;
- yield return null;
- }
- Assert.IsTrue(projectile.transform.position.x == 0.0f && projectile.transform.position.y > 0.0f); //check if projectile moves according to given trajectory along the Y axis
- }
- [UnityTest]
- public IEnumerator _10_ProjectileRotatesAccordingToItsDirectionVector()
- {
- ClearScene();
- ProjectileController projectile = Object.Instantiate(projectilePrefab, Vector3.zero, Quaternion.identity).GetComponent<ProjectileController>();
- projectile.SetDirection(new Vector2(0.714f, -0.156f).normalized);
-
- yield return null;
- Assert.IsTrue((Vector2)projectile.transform.up == projectile.GetDirection());
- }
- [UnityTest]
- public IEnumerator _11_ProjectileIsDestroyedWhenOffsceen()
- {
- ClearScene();
- ProjectileController projectile = Object.Instantiate(projectilePrefab, Vector3.right * 100, Quaternion.identity).GetComponent<ProjectileController>();
-
- yield return null;
-
- Assert.IsTrue(projectile == null);
- }
- [Test]
- public void _12_ProjectilePrefabHasRequiredComponentRigidbody()
- {
- Assert.IsNotNull(projectilePrefab.GetComponent<Rigidbody2D>());
- Assert.IsTrue(projectilePrefab.GetComponent<Rigidbody2D>().isKinematic);
- Assert.IsTrue(projectilePrefab.GetComponent<Rigidbody2D>().collisionDetectionMode == CollisionDetectionMode2D.Continuous);
- Assert.IsTrue(projectilePrefab.GetComponent<Rigidbody2D>().interpolation == RigidbodyInterpolation2D.Interpolate);
- }
- [UnityTest]
- public IEnumerator _13_ProjectileIsDestroyedOnCollisionWithAsteroid()
- {
- ClearScene();
- GameObject projectile = Object.Instantiate(projectilePrefab, Vector3.zero, Quaternion.identity);
- Object.Instantiate(asteroidPrefab, Vector3.zero, Quaternion.identity);
-
- yield return new WaitForFixedUpdate();
- yield return null;
- Assert.IsTrue(projectile == null);
- }
- [UnityTest]
- public IEnumerator _14_ProjectileIgnoresCollisionWithSpaceship()
- {
- ClearScene();
- GameObject projectile = Object.Instantiate(projectilePrefab, Vector3.zero, Quaternion.identity);
- Object.Instantiate(spaceshipPrefab, Vector2.zero, Quaternion.identity);
-
- yield return new WaitForFixedUpdate();
- yield return null;
- Assert.IsTrue(projectile != null);
- }
- [UnityTest]
- public IEnumerator _15_ProjectileTriggersAsteroidSplit()
- {
- ClearScene();
- Object.Instantiate(projectilePrefab, Vector3.zero, Quaternion.identity);
- Object.Instantiate(asteroidPrefab, Vector3.zero, Quaternion.identity);
- yield return new WaitForFixedUpdate();
- yield return null;
- AsteroidController[] asteroids = Object.FindObjectsOfType<AsteroidController>();
- Assert.IsTrue(asteroids.Length > 1);
- }
- [UnityTest]
- public IEnumerator _16_ProjectilesCannotSplitTheSameAsteroidTwice()
- {
- ClearScene();
- Object.Instantiate(projectilePrefab, Vector3.zero, Quaternion.identity);
- Object.Instantiate(projectilePrefab, Vector3.zero, Quaternion.identity);
- Object.Instantiate(asteroidPrefab, Vector3.zero, Quaternion.identity);
- yield return new WaitForFixedUpdate();
- yield return null;
- AsteroidController[] asteroids = Object.FindObjectsOfType<AsteroidController>();
- Assert.IsTrue(asteroids.Length == 2);
- }
- [UnityTest]
- public IEnumerator _17_ProjectilesDontMoveDuringPause()
- {
- ClearScene();
- ProjectileController projectile = Object.Instantiate(projectilePrefab, Vector3.zero, Quaternion.identity).GetComponent<ProjectileController>();
- projectile.SetDirection(Vector2.up);
- Vector3 startPosition = projectile.transform.position;
- GameManager.IsPaused = true;
-
- for (int i = 0; i < 10; i++)
- yield return null;
- Assert.IsTrue(projectile.transform.position == startPosition);
- }
- [UnityTest]
- public IEnumerator _18_LaserFiresSuccessfully()
- {
- // ClearScene();
- // SpaceshipController spaceship = Object.Instantiate(spaceshipPrefab).GetComponent<SpaceshipController>();
- // spaceship.currentWeapon = SpaceshipController.Weapon.Laser;
- // spaceship.Shoot();
- yield return null;
- // LaserController laser = Object.FindObjectOfType<LaserController>();
- // Assert.NotNull(laser);
- }
- */
- }
|