< Summary

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

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
GenerateObject(...)0%2100%
AgglomerativeClustererTests()0%2100%
TestSingleCluster()0%2100%
TestMaxSizeOne()0%12300%
TestZeroRadius()0%12300%
TestSmallRadius()0%6200%

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 {
 09  public static GameObject GenerateObject(in Vector3 position) {
 010    GameObject obj = new GameObject();
 011    Agent agent = obj.AddComponent<DummyAgent>();
 012    obj.transform.position = position;
 013    return obj;
 014  }
 15
 016  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]
 024  public void TestSingleCluster() {
 025    AgglomerativeClusterer clusterer =
 26        new AgglomerativeClusterer(Objects, maxSize: Objects.Count, maxRadius: Mathf.Infinity);
 027    clusterer.Cluster();
 028    Assert.AreEqual(1, clusterer.Clusters.Count);
 029    Cluster cluster = clusterer.Clusters[0];
 030    Assert.AreEqual(Objects.Count, cluster.Size());
 031    Assert.AreEqual(new Vector3(0, 1.25f, 0), cluster.Centroid());
 032  }
 33
 34  [Test]
 035  public void TestMaxSizeOne() {
 036    AgglomerativeClusterer clusterer =
 37        new AgglomerativeClusterer(Objects, maxSize: 1, maxRadius: Mathf.Infinity);
 038    clusterer.Cluster();
 039    Assert.AreEqual(Objects.Count, clusterer.Clusters.Count);
 040    foreach (var cluster in clusterer.Clusters) {
 041      Assert.AreEqual(1, cluster.Size());
 042    }
 043  }
 44
 45  [Test]
 046  public void TestZeroRadius() {
 047    AgglomerativeClusterer clusterer =
 48        new AgglomerativeClusterer(Objects, maxSize: Objects.Count, maxRadius: 0);
 049    clusterer.Cluster();
 050    Assert.AreEqual(Objects.Count, clusterer.Clusters.Count);
 051    foreach (var cluster in clusterer.Clusters) {
 052      Assert.AreEqual(1, cluster.Size());
 053    }
 054  }
 55
 56  [Test]
 057  public void TestSmallRadius() {
 058    AgglomerativeClusterer clusterer =
 59        new AgglomerativeClusterer(Objects, maxSize: Objects.Count, maxRadius: 1);
 060    clusterer.Cluster();
 061    Assert.AreEqual(3, clusterer.Clusters.Count);
 062    List<Cluster> clusters = clusterer.Clusters.OrderBy(cluster => cluster.Coordinates[1]).ToList();
 063    Assert.AreEqual(1, clusters[0].Size());
 064    Assert.AreEqual(new Vector3(0, 0, 0), clusters[0].Coordinates);
 065    Assert.AreEqual(2, clusters[1].Size());
 066    Assert.AreEqual(new Vector3(0, 1.25f, 0), clusters[1].Coordinates);
 067    Assert.AreEqual(1, clusters[2].Size());
 068    Assert.AreEqual(new Vector3(0, 2.5f, 0), clusters[2].Coordinates);
 069  }
 70}