예제 #1
0
 /// <summary>
 ///  定义一个全局访问点,设置为静态方法
 ///  则在类的外部便无需实例化就可以调用该方法
 /// </summary>
 /// <returns>返回单例fieldsInstance</returns>
 public static Fields GetInstance()
 {
     //第一重 singleton == null
     if(fieldsInstance==null)
     {
         lock (syncObj)
         {
             //第二重 singleton == null
             if (fieldsInstance == null)
             {
                 fieldsInstance = new Fields();
             }
         }
     }
     return fieldsInstance;
 }
예제 #2
0
 /// <summary>
 /// checks that top-level statistics on Fields are the same
 /// </summary>
 public void AssertFieldStatisticsEquals(string info, Fields leftFields, Fields rightFields)
 {
     if (leftFields.Size != -1 && rightFields.Size != -1)
     {
         Assert.AreEqual(leftFields.Size, rightFields.Size, info);
     }
 }
예제 #3
0
        /// <summary>
        /// Fields api equivalency
        /// </summary>
        public void AssertFieldsEquals(string info, IndexReader leftReader, Fields leftFields, Fields rightFields, bool deep)
        {
            // Fields could be null if there are no postings,
            // but then it must be null for both
            if (leftFields == null || rightFields == null)
            {
                Assert.IsNull(leftFields, info);
                Assert.IsNull(rightFields, info);
                return;
            }
            AssertFieldStatisticsEquals(info, leftFields, rightFields);

            IEnumerator<string> leftEnum = leftFields.GetEnumerator();
            IEnumerator<string> rightEnum = rightFields.GetEnumerator();

            while (leftEnum.MoveNext())
            {
                string field = leftEnum.Current;
                rightEnum.MoveNext();
                Assert.AreEqual(field, rightEnum.Current, info);
                AssertTermsEquals(info, leftReader, leftFields.Terms(field), rightFields.Terms(field), deep);
            }
            Assert.IsFalse(rightEnum.MoveNext());
        }