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 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 ConsecutiveInsertionsWithoutGrow() { var dict = new FastDictionary <int, int>(200); for (int i = 0; i < 100; i++) { dict.Add(i, i); } for (int i = 0; i < 100; i++) { Assert.True(dict.Contains(i)); Assert.Equal(i, dict[i]); } int count = 0; foreach (var item in dict) { Assert.Equal(item.Key, item.Value); count++; } Assert.Equal(100, count); Assert.Equal(100, dict.Count); Assert.Equal(256, dict.Capacity); }
public void Duplicates() { var dict = new FastDictionary <int, int>(16); dict[1] = 1; dict[1] = 2; Assert.Equal(2, dict[1]); Assert.Throws <ArgumentException>(() => dict.Add(1, 3)); }
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 ConsecutiveInsertionsAndGrow() { var dict = new FastDictionary <int, int>(4); for (int i = 0; i < 100; i++) { dict.Add(i, i); } for (int i = 0; i < 100; i++) { Assert.True(dict.Contains(i)); Assert.Equal(i, dict[i]); } Assert.Equal(100, dict.Count); Assert.Equal(256, dict.Capacity); }