public void ConsecutiveInsertsWithShrink() { var dict = new FastDictionary <int, int>(); for (int i = 0; i < 100; i++) { dict[i] = i; } dict.Clear(); for (int i = 0; i < 33; i++) { dict[i] = i; } dict.Remove(32); int value; Assert.True(dict.TryGetValue(0, out value)); Assert.Equal(32, dict.Count); Assert.True(dict.Capacity > 32); }
public void ConsecutiveRemovesWithGrow() { var dict = new FastDictionary <int, int>(4); for (int i = 0; i < 100; i++) { dict[i] = i; } for (int i = 0; i < 100; i += 2) { Assert.True(dict.Remove(i)); } for (int i = 0; i < 100; i++) { if (i % 2 == 0) { Assert.False(dict.Contains(i)); } else { Assert.True(dict.Contains(i)); } } Assert.Equal(50, dict.Count); Assert.Equal(256, dict.Capacity); }
public void UseOfOfBoundsHashes() { var dict = new FastDictionary <int, int>(16, new ForceOutOfRangeHashesEqualityComparer()); dict[1] = 1; dict[2] = 2; Assert.Equal(1, dict[1]); Assert.Equal(2, dict[2]); dict.Remove(1); Assert.False(dict.Contains(1)); Assert.True(dict.Contains(2)); dict.Remove(2); Assert.False(dict.Contains(1)); Assert.False(dict.Contains(2)); }
public void AddWithHashCollision() { var dict = new FastDictionary <string, int>(new CollidingStringEqualityComparer()); dict.Add("a", 1); dict.Add("b", 1); dict.Remove("a"); Assert.Throws <ArgumentException>(() => dict.Add("b", 1)); }
public void UpdateWithHashCollision() { var dict = new FastDictionary <string, int>(new CollidingStringEqualityComparer()); dict["a"] = 1; dict["b"] = 1; dict.Remove("a"); dict["b"] = 1; Assert.Equal(1, dict.Count); }
public void AddAndRemoveWithoutGrowth() { var dict = new FastDictionary <long, int>(8); for (int i = 0; i < 100; i++) { dict.Add(i, i); dict.Remove(i); int dummy; Assert.False(dict.TryGetValue(i, out dummy)); } Assert.Equal(0, dict.Count); Assert.Equal(8, dict.Capacity); }
public void AddDeleted() { var dict = new FastDictionary <int, int>(16); dict.Add(1, 1); dict.Add(2, 2); dict.Remove(1); dict.Add(17, 17); Assert.False(dict.Contains(1)); Assert.True(dict.Contains(2)); Assert.True(dict.Contains(17)); Assert.Equal(2, dict.Count); Assert.Equal(16, dict.Capacity); }
public void InsertDeleted() { var dict = new FastDictionary <int, int>(16); dict[1] = 1; dict[2] = 2; dict.Remove(1); dict[17] = 17; Assert.False(dict.Contains(1)); Assert.True(dict.Contains(2)); Assert.True(dict.Contains(17)); Assert.Equal(2, dict.Count); Assert.Equal(16, dict.Capacity); }