diff --git a/src/Wolfgang.Etl.TestKit.Xunit/ExtractorBaseContractTests.cs b/src/Wolfgang.Etl.TestKit.Xunit/ExtractorBaseContractTests.cs index 3505416..88c5cd0 100644 --- a/src/Wolfgang.Etl.TestKit.Xunit/ExtractorBaseContractTests.cs +++ b/src/Wolfgang.Etl.TestKit.Xunit/ExtractorBaseContractTests.cs @@ -771,4 +771,46 @@ public async Task ExtractAsync_skips_items_up_to_SkipItemCount_Async() Assert.Equal(expected[1], actual[0]); Assert.Equal(1, sut.CurrentSkippedItemCount); } + + /// + /// Verifies that CurrentItemCount is zero on a freshly created extractor, before any + /// extraction has run. + /// + [Fact] + public void CurrentItemCount_defaults_to_zero() + { + var sut = CreateSut(); + + Assert.Equal(0, sut.CurrentItemCount); + } + + /// + /// Verifies that CurrentSkippedItemCount is zero on a freshly created extractor, before + /// any extraction has run. + /// + [Fact] + public void CurrentSkippedItemCount_defaults_to_zero() + { + var sut = CreateSut(); + + Assert.Equal(0, sut.CurrentSkippedItemCount); + } + + /// + /// Verifies that CurrentSkippedItemCount reflects the exact number of items skipped by + /// SkipItemCount after a run. + /// + [Fact] + public async Task ExtractAsync_CurrentSkippedItemCount_reflects_the_number_of_items_skipped_Async() + { + var sut = CreateSut(); + var expected = CreateExpectedItems(); + Assert.True(expected.Count >= 3, "CreateExpectedItems() must return at least 3 items."); + + sut.SkipItemCount = 2; + + await sut.ExtractAsync().ToListAsync().ConfigureAwait(false); + + Assert.Equal(2, sut.CurrentSkippedItemCount); + } } diff --git a/src/Wolfgang.Etl.TestKit.Xunit/LoaderBaseContractTests.cs b/src/Wolfgang.Etl.TestKit.Xunit/LoaderBaseContractTests.cs index a99895b..cd74215 100644 --- a/src/Wolfgang.Etl.TestKit.Xunit/LoaderBaseContractTests.cs +++ b/src/Wolfgang.Etl.TestKit.Xunit/LoaderBaseContractTests.cs @@ -835,4 +835,46 @@ public async Task LoadAsync_skips_items_up_to_SkipItemCount_Async() Assert.Equal(expected.Count - 1, sut.CurrentItemCount); Assert.Equal(1, sut.CurrentSkippedItemCount); } + + /// + /// Verifies that CurrentItemCount is zero on a freshly created loader, before any load + /// has run. + /// + [Fact] + public void CurrentItemCount_defaults_to_zero() + { + var sut = CreateSut(); + + Assert.Equal(0, sut.CurrentItemCount); + } + + /// + /// Verifies that CurrentSkippedItemCount is zero on a freshly created loader, before any + /// load has run. + /// + [Fact] + public void CurrentSkippedItemCount_defaults_to_zero() + { + var sut = CreateSut(); + + Assert.Equal(0, sut.CurrentSkippedItemCount); + } + + /// + /// Verifies that CurrentSkippedItemCount reflects the exact number of items skipped by + /// SkipItemCount after a run. + /// + [Fact] + public async Task LoadAsync_CurrentSkippedItemCount_reflects_the_number_of_items_skipped_Async() + { + var sut = CreateSut(); + var expected = CreateSourceItems(); + Assert.True(expected.Count >= 3, "CreateSourceItems() must return at least 3 items."); + + sut.SkipItemCount = 2; + + await sut.LoadAsync(CreateInputItemsAsync()).ConfigureAwait(false); + + Assert.Equal(2, sut.CurrentSkippedItemCount); + } } diff --git a/src/Wolfgang.Etl.TestKit.Xunit/PublicAPI.Unshipped.txt b/src/Wolfgang.Etl.TestKit.Xunit/PublicAPI.Unshipped.txt index 707209f..5980b46 100644 --- a/src/Wolfgang.Etl.TestKit.Xunit/PublicAPI.Unshipped.txt +++ b/src/Wolfgang.Etl.TestKit.Xunit/PublicAPI.Unshipped.txt @@ -32,3 +32,12 @@ Wolfgang.Etl.TestKit.Xunit.DisposableStageContractTests.Public_operation_a Wolfgang.Etl.TestKit.Xunit.DisposableStageContractTests.Public_operation_before_dispose_does_not_throw_ObjectDisposedException_Async() -> System.Threading.Tasks.Task! abstract Wolfgang.Etl.TestKit.Xunit.DisposableStageContractTests.CreateSut() -> TSut! abstract Wolfgang.Etl.TestKit.Xunit.DisposableStageContractTests.InvokeReportsObjectDisposedAsync(bool disposeFirst, bool useAsyncDispose) -> System.Threading.Tasks.Task! +Wolfgang.Etl.TestKit.Xunit.ExtractorBaseContractTests.CurrentItemCount_defaults_to_zero() -> void +Wolfgang.Etl.TestKit.Xunit.ExtractorBaseContractTests.CurrentSkippedItemCount_defaults_to_zero() -> void +Wolfgang.Etl.TestKit.Xunit.ExtractorBaseContractTests.ExtractAsync_CurrentSkippedItemCount_reflects_the_number_of_items_skipped_Async() -> System.Threading.Tasks.Task! +Wolfgang.Etl.TestKit.Xunit.LoaderBaseContractTests.CurrentItemCount_defaults_to_zero() -> void +Wolfgang.Etl.TestKit.Xunit.LoaderBaseContractTests.CurrentSkippedItemCount_defaults_to_zero() -> void +Wolfgang.Etl.TestKit.Xunit.LoaderBaseContractTests.LoadAsync_CurrentSkippedItemCount_reflects_the_number_of_items_skipped_Async() -> System.Threading.Tasks.Task! +Wolfgang.Etl.TestKit.Xunit.TransformerBaseContractTests.CurrentItemCount_defaults_to_zero() -> void +Wolfgang.Etl.TestKit.Xunit.TransformerBaseContractTests.CurrentSkippedItemCount_defaults_to_zero() -> void +Wolfgang.Etl.TestKit.Xunit.TransformerBaseContractTests.TransformAsync_CurrentSkippedItemCount_reflects_the_number_of_items_skipped_Async() -> System.Threading.Tasks.Task! diff --git a/src/Wolfgang.Etl.TestKit.Xunit/TransformerBaseContractTests.cs b/src/Wolfgang.Etl.TestKit.Xunit/TransformerBaseContractTests.cs index 22c9c58..e864980 100644 --- a/src/Wolfgang.Etl.TestKit.Xunit/TransformerBaseContractTests.cs +++ b/src/Wolfgang.Etl.TestKit.Xunit/TransformerBaseContractTests.cs @@ -870,4 +870,46 @@ public async Task TransformAsync_skips_items_up_to_SkipItemCount_Async() Assert.Equal(expected.Count - 1, actual.Count); Assert.Equal(expected.Skip(1).ToList(), actual); } + + /// + /// Verifies that CurrentItemCount is zero on a freshly created transformer, before any + /// transformation has run. + /// + [Fact] + public void CurrentItemCount_defaults_to_zero() + { + var sut = CreateSut(); + + Assert.Equal(0, sut.CurrentItemCount); + } + + /// + /// Verifies that CurrentSkippedItemCount is zero on a freshly created transformer, + /// before any transformation has run. + /// + [Fact] + public void CurrentSkippedItemCount_defaults_to_zero() + { + var sut = CreateSut(); + + Assert.Equal(0, sut.CurrentSkippedItemCount); + } + + /// + /// Verifies that CurrentSkippedItemCount reflects the exact number of items skipped by + /// SkipItemCount after a run. + /// + [Fact] + public async Task TransformAsync_CurrentSkippedItemCount_reflects_the_number_of_items_skipped_Async() + { + var sut = CreateSut(); + var expected = CreateExpectedItems(); + Assert.True(expected.Count >= 3, "CreateExpectedItems() must return at least 3 items."); + + sut.SkipItemCount = 2; + + await sut.TransformAsync(CreateInputItemsAsync()).ToListAsync().ConfigureAwait(false); + + Assert.Equal(2, sut.CurrentSkippedItemCount); + } }