public static void TrimExcess_Test3() { HashSet<int> hashSet; int[] values; hashSet = new HashSet<int>(); AddItemsInt(hashSet, 197, out values); hashSet.Clear(); hashSet.TrimExcess(); hashSet.TrimExcess(); HashSetTestSupport<int>.VerifyHashSet(hashSet, new int[0], EqualityComparer<int>.Default); }
public static void TrimExcess_Test1() { HashSet<int> hashSet; hashSet = new HashSet<int>(); hashSet.TrimExcess(); HashSetTestSupport<int>.VerifyHashSet(hashSet, new int[0], EqualityComparer<int>.Default); }
public static void TrimExcess_Test4() { HashSet<int> hashSet; HashSet<int> hashSet2; int[] values; List<int> remainingValues; hashSet = new HashSet<int>(); AddItemsInt(hashSet, 198, out values); remainingValues = new List<int>(values); hashSet.Remove(0); remainingValues.Remove(0); hashSet.TrimExcess(); hashSet2 = new HashSet<int>(); AddItemsInt(hashSet2, 197); HashSetTestSupport<int>.VerifyHashSet(hashSet, remainingValues, EqualityComparer<int>.Default); }
public string RemoveInterjections(string text) { if (_interjectionList == null) { var interjectionList = new HashSet<string>(); foreach (var s in Configuration.Settings.Tools.Interjections.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries)) { if (s.Length > 0) { interjectionList.Add(s); var upper = s.ToUpper(); interjectionList.Add(upper); var lower = s.ToLower(); interjectionList.Add(lower); interjectionList.Add(lower.CapitalizeFirstLetter()); } } _interjectionList = new List<string>(interjectionList); interjectionList.Clear(); interjectionList.TrimExcess(); _interjectionList.Sort(CompareLength); } string oldText = text; bool doRepeat = true; while (doRepeat) { doRepeat = false; foreach (string s in _interjectionList) { if (text.Contains(s)) { var regex = new Regex("\\b" + Regex.Escape(s) + "\\b"); var match = regex.Match(text); if (match.Success) { int index = match.Index; string temp = text.Remove(index, s.Length); while (index == 0 && temp.StartsWith("... ", StringComparison.Ordinal)) { temp = temp.Remove(3, 1); } while (index == 3 && temp.StartsWith("<i>... ", StringComparison.Ordinal)) { temp = temp.Remove(6, 1); } while (index > 2 && (" \r\n".Contains(text.Substring(index - 1, 1))) && temp.Substring(index).StartsWith("... ", StringComparison.Ordinal)) { temp = temp.Remove(index + 3, 1); } if (temp.Remove(0, index) == " —" && temp.EndsWith("— —", StringComparison.Ordinal)) { temp = temp.Remove(temp.Length - 3); if (temp.EndsWith(Environment.NewLine + "—", StringComparison.Ordinal)) temp = temp.Remove(temp.Length - 1).TrimEnd(); } else if (temp.Remove(0, index) == " —" && temp.EndsWith("- —", StringComparison.Ordinal)) { temp = temp.Remove(temp.Length - 3); if (temp.EndsWith(Environment.NewLine + "-", StringComparison.Ordinal)) temp = temp.Remove(temp.Length - 1).TrimEnd(); } else if (index == 2 && temp.StartsWith("- —", StringComparison.Ordinal)) { temp = temp.Remove(2, 2); } else if (index == 2 && temp.StartsWith("- —", StringComparison.Ordinal)) { temp = temp.Remove(2, 1); } else if (index == 0 && temp.StartsWith(" —", StringComparison.Ordinal)) { temp = temp.Remove(0, 2); } else if (index == 0 && temp.StartsWith('—')) { temp = temp.Remove(0, 1); } else if (index > 3 && (temp.Substring(index - 2) == ". —" || temp.Substring(index - 2) == "! —" || temp.Substring(index - 2) == "? —")) { temp = temp.Remove(index - 2, 1).Replace(" ", " "); } string pre = string.Empty; if (index > 0) doRepeat = true; bool removeAfter = true; if (index > s.Length) { if (temp.Length > index - s.Length + 3) { int subIndex = index - s.Length + 1; string subTemp = temp.Substring(subIndex, 3); if (subTemp == ", !" || subTemp == ", ?" || subTemp == ", .") { temp = temp.Remove(subIndex, 2); removeAfter = false; } } if (removeAfter && temp.Length > index - s.Length + 2) { int subIndex = index - s.Length; string subTemp = temp.Substring(subIndex, 3); if (subTemp == ", !" || subTemp == ", ?" || subTemp == ", .") { temp = temp.Remove(subIndex, 2); removeAfter = false; } else { subTemp = temp.Substring(subIndex); if (subTemp.StartsWith(", -—", StringComparison.Ordinal)) { temp = temp.Remove(subIndex, 3); removeAfter = false; } else if (subTemp.StartsWith(", --", StringComparison.Ordinal)) { temp = temp.Remove(subIndex, 2); removeAfter = false; } else if (index > 2 && subTemp.StartsWith("- —", StringComparison.Ordinal)) { temp = temp.Remove(subIndex + 2, 2).Replace(" ", " "); removeAfter = false; } } } if (removeAfter && temp.Length > index - s.Length + 2) { int subIndex = index - s.Length + 1; string subTemp = temp.Substring(subIndex, 2); if (subTemp == "-!" || subTemp == "-?" || subTemp == "-.") { temp = temp.Remove(subIndex, 1); removeAfter = false; } subTemp = temp.Substring(subIndex); if (subTemp == " !" || subTemp == " ?" || subTemp == " .") { temp = temp.Remove(subIndex, 1); removeAfter = false; } } } if (index > 3 && index - 2 < temp.Length) { string subTemp = temp.Substring(index - 2); if (subTemp.StartsWith(", —", StringComparison.Ordinal) || subTemp.StartsWith(", —", StringComparison.Ordinal)) { temp = temp.Remove(index - 2, 1); index--; } if (subTemp.StartsWith("- ...", StringComparison.Ordinal)) { removeAfter = false; } } if (removeAfter) { if (index == 0) { if (temp.StartsWith('-')) temp = temp.Remove(0, 1).Trim(); } else if (index == 3 && temp.StartsWith("<i>-", StringComparison.Ordinal)) { temp = temp.Remove(3, 1); } else if (index > 0 && temp.Length > index) { pre = text.Substring(0, index); temp = temp.Remove(0, index); if (temp.StartsWith('-') && pre.EndsWith('-')) temp = temp.Remove(0, 1); if (temp.StartsWith('-') && pre.EndsWith("- ", StringComparison.Ordinal)) temp = temp.Remove(0, 1); } if (temp.StartsWith("...")) { pre = pre.Trim(); } else { while (temp.Length > 0 && " ,.?!".Contains(temp[0])) { temp = temp.Remove(0, 1); doRepeat = true; } } if (temp.Length > 0 && s[0].ToString(CultureInfo.InvariantCulture) != s[0].ToString(CultureInfo.InvariantCulture).ToLower()) { temp = char.ToUpper(temp[0]) + temp.Substring(1); doRepeat = true; } if (temp.StartsWith('-') && pre.EndsWith(' ')) temp = temp.Remove(0, 1); if (temp.StartsWith('—') && pre.EndsWith(',')) pre = pre.TrimEnd(',') + " "; temp = pre + temp; } if (temp.EndsWith(Environment.NewLine + "- ", StringComparison.Ordinal)) temp = temp.Remove(temp.Length - 2).TrimEnd(); var st = new StrippableText(temp); if (st.StrippedText.Length == 0) return string.Empty; if (temp.StartsWith('-') && !temp.Contains(Environment.NewLine) && text.Contains(Environment.NewLine)) temp = temp.Remove(0, 1).Trim(); text = temp; } } } } var lines = text.SplitToLines(); if (lines.Length == 2 && text != oldText) { if (lines[0] == "-" && lines[1] == "-") return string.Empty; if (lines[0].Length > 1 && lines[0][0] == '-' && lines[1].Trim() == "-") return lines[0].Remove(0, 1).Trim(); if (lines[1].Length > 1 && lines[1][0] == '-' && lines[0].Trim() == "-") return lines[1].Remove(0, 1).Trim(); if (lines[1].Length > 4 && lines[1].StartsWith("<i>-", StringComparison.Ordinal) && lines[0].Trim() == "-") return "<i>" + lines[1].Remove(0, 4).Trim(); if (lines[0].Length > 1 && lines[1] == "-" || lines[1] == "." || lines[1] == "!" || lines[1] == "?") { if (lines[0].StartsWith('-') && oldText.Contains(Environment.NewLine + "-")) lines[0] = lines[0].Remove(0, 1); return lines[0].Trim(); } var noTags0 = HtmlUtil.RemoveHtmlTags(lines[0]).Trim(); var noTags1 = HtmlUtil.RemoveHtmlTags(lines[1]).Trim(); if (noTags0 == "-") { if (noTags1 == noTags0) return string.Empty; if (lines[1].Length > 1 && lines[1][0] == '-') return lines[1].Remove(0, 1).Trim(); if (lines[1].Length > 4 && lines[1].StartsWith("<i>-", StringComparison.Ordinal)) return "<i>" + lines[1].Remove(0, 4).Trim(); return lines[1]; } if (noTags1 == "-") { if (lines[0].Length > 1 && lines[0][0] == '-') return lines[0].Remove(0, 1).Trim(); if (lines[0].Length > 4 && lines[0].StartsWith("<i>-", StringComparison.Ordinal)) { if (!lines[0].Contains("</i>") && lines[1].Contains("</i>")) return "<i>" + lines[0].Remove(0, 4).Trim() + "</i>"; return "<i>" + lines[0].Remove(0, 4).Trim(); } return lines[0]; } } if (lines.Length == 2) { if (string.IsNullOrWhiteSpace(lines[1].Replace(".", string.Empty).Replace("?", string.Empty).Replace("!", string.Empty).Replace("-", string.Empty).Replace("—", string.Empty))) { text = lines[0]; lines = text.SplitToLines(); } else if (string.IsNullOrWhiteSpace(lines[0].Replace(".", string.Empty).Replace("?", string.Empty).Replace("!", string.Empty).Replace("-", string.Empty).Replace("—", string.Empty))) { text = lines[1]; lines = text.SplitToLines(); } } if (lines.Length == 1 && text != oldText && Utilities.GetNumberOfLines(oldText) == 2) { if ((oldText.StartsWith('-') || oldText.StartsWith("<i>-", StringComparison.Ordinal)) && (oldText.Contains("." + Environment.NewLine) || oldText.Contains(".</i>" + Environment.NewLine) || oldText.Contains("!" + Environment.NewLine) || oldText.Contains("!</i>" + Environment.NewLine) || oldText.Contains("?" + Environment.NewLine) || oldText.Contains("?</i>" + Environment.NewLine))) { if (text.StartsWith("<i>-", StringComparison.Ordinal)) text = "<i>" + text.Remove(0, 4).TrimStart(); else text = text.TrimStart('-').TrimStart(); } else if ((oldText.Contains(Environment.NewLine + "-") || oldText.Contains(Environment.NewLine + "<i>-")) && (oldText.Contains("." + Environment.NewLine) || oldText.Contains(".</i>" + Environment.NewLine) || oldText.Contains("!" + Environment.NewLine) || oldText.Contains("!</i>" + Environment.NewLine) || oldText.Contains("?" + Environment.NewLine) || oldText.Contains("?</i>" + Environment.NewLine))) { if (text.StartsWith("<i>-", StringComparison.Ordinal)) text = "<i>" + text.Remove(0, 4).TrimStart(); else text = text.TrimStart('-').TrimStart(); } } if (oldText != text) { text = text.Replace(Environment.NewLine + "<i>" + Environment.NewLine, Environment.NewLine + "<i>"); text = text.Replace(Environment.NewLine + "</i>" + Environment.NewLine, "</i>" + Environment.NewLine); if (text.StartsWith("<i>" + Environment.NewLine)) { text = text.Remove(3, Environment.NewLine.Length); } if (text.EndsWith(Environment.NewLine + "</i>")) { text = text.Remove(text.Length - (Environment.NewLine.Length + 4), Environment.NewLine.Length); } text = text.Replace(Environment.NewLine + "</i>" + Environment.NewLine, "</i>" + Environment.NewLine); } return text; }
public static void TrimExcess_Test6() { HashSet<int> hashSet; HashSet<int> hashSet2; int[] values; hashSet = new HashSet<int>(); AddItemsInt(hashSet, 17519); hashSet.Clear(); AddItemsInt(hashSet, 8419, out values); hashSet.TrimExcess(); hashSet2 = new HashSet<int>(); AddItemsInt(hashSet2, 8419); HashSetTestSupport<int>.VerifyHashSet(hashSet, values, EqualityComparer<int>.Default); }
public void EnumerableBreakAfterTrimExcess() { var set = new HashSet<int>(Enumerable.Range(0, 10)); foreach (var item in set) { set.TrimExcess(); } }
public void ImmutabilityAfterTrimExcessTest() { var set = new HashSet<int>(Enumerable.Range(0, 100)); set.TrimExcess(); Assert.AreEqual(set.Count, 100); for (int i = 0; i < 100; i++) { Assert.IsTrue(set.Contains(i)); } }
public void EmptySetTrimExcessTest() { var set=new HashSet<int>(); set.TrimExcess(); Assert.AreEqual(set.Count, 0); }
static CollectionMetaToken() { var speciallySerializedTypes = new [] { typeof(List<>), typeof(ReadOnlyCollection<>), typeof(Dictionary<,>), typeof(HashSet<>), typeof(Queue<>), typeof(Stack<>), typeof(BlockingCollection<>), typeof(Hashtable) }; SpeciallySerializedCollections = new HashSet<Type>(speciallySerializedTypes); SpeciallySerializedCollections.TrimExcess(); SpeciallySerializedCollectionsAQNs = new HashSet<string>(speciallySerializedTypes.Select(x => x.AssemblyQualifiedName)); SpeciallySerializedCollectionsAQNs.TrimExcess(); }
protected static ICollection<Symbol> ConstructFreeVariables(SCode body, Symbol [] formals) { HashSet<Symbol> freeVariableSet = new HashSet<Symbol> (); body.CollectFreeVariables (freeVariableSet); foreach (Symbol formal in formals) freeVariableSet.Remove (formal); freeVariableSet.TrimExcess (); return freeVariableSet; }
private void UpdateChildren( DataGridContext dataGridContext, TableViewColumnVirtualizationManager columnVirtualizationManager, VirtualizingCellCollection parentRowCells ) { //Prevent reentrance if( m_parentRowCells.AlreadyUpdating ) return; m_parentRowCells.AlreadyUpdating = true; if( dataGridContext == null ) throw new DataGridInternalException( "DataGridContext is null for FixedCellPanel" ); if( columnVirtualizationManager == null ) throw new DataGridInternalException( "ColumnVirtualizationManager is null for FixedCellPanel" ); if( parentRowCells == null ) return; this.ClearPermanentScrollingFieldNames(); List<string> currentFieldsName = new List<string>(); currentFieldsName.AddRange( columnVirtualizationManager.FixedFieldNames ); currentFieldsName.AddRange( columnVirtualizationManager.ScrollingFieldNames ); HashSet<Cell> unusedCells = new HashSet<Cell>( parentRowCells.BindedCells ); //Idenfity the binded cells that aren't needed anymore. foreach( string fieldName in currentFieldsName ) { ColumnBase column = dataGridContext.Columns[ fieldName ]; Cell cell; if( parentRowCells.TryGetCell( column, out cell ) ) { //Certain non recyclable cells like StatCells need their content binding to be updated when they become (or stay) in view. cell.AddContentBinding(); unusedCells.Remove( cell ); } } currentFieldsName.Clear(); currentFieldsName.TrimExcess(); //Release the unused binded cells now in order to minimize the number of cell's creation. foreach( Cell cell in unusedCells ) { bool release = this.CanReleaseCell( cell ); //We move the unused cell into the scrolling panel since there is more chance it will be reused there in the future. this.MoveCellToScrollingPanel( cell, release ); if( release ) { parentRowCells.Release( cell ); } //Since the cell cannot be released, it will not be collapsed. We must keep the field name in order to let the scrolling sub-panel measure and arrange the cell out of view. else { //Certain non recyclable cells like StatCells needs their content binding to be removed when they become out of view. cell.RemoveContentBinding(); this.AddPermanentScrollingFieldNames( cell.FieldName ); } } unusedCells.Clear(); unusedCells.TrimExcess(); //Add the missing cells to the fixed region. foreach( string fieldName in columnVirtualizationManager.FixedFieldNames ) { //The cell is created if it is missing. Cell cell = parentRowCells[ fieldName ]; //Make sure the cell is in the appropriate panel. this.MoveCellToFixedPanel( cell ); } //Add the missing cells to the scrolling region. foreach( string fieldName in columnVirtualizationManager.ScrollingFieldNames ) { //The cell is created if it is missing. Cell cell = parentRowCells[ fieldName ]; //Make sure the cell is in the appropriate panel. this.MoveCellToScrollingPanel( cell ); } if( m_clearUnusedCellsDispatcherOperation == null ) { m_clearUnusedCellsDispatcherOperation = this.Dispatcher.BeginInvoke( new Action( this.ClearUnusedCells ), DispatcherPriority.ApplicationIdle ); } m_fixedPanel.InvalidateMeasure(); m_scrollingCellsDecorator.InvalidateMeasure(); m_scrollingPanel.InvalidateMeasure(); m_parentRowCells.AlreadyUpdating = false; }
public void TrimExcess() { var set = new HashSet<int>(); foreach (int item in Enumerable.Range(100, 1000)) set.Add(item); Assert.AreEqual(1000, set.Count); set.TrimExcess(); Assert.AreEqual(1000, set.Count); foreach (int item in Enumerable.Range(100, 1000)) Assert.IsTrue(set.Contains(item)); foreach (int item in Enumerable.Range(100, 1000).Where(i => i % 2 == 0)) set.Remove(item); set.TrimExcess(); Assert.AreEqual(500, set.Count); Assert.IsTrue(set.All(i => i % 2 == 1)); }