public void HasCount() { var bytes = new byte[] { 243, 75, 31, 139, 26 }; EnumerableAssert.HasCount(0, new byte[0]); EnumerableAssert.HasCount(5, bytes); EnumerableAssert.HasCount(3, bytes.Where(b => b < 100)); ExceptionAssert.ThrowsAssertFailed(() => EnumerableAssert.HasCount(6, bytes)); ExceptionAssert.ThrowsAssertFailed(() => EnumerableAssert.HasCount(2, bytes.Where(b => b < 100))); }
public void GetBytes() { var length = 16 * 1024; Random random = new Random(); var bytes = random.NextBytes(length); Assert.IsNotNull(bytes); EnumerableAssert.HasCount(length, bytes); length = 255; bytes = random.NextBytes(length); EnumerableAssert.HasCount(length, bytes); Assert.IsTrue(bytes.Distinct().Count() >= length / 5, "Less than 20% of the elements are unique. This is highly unlikely to occur in a random sequence."); }
public void Using() { bool throwMain = false; bool throwDispose = false; foreach (var strategy in EnumUtility.GetValues <DisposeExceptionStrategy>()) { TestStrategyNoException(strategy, throwMain, throwDispose); } throwMain = true; throwDispose = false; TestStrategy <MainLogicException>(DisposeExceptionStrategy.Propagate, throwMain, throwDispose); TestStrategy <MainLogicException>(DisposeExceptionStrategy.Swallow, throwMain, throwDispose); TestStrategy <MainLogicException>(DisposeExceptionStrategy.Subjugate, throwMain, throwDispose); TestStrategy <MainLogicException>(DisposeExceptionStrategy.AggregateMultiple, throwMain, throwDispose); TestStrategy <AggregateException>(DisposeExceptionStrategy.AggregateAlways, throwMain, throwDispose, e => Assert.IsInstanceOfType(e.InnerExceptions.Single(), typeof(MainLogicException))); throwMain = false; throwDispose = true; TestStrategy <DisposeException>(DisposeExceptionStrategy.Propagate, throwMain, throwDispose); TestStrategyNoException(DisposeExceptionStrategy.Swallow, throwMain, throwDispose); TestStrategy <DisposeException>(DisposeExceptionStrategy.Subjugate, throwMain, throwDispose); TestStrategy <DisposeException>(DisposeExceptionStrategy.AggregateMultiple, throwMain, throwDispose); TestStrategy <AggregateException>(DisposeExceptionStrategy.AggregateAlways, throwMain, throwDispose, e => Assert.IsInstanceOfType(e.InnerExceptions.Single(), typeof(DisposeException))); throwMain = true; throwDispose = true; TestStrategy <DisposeException>(DisposeExceptionStrategy.Propagate, throwMain, throwDispose); TestStrategy <MainLogicException>(DisposeExceptionStrategy.Swallow, throwMain, throwDispose); TestStrategy <MainLogicException>(DisposeExceptionStrategy.Subjugate, throwMain, throwDispose); TestStrategy <AggregateException>(DisposeExceptionStrategy.AggregateMultiple, throwMain, throwDispose, e => { EnumerableAssert.HasCount(2, e.InnerExceptions); Assert.IsInstanceOfType(e.InnerExceptions[0], typeof(MainLogicException)); Assert.IsInstanceOfType(e.InnerExceptions[1], typeof(DisposeException)); }); TestStrategy <AggregateException>(DisposeExceptionStrategy.AggregateAlways, throwMain, throwDispose, e => { EnumerableAssert.HasCount(2, e.InnerExceptions); Assert.IsInstanceOfType(e.InnerExceptions[0], typeof(MainLogicException)); Assert.IsInstanceOfType(e.InnerExceptions[1], typeof(DisposeException)); }); }
public void Default() { Assert.IsNotNull(CachedRandom.Current); const int length = 255; var randoms = new ConcurrentBag <Random>(); var sequences = new ConcurrentBag <byte[]>(); Enumerable .Range(0, 8) .Select(_ => ThreadFactory.StartNew(() => { randoms.Add(CachedRandom.Current); sequences.Add(CachedRandom.Current.NextBytes(length)); })) .ToList() .ForEach(thread => thread.Join()); EnumerableAssert.HasCount(8, randoms); EnumerableAssert.AllItemsAreUnique(randoms); foreach (var x in sequences) { Assert.IsTrue(x.Distinct().Count() >= length / 5, "Less than 20% of the elements are unique. This is highly unlikely to occur in a random sequence."); } foreach (var x in sequences) { foreach (var y in sequences) { if (!object.ReferenceEquals(x, y)) { EqualityAssert.NotEquals(x, y, SequenceEqualityComparer <byte> .Default, "Two sequences are identical. This is highly unlikely to occur in random sequences."); } } } }