public void GetRandomUnsatisfied() { var rd = new RouletteDictionary <string, int>(1000, StringComparer.Ordinal); rd["foo"] = 42; Assert.Throws <InvalidOperationException>(() => { rd.GetRandomValue(v => v == 24); }); }
public void GetRandom() { var rd = new RouletteDictionary <string, string>(42); rd["hello"] = "world"; var key = rd.GetRandomKey(); Assert.Equal("hello", key); var val = rd.GetRandomValue(); Assert.Equal("world", val); var kvp = rd.GetRandomKeyAndValue(); Assert.Equal("hello", kvp.Key); Assert.Equal("world", kvp.Value); }
public void GetRandomWithCondition() { var rd = new RouletteDictionary <string, int>(1000, StringComparer.Ordinal); for (int i = 0; i < 10; i++) { rd[i.ToString()] = i; } rd.Add("foo", 1234); var key = rd.GetRandomKey((v) => v == 1234); Assert.Equal("foo", key); var val = rd.GetRandomValue((v) => v == 1234); Assert.Equal(1234, val); var kvp = rd.GetRandomKeyAndValue((v) => v == 1234); Assert.Equal("foo", kvp.Key); Assert.Equal(1234, kvp.Value); }