You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucenenet.apache.org by sy...@apache.org on 2016/08/12 13:25:39 UTC

[26/32] lucenenet git commit: Ported Core.Codecs.Perfield.TestPerFieldPostingsFormat2 tests and removed [Test] attribute from 2 non-tests.

Ported Core.Codecs.Perfield.TestPerFieldPostingsFormat2 tests and removed [Test] attribute from 2 non-tests.


Project: http://git-wip-us.apache.org/repos/asf/lucenenet/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucenenet/commit/4d0877f2
Tree: http://git-wip-us.apache.org/repos/asf/lucenenet/tree/4d0877f2
Diff: http://git-wip-us.apache.org/repos/asf/lucenenet/diff/4d0877f2

Branch: refs/heads/master
Commit: 4d0877f25d0158a5299ffa83b67c1e3b03b2e600
Parents: 1d8582f
Author: Shad Storhaug <sh...@shadstorhaug.com>
Authored: Mon Aug 8 01:45:50 2016 +0700
Committer: Shad Storhaug <sh...@shadstorhaug.com>
Committed: Mon Aug 8 01:45:50 2016 +0700

----------------------------------------------------------------------
 .../Codecs/MockSep/MockSepPostingsFormat.cs     | 136 +++++++
 .../Codecs/MockSep/MockSingleIntFactory.cs      |  35 ++
 .../Codecs/MockSep/MockSingleIntIndexInput.cs   | 118 ++++++
 .../Codecs/MockSep/MockSingleIntIndexOutput.cs  | 102 +++++
 .../Lucene.Net.TestFramework.csproj             |   8 +
 src/Lucene.Net.Tests/Lucene.Net.Tests.csproj    |   4 +
 .../Perfield/TestPerFieldPostingsFormat2.cs     | 397 +++++++++----------
 .../core/Index/TestCrashCausesCorruptIndex.cs   |   1 -
 8 files changed, 597 insertions(+), 204 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4d0877f2/src/Lucene.Net.TestFramework/Codecs/MockSep/MockSepPostingsFormat.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.TestFramework/Codecs/MockSep/MockSepPostingsFormat.cs b/src/Lucene.Net.TestFramework/Codecs/MockSep/MockSepPostingsFormat.cs
