|
@@ -33,6 +33,7 @@
|
|
using System;
|
|
using System;
|
|
using System.Collections;
|
|
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Collections.Generic;
|
|
|
|
+using System.Collections.ObjectModel;
|
|
using System.IO;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Text;
|
|
@@ -756,5 +757,52 @@ namespace Google.Protobuf.Collections
|
|
Assert.True(list1.Contains(SampleNaNs.SignallingFlipped));
|
|
Assert.True(list1.Contains(SampleNaNs.SignallingFlipped));
|
|
Assert.False(list2.Contains(SampleNaNs.SignallingFlipped));
|
|
Assert.False(list2.Contains(SampleNaNs.SignallingFlipped));
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ [Test]
|
|
|
|
+ public void Capacity_Increase()
|
|
|
|
+ {
|
|
|
|
+ // Unfortunately this case tests implementation details of RepeatedField. This is necessary
|
|
|
|
+
|
|
|
|
+ var list = new RepeatedField<int>() { 1, 2, 3 };
|
|
|
|
+
|
|
|
|
+ Assert.AreEqual(8, list.Capacity);
|
|
|
|
+ Assert.AreEqual(3, list.Count);
|
|
|
|
+
|
|
|
|
+ list.Capacity = 10; // Set capacity to a larger value to trigger growth
|
|
|
|
+ Assert.AreEqual(10, list.Capacity, "Capacity increased");
|
|
|
|
+ Assert.AreEqual(3, list.Count);
|
|
|
|
+
|
|
|
|
+ CollectionAssert.AreEqual(new int[] {1, 2, 3}, list.ToArray(), "We didn't lose our data in the resize");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ [Test]
|
|
|
|
+ public void Capacity_Decrease()
|
|
|
|
+ {
|
|
|
|
+ var list = new RepeatedField<int>() { 1, 2, 3 };
|
|
|
|
+
|
|
|
|
+ Assert.AreEqual(8, list.Capacity);
|
|
|
|
+ Assert.DoesNotThrow(() => list.Capacity = 5, "Can decrease capacity if new capacity is greater than list.Count");
|
|
|
|
+ Assert.AreEqual(5, list.Capacity);
|
|
|
|
+
|
|
|
|
+ Assert.DoesNotThrow(() => list.Capacity = 3, "Can set capacity exactly to list.Count" );
|
|
|
|
+
|
|
|
|
+ Assert.Throws<ArgumentOutOfRangeException>(() => list.Capacity = 2, "Can't set the capacity smaller than list.Count" );
|
|
|
|
+
|
|
|
|
+ Assert.Throws<ArgumentOutOfRangeException>(() => list.Capacity = 0, "Can't set the capacity to zero" );
|
|
|
|
+
|
|
|
|
+ Assert.Throws<ArgumentOutOfRangeException>(() => list.Capacity = -1, "Can't set the capacity to negative" );
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ [Test]
|
|
|
|
+ public void Capacity_Zero()
|
|
|
|
+ {
|
|
|
|
+ var list = new RepeatedField<int>() { 1 };
|
|
|
|
+ list.RemoveAt(0);
|
|
|
|
+ Assert.AreEqual(0, list.Count);
|
|
|
|
+ Assert.AreEqual(8, list.Capacity);
|
|
|
|
+
|
|
|
|
+ Assert.DoesNotThrow(() => list.Capacity = 0, "Can set Capacity to 0");
|
|
|
|
+ Assert.AreEqual(0, list.Capacity);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|