public void TestAddThrowsOnNullKey() { IWeightedRandomizer <ExampleClass> newTarget = CreateTarget <ExampleClass>(); Assert.Throws <ArgumentNullException>(() => newTarget.Add(null, 2)); Assert.Throws <ArgumentNullException>(() => newTarget.Add(null)); }
private static void TestSpeed(IWeightedRandomizer <int> randomizer, bool displayText) { GCLatencyMode oldLatencyMode = GCSettings.LatencyMode; try { //Prevent garbage collection during tests GCSettings.LatencyMode = GCLatencyMode.LowLatency; const int numIterations = 10000; Stopwatch timer = new Stopwatch(); if (displayText) { Console.WriteLine("Testing {0}", randomizer.GetType().Name); Console.WriteLine("--------------------------------"); } //NextWithReplacement()/1000 randomizer.Clear(); timer.Reset(); timer.Start(); for (int i = 1; i <= numIterations; i++) { randomizer.Add(i, i); } for (int i = 1; i <= numIterations / 1000; i++) { randomizer.NextWithReplacement(); } timer.Stop(); GC.Collect(); if (displayText) { Console.WriteLine("Add()x{0} + NextWithReplacement()x{1}: {2} ms", numIterations, numIterations / 1000, timer.ElapsedMilliseconds); } //NextWithReplacement() randomizer.Clear(); timer.Reset(); timer.Start(); for (int i = 1; i <= numIterations; i++) { randomizer.Add(i, i); } for (int i = 1; i <= numIterations; i++) { randomizer.NextWithReplacement(); } timer.Stop(); GC.Collect(); if (displayText) { Console.WriteLine("Add()x{0} + NextWithReplacement()x{1}: {2} ms", numIterations, numIterations, timer.ElapsedMilliseconds); } //NextWithReplacement() * 10 randomizer.Clear(); timer.Reset(); timer.Start(); for (int i = 1; i <= numIterations; i++) { randomizer.Add(i, i); } for (int i = 1; i <= 10 * numIterations; i++) { randomizer.NextWithReplacement(); } timer.Stop(); GC.Collect(); if (displayText) { Console.WriteLine("Add()x{0} + NextWithReplacement()x{1}: {2} ms", numIterations, 10 * numIterations, timer.ElapsedMilliseconds); } //NextWithReplacement() (interleaved) randomizer.Clear(); timer.Reset(); timer.Start(); for (int i = 1; i <= numIterations; i++) { randomizer.Add(i, i); randomizer.NextWithReplacement(); } timer.Stop(); GC.Collect(); if (displayText) { Console.WriteLine("( Add() + NextWithReplacement() )x{0} (interleaved): {1} ms", numIterations, timer.ElapsedMilliseconds); } //NextWithRemoval() randomizer.Clear(); timer.Reset(); timer.Start(); for (int i = 1; i <= numIterations; i++) { randomizer.Add(i, i); } for (int i = 1; i <= numIterations; i++) { randomizer.NextWithRemoval(); } timer.Stop(); GC.Collect(); if (displayText) { Console.WriteLine("Add()x{0} + NextWithRemoval()x{1}: {2} ms", numIterations, numIterations, timer.ElapsedMilliseconds); Console.WriteLine(); Console.WriteLine(); } } //end try finally { // ALWAYS set the latency mode back GCSettings.LatencyMode = oldLatencyMode; } }
private void Initialize() { _firstNameRandomizer = new StaticWeightedRandomizer <FirstName>(); _lastNameRandomizer = new StaticWeightedRandomizer <LastName>(); _ageRandomizer = new StaticWeightedRandomizer <Age>(); _raceRandomizer = new StaticWeightedRandomizer <Race>(); _genderRandomizer = new StaticWeightedRandomizer <Gender>(); _physTraitRandomizer = new StaticWeightedRandomizer <PhysicalTrait>(); _persTraitRandomizer = new StaticWeightedRandomizer <PersonalityTrait>(); _wantsRandomizer = new StaticWeightedRandomizer <Want>(); _secretsRandomizer = new StaticWeightedRandomizer <Secret>(); _hooksRandomizer = new StaticWeightedRandomizer <Hook>(); _bondsRandomizer = new StaticWeightedRandomizer <Bond>(); _itemRandomizer = new StaticWeightedRandomizer <Item>(); _alignmentRandomizer = new StaticWeightedRandomizer <Alignment>(); _occupationRandomizer = new StaticWeightedRandomizer <Occupation>(); foreach (var fn in _values.FirstNames) { _firstNameRandomizer.Add(fn, fn.Weight); } foreach (var ln in _values.LastNames) { _lastNameRandomizer.Add(ln, ln.Weight); } foreach (var a in _values.Ages) { _ageRandomizer.Add(a, a.Weight); } foreach (var r in _values.Races) { _raceRandomizer.Add(r, r.Weight); } foreach (var g in _values.Genders) { _genderRandomizer.Add(g, g.Weight); } foreach (var phys in _values.PhysicalTraits) { _physTraitRandomizer.Add(phys, phys.Weight); } foreach (var pers in _values.PersonalityTraits) { _persTraitRandomizer.Add(pers, pers.Weight); } foreach (var w in _values.Wants) { _wantsRandomizer.Add(w, w.Weight); } foreach (var s in _values.Secrets) { _secretsRandomizer.Add(s, s.Weight); } foreach (var h in _values.Hooks) { _hooksRandomizer.Add(h, h.Weight); } foreach (var b in _values.Bonds) { _bondsRandomizer.Add(b, b.Weight); } foreach (var i in _values.Items) { _itemRandomizer.Add(i, i.Weight); } foreach (var a in _values.Alignments) { _alignmentRandomizer.Add(a, a.Weight); } foreach (var o in _values.Occupations) { _occupationRandomizer.Add(o, o.Weight); } }