public void TestHashCodeAndEquals() { int num = AtLeast(100); bool singleField = Random.NextBoolean(); IList <Term> terms = new List <Term>(); var uniqueTerms = new HashSet <Term>(); for (int i = 0; i < num; i++) { string field = "field" + (singleField ? "1" : Random.Next(100).ToString()); string @string = TestUtil.RandomRealisticUnicodeString(Random); terms.Add(new Term(field, @string)); uniqueTerms.Add(new Term(field, @string)); TermsFilter left = TermsFilter(singleField && Random.NextBoolean(), uniqueTerms); Collections.Shuffle(terms); TermsFilter right = TermsFilter(singleField && Random.NextBoolean(), terms); assertEquals(right, left); assertEquals(right.GetHashCode(), left.GetHashCode()); if (uniqueTerms.Count > 1) { IList <Term> asList = new List <Term>(uniqueTerms); asList.RemoveAt(0); TermsFilter notEqual = TermsFilter(singleField && Random.NextBoolean(), asList); assertFalse(left.Equals(notEqual)); assertFalse(right.Equals(notEqual)); } } }
public void TestSingleFieldEquals() { // Two terms with the same hash code //assertEquals("AaAaBB".GetHashCode(), "BBBBBB".GetHashCode()); TermsFilter left = TermsFilter(true, new Term("id", "AaAaAa"), new Term("id", "AaAaBB")); TermsFilter right = TermsFilter(true, new Term("id", "AaAaAa"), new Term("id", "BBBBBB")); assertFalse(left.Equals(right)); }
public void TestSingleFieldEquals() { //// Two terms with the same hash code //assertEquals("AaAaBB".GetHashCode(), "BBBBBB".GetHashCode()); //TermsFilter left = TermsFilter(true, new Term("id", "AaAaAa"), new Term("id", "AaAaBB")); //TermsFilter right = TermsFilter(true, new Term("id", "AaAaAa"), new Term("id", "BBBBBB")); //assertFalse(left.Equals(right)); // LUCENENET specific - since in .NET the hash code is dependent on the underlying // target framework, we need to generate a collision at runtime. GenerateHashCollision(out string theString, out string stringWithCollision); assertEquals(theString.GetHashCode(), stringWithCollision.GetHashCode()); TermsFilter left = TermsFilter(true, new Term("id", "AaAaAa"), new Term("id", theString)); TermsFilter right = TermsFilter(true, new Term("id", "AaAaAa"), new Term("id", stringWithCollision)); assertFalse(left.Equals(right)); }