using System; using System.Linq; using FluentAssertions; using NUnit.Framework; namespace Chernobyl.Destruction { [TestFixture, Description("Tests for Disposable types.")] public class DisposableTests { [Test, Description("Ensures Disposable.DepthFirst(IDisposable) returns expected items.")] public void Decompose() { var disposable = Disposable.Join ( Disposable.Join ( new Val(1), new Val(2), Disposable.Join(new Val(3)) ), Disposable.Join(new Val(4)) ); var vals = disposable.Decompose().OfType().Select(v => v.X).ToArray(); vals.Should().BeEquivalentTo(1, 2, 3, 4).And.BeInAscendingOrder(); } class Val : IDisposable { public Val(int x) { X = x; } public void Dispose() { } public int X { get; } } } }