public void Enumerator_MoveNext_sets_Current_to_NextBigger_Bucket() { //Arrange var biggerBucket = new SyncableBucket { Id = 42 }; var smallerBucket = new SyncableBucket { Id = 2, NextBiggerBucket = biggerBucket }; var buckets = new[] { smallerBucket, biggerBucket }; var dataCreator = new Mock <IDataCreator <SyncableBucket> >(); var testing = new LinkedSyncableBuckets(dataCreator.Object, buckets); var enumerator = testing.GetEnumerator(); //Act _ = enumerator.MoveNext(); Assert.AreEqual(smallerBucket, enumerator.Current, "Test not valid. If the smaller bucket is not the first one, how are we supposed to test what follows after it?"); _ = enumerator.MoveNext(); //Assert Assert.AreEqual(biggerBucket, enumerator.Current, $"Expected Bucket with Id {biggerBucket.Id}, got Id {enumerator.Current.Id}"); }
public async Task When_adding_a_new_first_the_current_first_is_set_as_NextBiggerBucket() { //Arrange var newBucket = new SyncableBucket { Id = 278 }; var dataCreator = new Mock <IDataCreator <SyncableBucket> >(); dataCreator .Setup(fake => fake.CreateEmptyAsync()) .ReturnsAsync(newBucket); var testing = new LinkedSyncableBuckets(dataCreator.Object, new[] { new SyncableBucket { Id = 314 } }); var currentFirstBucket = testing.First(); //Act await testing.CreateEmptyBiggerThan(null); //Assert Assert.AreEqual(currentFirstBucket, newBucket.NextBiggerBucket); }
public async Task The_new_bucket_gets_the_smaller_buckets_existing_NextBiggerBucket() { //Arrange var newBucket = new SyncableBucket { Id = 314 }; var dataCreator = new Mock <IDataCreator <SyncableBucket> >(); dataCreator .Setup(fake => fake.CreateEmptyAsync()) .ReturnsAsync(newBucket); var biggerBucket = new SyncableBucket { Id = 42 }; var smallerBucket = new SyncableBucket { Id = 278, NextBiggerBucket = biggerBucket }; var testing = new LinkedSyncableBuckets(dataCreator.Object, new[] { smallerBucket, biggerBucket }); //Act await testing.CreateEmptyBiggerThan(smallerBucket); //Assert Assert.AreEqual(biggerBucket, newBucket.NextBiggerBucket); }
public void Enumerator_Reset_throws_NotSupportedException() { //Arrange var dataCreator = new Mock <IDataCreator <SyncableBucket> >(); var testing = new LinkedSyncableBuckets(dataCreator.Object, new List <SyncableBucket>()); var enumerator = testing.GetEnumerator(); //Act & Assert Assert.ThrowsException <NotSupportedException>(() => enumerator.Reset()); }
public void ctor_allows_empty_collection() { //Arrange var buckets = new List <SyncableBucket>(); var dataCreator = new Mock <IDataCreator <SyncableBucket> >(); //Act & Assert _ = new LinkedSyncableBuckets(dataCreator.Object, buckets); //Passes by not throwing exception }
public void Enumerator_MoveNext_works_if_created_without_collection() { //Arrange var dataCreator = new Mock <IDataCreator <SyncableBucket> >(); var testing = new LinkedSyncableBuckets(dataCreator.Object, new List <SyncableBucket>()); var enumerator = testing.GetEnumerator(); //Act _ = enumerator.MoveNext(); //Assert: It didn't throw = success }
public void ctor_Can_Be_initialised_with_ReadOnlyCollection_of_SyncableBucket() { //Arrange IReadOnlyCollection <SyncableBucket> buckets = new[] { new SyncableBucket { Id = 1 } }; var dataCreator = new Mock <IDataCreator <SyncableBucket> >(); //Act & Assert _ = new LinkedSyncableBuckets(dataCreator.Object, buckets); //Passes by not throwing exception }
public async Task Throws_InvalidOperationException_if_supplied_bucket_is_not_in_the_collection() { //Arrange var newBucket = new Mock <SyncableBucket>(); var dataCreator = new Mock <IDataCreator <SyncableBucket> >(); dataCreator .Setup(fake => fake.CreateEmptyAsync()) .ReturnsAsync(newBucket.Object); var testing = new LinkedSyncableBuckets(dataCreator.Object, new[] { new Mock <SyncableBucket>().Object }); //Act & Assert await Assert.ThrowsExceptionAsync <InvalidOperationException>(async() => await testing.CreateEmptyBiggerThan(new Mock <SyncableBucket>().Object)); }
public void Enumerator_Current_starts_as_null() { //Arrange var buckets = new[] { new SyncableBucket { Id = 1 } }; var dataCreator = new Mock <IDataCreator <SyncableBucket> >(); var testing = new LinkedSyncableBuckets(dataCreator.Object, buckets); //Act var enumerator = testing.GetEnumerator(); //Assert Assert.IsNull(enumerator.Current); }
public async Task When_smaller_bucket_is_null_the_new_bucket_becomes_the_first() { //Arrange var newBucket = new Mock <SyncableBucket>().Object; var dataCreator = new Mock <IDataCreator <SyncableBucket> >(); dataCreator .Setup(fake => fake.CreateEmptyAsync()) .ReturnsAsync(newBucket); var testing = new LinkedSyncableBuckets(dataCreator.Object, new List <SyncableBucket>()); //Act await testing.CreateEmptyBiggerThan(null); //Assert Assert.AreEqual(newBucket, testing.First()); }
public void Enumerator_MoveNext_sets_current_null_when_the_last_element_is_passed() { //Arrange var buckets = new[] { new SyncableBucket { Id = 1 } }; var dataCreator = new Mock <IDataCreator <SyncableBucket> >(); var testing = new LinkedSyncableBuckets(dataCreator.Object, buckets); var enumerator = testing.GetEnumerator(); //Act _ = enumerator.MoveNext(); _ = enumerator.MoveNext(); //Assert Assert.IsNull(enumerator.Current); }
public void Enumerator_MoveNext_returns_true_until_the_last_element_is_passed() { //Arrange var buckets = new[] { new SyncableBucket { Id = 1 } }; var dataCreator = new Mock <IDataCreator <SyncableBucket> >(); var testing = new LinkedSyncableBuckets(dataCreator.Object, buckets); var enumerator = testing.GetEnumerator(); //Act var firstMoveNext = enumerator.MoveNext(); var secondMoveNext = enumerator.MoveNext(); //Assert Assert.IsTrue(firstMoveNext); Assert.IsFalse(secondMoveNext); }
public async Task Calls_DataCreator_to_create_a_new_bucket() { //Arrange var dataCreator = new Mock <IDataCreator <SyncableBucket> >(); dataCreator .Setup(fake => fake.CreateEmptyAsync()) .ReturnsAsync(new Mock <SyncableBucket>().Object); var smallerBucket = new SyncableBucket { Id = 32 }; var testing = new LinkedSyncableBuckets(dataCreator.Object, new[] { smallerBucket }); //Act await testing.CreateEmptyBiggerThan(smallerBucket); //Assert dataCreator.Verify(mock => mock.CreateEmptyAsync(), Times.Once); }
public async Task When_a_smaller_bucket_is_given_that_one_gets_the_new_as_NextBiggerBucket() { //Arrange var newBucket = new Mock <SyncableBucket>().Object; var dataCreator = new Mock <IDataCreator <SyncableBucket> >(); dataCreator .Setup(fake => fake.CreateEmptyAsync()) .ReturnsAsync(newBucket); var smallerBucket = new SyncableBucket { Id = 278 }; var testing = new LinkedSyncableBuckets(dataCreator.Object, new[] { smallerBucket }); //Act await testing.CreateEmptyBiggerThan(smallerBucket); //Assert Assert.AreEqual(newBucket, smallerBucket.NextBiggerBucket); }
public void Enumerator_MoveNext_sets_the_first_Current_to_the_only_one_that_is_not_bigger_than_any_of_the_others() { //Arrange var biggerBucket = new SyncableBucket { Id = 42 }; var smallerBucket = new SyncableBucket { Id = 2, NextBiggerBucket = biggerBucket }; var buckets = new[] { biggerBucket, smallerBucket }; var dataCreator = new Mock <IDataCreator <SyncableBucket> >(); var testing = new LinkedSyncableBuckets(dataCreator.Object, buckets); var enumerator = testing.GetEnumerator(); //Act _ = enumerator.MoveNext(); //Assert Assert.AreEqual(smallerBucket, enumerator.Current, $"Expected Bucket with Id {smallerBucket.Id}, got Id {enumerator.Current.Id}"); }
public async Task Newly_added_buckets_can_be_used_as_smallerBucket() { //Arrange var dataCreator = new Mock <IDataCreator <SyncableBucket> >(); dataCreator .Setup(fake => fake.CreateEmptyAsync()) .ReturnsAsync(new SyncableBucket { Id = 42 }); var testing = new LinkedSyncableBuckets(dataCreator.Object, new[] { new SyncableBucket { Id = 7 } }); await testing.CreateEmptyBiggerThan(null); var newlyAdded = testing.First(); //Act await testing.CreateEmptyBiggerThan(newlyAdded); //Assert: Success if no exception }