new file mode 100644
index 0000000..859635c
--- /dev/null
+++ b/src/Lucene.Net.TestFramework/Codecs/MockSep/MockSepPostingsFormat.cs
@@ -0,0 +1,136 @@
+\ufeffusing Lucene.Net.Codecs.BlockTerms;
+using Lucene.Net.Codecs.Sep;
+using Lucene.Net.Index;
+using Lucene.Net.Util;
+
+namespace Lucene.Net.Codecs.MockSep
+{
+    /*
+     * Licensed to the Apache Software Foundation (ASF) under one or more
+     * contributor license agreements.  See the NOTICE file distributed with
+     * this work for additional information regarding copyright ownership.
+     * The ASF licenses this file to You under the Apache License, Version 2.0
+     * (the "License"); you may not use this file except in compliance with
+     * the License.  You may obtain a copy of the License at
+     *
+     *     http://www.apache.org/licenses/LICENSE-2.0
+     *
+     * Unless required by applicable law or agreed to in writing, software
+     * distributed under the License is distributed on an "AS IS" BASIS,
+     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     * See the License for the specific language governing permissions and
+     * limitations under the License.
+     */
+
+    /// <summary>
+    /// A silly codec that simply writes each file separately as
+    /// single vInts.Don't use this (performance will be poor)!
+    /// This is here just to test the core sep codec
+    /// classes.
+    /// </summary>
+    public sealed class MockSepPostingsFormat : PostingsFormat
+    {
+        public MockSepPostingsFormat()
+            : base("MockSep")
+        {
+        }
+
+        public override FieldsConsumer FieldsConsumer(SegmentWriteState state)
+        {
+
+            PostingsWriterBase postingsWriter = new SepPostingsWriter(state, new MockSingleIntFactory());
+
+            bool success = false;
+            TermsIndexWriterBase indexWriter;
+            try
+            {
+                indexWriter = new FixedGapTermsIndexWriter(state);
+                success = true;
+            }
+            finally
+            {
+                if (!success)
+                {
+                    postingsWriter.Dispose();
+                }
+            }
+
+            success = false;
+            try
+            {
+                FieldsConsumer ret = new BlockTermsWriter(indexWriter, state, postingsWriter);
+                success = true;
+                return ret;
+            }
+            finally
+            {
+                if (!success)
+                {
+                    try
+                    {
+                        postingsWriter.Dispose();
+                    }
+                    finally
+                    {
+                        indexWriter.Dispose();
+                    }
+                }
+            }
+        }
+
+        public override FieldsProducer FieldsProducer(SegmentReadState state)
+        {
+
+            PostingsReaderBase postingsReader = new SepPostingsReader(state.Directory, state.FieldInfos, state.SegmentInfo,
+                state.Context, new MockSingleIntFactory(), state.SegmentSuffix);
+
+            TermsIndexReaderBase indexReader;
+            bool success = false;
+            try
+            {
+                indexReader = new FixedGapTermsIndexReader(state.Directory,
+                                                                 state.FieldInfos,
+                                                                 state.SegmentInfo.Name,
+                                                                 state.TermsIndexDivisor,
+                                                                 BytesRef.UTF8SortedAsUnicodeComparer,
+                                                                 state.SegmentSuffix, state.Context);
+                success = true;
+            }
+            finally
+            {
+                if (!success)
+                {
+                    postingsReader.Dispose();
+                }
+            }
+
+            success = false;
+            try
+            {
+                FieldsProducer ret = new BlockTermsReader(indexReader,
+                                                          state.Directory,
+                                                          state.FieldInfos,
+                                                          state.SegmentInfo,
+                                                          postingsReader,
+                                                          state.Context,
+                                                          state.SegmentSuffix);
+                success = true;
+                return ret;
+            }
+            finally
+            {
+                if (!success)
+                {
+                    try
+                    {
+                        postingsReader.Dispose();
+                    }
+                    finally
+                    {
+                        indexReader.Dispose();
+                    }
+                }
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4d0877f2/src/Lucene.Net.TestFramework/Codecs/MockSep/MockSingleIntFactory.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.TestFramework/Codecs/MockSep/MockSingleIntFactory.cs b/src/Lucene.Net.TestFramework/Codecs/MockSep/MockSingleIntFactory.cs
new file mode 100644
index 0000000..853202d
--- /dev/null
+++ b/src/Lucene.Net.TestFramework/Codecs/MockSep/MockSingleIntFactory.cs
@@ -0,0 +1,35 @@
+\ufeffusing Lucene.Net.Codecs.Sep;
+using Lucene.Net.Store;
+
+namespace Lucene.Net.Codecs.MockSep
+{
+    /*
+     * Licensed to the Apache Software Foundation (ASF) under one or more
+     * contributor license agreements.  See the NOTICE file distributed with
+     * this work for additional information regarding copyright ownership.
+     * The ASF licenses this file to You under the Apache License, Version 2.0
+     * (the "License"); you may not use this file except in compliance with
+     * the License.  You may obtain a copy of the License at
+     *
+     *     http://www.apache.org/licenses/LICENSE-2.0
+     *
+     * Unless required by applicable law or agreed to in writing, software
+     * distributed under the License is distributed on an "AS IS" BASIS,
+     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     * See the License for the specific language governing permissions and
+     * limitations under the License.
+     */
+
+    public class MockSingleIntFactory : IntStreamFactory
+    {
+        public override IntIndexInput OpenInput(Directory dir, string fileName, IOContext context)
+        {
+            return new MockSingleIntIndexInput(dir, fileName, context);
+        }
+
+        public override IntIndexOutput CreateOutput(Directory dir, string fileName, IOContext context)
+        {
+            return new MockSingleIntIndexOutput(dir, fileName, context);
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4d0877f2/src/Lucene.Net.TestFramework/Codecs/MockSep/MockSingleIntIndexInput.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.TestFramework/Codecs/MockSep/MockSingleIntIndexInput.cs b/src/Lucene.Net.TestFramework/Codecs/MockSep/MockSingleIntIndexInput.cs
new file mode 100644
index 0000000..6d28cc5
--- /dev/null
+++ b/src/Lucene.Net.TestFramework/Codecs/MockSep/MockSingleIntIndexInput.cs
@@ -0,0 +1,118 @@
+\ufeffusing Lucene.Net.Codecs.Sep;
+using Lucene.Net.Store;
+
+namespace Lucene.Net.Codecs.MockSep
+{
+    /*
+     * Licensed to the Apache Software Foundation (ASF) under one or more
+     * contributor license agreements.  See the NOTICE file distributed with
+     * this work for additional information regarding copyright ownership.
+     * The ASF licenses this file to You under the Apache License, Version 2.0
+     * (the "License"); you may not use this file except in compliance with
+     * the License.  You may obtain a copy of the License at
+     *
+     *     http://www.apache.org/licenses/LICENSE-2.0
+     *
+     * Unless required by applicable law or agreed to in writing, software
+     * distributed under the License is distributed on an "AS IS" BASIS,
+     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     * See the License for the specific language governing permissions and
+     * limitations under the License.
+     */
+
+    /// <summary>
+    /// Reads IndexInputs written with {@link
+    /// MockSingleIntIndexOutput}.  NOTE: this class is just for
+    /// demonstration purposes(it is a very slow way to read a
+    /// block of ints).
+    /// 
+    /// @lucene.experimental
+    /// </summary>
+    public class MockSingleIntIndexInput : IntIndexInput
+    {
+        private readonly IndexInput @in;
+
+        public MockSingleIntIndexInput(Directory dir, string fileName, IOContext context)
+        {
+            @in = dir.OpenInput(fileName, context);
+            CodecUtil.CheckHeader(@in, MockSingleIntIndexOutput.CODEC,
+                          MockSingleIntIndexOutput.VERSION_START,
+                          MockSingleIntIndexOutput.VERSION_START);
+        }
+
+        public override IntIndexInputReader Reader()
+        {
+            return new MockReader((IndexInput)@in.Clone());
+        }
+
+        public override void Dispose()
+        {
+            @in.Dispose();
+        }
+
+        /**
+         * Just reads a vInt directly from the file.
+         */
+        public class MockReader : IntIndexInputReader
+        {
+            // clone:
+            internal readonly IndexInput @in;
+
+            public MockReader(IndexInput @in)
+            {
+                this.@in = @in;
+            }
+
+            /** Reads next single int */
+            public override int Next()
+            {
+                //System.out.println("msii.next() fp=" + in.getFilePointer() + " vs " + in.length());
+                return @in.ReadVInt();
+            }
+        }
+
+        internal class MockSingleIntIndexInputIndex : IntIndexInputIndex
+        {
+            private long fp;
+
+            public override void Read(DataInput indexIn, bool absolute)
+            {
+                if (absolute)
+                {
+                    fp = indexIn.ReadVLong();
+                }
+                else
+                {
+                    fp += indexIn.ReadVLong();
+                }
+            }
+
+            public override void CopyFrom(IntIndexInputIndex other)
+            {
+                fp = ((MockSingleIntIndexInputIndex)other).fp;
+            }
+
+            public override void Seek(IntIndexInputReader other)
+            {
+                ((MockReader)other).@in.Seek(fp);
+            }
+
+            public override string ToString()
+            {
+                return fp.ToString();
+            }
+
+
+            public override IntIndexInputIndex Clone()
+            {
+                MockSingleIntIndexInputIndex other = new MockSingleIntIndexInputIndex();
+                other.fp = fp;
+                return other;
+            }
+        }
+        public override IntIndexInputIndex Index()
+        {
+            return new MockSingleIntIndexInputIndex();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4d0877f2/src/Lucene.Net.TestFramework/Codecs/MockSep/MockSingleIntIndexOutput.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.TestFramework/Codecs/MockSep/MockSingleIntIndexOutput.cs b/src/Lucene.Net.TestFramework/Codecs/MockSep/MockSingleIntIndexOutput.cs
new file mode 100644
index 0000000..5e6b7df
--- /dev/null
+++ b/src/Lucene.Net.TestFramework/Codecs/MockSep/MockSingleIntIndexOutput.cs
@@ -0,0 +1,102 @@
+\ufeffusing Lucene.Net.Codecs.Sep;
+using Lucene.Net.Store;
+using Lucene.Net.Util;
+
+namespace Lucene.Net.Codecs.MockSep
+{
+    /// <summary>
+    /// Writes ints directly to the file (not in blocks) as
+    /// vInt.
+    /// 
+    /// @lucene.experimental
+    /// </summary>
+    public class MockSingleIntIndexOutput : IntIndexOutput
+    {
+        private readonly IndexOutput @out;
+        internal const string CODEC = "SINGLE_INTS";
+        internal const int VERSION_START = 0;
+        internal const int VERSION_CURRENT = VERSION_START;
+
+        public MockSingleIntIndexOutput(Directory dir, string fileName, IOContext context)
+        {
+            @out = dir.CreateOutput(fileName, context);
+            bool success = false;
+            try
+            {
+                CodecUtil.WriteHeader(@out, CODEC, VERSION_CURRENT);
+                success = true;
+            }
+            finally
+            {
+                if (!success)
+                {
+                    IOUtils.CloseWhileHandlingException(@out);
+                }
+            }
+        }
+
+        public override void Write(int v)
+        {
+            @out.WriteVInt(v);
+        }
+
+        public override IntIndexOutputIndex Index()
+        {
+            return new MockSingleIntIndexOutputIndex(this);
+        }
+
+        public override void Dispose()
+        {
+            @out.Dispose();
+        }
+
+        public override string ToString()
+        {
+            return "MockSingleIntIndexOutput fp=" + @out.FilePointer;
+        }
+
+        private class MockSingleIntIndexOutputIndex : IntIndexOutputIndex
+        {
+            internal long fp;
+            internal long lastFP;
+            private readonly MockSingleIntIndexOutput outerClass;
+
+            public MockSingleIntIndexOutputIndex(MockSingleIntIndexOutput outerClass)
+            {
+                this.outerClass = outerClass;
+            }
+
+            public override void Mark()
+            {
+                fp = outerClass.@out.FilePointer;
+            }
+
+            public override void CopyFrom(IntIndexOutputIndex other, bool copyLast)
+            {
+                fp = ((MockSingleIntIndexOutputIndex)other).fp;
+                if (copyLast)
+                {
+                    lastFP = ((MockSingleIntIndexOutputIndex)other).fp;
+                }
+            }
+
+            public override void Write(DataOutput indexOut, bool absolute)
+            {
+                if (absolute)
+                {
+                    indexOut.WriteVLong(fp);
+                }
+                else
+                {
+                    indexOut.WriteVLong(fp - lastFP);
+                }
+                lastFP = fp;
+            }
+
+            public override string ToString()
+            {
+                return fp.ToString();
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4d0877f2/src/Lucene.Net.TestFramework/Lucene.Net.TestFramework.csproj
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.TestFramework/Lucene.Net.TestFramework.csproj b/src/Lucene.Net.TestFramework/Lucene.Net.TestFramework.csproj
index a4390b4..972bcce 100644
--- a/src/Lucene.Net.TestFramework/Lucene.Net.TestFramework.csproj
+++ b/src/Lucene.Net.TestFramework/Lucene.Net.TestFramework.csproj
@@ -248,6 +248,10 @@
     <Compile Include="Codecs\MissingOrdRemapper.cs">
       <SubType>Code</SubType>
     </Compile>
+    <Compile Include="Codecs\MockSep\MockSepPostingsFormat.cs" />
+    <Compile Include="Codecs\MockSep\MockSingleIntFactory.cs" />
+    <Compile Include="Codecs\MockSep\MockSingleIntIndexInput.cs" />
+    <Compile Include="Codecs\MockSep\MockSingleIntIndexOutput.cs" />
     <Compile Include="Codecs\ramonly\RAMOnlyPostingsFormat.cs">
       <SubType>Code</SubType>
     </Compile>
@@ -468,6 +472,10 @@
     <Compile Include="Util\VirtualMethod.cs" />
   </ItemGroup>
   <ItemGroup>
+    <ProjectReference Include="..\Lucene.Net.Codecs\Lucene.Net.Codecs.csproj">
+      <Project>{3f79b6d4-4359-4f83-b64f-07f4f6262425}</Project>
+      <Name>Lucene.Net.Codecs</Name>
+    </ProjectReference>
     <ProjectReference Include="..\Lucene.Net.Core\Lucene.Net.csproj">
       <Project>{5d4ad9be-1ffb-41ab-9943-25737971bf57}</Project>
       <Name>Lucene.Net</Name>

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4d0877f2/src/Lucene.Net.Tests/Lucene.Net.Tests.csproj
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/Lucene.Net.Tests.csproj b/src/Lucene.Net.Tests/Lucene.Net.Tests.csproj
index c4982ab..de4bb24 100644
--- a/src/Lucene.Net.Tests/Lucene.Net.Tests.csproj
+++ b/src/Lucene.Net.Tests/Lucene.Net.Tests.csproj
@@ -59,6 +59,10 @@
     <None Include="packages.config" />
   </ItemGroup>
   <ItemGroup>
+    <ProjectReference Include="..\Lucene.Net.Codecs\Lucene.Net.Codecs.csproj">
+      <Project>{3f79b6d4-4359-4f83-b64f-07f4f6262425}</Project>
+      <Name>Lucene.Net.Codecs</Name>
+    </ProjectReference>
     <ProjectReference Include="..\Lucene.Net.Facet\Lucene.Net.Facet.csproj">
       <Project>{48f7884a-9454-4e88-8413-9d35992cb440}</Project>
       <Name>Lucene.Net.Facet</Name>

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4d0877f2/src/Lucene.Net.Tests/core/Codecs/Perfield/TestPerFieldPostingsFormat2.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Codecs/Perfield/TestPerFieldPostingsFormat2.cs b/src/Lucene.Net.Tests/core/Codecs/Perfield/TestPerFieldPostingsFormat2.cs
index 0af2059..3d7f37d 100644
--- a/src/Lucene.Net.Tests/core/Codecs/Perfield/TestPerFieldPostingsFormat2.cs
+++ b/src/Lucene.Net.Tests/core/Codecs/Perfield/TestPerFieldPostingsFormat2.cs
@@ -1,51 +1,37 @@
 using System;
 using Lucene.Net.Documents;
+using Lucene.Net.Codecs.Lucene41;
+using Lucene.Net.Codecs.Lucene46;
+using Lucene.Net.Codecs.SimpleText;
+using Lucene.Net.Codecs.Pulsing;
+using Lucene.Net.Codecs.MockSep;
+using Lucene.Net.Util;
+using Lucene.Net.Index;
+using Lucene.Net.Search;
+using Lucene.Net.Analysis;
+using Lucene.Net.Randomized.Generators;
+using NUnit.Framework;
+using Lucene.Net.Store;
 
 namespace Lucene.Net.Codecs.Perfield
 {
-    using Lucene.Net.Randomized.Generators;
-    using NUnit.Framework;
-    using Directory = Lucene.Net.Store.Directory;
-    using DirectoryReader = Lucene.Net.Index.DirectoryReader;
-
-    /*using MockSepPostingsFormat = Lucene.Net.Codecs.mocksep.MockSepPostingsFormat;
-        using Pulsing41PostingsFormat = Lucene.Net.Codecs.pulsing.Pulsing41PostingsFormat;
-        using SimpleTextPostingsFormat = Lucene.Net.Codecs.simpletext.SimpleTextPostingsFormat;*/
-
-    using Document = Documents.Document;
-    using Field = Field;
-    using FieldType = FieldType;
-    using IndexReader = Lucene.Net.Index.IndexReader;
-    using IndexSearcher = Lucene.Net.Search.IndexSearcher;
-    using IndexWriter = Lucene.Net.Index.IndexWriter;
-    using IndexWriterConfig = Lucene.Net.Index.IndexWriterConfig;
-    using LogDocMergePolicy = Lucene.Net.Index.LogDocMergePolicy;
-    using LuceneTestCase = Lucene.Net.Util.LuceneTestCase;
-
     /*
-         * Licensed to the Apache Software Foundation (ASF) under one or more
-         * contributor license agreements.  See the NOTICE file distributed with
-         * this work for additional information regarding copyright ownership.
-         * The ASF licenses this file to You under the Apache License, Version 2.0
-         * (the "License"); you may not use this file except in compliance with
-         * the License.  You may obtain a copy of the License at
-         *
-         *     http://www.apache.org/licenses/LICENSE-2.0
-         *
-         * Unless required by applicable law or agreed to in writing, software
-         * distributed under the License is distributed on an "AS IS" BASIS,
-         * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-         * See the License for the specific language governing permissions and
-         * limitations under the License.
-         */
-
-    using MockAnalyzer = Lucene.Net.Analysis.MockAnalyzer;
-    using RandomIndexWriter = Lucene.Net.Index.RandomIndexWriter;
-    using Term = Lucene.Net.Index.Term;
-    using TermQuery = Lucene.Net.Search.TermQuery;
-    using TestUtil = Lucene.Net.Util.TestUtil;
-    using TextField = TextField;
-    using TopDocs = Lucene.Net.Search.TopDocs;
+    * Licensed to the Apache Software Foundation (ASF) under one or more
+    * contributor license agreements.  See the NOTICE file distributed with
+    * this work for additional information regarding copyright ownership.
+    * The ASF licenses this file to You under the Apache License, Version 2.0
+    * (the "License"); you may not use this file except in compliance with
+    * the License.  You may obtain a copy of the License at
+    *
+    *     http://www.apache.org/licenses/LICENSE-2.0
+    *
+    * Unless required by applicable law or agreed to in writing, software
+    * distributed under the License is distributed on an "AS IS" BASIS,
+    * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    * See the License for the specific language governing permissions and
+    * limitations under the License.
+    */
+    using Document = Documents.Document;
 
     //TODO: would be better in this test to pull termsenums and instanceof or something?
     // this way we can verify PFPF is doing the right thing.
@@ -95,103 +81,108 @@ namespace Lucene.Net.Codecs.Perfield
             }
         }
 
-        /*
-         * Test that heterogeneous index segments are merge successfully
-         */
-        /*public virtual void TestMergeUnusedPerFieldCodec()
+        /// <summary>
+        /// Test that heterogeneous index segments are merge successfully
+        /// </summary>
+        [Test]
+        public virtual void TestMergeUnusedPerFieldCodec()
         {
-          Directory dir = NewDirectory();
-          IndexWriterConfig iwconf = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetOpenMode(IndexWriterConfig.OpenMode_e.CREATE).SetCodec(new MockCodec());
-          IndexWriter writer = NewWriter(dir, iwconf);
-          AddDocs(writer, 10);
-          writer.Commit();
-          AddDocs3(writer, 10);
-          writer.Commit();
-          AddDocs2(writer, 10);
-          writer.Commit();
-          Assert.AreEqual(30, writer.MaxDoc());
-          TestUtil.CheckIndex(dir);
-          writer.ForceMerge(1);
-          Assert.AreEqual(30, writer.MaxDoc());
-          writer.Dispose();
-          dir.Dispose();
-        }*/
+            Directory dir = NewDirectory();
+            IndexWriterConfig iwconf = NewIndexWriterConfig(TEST_VERSION_CURRENT, 
+                new MockAnalyzer(Random())).SetOpenMode(IndexWriterConfig.OpenMode_e.CREATE).SetCodec(new MockCodec());
+            IndexWriter writer = NewWriter(dir, iwconf);
+            AddDocs(writer, 10);
+            writer.Commit();
+            AddDocs3(writer, 10);
+            writer.Commit();
+            AddDocs2(writer, 10);
+            writer.Commit();
+            Assert.AreEqual(30, writer.MaxDoc);
+            TestUtil.CheckIndex(dir);
+            writer.ForceMerge(1);
+            Assert.AreEqual(30, writer.MaxDoc);
+            writer.Dispose();
+            dir.Dispose();
+        }
 
-        /*
-         * Test that heterogeneous index segments are merged sucessfully
-         */
+        /// <summary>
+        /// Test that heterogeneous index segments are merged sucessfully
+        /// </summary>
         // TODO: not sure this test is that great, we should probably peek inside PerFieldPostingsFormat or something?!
-        /*public virtual void TestChangeCodecAndMerge()
+        [Test]
+        public virtual void TestChangeCodecAndMerge()
         {
-          Directory dir = NewDirectory();
-          if (VERBOSE)
-          {
-            Console.WriteLine("TEST: make new index");
-          }
-          IndexWriterConfig iwconf = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetOpenMode(IndexWriterConfig.OpenMode_e.CREATE).SetCodec(new MockCodec());
-          iwconf.SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH);
-          //((LogMergePolicy) iwconf.getMergePolicy()).setMergeFactor(10);
-          IndexWriter writer = NewWriter(dir, iwconf);
-
-          AddDocs(writer, 10);
-          writer.Commit();
-          AssertQuery(new Term("content", "aaa"), dir, 10);
-          if (VERBOSE)
-          {
-            Console.WriteLine("TEST: addDocs3");
-          }
-          AddDocs3(writer, 10);
-          writer.Commit();
-          writer.Dispose();
-
-          AssertQuery(new Term("content", "ccc"), dir, 10);
-          AssertQuery(new Term("content", "aaa"), dir, 10);
-          Codec codec = iwconf.Codec;
-
-          iwconf = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random())).SetOpenMode(IndexWriterConfig.OpenMode_e.APPEND).SetCodec(codec);
-          //((LogMergePolicy) iwconf.getMergePolicy()).setNoCFSRatio(0.0);
-          //((LogMergePolicy) iwconf.getMergePolicy()).setMergeFactor(10);
-          iwconf.SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH);
-
-          iwconf.SetCodec(new MockCodec2()); // uses standard for field content
-          writer = NewWriter(dir, iwconf);
-          // swap in new codec for currently written segments
-          if (VERBOSE)
-          {
-            Console.WriteLine("TEST: add docs w/ Standard codec for content field");
-          }
-          AddDocs2(writer, 10);
-          writer.Commit();
-          codec = iwconf.Codec;
-          Assert.AreEqual(30, writer.MaxDoc());
-          AssertQuery(new Term("content", "bbb"), dir, 10);
-          AssertQuery(new Term("content", "ccc"), dir, 10); ////
-          AssertQuery(new Term("content", "aaa"), dir, 10);
+            Directory dir = NewDirectory();
+            if (VERBOSE)
+            {
+                Console.WriteLine("TEST: make new index");
+            }
+            IndexWriterConfig iwconf = NewIndexWriterConfig(TEST_VERSION_CURRENT, 
+                new MockAnalyzer(Random())).SetOpenMode(IndexWriterConfig.OpenMode_e.CREATE).SetCodec(new MockCodec());
+            iwconf.SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH);
+            // ((LogMergePolicy)iwconf.getMergePolicy()).setMergeFactor(10);
+            IndexWriter writer = NewWriter(dir, iwconf);
+
+            AddDocs(writer, 10);
+            writer.Commit();
+            AssertQuery(new Term("content", "aaa"), dir, 10);
+            if (VERBOSE)
+            {
+                Console.WriteLine("TEST: addDocs3");
+            }
+            AddDocs3(writer, 10);
+            writer.Commit();
+            writer.Dispose();
+
+            AssertQuery(new Term("content", "ccc"), dir, 10);
+            AssertQuery(new Term("content", "aaa"), dir, 10);
+            Codec codec = iwconf.Codec;
+
+            iwconf = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()))
+                .SetOpenMode(IndexWriterConfig.OpenMode_e.APPEND).SetCodec(codec);
+            // ((LogMergePolicy)iwconf.getMergePolicy()).setNoCFSRatio(0.0);
+            // ((LogMergePolicy)iwconf.getMergePolicy()).setMergeFactor(10);
+            iwconf.SetMaxBufferedDocs(IndexWriterConfig.DISABLE_AUTO_FLUSH);
+
+            iwconf.SetCodec(new MockCodec2()); // uses standard for field content
+            writer = NewWriter(dir, iwconf);
+            // swap in new codec for currently written segments
+            if (VERBOSE)
+            {
+                Console.WriteLine("TEST: add docs w/ Standard codec for content field");
+            }
+            AddDocs2(writer, 10);
+            writer.Commit();
+            codec = iwconf.Codec;
+            Assert.AreEqual(30, writer.MaxDoc);
+            AssertQuery(new Term("content", "bbb"), dir, 10);
+            AssertQuery(new Term("content", "ccc"), dir, 10); ////
+            AssertQuery(new Term("content", "aaa"), dir, 10);
 
-          if (VERBOSE)
-          {
-            Console.WriteLine("TEST: add more docs w/ new codec");
-          }
-          AddDocs2(writer, 10);
-          writer.Commit();
-          AssertQuery(new Term("content", "ccc"), dir, 10);
-          AssertQuery(new Term("content", "bbb"), dir, 20);
-          AssertQuery(new Term("content", "aaa"), dir, 10);
-          Assert.AreEqual(40, writer.MaxDoc());
+            if (VERBOSE)
+            {
+                Console.WriteLine("TEST: add more docs w/ new codec");
+            }
+            AddDocs2(writer, 10);
+            writer.Commit();
+            AssertQuery(new Term("content", "ccc"), dir, 10);
+            AssertQuery(new Term("content", "bbb"), dir, 20);
+            AssertQuery(new Term("content", "aaa"), dir, 10);
+            Assert.AreEqual(40, writer.MaxDoc);
 
-          if (VERBOSE)
-          {
-            Console.WriteLine("TEST: now optimize");
-          }
-          writer.ForceMerge(1);
-          Assert.AreEqual(40, writer.MaxDoc());
-          writer.Dispose();
-          AssertQuery(new Term("content", "ccc"), dir, 10);
-          AssertQuery(new Term("content", "bbb"), dir, 20);
-          AssertQuery(new Term("content", "aaa"), dir, 10);
+            if (VERBOSE)
+            {
+                Console.WriteLine("TEST: now optimize");
+            }
+            writer.ForceMerge(1);
+            Assert.AreEqual(40, writer.MaxDoc);
+            writer.Dispose();
+            AssertQuery(new Term("content", "ccc"), dir, 10);
+            AssertQuery(new Term("content", "bbb"), dir, 20);
+            AssertQuery(new Term("content", "aaa"), dir, 10);
 
-          dir.Dispose();
-        }*/
+            dir.Dispose();
+        }
 
         public virtual void AssertQuery(Term t, Directory dir, int num)
         {
@@ -206,51 +197,50 @@ namespace Lucene.Net.Codecs.Perfield
             reader.Dispose();
         }
 
-        /*public class MockCodec : Lucene46Codec
+        public class MockCodec : Lucene46Codec
         {
-          internal readonly PostingsFormat Lucene40 = new Lucene41PostingsFormat();
-          internal readonly PostingsFormat SimpleText = new SimpleTextPostingsFormat();
-          internal readonly PostingsFormat MockSep = new MockSepPostingsFormat();
+            internal readonly PostingsFormat Lucene40 = new Lucene41PostingsFormat();
+            internal readonly PostingsFormat SimpleText = new SimpleTextPostingsFormat();
+            internal readonly PostingsFormat MockSep = new MockSepPostingsFormat();
 
-          public override PostingsFormat GetPostingsFormatForField(string field)
-          {
-            if (field.Equals("id"))
-            {
-              return SimpleText;
-            }
-            else if (field.Equals("content"))
-            {
-              return MockSep;
-            }
-            else
+            public override PostingsFormat GetPostingsFormatForField(string field)
             {
-              return Lucene40;
+                if (field.Equals("id"))
+                {
+                    return SimpleText;
+                }
+                else if (field.Equals("content"))
+                {
+                    return MockSep;
+                }
+                else
+                {
+                    return Lucene40;
+                }
             }
-          }
-        }*/
+        }
 
-        /*public class MockCodec2 : Lucene46Codec
+        public class MockCodec2 : Lucene46Codec
         {
-          internal readonly PostingsFormat Lucene40 = new Lucene41PostingsFormat();
-          internal readonly PostingsFormat SimpleText = new SimpleTextPostingsFormat();
+            internal readonly PostingsFormat Lucene40 = new Lucene41PostingsFormat();
+            internal readonly PostingsFormat SimpleText = new SimpleTextPostingsFormat();
 
-          public override PostingsFormat GetPostingsFormatForField(string field)
-          {
-            if (field.Equals("id"))
-            {
-              return SimpleText;
-            }
-            else
+            public override PostingsFormat GetPostingsFormatForField(string field)
             {
-              return Lucene40;
+                if (field.Equals("id"))
+                {
+                    return SimpleText;
+                }
+                else
+                {
+                    return Lucene40;
+                }
             }
-          }
-        }*/
-
-        /*
-         * Test per field codec support - adding fields with random codecs
-         */
+        }
 
+        /// <summary>
+        /// Test per field codec support - adding fields with random codecs
+        /// </summary>
         [Test]
         public virtual void TestStressPerFieldCodec()
         {
@@ -287,13 +277,14 @@ namespace Lucene.Net.Codecs.Perfield
             dir.Dispose();
         }
 
-        /*public virtual void TestSameCodecDifferentInstance()
+        [Test]
+        public virtual void TestSameCodecDifferentInstance()
         {
-          Codec codec = new Lucene46CodecAnonymousInnerClassHelper(this);
-          DoTestMixedPostings(codec);
-        }*/
+            Codec codec = new Lucene46CodecAnonymousInnerClassHelper(this);
+            DoTestMixedPostings(codec);
+        }
 
-        /*private class Lucene46CodecAnonymousInnerClassHelper : Lucene46Codec
+        private class Lucene46CodecAnonymousInnerClassHelper : Lucene46Codec
         {
             private readonly TestPerFieldPostingsFormat2 OuterInstance;
 
@@ -304,28 +295,29 @@ namespace Lucene.Net.Codecs.Perfield
 
             public override PostingsFormat GetPostingsFormatForField(string field)
             {
-              if ("id".Equals(field))
-              {
-                return new Pulsing41PostingsFormat(1);
-              }
-              else if ("date".Equals(field))
-              {
-                return new Pulsing41PostingsFormat(1);
-              }
-              else
-              {
-                return base.GetPostingsFormatForField(field);
-              }
+                if ("id".Equals(field))
+                {
+                    return new Pulsing41PostingsFormat(1);
+                }
+                else if ("date".Equals(field))
+                {
+                    return new Pulsing41PostingsFormat(1);
+                }
+                else
+                {
+                    return base.GetPostingsFormatForField(field);
+                }
             }
-        }*/
+        }
 
-        /*public virtual void TestSameCodecDifferentParams()
+        [Test]
+        public virtual void TestSameCodecDifferentParams()
         {
           Codec codec = new Lucene46CodecAnonymousInnerClassHelper2(this);
           DoTestMixedPostings(codec);
-        }*/
+        }
 
-        /*private class Lucene46CodecAnonymousInnerClassHelper2 : Lucene46Codec
+        private class Lucene46CodecAnonymousInnerClassHelper2 : Lucene46Codec
         {
             private readonly TestPerFieldPostingsFormat2 OuterInstance;
 
@@ -336,23 +328,22 @@ namespace Lucene.Net.Codecs.Perfield
 
             public override PostingsFormat GetPostingsFormatForField(string field)
             {
-              if ("id".Equals(field))
-              {
-                return new Pulsing41PostingsFormat(1);
-              }
-              else if ("date".Equals(field))
-              {
-                return new Pulsing41PostingsFormat(2);
-              }
-              else
-              {
-                return base.GetPostingsFormatForField(field);
-              }
+                if ("id".Equals(field))
+                {
+                    return new Pulsing41PostingsFormat(1);
+                }
+                else if ("date".Equals(field))
+                {
+                    return new Pulsing41PostingsFormat(2);
+                }
+                else
+                {
+                    return base.GetPostingsFormatForField(field);
+                }
             }
-        }*/
+        }
 
-        [Test]
-        private void TestMixedPostings(Codec codec)
+        private void DoTestMixedPostings(Codec codec)
         {
             Directory dir = NewDirectory();
             IndexWriterConfig iwc = NewIndexWriterConfig(TEST_VERSION_CURRENT, new MockAnalyzer(Random()));

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/4d0877f2/src/Lucene.Net.Tests/core/Index/TestCrashCausesCorruptIndex.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Tests/core/Index/TestCrashCausesCorruptIndex.cs b/src/Lucene.Net.Tests/core/Index/TestCrashCausesCorruptIndex.cs
index 05df4c8..5c8f590 100644
--- a/src/Lucene.Net.Tests/core/Index/TestCrashCausesCorruptIndex.cs
+++ b/src/Lucene.Net.Tests/core/Index/TestCrashCausesCorruptIndex.cs
@@ -63,7 +63,6 @@ namespace Lucene.Net.Index
         /// prepare for crashing.
         /// index 1 more document, and upon commit, creation of segments_2 will crash.
         /// </summary>
-        [Test]
         private void IndexAndCrashOnCreateOutputSegments2()
         {
             Directory realDirectory = FSDirectory.Open(Path);