[DataRow(100)] //more children were generated than required public void GetParentIndexAndGetParentCount_ReturnConsistentResults( long childCurrentCount) { //Prepare var target = new EvenSpreadStrategy(); EntityContext parentProgress = ToEntityContext(new EntityProgress { TargetCount = 10 }); EntityContext childProgress = ToEntityContext(new EntityProgress { TargetCount = 3, CurrentCount = childCurrentCount, NextIterationCount = childCurrentCount + 1 }); //Invoke long actualParentIndex = target.GetParentIndex( parentProgress, childProgress); long actualParentsCount = target.GetNextIterationParentCount( parentProgress, childProgress); //Assert actualParentsCount.Should().Be(actualParentIndex + 1); }
//init public GeneratorSetup() { _reflectionInvoker = new ReflectionInvoker(); EntityDescriptions = new Dictionary <Type, IEntityDescription>(); TemporaryStorage = new TemporaryStorage(); DefaultSpreadStrategy = new EvenSpreadStrategy(); DefaultFlushStrategy = new LimitedCapacityFlushStrategy(100); DefaultPersistentStorages = new List <IPersistentStorage>(); Supervisor = new CompleteSupervisor(); }
public void GetParentCountAndCanGenerate_WhenAllRangeIterated_ReturnConsistentResults() { long targetChildCount = 90; long parentNextReleaseCount = 0; for (int childCurrentCount = 0; childCurrentCount < targetChildCount; childCurrentCount++) { if (childCurrentCount % 30 == 0) { parentNextReleaseCount += 10; } //Prepare var target = new EvenSpreadStrategy(); EntityContext parentProgress = ToEntityContext(new EntityProgress { TargetCount = 30, NextReleaseCount = parentNextReleaseCount }); EntityContext childProgress = ToEntityContext(new EntityProgress { TargetCount = 90, CurrentCount = childCurrentCount, NextIterationCount = childCurrentCount + 1 }); //Invoke long actualParentIndex = target.GetParentIndex( parentProgress, childProgress); long actualParentCount = target.GetNextIterationParentCount( parentProgress, childProgress); bool actualCanGenerate = target.CanGenerateFromParentNextReleaseCount( parentProgress, childProgress); //Assert bool expectedCanGenerate = actualParentCount <= parentNextReleaseCount; actualParentIndex.Should().Be(actualParentCount - 1); actualCanGenerate.Should().Be(expectedCanGenerate); Debug.WriteLine($"Child: {childCurrentCount} Parent {actualParentCount} NextRelease {parentNextReleaseCount} CanGenerate {actualCanGenerate}"); } }
[DataRow(100, 3)] //child count beyond child's TargetCount public void GetNextIterationParentCount_WhenParentCountLower_ReturnsExpected( long nextIterationChildCount, long expectedParentCount) { //Prepare var target = new EvenSpreadStrategy(); EntityContext parentProgress = ToEntityContext(new EntityProgress { TargetCount = 3 }); EntityContext childProgress = ToEntityContext(new EntityProgress { TargetCount = 8, NextIterationCount = nextIterationChildCount }); //Invoke long actualParentCount = target.GetNextIterationParentCount(parentProgress, childProgress); //Assert Assert.AreEqual(expectedParentCount, actualParentCount); }
[DataRow(100, 8)] //child count beyond child's TargetCount public void GetParentIndex_WhenParentCountHigher_ReturnsExpected( long currentChildCount, long expectedParentIndex) { //Prepare var target = new EvenSpreadStrategy(); EntityContext parentProgress = ToEntityContext(new EntityProgress { TargetCount = 9 }); EntityContext childProgress = ToEntityContext(new EntityProgress { CurrentCount = currentChildCount, TargetCount = 3 }); //Invoke long actualParentIndex = target.GetParentIndex(parentProgress, childProgress); //Assert actualParentIndex.Should().Be(expectedParentIndex); }
public void GetParentCountAndCanGenerate_ReturnConsistentResults( long parentNextReleaseCount, long childCurrentCount, bool expectedCanGenerate, int expectedParentIndex) { //Prepare var target = new EvenSpreadStrategy(); EntityContext parentProgress = ToEntityContext(new EntityProgress { TargetCount = 30, NextReleaseCount = parentNextReleaseCount }); EntityContext childProgress = ToEntityContext(new EntityProgress { TargetCount = 90, CurrentCount = childCurrentCount, NextIterationCount = childCurrentCount + 1 }); //Invoke long actualParentIndex = target.GetParentIndex( parentProgress, childProgress); long actualParentCount = target.GetNextIterationParentCount( parentProgress, childProgress); bool actualCanGenerate = target.CanGenerateFromParentNextReleaseCount( parentProgress, childProgress); //Assert actualParentIndex.Should().Be(expectedParentIndex); actualParentIndex.Should().Be(actualParentCount - 1); actualCanGenerate.Should().Be(expectedCanGenerate); if (actualCanGenerate) { actualParentCount.Should().BeLessOrEqualTo(parentNextReleaseCount); } else { actualParentCount.Should().BeGreaterThan(parentNextReleaseCount); } }
[DataRow(100, 3, false)] //more parents were generated than required and child already has TargetCount public void CanGenerateMoreFromParentsNextFlushCount_WhenParentCountLarger_ReturnsExpected( long parentNextReleaseCount, long childCurrentCount, bool expectedCanGenegate) { //Prepare var target = new EvenSpreadStrategy(); EntityContext parentProgress = ToEntityContext(new EntityProgress { TargetCount = 10, NextReleaseCount = parentNextReleaseCount }); EntityContext childProgress = ToEntityContext(new EntityProgress { TargetCount = 3, CurrentCount = childCurrentCount }); //Invoke bool actualCanBeGenerated = target.CanGenerateFromParentNextReleaseCount( parentProgress, childProgress); //Assert Assert.AreEqual(expectedCanGenegate, actualCanBeGenerated); }