https://github.com/nakov/unittestingexample-collections
Unit testing example with C# and NUnit
https://github.com/nakov/unittestingexample-collections
Last synced: 11 months ago
JSON representation
Unit testing example with C# and NUnit
- Host: GitHub
- URL: https://github.com/nakov/unittestingexample-collections
- Owner: nakov
- Created: 2021-04-09T11:31:16.000Z (almost 5 years ago)
- Default Branch: main
- Last Pushed: 2021-04-21T09:52:57.000Z (over 4 years ago)
- Last Synced: 2025-01-09T11:24:09.042Z (about 1 year ago)
- Language: C#
- Size: 33.2 KB
- Stars: 0
- Watchers: 3
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Unit Testing Example: Collection, CircularQueue
Unit testing examples with **C#** and **NUnit**.
## Class for Testing: Collection\
We are given a **C# class [`Collection`](https://github.com/nakov/UnitTestingExample/blob/main/Collections/Collection.cs)**, implementing a generic collection, holding an indexed sequence of elements:
```cs
public class Collection
{
public int Capacity { … }
public int Count { … }
public Collection(params T[] items) { … }
public void Add(T item) { … }
public void AddRange(params T[] items) { … }
public T this[int index] { … }
public void InsertAt(int index, T item) { … }
public void Exchange(int index1, int index2) { … }
public T RemoveAt(int index) { … }
public void Clear() { … }
public override string ToString() { … }
}
```
## Unit Tests for the Collection\ Class
Write **unit tests** to test the functionality of the [`Collection`](https://github.com/nakov/UnitTestingExample/blob/main/Collections/Collection.cs) class, with high code coverage.
_Hint_: You may implement the following tests:
```cs
public class CollectionTests
{
public void Test_Collection_EmptyConstructor() { … }
public void Test_Collection_ConstructorSingleItem() { … }
public void Test_Collection_ConstructorMultipleItems() { … }
public void Test_Collection_Add() { … }
public void Test_Collection_AddWithGrow() { … }
public void Test_Collection_AddRange() { … }
public void Test_Collection_GetByIndex() { … }
public void Test_Collection_GetByInvalidIndex() { … }
public void Test_Collection_SetByIndex() { … }
public void Test_Collection_SetByInvalidIndex() { … }
public void Test_Collection_AddRangeWithGrow() { … }
public void Test_Collection_InsertAtStart() { … }
public void Test_Collection_InsertAtEnd() { … }
public void Test_Collection_InsertAtMiddle() { … }
public void Test_Collection_InsertAtWithGrow() { … }
public void Test_Collection_InsertAtInvalidIndex() { … }
public void Test_Collection_ExchangeMiddle() { … }
public void Test_Collection_ExchangeFirstLast() { … }
public void Test_Collection_ExchangeInvalidIndexes() { … }
public void Test_Collection_RemoveAtStart() { … }
public void Test_Collection_RemoveAtEnd() { … }
public void Test_Collection_RemoveAtMiddle() { … }
public void Test_Collection_RemoveAtInvalidIndex() { … }
public void Test_Collection_RemoveAll() { … }
public void Test_Collection_Clear() { … }
public void Test_Collection_CountAndCapacity() { … }
public void Test_Collection_ToStringEmpty() { … }
public void Test_Collection_ToStringSingle() { … }
public void Test_Collection_ToStringMultiple() { … }
public void Test_Collection_ToStringCollectionOfCollections() { … }
public void Test_Collection_1MillionItems() { … }
}
```
## Expected Results
Sample output from the **unit tests**:

Sample output from the **code coverage**:

## Class for Testing: CircularQueue\
We are given a **C# class [`CircularQueue`](https://github.com/nakov/UnitTestingExample/blob/main/Collections/CircularQueue.cs)**, implementing the "**queue**" data structure, using a **circular buffer**:
```cs
public class CircularQueue
{
public CircularQueue(int capacity) { … }
public int Count { … }
public void Enqueue(T element) { … }
public T Dequeue() { … }
public T Peek() { … }
public T[] ToArray() { … }
public override string ToString() { … }
}
```
## Unit Tests for the CircularQueue\ Class
Write **unit tests** to test the functionality of the [`CircularQueue`](https://github.com/nakov/UnitTestingExample/blob/main/Collections/CircularQueue.cs) class, with high code coverage.
_Hint_: You may implement the following tests:
```cs
class CircularQueueTests
{
public void Test_CircularQueue_ConstructorDefault() { … }
public void Test_CircularQueue_ConstructorWithCapacity() { … }
public void Test_CircularQueue_Enqueue() { … }
public void Test_CircularQueue_EnqueueWithGrow() { … }
public void Test_CircularQueue_Dequeue() { … }
public void Test_CircularQueue_DequeueEmpty() { … }
public void Test_CircularQueue_EnqueueDequeue_WithRangeCross() { … }
public void Test_CircularQueue_Peek() { … }
public void Test_CircularQueue_PeekEmpty() { … }
public void Test_CircularQueue_ToArray() { … }
public void Test_CircularQueue_ToArray_WithRangeCross() { … }
public void Test_CircularQueue_ToString() { … }
public void Test_CircularQueue_MultipleOperations() { … }
public void Test_CircularQueue_1MillionItems() { … }
}
```
## Expected Results
Sample output from the **unit tests**:
