< Summary

Class:BehaviorTests
Assembly:bamlab.test.editmode
File(s):/github/workspace/Assets/Tests/EditMode/BehaviorTests.cs
Covered lines:0
Uncovered lines:50
Coverable lines:50
Total lines:113
Line coverage:0% (0 of 50)
Covered branches:0
Total branches:0
Covered methods:0
Total methods:2
Method coverage:0% (0 of 2)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
TestDirectAttackBehaviorFactoryUsesOverride()0%2100%
TestDirectAttackBehaviorWaypoints()0%2100%

File(s)

/github/workspace/Assets/Tests/EditMode/BehaviorTests.cs

#LineLine coverage
 1using NUnit.Framework;
 2using UnityEngine;
 3using System.Collections.Generic;
 4
 5public class BehaviorTests : TestBase {
 6  [Test]
 07  public void TestDirectAttackBehaviorFactoryUsesOverride() {
 08    var config = new Configs.AttackBehaviorConfig() {
 9      Name = "Sample Attack", Type = Configs.AttackType.DirectAttack,
 10      FlightPlan =
 11          new Configs.AttackBehaviorConfig.Types.FlightPlan() {
 12            Type = Configs.AttackBehaviorConfig.Types.FlightPlanType.DistanceToTarget,
 13            Waypoints = { new List<Configs.AttackBehaviorConfig.Types.FlightPlan.Types.Waypoint>() {
 14              new Configs.AttackBehaviorConfig.Types.FlightPlan.Types.Waypoint() {
 15                Distance = 1000,
 16                Altitude = 100,
 17                Power = Configs.Power.Cruise,
 18              }
 19            } }
 20          }
 21    };
 22
 023    AttackBehavior attackBehavior = AttackBehaviorFactory.Create(config);
 024    Assert.IsNotNull(attackBehavior);
 25
 026    Vector3 currentPosition = new Vector3(-100, 0, 0);
 027    Vector3 targetPosition = new Vector3(0, 0, 0);
 028    var result = attackBehavior.GetNextWaypoint(currentPosition, targetPosition);
 29
 030    Assert.AreEqual(Configs.Power.Cruise, result.power);
 031  }
 32
 33  [Test]
 034  public void TestDirectAttackBehaviorWaypoints() {
 35    // Create a sample direct attack behavior.
 036    DirectAttackBehavior attackBehavior =
 37        new DirectAttackBehavior(
 38            new Configs.AttackBehaviorConfig() {
 39              Name = "Sample Attack", Type = Configs.AttackType.DirectAttack,
 40              FlightPlan =
 41                  new Configs.AttackBehaviorConfig.Types.FlightPlan() {
 42                    Type = Configs.AttackBehaviorConfig.Types.FlightPlanType.DistanceToTarget,
 43                    Waypoints =
 44                        { new List<Configs.AttackBehaviorConfig.Types.FlightPlan.Types.Waypoint>() {
 45                          new Configs.AttackBehaviorConfig.Types.FlightPlan.Types.Waypoint() {
 46                            Distance = 1000,
 47                            Altitude = 100,
 48                            Power = Configs.Power.Cruise,
 49                          },
 50                          new Configs.AttackBehaviorConfig.Types.FlightPlan.Types.Waypoint() {
 51                            Distance = 500,
 52                            Altitude = 50,
 53                            Power = Configs.Power.Mil,
 54                          },
 55                          new Configs.AttackBehaviorConfig.Types.FlightPlan.Types.Waypoint() {
 56                            Distance = 100,
 57                            Altitude = 25,
 58                            Power = Configs.Power.Max,
 59                          }
 60                        } }
 61                  }
 62            });
 63
 064    Vector3 targetPosition = new Vector3(1000, 0, 0);
 65    const float epsilon = 0.001f;
 66
 67    // Test the waypoint selection based on distance.
 068    Vector3 currentPosition = new Vector3(-100, 0, 0);
 069    var result = attackBehavior.GetNextWaypoint(currentPosition, targetPosition);
 070    Assert.AreEqual(0, result.waypointPosition.x, epsilon);
 071    Assert.AreEqual(100, result.waypointPosition.y, epsilon);
 072    Assert.AreEqual(0, result.waypointPosition.z, epsilon);
 073    Assert.AreEqual(Configs.Power.Cruise, result.power);
 74
 075    currentPosition = new Vector3(0, 0, 0);
 076    result = attackBehavior.GetNextWaypoint(currentPosition, targetPosition);
 077    Assert.AreEqual(500, result.waypointPosition.x, epsilon);
 078    Assert.AreEqual(50, result.waypointPosition.y, epsilon);
 079    Assert.AreEqual(0, result.waypointPosition.z, epsilon);
 080    Assert.AreEqual(Configs.Power.Mil, result.power);
 81
 082    currentPosition = new Vector3(600, 0, 0);
 083    result = attackBehavior.GetNextWaypoint(currentPosition, targetPosition);
 084    Assert.AreEqual(900, result.waypointPosition.x, epsilon);
 085    Assert.AreEqual(25, result.waypointPosition.y, epsilon);
 086    Assert.AreEqual(0, result.waypointPosition.z, epsilon);
 087    Assert.AreEqual(Configs.Power.Max, result.power);
 88
 89    // Test the attack behavior within the final distance.
 090    currentPosition = new Vector3(920, 0, 0);
 091    result = attackBehavior.GetNextWaypoint(currentPosition, targetPosition);
 092    Assert.AreEqual(1000, result.waypointPosition.x, epsilon);
 093    Assert.AreEqual(0, result.waypointPosition.y, epsilon);
 094    Assert.AreEqual(0, result.waypointPosition.z, epsilon);
 095    Assert.AreEqual(Configs.Power.Max, result.power);
 96
 97    // Test with non-zero z-coordinate.
 098    targetPosition = new Vector3(800, 0, 600);
 099    currentPosition = new Vector3(0, 0, 0);
 0100    result = attackBehavior.GetNextWaypoint(currentPosition, targetPosition);
 0101    Assert.AreEqual(400, result.waypointPosition.x, epsilon);
 0102    Assert.AreEqual(50, result.waypointPosition.y, epsilon);
 0103    Assert.AreEqual(300, result.waypointPosition.z, epsilon);
 0104    Assert.AreEqual(Configs.Power.Mil, result.power);
 105
 0106    currentPosition = new Vector3(400, 0, 300);
 0107    result = attackBehavior.GetNextWaypoint(currentPosition, targetPosition);
 0108    Assert.AreEqual(720, result.waypointPosition.x, epsilon);
 0109    Assert.AreEqual(25, result.waypointPosition.y, epsilon);
 0110    Assert.AreEqual(540, result.waypointPosition.z, epsilon);
 0111    Assert.AreEqual(Configs.Power.Max, result.power);
 0112  }
 113}