public static void ShouldAddRangeAndRetrieveViaIterator() { var expected = values2.Concat(values1); var multiDict = new MultiValueDictionary<string, string>(); multiDict.AddRange("key2", values2); multiDict.AddRange("key1", values1); CollectionAssert.AreEqual(expected, multiDict); }
public static void ShouldAddRangeAndRetrieveViaIterator() { var expected = values2.Concat(values1); var multiDict = new MultiValueDictionary <string, string>(); multiDict.AddRange("key2", values2); multiDict.AddRange("key1", values1); CollectionAssert.AreEqual(expected, multiDict); }
public static void ShouldContainKeyValue() { var multiDict = new MultiValueDictionary <string, string>(); multiDict.AddRange("key2", values2); multiDict.AddRange("key1", values1); multiDict.Add("key3", "海亀"); Assert.IsTrue(multiDict.Contains("key2", "dojpa4")); Assert.IsTrue(multiDict.Contains("key3", "海亀")); Assert.IsTrue(multiDict.Contains("key1", "test1")); }
public void AddRange_KeyWithValues() { sut.AddRange("a", new List <string>() { "1", "2" }); sut.Should().BeEquivalentTo( new KeyValuePair <string, IReadOnlyCollection <string> >("a", new List <string>() { "1", "2" })); }
public static void ShouldClear() { var multiDict = new MultiValueDictionary<string, string>(); multiDict.AddRange("key2", values2); multiDict.AddRange("key1", values1); multiDict.Add("key3", "海亀"); multiDict.Clear(); IReadOnlyCollection<string> values; Assert.IsFalse(multiDict.TryGetValue("海亀", out values)); Assert.IsFalse(multiDict.TryGetValue("key1", out values)); Assert.IsFalse(multiDict.TryGetValue("key2", out values)); Assert.IsFalse(multiDict.TryGetValue("key3", out values)); }
public static void ShouldContainValue() { var multiDict = new MultiValueDictionary<int, string>(); multiDict.AddRange(100, values2); multiDict.AddRange(-5, values1); multiDict.Add(1337, "海亀"); Assert.IsTrue(multiDict.ContainsValue("dojpa2")); Assert.IsTrue(multiDict.ContainsValue("海亀")); Assert.IsTrue(multiDict.ContainsValue("test4")); Assert.IsTrue(multiDict.Contains("海亀")); Assert.IsTrue(multiDict.Contains("test1")); Assert.IsTrue(multiDict.Contains("dojpa4")); }
public static void ShouldContainValue() { var multiDict = new MultiValueDictionary <int, string>(); multiDict.AddRange(100, values2); multiDict.AddRange(-5, values1); multiDict.Add(1337, "海亀"); Assert.IsTrue(multiDict.ContainsValue("dojpa2")); Assert.IsTrue(multiDict.ContainsValue("海亀")); Assert.IsTrue(multiDict.ContainsValue("test4")); Assert.IsTrue(multiDict.Contains("海亀")); Assert.IsTrue(multiDict.Contains("test1")); Assert.IsTrue(multiDict.Contains("dojpa4")); }
public static void ShouldClear() { var multiDict = new MultiValueDictionary <string, string>(); multiDict.AddRange("key2", values2); multiDict.AddRange("key1", values1); multiDict.Add("key3", "海亀"); multiDict.Clear(); IReadOnlyCollection <string> values; Assert.IsFalse(multiDict.TryGetValue("海亀", out values)); Assert.IsFalse(multiDict.TryGetValue("key1", out values)); Assert.IsFalse(multiDict.TryGetValue("key2", out values)); Assert.IsFalse(multiDict.TryGetValue("key3", out values)); }
private void Apply(SagaKeysChangedEvent ev) { keys.Clear(); foreach (var namePair in ev.Keys) { keys.AddRange(namePair.Key, namePair.Value); } }
public void AddRange(int size) { List<int> values = new List<int>(); for (int i = 0; i < size; i++) values.Add(i); foreach (var iteration in Benchmark.Iterations) { MultiValueDictionary<int, int> empty = new MultiValueDictionary<int, int>(); using (iteration.StartMeasurement()) for (int i = 0; i <= 20000; i++) empty.AddRange(i, values); } }
public async Task <MultiValueDictionary <NotificationBuffer, BufferedNotification> > SelectNotificationsForReleaseAsync(IReadRepository readRepository) { DateTimeOffset maxDate = Clock.Current.Now.Subtract(minTimeDelay); var notifications = readRepository.FindAll <BufferedNotification>() .Where(x => x.TimeQueued <= maxDate && x.Buffer.GovernorId == Id); var buffers = await notifications.Select(x => x.Buffer) .Include(readRepository, x => x.Notifications) .ToListAsync(readRepository); var res = new MultiValueDictionary <NotificationBuffer, BufferedNotification>(); foreach (var buffer in buffers.Distinct()) { res.AddRange(buffer, buffer.Notifications); } return(res); }
private void Clear() { commandTypePermissions = new Lazy <MultiValueDictionary <Type, Permission> >(() => { var dict = new MultiValueDictionary <Type, Permission>(); permissionTypeIndexer.EnsureIndexed(); foreach (var commandType in typeExplorer .GetAllTypes() .Where(x => x.IsClass && !x.IsAbstract && !x.IsGenericTypeDefinition) .Where(x => typeof(ICommandBase).IsAssignableFrom(x))) { dict.AddRange(commandType, GetCommandTypePermissions(commandType)); } return(dict); }); }
public void AddRange(int size) { List <int> values = new List <int>(); for (int i = 0; i < size; i++) { values.Add(i); } foreach (var iteration in Benchmark.Iterations) { MultiValueDictionary <int, int> empty = new MultiValueDictionary <int, int>(); using (iteration.StartMeasurement()) for (int i = 0; i <= 20000; i++) { empty.AddRange(i, values); } } }
public async Task <MultiValueDictionary <NotificationBuffer, BufferedNotification> > SelectNotificationsForReleaseAsync(IReadRepository readRepository) { DateTimeOffset maxDate = Clock.Current.Now.Subtract(minTimeDelay); var buffers = readRepository.FindAll <NotificationBuffer>() .Where(x => x.GovernorId == Id); var buffersWithNotifications = buffers.GroupJoin(readRepository.FindAll <BufferedNotification>(), notification => notification.Id, buffer => buffer.Buffer.Id, (buffer, notifications) => new { Buffer = buffer, Notifications = notifications }); var toRelease = await buffersWithNotifications .Where(x => x.Notifications.Any(y => y.TimeQueued <= maxDate)) .ToListAsync(); var res = new MultiValueDictionary <NotificationBuffer, BufferedNotification>(); foreach (var pair in toRelease) { res.AddRange(pair.Buffer, pair.Notifications); } return(res); }
public static Automaton NfaToDfa(Automaton nfa, out MultiValueDictionary <State, State> dfaStatesToNfa) { var dfa = new Automaton(); dfa.CaptureNames = nfa.CaptureNames; var dfaStartState = dfa.AddState(); dfa.StartState = dfaStartState; var nfaTransitionsToDfa = new MultiValueDictionary <Transition, Transition>(); var transitionClasses = new List <Transition>(); var mergeStates = new HashSet <State>(); dfaStatesToNfa = new MultiValueDictionary <State, State>(); dfaStatesToNfa.Add(dfaStartState, nfa.StartState); //不动点算法,不能使用 foreach! for (int i = 0; i < dfa.States.Count; ++i) { var curDfaState = dfa.States[i]; var nfaStates = dfaStatesToNfa[curDfaState]; foreach (var nfaState in nfaStates) { foreach (var outTransition in nfaState.Output) { if (!nfaTransitionsToDfa.Values.SelectMany(transitions => transitions).Contains(outTransition)) { transitionClasses.Add(outTransition); nfaTransitionsToDfa.Add(outTransition, outTransition); } } } foreach (var transitionClass in transitionClasses) { var nfaTransitions = nfaTransitionsToDfa[transitionClass]; foreach (var nfaTransition in nfaTransitions) { var state = nfaTransition.End; if (!mergeStates.Contains(state)) { mergeStates.Add(state); } } mergeStates.OrderBy(state => state); //mergeStates 是候选的一个 DFA 状态。在这之前,还需要判断:这个候选状态是否已经存在于 DFA 中了? //var isContained = dfaStatesToNfa.Values.Contains((IReadOnlyCollection<State>)mergeStates); State newDfaState = null; foreach (var dfaState in dfaStatesToNfa.Keys) { var prevNfaStates = dfaStatesToNfa[dfaState]; if (prevNfaStates.Count == mergeStates.Count && prevNfaStates.SequenceEqual(mergeStates)) { newDfaState = dfaState; break; } } if (newDfaState == null) { newDfaState = dfa.AddState(); dfaStatesToNfa.AddRange(newDfaState, mergeStates); newDfaState.IsFinalState = mergeStates.Any(state => state.IsFinalState); } var dfaTransition = dfa.AddTransition(curDfaState, newDfaState, transitionClass.TransitionType); dfaTransition.Capture = transitionClass.Capture; dfaTransition.Range = transitionClass.Range; dfaTransition.Index = transitionClass.Index; mergeStates.Clear(); } transitionClasses.Clear(); nfaTransitionsToDfa.Clear(); } return(dfa); }
public static void ShouldContainKey() { var multiDict = new MultiValueDictionary<string, string>(); multiDict.AddRange("key2", values2); multiDict.AddRange("key1", values1); multiDict.Add("key3", "海亀"); Assert.IsTrue(multiDict.ContainsKey("key1")); Assert.IsTrue(multiDict.ContainsKey("key3")); Assert.IsTrue(multiDict.ContainsKey("key2")); Assert.IsTrue(multiDict.Contains("key1")); Assert.IsTrue(multiDict.Contains("key2")); Assert.IsTrue(multiDict.Contains("key3")); }
public static Automaton NfaToDfa(Automaton nfa, out MultiValueDictionary<State, State> dfaStatesToNfa) { var dfa = new Automaton(); dfa.CaptureNames = nfa.CaptureNames; var dfaStartState = dfa.AddState(); dfa.StartState = dfaStartState; var nfaTransitionsToDfa = new MultiValueDictionary<Transition, Transition>(); var transitionClasses = new List<Transition>(); var mergeStates = new HashSet<State>(); dfaStatesToNfa = new MultiValueDictionary<State, State>(); dfaStatesToNfa.Add(dfaStartState, nfa.StartState); //不动点算法,不能使用 foreach! for(int i = 0; i < dfa.States.Count; ++i) { var curDfaState = dfa.States[i]; var nfaStates = dfaStatesToNfa[curDfaState]; foreach(var nfaState in nfaStates) { foreach(var outTransition in nfaState.Output) { if (!nfaTransitionsToDfa.Values.SelectMany(transitions => transitions).Contains(outTransition)) { transitionClasses.Add(outTransition); nfaTransitionsToDfa.Add(outTransition, outTransition); } } } foreach(var transitionClass in transitionClasses) { var nfaTransitions = nfaTransitionsToDfa[transitionClass]; foreach(var nfaTransition in nfaTransitions) { var state = nfaTransition.End; if (!mergeStates.Contains(state)) mergeStates.Add(state); } mergeStates.OrderBy(state => state); //mergeStates 是候选的一个 DFA 状态。在这之前,还需要判断:这个候选状态是否已经存在于 DFA 中了? //var isContained = dfaStatesToNfa.Values.Contains((IReadOnlyCollection<State>)mergeStates); State newDfaState = null; foreach(var dfaState in dfaStatesToNfa.Keys) { var prevNfaStates = dfaStatesToNfa[dfaState]; if (prevNfaStates.Count == mergeStates.Count && prevNfaStates.SequenceEqual(mergeStates)) { newDfaState = dfaState; break; } } if(newDfaState == null) { newDfaState = dfa.AddState(); dfaStatesToNfa.AddRange(newDfaState, mergeStates); newDfaState.IsFinalState = mergeStates.Any(state => state.IsFinalState); } var dfaTransition = dfa.AddTransition(curDfaState, newDfaState, transitionClass.TransitionType); dfaTransition.Capture = transitionClass.Capture; dfaTransition.Range = transitionClass.Range; dfaTransition.Index = transitionClass.Index; mergeStates.Clear(); } transitionClasses.Clear(); nfaTransitionsToDfa.Clear(); } return dfa; }
public void AddRange() => _dict.AddRange(_value, _values);