< Summary

Class:AgglomerativeClustererTests
Assembly:bamlab.test.editmode
File(s):/github/workspace/Assets/Tests/EditMode/AgglomerativeClustererTests.cs
Covered lines:43
Uncovered lines:0
Coverable lines:43
Total lines:70
Line coverage:100% (43 of 43)
Covered branches:0
Total branches:0
Covered methods:6
Total methods:6
Method coverage:100% (6 of 6)

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
GenerateObject(...)0%110100%
AgglomerativeClustererTests()0%110100%
TestSingleCluster()0%110100%
TestMaxSizeOne()0%330100%
TestZeroRadius()0%330100%
TestSmallRadius()0%220100%

File(s)

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

#LineLine coverage
 1using NUnit.Framework;
 2using System.Collections;
 3using System.Collections.Generic;
 4using System.Linq;
 5using UnityEngine;
 6using UnityEngine.TestTools;
 7
 8public class AgglomerativeClustererTests {
 49  public static GameObject GenerateObject(in Vector3 position) {
 410    GameObject obj = new GameObject();
 411    Agent agent = obj.AddComponent<DummyAgent>();
 412    obj.transform.position = position;
 413    return obj;
 414  }
 15
 116  public static readonly List<GameObject> Objects = new List<GameObject> {
 17    GenerateObject(new Vector3(0, 0, 0)),
 18    GenerateObject(new Vector3(0, 1, 0)),
 19    GenerateObject(new Vector3(0, 1.5f, 0)),
 20    GenerateObject(new Vector3(0, 2.5f, 0)),
 21  };
 22
 23  [Test]
 124  public void TestSingleCluster() {
 125    AgglomerativeClusterer clusterer =
 26        new AgglomerativeClusterer(Objects, maxSize: Objects.Count, maxRadius: Mathf.Infinity);
 127    clusterer.Cluster();
 128    Assert.AreEqual(1, clusterer.Clusters.Count);
 129    Cluster cluster = clusterer.Clusters[0];
 130    Assert.AreEqual(Objects.Count, cluster.Size());
 131    Assert.AreEqual(new Vector3(0, 1.25f, 0), cluster.Centroid());
 132  }
 33
 34  [Test]
 135  public void TestMaxSizeOne() {
 136    AgglomerativeClusterer clusterer =
 37        new AgglomerativeClusterer(Objects, maxSize: 1, maxRadius: Mathf.Infinity);
 138    clusterer.Cluster();
 139    Assert.AreEqual(Objects.Count, clusterer.Clusters.Count);
 1540    foreach (var cluster in clusterer.Clusters) {
 441      Assert.AreEqual(1, cluster.Size());
 442    }
 143  }
 44
 45  [Test]
 146  public void TestZeroRadius() {
 147    AgglomerativeClusterer clusterer =
 48        new AgglomerativeClusterer(Objects, maxSize: Objects.Count, maxRadius: 0);
 149    clusterer.Cluster();
 150    Assert.AreEqual(Objects.Count, clusterer.Clusters.Count);
 1551    foreach (var cluster in clusterer.Clusters) {
 452      Assert.AreEqual(1, cluster.Size());
 453    }
 154  }
 55
 56  [Test]
 157  public void TestSmallRadius() {
 158    AgglomerativeClusterer clusterer =
 59        new AgglomerativeClusterer(Objects, maxSize: Objects.Count, maxRadius: 1);
 160    clusterer.Cluster();
 161    Assert.AreEqual(3, clusterer.Clusters.Count);
 462    List<Cluster> clusters = clusterer.Clusters.OrderBy(cluster => cluster.Coordinates[1]).ToList();
 163    Assert.AreEqual(1, clusters[0].Size());
 164    Assert.AreEqual(new Vector3(0, 0, 0), clusters[0].Coordinates);
 165    Assert.AreEqual(2, clusters[1].Size());
 166    Assert.AreEqual(new Vector3(0, 1.25f, 0), clusters[1].Coordinates);
 167    Assert.AreEqual(1, clusters[2].Size());
 168    Assert.AreEqual(new Vector3(0, 2.5f, 0), clusters[2].Coordinates);
 169  }
 70}