< Summary

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

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity NPath complexity Sequence coverage
FixedHierarchical(...)0%110100%
GetPosition()0%110100%
GetVelocity()0%110100%
Target_SetAndGet_WorksCorrectly()0%110100%
TargetModel_SetAndGet_WorksCorrectly()0%110100%
Position_ReturnsMeanOfSubHierarchicals()0%110100%
Position_WithNoSubHierarchicals_IsZero()0%110100%
Velocity_ReturnsMeanOfSubHierarchicals()0%110100%
Velocity_WithNoSubHierarchicals_IsZero()0%110100%
Speed_ReturnsMagnitudeOfVelocity()0%110100%
AddSubHierarchical_AddsCorrectly()0%110100%
AddSubHierarchical_DoesNotAddDuplicates()0%110100%
RemoveSubHierarchical_RemovesCorrectly()0%110100%
RemoveSubHierarchical_DoesNotRemoveNonExisting()0%110100%

File(s)

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

#LineLine coverage
 1using NUnit.Framework;
 2using System.Collections.Generic;
 3using UnityEngine;
 4
 5public class HierarchicalBaseTests {
 6  private const float _epsilon = 1e-3f;
 7
 8  private class FixedHierarchical : HierarchicalBase {
 9    private Vector3 _position;
 10    private Vector3 _velocity;
 11
 1012    public FixedHierarchical(in Vector3 position, in Vector3 velocity) {
 513      _position = position;
 514      _velocity = velocity;
 515    }
 16
 217    protected override Vector3 GetPosition() {
 218      return _position;
 219    }
 320    protected override Vector3 GetVelocity() {
 321      return _velocity;
 322    }
 23  }
 24
 25  [Test]
 126  public void Target_SetAndGet_WorksCorrectly() {
 127    var parent = new HierarchicalBase();
 128    var target = new HierarchicalBase();
 129    parent.Target = target;
 130    Assert.AreSame(target, parent.Target);
 131  }
 32
 33  [Test]
 134  public void TargetModel_SetAndGet_WorksCorrectly() {
 135    var parent = new HierarchicalBase();
 136    var model = new HierarchicalBase();
 137    parent.TargetModel = model;
 138    Assert.AreSame(model, parent.TargetModel);
 139  }
 40
 41  [Test]
 142  public void Position_ReturnsMeanOfSubHierarchicals() {
 143    var parent = new HierarchicalBase();
 144    var child1 = new FixedHierarchical(new Vector3(2, 0, 0), new Vector3(2, 1, 1));
 145    parent.AddSubHierarchical(child1);
 146    var child2 = new FixedHierarchical(new Vector3(-1, 2, 3), new Vector3(1, -2, 0));
 147    parent.AddSubHierarchical(child2);
 48
 149    Assert.AreEqual(new Vector3(0.5f, 1f, 1.5f), parent.Position);
 150  }
 51
 52  [Test]
 153  public void Position_WithNoSubHierarchicals_IsZero() {
 154    var parent = new HierarchicalBase();
 155    Assert.AreEqual(Vector3.zero, parent.Position);
 156  }
 57
 58  [Test]
 159  public void Velocity_ReturnsMeanOfSubHierarchicals() {
 160    var parent = new HierarchicalBase();
 161    var child1 = new FixedHierarchical(new Vector3(2, 0, 0), new Vector3(2, 1, 1));
 162    parent.AddSubHierarchical(child1);
 163    var child2 = new FixedHierarchical(new Vector3(-1, 2, 3), new Vector3(1, -2, 0));
 164    parent.AddSubHierarchical(child2);
 65
 166    Assert.AreEqual(new Vector3(1.5f, -0.5f, 0.5f), parent.Velocity);
 167  }
 68
 69  [Test]
 170  public void Velocity_WithNoSubHierarchicals_IsZero() {
 171    var parent = new HierarchicalBase();
 172    Assert.AreEqual(Vector3.zero, parent.Velocity);
 173  }
 74
 75  [Test]
 176  public void Speed_ReturnsMagnitudeOfVelocity() {
 177    var parent = new HierarchicalBase();
 178    var child = new FixedHierarchical(new Vector3(2, 0, 0), new Vector3(0, -4, 3));
 179    parent.AddSubHierarchical(child);
 80
 181    Assert.AreEqual(5f, parent.Speed, _epsilon);
 182  }
 83
 84  [Test]
 185  public void AddSubHierarchical_AddsCorrectly() {
 186    var parent = new HierarchicalBase();
 187    var child = new HierarchicalBase();
 188    parent.AddSubHierarchical(child);
 89
 190    Assert.AreEqual(1, parent.SubHierarchicals.Count);
 191    Assert.AreSame(child, parent.SubHierarchicals[0]);
 192  }
 93
 94  [Test]
 195  public void AddSubHierarchical_DoesNotAddDuplicates() {
 196    var parent = new HierarchicalBase();
 197    var child = new HierarchicalBase();
 198    parent.AddSubHierarchical(child);
 199    parent.AddSubHierarchical(child);
 100
 1101    Assert.AreEqual(1, parent.SubHierarchicals.Count);
 1102    Assert.AreSame(child, parent.SubHierarchicals[0]);
 1103  }
 104
 105  [Test]
 1106  public void RemoveSubHierarchical_RemovesCorrectly() {
 1107    var parent = new HierarchicalBase();
 1108    var child = new HierarchicalBase();
 109
 1110    parent.AddSubHierarchical(child);
 1111    parent.RemoveSubHierarchical(child);
 112
 1113    Assert.AreEqual(0, parent.SubHierarchicals.Count);
 1114  }
 115
 116  [Test]
 1117  public void RemoveSubHierarchical_DoesNotRemoveNonExisting() {
 1118    var parent = new HierarchicalBase();
 1119    var child1 = new HierarchicalBase();
 1120    var child2 = new HierarchicalBase();
 121
 1122    parent.AddSubHierarchical(child1);
 1123    parent.RemoveSubHierarchical(child2);
 124
 1125    Assert.AreEqual(1, parent.SubHierarchicals.Count);
 1126    Assert.AreSame(child1, parent.SubHierarchicals[0]);
 1127  }
 128}