Example #1
0
        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));
                }
            }
        }
Example #2
0
        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));
        }
Example #3
0
        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));
        }