public void ContainsValue_ShouldBehaveTheSameWay() { // Arrange Dictionary <string, int> dictionary = SampleDictionary.ToDictionary(kv => kv.Value, kv => kv.Key); Fictionary <string, int, GenericEqualityComparer <string> > fictionary = SampleDictionary.ToFictionary(kv => kv.Value, kv => kv.Key); const int bound = 100; int hitCount = 0; int missCount = 0; // Assert for (int i = 0; i != bound; ++i) { bool dictionaryContainsValue = dictionary.ContainsValue(i); bool fictionaryContainsValue = fictionary.ContainsValue(i); Assert.Equal(dictionaryContainsValue, fictionaryContainsValue); hitCount += Convert.ToInt32(fictionaryContainsValue); missCount += Convert.ToInt32(!fictionaryContainsValue); } Assert.True(hitCount > 0); Assert.True(missCount > 0); }
public void Dispose_ShouldClear() { // Arrange Dictionary <int, string> dictionary = new(SampleDictionary.Reverse()); Fictionary <int, string, GenericEqualityComparer <int> > fictionary = DefaultFictionary <int, string> .Create(); foreach (KeyValuePair <int, string> item in SampleItems) { fictionary.TryAdd(item.Key, item.Value); fictionary.TryAdd(-item.Key, item.Key.ToString(CultureInfo.InvariantCulture)); } // Act fictionary.Dispose(); Assert.Empty(fictionary); foreach (KeyValuePair <int, string> kv in SampleDictionary.ToList().Mix()) { fictionary.Add(kv.Key, kv.Value); } // Assert Assert.Empty(dictionary.Except(fictionary)); Assert.Empty(fictionary.Except(dictionary)); }
public void TryGetValue_ShouldBehaveTheSameWay() { // Arrange Dictionary <int, string> dictionary = new(SampleDictionary.Reverse()); Fictionary <int, string, GenericEqualityComparer <int> > fictionary = SampleDictionary.ToList().Mix().ToFictionary(); // Act foreach (KeyValuePair <int, string> kv in SampleDictionary) { { bool foundInDictionary = dictionary.TryGetValue(kv.Key, out string?dictionaryValue); bool foundInFictionary = fictionary.TryGetValue(kv.Key, out string?fictionaryValue); Assert.Equal(foundInDictionary, foundInFictionary); Assert.Equal(dictionaryValue, fictionaryValue); } { bool foundInDictionary = dictionary.TryGetValue(-kv.Key, out string?dictionaryValue); bool foundInFictionary = fictionary.TryGetValue(-kv.Key, out string?fictionaryValue); Assert.Equal(foundInDictionary, foundInFictionary); Assert.Equal(dictionaryValue, fictionaryValue); } } }
public void Indexer_ShouldBehaveTheSameWay() { // Arrange Dictionary <string, double> dictionary = new(StringComparer.Ordinal); using Fictionary <string, double, StringComparer> fictionary = Fictionary <string, double> .Create(StringComparer.Ordinal); int count = SampleItems.Length; for (int i = 0; i != count; ++i) { double value = Geometric(i); string key = SampleItems[i].Value; dictionary[key] = value; fictionary[key] = value; } // Act for (int i = 0; i != count; ++i) { string key = SampleItems[i].Value; double dictionaryValue = dictionary[key]; double fictionaryValue = fictionary[key]; Assert.Equal(dictionaryValue, fictionaryValue); } }
private static void Main() { IEnumerable <FileInfo> currentDirFiles = new DirectoryInfo(Environment.CurrentDirectory).EnumerateFiles(); using Fictionary <string, FileInfo, OrdinalStringComparer> fictionary = currentDirFiles .ToFictionary(fi => fi.Name, new OrdinalStringComparer()); IEnumerable <FileInfo> userDirFiles = new DirectoryInfo(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)).EnumerateFiles(); foreach (FileInfo fi in userDirFiles) { fictionary.TryAdd(fi.Name, fi); } foreach (KeyValuePair <string, FileInfo> kv in fictionary) { Console.WriteLine($"{kv.Key}\t{kv.Value.Directory?.FullName}"); } Console.WriteLine(); if (fictionary.TryGetValue(".gitconfig", out FileInfo? value)) { Console.WriteLine($"{value.Name}: {value.Length} bytes"); } }
public void Values_ShouldBehaveTheSameWay() { // Arrange Dictionary <int, string> dictionary = new(SampleDictionary.Reverse()); Fictionary <int, string, GenericEqualityComparer <int> > fictionary = SampleDictionary.ToList().Mix().ToFictionary(); // Assert Assert.Empty(dictionary.Values.Except(fictionary.Values)); Assert.Empty(fictionary.Values.Except(dictionary.Values)); }
public void Create_WithDictionary() { // Arrange GenericEqualityComparer <int> keyComparer = default; // Act Dictionary <int, string> dictionary = new(SampleDictionary, Int32EqualityComparer.Default); Fictionary <int, string, GenericEqualityComparer <int> > fictionary = SampleDictionary.ToFictionary(keyComparer); // Assert Assert.Empty(dictionary.Except(fictionary)); Assert.Empty(fictionary.Except(dictionary)); }
public void CopyTo_ShouldBehaveTheSameWay() { // Arrange Dictionary <int, string> dictionary = new(SampleDictionary); Fictionary <int, string, GenericEqualityComparer <int> > fictionary = SampleDictionary.ToFictionary(); var dictionaryArray = new KeyValuePair <int, string> [dictionary.Count]; var fictionaryArray = new KeyValuePair <int, string> [fictionary.Count]; // Act ((ICollection <KeyValuePair <int, string> >)dictionary).CopyTo(dictionaryArray, 0); ((ICollection <KeyValuePair <int, string> >)fictionary).CopyTo(fictionaryArray, 0); // Assert Assert.Empty(dictionaryArray.Except(fictionaryArray)); Assert.Empty(fictionaryArray.Except(dictionaryArray)); }
public void Remove_ShouldBehaveTheSameWay() { // Arrange Dictionary <int, string> dictionary = new(SampleDictionary, Int32EqualityComparer.Default); Fictionary <int, string, GenericEqualityComparer <int> > fictionary = SampleDictionary.ToFictionary(); int count = SampleItems.Length; // Act for (int i = 0; i != count; ++i) { int key = SampleItems[i].Key * (i % 2 == 0 ? 1 : -1); bool removedFromDictionary = dictionary.Remove(key); bool removedFromFictionary = fictionary.Remove(key); Assert.Equal(removedFromDictionary, removedFromFictionary); Assert.False(fictionary.ContainsKey(key)); Assert.False(fictionary.TryGetValue(key, out _)); } }
public void Clear() { // Arrange Fictionary <int, string, GenericEqualityComparer <int> > fictionary = SampleDictionary.ToFictionary(); foreach (KeyValuePair <int, string> kv in SampleDictionary) { Assert.True(fictionary.ContainsKey(kv.Key)); } // Act fictionary.Clear(); // Assert Assert.Empty(fictionary); foreach (KeyValuePair <int, string> kv in SampleDictionary) { Assert.False(fictionary.ContainsKey(kv.Key)); } }
public void RecycledFictionaries_ShouldBehaveCorrectly() { // Arrange const int count = 13; var dictionaries = new Dictionary <DateTimeOffset, long> [count]; var fictionaries = new Fictionary <DateTimeOffset, long, GenericEqualityComparer <DateTimeOffset> > [count]; for (int i = 0; i != count; ++i) { dictionaries[i] = new Dictionary <DateTimeOffset, long>(); fictionaries[i] = DefaultFictionary <DateTimeOffset, long> .Create(); } // Act for (int upper = 1; upper <= count; ++upper) { for (int i = 0; i < upper; ++i) { Dictionary <DateTimeOffset, long> d = dictionaries[i]; int newItemCount = Math.Max(1, d.Count); Fictionary <DateTimeOffset, long, GenericEqualityComparer <DateTimeOffset> > f = fictionaries[i]; for (int k = 0; k != newItemCount; ++k) { long value = (upper << 24) | (i << 16) | k; d.TryAdd(DateTimeOffset.FromFileTime(value), value); f.TryAdd(DateTimeOffset.FromFileTime(value), value); } } } // Assert for (int i = 0; i != count; ++i) { Dictionary <DateTimeOffset, long> d = dictionaries[i]; Fictionary <DateTimeOffset, long, GenericEqualityComparer <DateTimeOffset> > f = fictionaries[i]; Assert.Empty(d.Except(f)); Assert.Empty(f.Except(d)); } }