public static void RemoveDuplicatedDisjuncts(ArrayList<ArrayList<QueryToken>> disjuncts) { IEqualityComparer<string> tokenComparer = new DefaultTokenComparer(DefaultTokenComparer.Options.ConvertUmlauts | DefaultTokenComparer.Options.RemoveDiacritics); ArrayList<int> disjunctsToRemove = new ArrayList<int>(); for (int i = 0; i < disjuncts.Count(); ++i) for (int j = i + 1; j < disjuncts.Count(); ++j) { if (ContainsTokenSubset(disjuncts.ElementAt(j), disjuncts.ElementAt(i))) { disjunctsToRemove.Add(i); break; } } disjunctsToRemove.Sort(); disjunctsToRemove.Reverse(); foreach (var toRemove in disjunctsToRemove.Distinct()) disjuncts.RemoveAt(toRemove); }
private static ArrayList<ArrayList<QueryToken>> GetSubsets(ArrayList<QueryToken> array) { ArrayList<ArrayList<QueryToken>> subsets = new ArrayList<ArrayList<QueryToken>>(); int count = 1 << array.Count; // 2^n for (int i = 1; i < count; i++) { ArrayList<QueryToken> subsetTerms = new ArrayList<QueryToken>(); BitArray bitArray = new BitArray(BitConverter.GetBytes(i)); for (int bit = 0; bit < bitArray.Count; bit++) { if (bitArray[bit]) subsetTerms.Add(array.ElementAt(bit)); } if (subsetTerms.Count > 0) subsets.Add(subsetTerms); Debug.Assert(subsetTerms.Count > 0, "QueryConverterUtils.GetSubsets: subsetTerms.Count shoudln't be 0!"); } return subsets; }
private static void RemoveDisjunctsContainingSubsets(ArrayList<ArrayList<QueryToken>> disjuncts, ArrayList<QueryToken> subset) { ArrayList<int> disjunctsToRemove = new ArrayList<int>(); for (int i = 0; i < disjuncts.Count(); ++i) { if (ContainsTokenSubset(subset, disjuncts.ElementAt(i))) disjunctsToRemove.Add(i); } disjunctsToRemove.Sort(); disjunctsToRemove.Reverse(); foreach (var toRemove in disjunctsToRemove.Distinct()) { disjuncts.RemoveAt(toRemove); } }
public void ElementAtShouldNotAllowIndexOutOfRange() { var target = new ArrayList(); var ex = Assert.Throws<ArgumentOutOfRangeException>( () => target.ElementAt( -1 ) ); Assert.Equal( "index", ex.ParamName ); ex = Assert.Throws<ArgumentOutOfRangeException>( () => target.ElementAt( 1 ) ); Assert.Equal( "index", ex.ParamName ); }