public static void demoFailureCase() { Console.WriteLine("Demo-ing failure case: false positive for non-inserted key:"); PCADLO.PCADLODictionary<string, string> map = new PCADLO.PCADLODictionary<string, string>(); map.Add("y5ymMhdR", "y5ymMhdR"); //note, key "KRHliuFh" is NOT inserted string val = null; string nonInsertedKey = "KRHliuFh"; map.TryGetValue(nonInsertedKey, out val); Console.WriteLine("getting non-inserted key \""+nonInsertedKey+"\" from map "+ map.ToString()+"\nreturns value: "+val); //DictionaryExtensions.PrettyPrint<string, string>(map) }
public static void demoFailureCase() { Console.WriteLine("Demo-ing failure case: false positive for non-inserted key:"); PCADLO.PCADLODictionary <string, string> map = new PCADLO.PCADLODictionary <string, string>(); map.Add("y5ymMhdR", "y5ymMhdR"); //note, key "KRHliuFh" is NOT inserted string val = null; string nonInsertedKey = "KRHliuFh"; map.TryGetValue(nonInsertedKey, out val); Console.WriteLine("getting non-inserted key \"" + nonInsertedKey + "\" from map " + map.ToString() + "\nreturns value: " + val); //DictionaryExtensions.PrettyPrint<string, string>(map) }
void validateMaps(List <string> keyList, Dictionary <string, string> map1, PCADLO.PCADLODictionary <string, string> map2, string validateMethod) { int nSearchSpace = keyList.Count; if (nInserts < nSearchSpace) { nInserts = nSearchSpace; } //reset seed for repeatibility between iterations random = new Random(seed); Console.WriteLine("Starting..."); //long t1 = System.Environment.TickCount; bool validated = true; bool expKeys = validateMethod.Equals("valid8-expkeys"); if (expKeys) { //map2.setExpectedKeys(keyList); } //else insert randomly (overwriting inserts ok) for (int i = 0; i < nInserts; i++) { string key = null; if (i < nKeys) { //if more keys than nInserts, insert them all key = keyList[i]; } else { //else re-insert previously inserted one (test for collisions while overwriting) key = keyList[random.Next(nKeys)]; } string k = string.Copy(key); map1.Add(k, key); map2.Add(k, key); if (!expKeys && (map1.Count != map2.Count)) { Console.WriteLine("Inconsistency at put(" + k + "): " + map1.Count + " != " + map2.Count); validated = false; //System.exit(1); } } for (int i = 0; i < nLookups; i++) { string key = keyList[random.Next(nSearchSpace)]; string val1 = null; string val2 = null; map1.TryGetValue(key, out val1); map2.TryGetValue(key, out val2); if (val1 != val2) { Console.WriteLine("Inconsistency at get(" + key + "[hash:" + EqualityComparer <string> .Default.GetHashCode(key) + "]): " + val1 + "[hash:" + EqualityComparer <string> .Default.GetHashCode(val1) + "] != " + val2 + "[hash:" + EqualityComparer <string> .Default.GetHashCode(val2) + "]"); //Console.WriteLine("hash["+key+"]="+key.hashCode()+" hash["+val1+"]="+(val1 != null ? val1.hashCode() : null)+" hash["+val2+"]="+(val2 != null ? val2.hashCode() : null)); validated = false; //System.exit(1); } } if (nRemoves >= nSearchSpace) { nRemoves = nSearchSpace; } for (int i = 0; i < nRemoves; i++) { string key = keyList[i]; bool val1 = map1.Remove(key); bool val2 = map2.Remove(key); if (val1 != val2) { Console.WriteLine("Inconsistency at remove(" + key + "): " + val1 + " != " + val2); validated = false; //System.exit(1); } } if (validated) { Console.WriteLine("Map operation validated"); } else { Console.WriteLine("Map operation not validated"); } Environment.Exit(0); }