public void FromValue_WithEmptyBox_ShouldReturnAnInstance()
        {
            // Arrange, Act
            var tree = AxisAlignedBoundingBoxTree <BoxWrapper> .FromValue(new BoxWrapper(AxisAlignedBoundingBox.Empty));

            // Assert
            Assert.NotNull(tree);
            Assert.NotNull(tree.Root);
        }
 private AxisAlignedBoundingBoxTree <TValue> ConstructTreeRecursively <TValue>(AxisAlignedBoundingBoxTree <TValue> tree, IEnumerator <TValue> actors)
     where TValue : class, IAxisAlignedBoundingBoxContainer =>
 actors.MoveNext() ? ConstructTreeRecursively(tree.Insert(actors.Current), actors) : tree;
 private ICollection <ISprite> InternalDetectCollisions(AxisAlignedBoundingBoxTree <SpriteWrapper> tree, SpriteWrapper target) =>
 tree.Find(target)
 .Where(collision => _narrowPhase.Overlap(target.Sprite, collision.Sprite))
 .Select(wrapper => wrapper.Sprite)
 .ToList();
 public void FromValue_WithNullValue_ShouldThrowArgumentNullException()
 {
     // Act, Assert
     Assert.Throws <ArgumentNullException>(() => AxisAlignedBoundingBoxTree <BoxWrapper> .FromValue(null));
 }