Пример #1
0
        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);
        }
Пример #4
0
        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());
        }
Пример #5
0
        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
        }
Пример #6
0
        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
        }
Пример #7
0
        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));
        }
Пример #9
0
        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());
        }
Пример #11
0
        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);
        }
Пример #12
0
        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);
        }
Пример #15
0
        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
        }