Made Add function, Added Tests. Added comments to int Tests

This commit is contained in:
MarcUs7i 2024-11-27 17:24:42 +01:00
parent aad560b4fc
commit a032e495cf
3 changed files with 71 additions and 1 deletions

View file

@ -2,6 +2,7 @@
public class FlexArrayIntTests public class FlexArrayIntTests
{ {
// Constructor tests
[Fact] [Fact]
public void Construction_NoSize() public void Construction_NoSize()
{ {
@ -36,6 +37,7 @@ public class FlexArrayIntTests
array.Capacity.Should().Be(0, "negative size provided => set to 0"); array.Capacity.Should().Be(0, "negative size provided => set to 0");
} }
// Add tests
[Fact] [Fact]
public void AddItem_Single() public void AddItem_Single()
{ {
@ -81,6 +83,7 @@ public class FlexArrayIntTests
array.Count.Should().Be(FlexArrayInt.DefaultStartSize + 2); array.Count.Should().Be(FlexArrayInt.DefaultStartSize + 2);
} }
// Contains tests
[Fact] [Fact]
public void Contains_Success() public void Contains_Success()
{ {
@ -127,6 +130,7 @@ public class FlexArrayIntTests
.Should().BeFalse("not contained in list"); .Should().BeFalse("not contained in list");
} }
// Indexer tests
[Fact] [Fact]
public void Indexer_Simple() public void Indexer_Simple()
{ {
@ -176,6 +180,7 @@ public class FlexArrayIntTests
} }
} }
// Remove tests
[Fact] [Fact]
public void Remove_ByIndex_Simple() public void Remove_ByIndex_Simple()
{ {

View file

@ -2,6 +2,7 @@
public class FlexArrayStringTests public class FlexArrayStringTests
{ {
// Constructor tests
[Fact] [Fact]
public void Construction_NoSize() public void Construction_NoSize()
{ {
@ -35,4 +36,51 @@ public class FlexArrayStringTests
array.Count.Should().Be(0); array.Count.Should().Be(0);
array.Capacity.Should().Be(0, "negative size provided => set to 0"); array.Capacity.Should().Be(0, "negative size provided => set to 0");
} }
// Add tests
[Fact]
public void AddItem_Single()
{
var array = new FlexArrayString();
array.Add("Hello");
array.Count.Should().Be(1, "one item added");
array.Capacity.Should().Be(FlexArrayString.DefaultStartSize, "capacity unchanged");
}
[Fact]
public void AddItem_Multiple_NoGrowth()
{
var array = new FlexArrayString();
array.Add("Hello");
array.Add("World");
array.Add("!");
array.Count.Should().Be(3, "three items added");
array.Capacity.Should().Be(FlexArrayString.DefaultStartSize, "no growth required yet");
}
[Fact]
public void AddItem_Multiple_Growth()
{
var array = new FlexArrayString();
void AddItems(int count)
{
for (var i = 0; i < count; i++)
{
// random string
array.Add(Guid.NewGuid().ToString());
}
}
AddItems(FlexArrayString.DefaultStartSize);
array.Capacity.Should().Be(FlexArrayString.DefaultStartSize);
AddItems(2);
array.Capacity.Should().BeGreaterThan(FlexArrayString.DefaultStartSize, "capacity exceeded, had to grow");
array.Count.Should().Be(FlexArrayString.DefaultStartSize + 2);
}
} }

View file

@ -27,4 +27,21 @@ public class FlexArrayString
var size = Math.Max(0, initialSize ?? DefaultStartSize); var size = Math.Max(0, initialSize ?? DefaultStartSize);
_data = new string[size]; _data = new string[size];
} }
public void Add(string input)
{
if (Capacity == Count)
{
Grow();
}
_data[Count++] = input;
}
private void Grow()
{
var newData = new string[Capacity * 2];
Array.Copy(_data, newData, Count);
_data = newData;
}
} }