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);
+ }
}