public void ExceptionThrowned_WhenAskedForUnknownFeature()
    {
        // Arrange
        var features = new FeatureCollection();
        var thing    = new Thing();

        features.Set <IThing>(thing);

        // Assert
        Assert.Throws <InvalidOperationException>(() => features.GetRequiredFeature <object>());
    }
    public void AddedFeatureGetsReturned()
    {
        // Arrange
        var features = new FeatureCollection();
        var thing    = new Thing();

        features.Set <IThing>(thing);

        // Act
        var retrivedThing = features.GetRequiredFeature <IThing>();

        // Assert
        Assert.NotNull(retrivedThing);
        Assert.Equal(retrivedThing, thing);
    }