Class CollectionTracker
Base class for generic CollectionTracker<T>, which also includes some public static functionality.
public abstract class CollectionTracker : IDisposable
- Inheritance
-
CollectionTracker
- Implements
- Derived
- Inherited Members
- Extension Methods
Constructors
CollectionTracker(IEnumerable)
Initializes a new instance of the CollectionTracker class.
protected CollectionTracker(IEnumerable innerEnumerable)
Parameters
innerEnumerableIEnumerable
Exceptions
Properties
InnerEnumerable
Gets the inner enumerable that this collection track is wrapping. This is mostly provided for simplifying other APIs which require both the tracker and the collection (for example, AreCollectionsEqual(CollectionTracker?, CollectionTracker?, IEqualityComparer, bool)).
protected IEnumerable InnerEnumerable { get; set; }
Property Value
Methods
AreCollectionsEqual(CollectionTracker?, CollectionTracker?, IEqualityComparer, bool)
Determine if two enumerable collections are equal. It contains logic that varies depending on the collection type (supporting arrays, dictionaries, sets, and generic enumerables).
public static AssertEqualityResult AreCollectionsEqual(CollectionTracker? x, CollectionTracker? y, IEqualityComparer itemComparer, bool isDefaultItemComparer)
Parameters
xCollectionTrackerFirst value to compare
yCollectionTrackerSecond value to comare
itemComparerIEqualityComparerThe comparer used for individual item comparisons
isDefaultItemComparerboolPass
trueif theitemCompareris the default item comparer from Xunit.Sdk.AssertEqualityComparer<T>; passfalse, otherwise.
Returns
- AssertEqualityResult
Returns
trueif the collections are equal;false, otherwise.
Dispose()
public void Dispose()
Dispose(bool)
Override to provide an implementation of Dispose().
protected abstract void Dispose(bool disposing)
Parameters
disposingbool
FormatIndexedMismatch(int, int, int?, out int?, int)
Formats the collection when you have a mismatched index. The formatted result will be the section of the
collection from startIndex to endIndex. These indices are usually
obtained by calling GetMismatchExtents(int?, out int, out int).
public abstract string FormatIndexedMismatch(int startIndex, int endIndex, int? mismatchedIndex, out int? pointerIndent, int depth = 1)
Parameters
startIndexintThe start index of the collection to print
endIndexintThe end index of the collection to print
mismatchedIndexint?The mismatched item index
pointerIndentint?How many spaces into the output value the pointed-to item begins at
depthintThe optional printing depth (1 indicates a top-level value)
Returns
- string
The formatted collection
FormatIndexedMismatch(int?, out int?, int)
Formats the collection when you have a mismatched index. The formatted result will be the section of the collection surrounded by the mismatched item.
public abstract string FormatIndexedMismatch(int? mismatchedIndex, out int? pointerIndent, int depth = 1)
Parameters
mismatchedIndexint?The index of the mismatched item
pointerIndentint?How many spaces into the output value the pointed-to item begins at
depthintThe optional printing depth (1 indicates a top-level value)
Returns
- string
The formatted collection
FormatStart(int)
Formats the beginning part of the collection.
public abstract string FormatStart(int depth = 1)
Parameters
depthintThe optional printing depth (1 indicates a top-level value)
Returns
- string
The formatted collection
GetMismatchExtents(int?, out int, out int)
Gets the extents to print when you find a mismatched index, in the form of
a startIndex and endIndex. If the mismatched
index is null, the extents will start at index 0.
public abstract void GetMismatchExtents(int? mismatchedIndex, out int startIndex, out int endIndex)
Parameters
mismatchedIndexint?The mismatched item index
startIndexintThe start index that should be used for printing
endIndexintThe end index that should be used for printing
GetSafeEnumerator()
Gets a safe version of IEnumerator that prevents double enumeration and does all the necessary tracking required for collection formatting. Should should be the same value returned by GetEnumerator(), except non-generic.
protected abstract IEnumerator GetSafeEnumerator()
Returns
TypeAt(int?)
Gets the full name of the type of the element at the given index, if known.
Since this uses the item cache produced by enumeration, it may return null
when we haven't enumerated enough to see the given element, or if we enumerated
so much that the item has left the cache, or if the item at the given index
is null. It will also return null when the index
is null.
public abstract string? TypeAt(int? index)
Parameters
indexint?The item index
Returns
Wrap(IEnumerable)
Wraps an untyped enumerable in an object-based CollectionTracker<T>.
public static CollectionTracker<object> Wrap(IEnumerable enumerable)
Parameters
enumerableIEnumerableThe untyped enumerable to wrap