< Summary

Class:ConfigTest
Assembly:bamlab.test.playmode
File(s):/github/workspace/Assets/Tests/PlayMode/ConfigTest.cs
Covered lines:3
Uncovered lines:39
Coverable lines:42
Total lines:73
Line coverage:7.1% (3 of 42)
Covered branches:0
Total branches:0
Covered methods:1
Total methods:2
Method coverage:50% (1 of 2)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
LoadScene()0%110100%
TestAllConfigFilesLoad()0%1821300%

File(s)

/github/workspace/Assets/Tests/PlayMode/ConfigTest.cs

#LineLine coverage
 1using NUnit.Framework;
 2using UnityEngine;
 3using UnityEngine.TestTools;
 4using System.Collections;
 5using UnityEngine.SceneManagement;
 6using System.IO;
 7using System.Linq;
 8using System.Collections.Generic;
 9public class ConfigTest : TestBase {
 10  [OneTimeSetUp]
 111  public void LoadScene() {
 112    SceneManager.LoadScene("Scenes/MainScene");
 113  }
 14
 15  [UnityTest]
 016  public IEnumerator TestAllConfigFilesLoad() {
 017    string configPath = Path.Combine(Application.streamingAssetsPath, "Configs");
 018    string[] jsonFiles = Directory.GetFiles(configPath, "*.json");
 19
 020    Assert.IsTrue(jsonFiles.Length > 0, "No JSON files found in the Configs directory");
 21
 022    bool isPaused = false;
 023    double epsilon = 0.0002;
 024    for (int i = 0; i < jsonFiles.Length; i++) {
 025      if (i % 2 == 1) {
 026        SimManager.Instance.PauseSimulation();
 027        isPaused = true;
 028      }
 029      yield return new WaitForSecondsRealtime(0.1f);
 030      SimManager.Instance.LoadNewConfig(jsonFiles[i]);
 031      yield return new WaitForSecondsRealtime(0.1f);
 032      double elapsedTime = SimManager.Instance.GetElapsedSimulationTime();
 033      if (isPaused) {
 034        List<Agent> agents = SimManager.Instance.GetActiveAgents();
 035        foreach (Agent agent in agents) {
 036          if (agent is Interceptor) {
 37            // All interceptors start in INITIALIZED phase
 038            Assert.AreEqual(
 39                Agent.FlightPhase.INITIALIZED, agent.GetFlightPhase(),
 40                "All INTERCEPTOR agents should be in the INITIALIZED flight phase after loading while paused");
 41
 042          } else if (agent is Threat) {
 43            // All threats start in MIDCOURSE phase
 044            Assert.AreEqual(
 45                Agent.FlightPhase.MIDCOURSE, agent.GetFlightPhase(),
 46                "All THREAT agents should be in the MIDCOURSE flight phase after loading while paused");
 047          }
 048        }
 049        Assert.LessOrEqual(Mathf.Abs(Time.fixedDeltaTime), epsilon,
 50                           "Fixed delta time should be approximately 0 after loading while paused");
 051        Assert.LessOrEqual(Mathf.Abs(Time.timeScale), epsilon,
 52                           "Time scale should be approximately 0 after loading while paused");
 053        Assert.IsFalse(elapsedTime > 0 + epsilon,
 54                       "Simulation time should not have advanced after loading while paused");
 055      } else {
 056        Assert.IsTrue(elapsedTime > 0 + epsilon,
 57                      "Simulation time should have advanced after loading while not paused");
 058        Assert.LessOrEqual(
 59            Mathf.Abs(Time.fixedDeltaTime -
 60                      (1.0f / SimManager.Instance.simulatorConfig.physicsUpdateRate)),
 61            epsilon, "Physics update rate should be 1 / simulatorConfig.physicsUpdateRate");
 062      }
 63
 064      if (isPaused) {
 065        SimManager.Instance.ResumeSimulation();
 066        isPaused = false;
 067        yield return new WaitForSecondsRealtime(0.1f);
 068        Assert.IsTrue(SimManager.Instance.GetElapsedSimulationTime() > 0 + epsilon,
 69                      "Simulation time should have advanced after resuming");
 070      }
 071    }
 072  }
 73}