lucenenet-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mhern...@apache.org
Subject [4/7] git commit: starting work on the sorter class. Added the BaseSorterTestCase, Random extensions.
Date Mon, 21 Jul 2014 18:14:12 GMT
starting work on the sorter class. Added the BaseSorterTestCase, Random extensions.


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

Branch: refs/heads/pcl
Commit: 7fe487a4a22138de22e8007a1550737a1280c80a
Parents: 4d3147f
Author: Michael Herndon <mherndon@michaelherndon.com>
Authored: Sun Jul 20 21:25:52 2014 -0400
Committer: Michael Herndon <mherndon@michaelherndon.com>
Committed: Sun Jul 20 21:25:52 2014 -0400

----------------------------------------------------------------------
 src/Lucene.Net.Core/Check.cs                    |   2 +
 src/Lucene.Net.Core/Lucene.Net.Core.csproj      |   1 +
 src/Lucene.Net.Core/Lucene.Net.Core.kproj       |   1 +
 src/Lucene.Net.Core/Util/Sorter.cs              |  91 +++++++
 .../Lucene.Net.Core.Tests.csproj                |   1 +
 .../Lucene.Net.Core.Tests.kproj                 |   1 +
 .../Util/BaseSorterTestCase.cs                  | 245 +++++++++++++++++++
 .../Lucene.Net.TestFramework.csproj             |   1 +
 .../Lucene.Net.TestFramework.kproj              |   2 +
 .../Random/RandomExtensions.cs                  |  69 ++++++
 .../Util/LuceneTestCase.cs                      |  18 ++
 test/Lucene.Net.TestFramework/Util/TestUtil.cs  |  17 ++
 test/Lucene.Net.TestFramework/project.json      |   4 +-
 13 files changed, 452 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucenenet/blob/7fe487a4/src/Lucene.Net.Core/Check.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Check.cs b/src/Lucene.Net.Core/Check.cs
index 176a31b..7ecd319 100644
--- a/src/Lucene.Net.Core/Check.cs
+++ b/src/Lucene.Net.Core/Check.cs
@@ -29,6 +29,8 @@ namespace Lucene.Net
     /// </summary>
     internal static class Check
     {
+     
+
 
         [DebuggerStepThrough]
         public static void InRangeOfLength(string argument, int value, int length) 

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/7fe487a4/src/Lucene.Net.Core/Lucene.Net.Core.csproj
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Lucene.Net.Core.csproj b/src/Lucene.Net.Core/Lucene.Net.Core.csproj
index 045c848..09e09df 100644
--- a/src/Lucene.Net.Core/Lucene.Net.Core.csproj
+++ b/src/Lucene.Net.Core/Lucene.Net.Core.csproj
@@ -70,6 +70,7 @@
     <Compile Include="Util\IAccountable.cs" />
     <Compile Include="Util\IAttribute.cs" />
     <Compile Include="Util\IBits.cs" />
+    <Compile Include="Util\Sorter.cs" />
     <Compile Include="Util\Version.cs" />
   </ItemGroup>
   <Import Project="$(MSBuildExtensionsPath32)\Microsoft\Portable\$(TargetFrameworkVersion)\Microsoft.Portable.CSharp.targets"
/>

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/7fe487a4/src/Lucene.Net.Core/Lucene.Net.Core.kproj
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Lucene.Net.Core.kproj b/src/Lucene.Net.Core/Lucene.Net.Core.kproj
index c9f8e62..b63ab9a 100644
--- a/src/Lucene.Net.Core/Lucene.Net.Core.kproj
+++ b/src/Lucene.Net.Core/Lucene.Net.Core.kproj
@@ -63,6 +63,7 @@
     <Compile Include="Util\IAccountable.cs" />
     <Compile Include="Util\IAttribute.cs" />
     <Compile Include="Util\IBits.cs" />
+    <Compile Include="Util\Sorter.cs" />
     <Compile Include="Util\Version.cs" />
   </ItemGroup>
   <Import Project="$(VSToolsPath)\AspNet\Microsoft.Web.AspNet.targets" Condition="'$(VSToolsPath)'
!= ''" />

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/7fe487a4/src/Lucene.Net.Core/Util/Sorter.cs
----------------------------------------------------------------------
diff --git a/src/Lucene.Net.Core/Util/Sorter.cs b/src/Lucene.Net.Core/Util/Sorter.cs
new file mode 100644
index 0000000..b15cc96
--- /dev/null
+++ b/src/Lucene.Net.Core/Util/Sorter.cs
@@ -0,0 +1,91 @@
+/*
+ * 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.
+ */
+
+
+namespace Lucene.Net.Util
+{
+    using System;
+    using System.Collections.Generic;
+
+
+    /// <summary>
+    /// 
+    /// </summary>
+    public abstract class Sorter : IComparer<int>
+    {
+        static readonly int THRESHOLD = 20;
+
+
+        protected Sorter() { }
+
+        /// <summary>
+        /// Sort a slice or range which begins at the <paramref name="start"/> index
to the <paramref name="end"/> index.
+        /// </summary>
+        /// <param name="start">The position to start the slice.</param>
+        /// <param name="end">The position to end the slice. </param>
+        /// <exception cref="IndexOutOfRangeException">Throws when start is greater
or equal the length or when the start + count </exception>
+        public abstract void SortSlice(int start, int end);
+
+
+        /// <summary>
+        /// Performs a comparison of two integers and returns a value whether the values
are equal to, less than, or greater than
+        /// the other value.
+        /// </summary>
+        /// <param name="x">The left value</param>
+        /// <param name="y">The right value.</param>
+        /// <returns>Returns 0 if the values are equal, -1 if the value x is less than
y, and 1 if the value x is greater than y.</returns>
+        protected abstract int Compare(int x, int y);
+
+        /// <summary>
+        /// Switchs the index position of the values. 
+        /// </summary>
+        /// <param name="x">The left value.</param>
+        /// <param name="y">The right value.</param>
+        protected abstract void Swap(int x, int y);
+
+        /// <summary>
+        /// Throws an exception when start is greater than end.
+        /// </summary>
+        /// <param name="start">The start index position.</param>
+        /// <param name="end">the end index position.</param>
+        protected void CheckSlice(int start, int end)
+        {
+            if(start > end)
+            {
+                string message = string.Format("The start parameter must be less than the
end parameter." +
+                    " start was {0} and end was {1}", start, end);
+
+                throw new ArgumentException(message);
+            }
+        }
+
+
+        protected void MergeInPlace(int start, int middle, int end)
+        {
+
+        }
+
+        #region IComparer<int>
+
+        int IComparer<int>.Compare(int x, int y)
+        {
+            return this.Compare(x, y);
+        }
+
+        #endregion
+    }
+}

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/7fe487a4/test/Lucene.Net.Core.Tests/Lucene.Net.Core.Tests.csproj
----------------------------------------------------------------------
diff --git a/test/Lucene.Net.Core.Tests/Lucene.Net.Core.Tests.csproj b/test/Lucene.Net.Core.Tests/Lucene.Net.Core.Tests.csproj
index af85f9e..7088465 100644
--- a/test/Lucene.Net.Core.Tests/Lucene.Net.Core.Tests.csproj
+++ b/test/Lucene.Net.Core.Tests/Lucene.Net.Core.Tests.csproj
@@ -59,6 +59,7 @@
   <ItemGroup>
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="Support\ICloneableTests.cs" />
+    <Compile Include="Util\BaseSorterTestCase.cs" />
     <Compile Include="Util\TestBits.cs" />
     <Compile Include="Util\TestVersion.cs" />
   </ItemGroup>

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/7fe487a4/test/Lucene.Net.Core.Tests/Lucene.Net.Core.Tests.kproj
----------------------------------------------------------------------
diff --git a/test/Lucene.Net.Core.Tests/Lucene.Net.Core.Tests.kproj b/test/Lucene.Net.Core.Tests/Lucene.Net.Core.Tests.kproj
index 8e9ce22..7c23ec1 100644
--- a/test/Lucene.Net.Core.Tests/Lucene.Net.Core.Tests.kproj
+++ b/test/Lucene.Net.Core.Tests/Lucene.Net.Core.Tests.kproj
@@ -53,6 +53,7 @@
   <ItemGroup>
     <Compile Include="Properties\AssemblyInfo.cs" />
     <Compile Include="Support\ICloneableTests.cs" />
+    <Compile Include="Util\BaseSorterTestCase.cs" />
     <Compile Include="Util\TestBits.cs" />
     <Compile Include="Util\TestVersion.cs" />
   </ItemGroup>

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/7fe487a4/test/Lucene.Net.Core.Tests/Util/BaseSorterTestCase.cs
----------------------------------------------------------------------
diff --git a/test/Lucene.Net.Core.Tests/Util/BaseSorterTestCase.cs b/test/Lucene.Net.Core.Tests/Util/BaseSorterTestCase.cs
new file mode 100644
index 0000000..482adb2
--- /dev/null
+++ b/test/Lucene.Net.Core.Tests/Util/BaseSorterTestCase.cs
@@ -0,0 +1,245 @@
+/*
+ * 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.
+ */
+
+
+
+namespace Lucene.Net.Util
+{
+    using System;
+    using System.Linq;
+    using System.Collections.Generic;
+    using Lucene.Net.TestFramework;
+    using Lucene.Net.TestFramework.Random;
+
+    public abstract class BaseSorterTestCase : LuceneTestCase
+    {
+        private readonly Boolean Stable;
+
+        public BaseSorterTestCase(bool stable)
+        {
+            this.Stable = stable;
+        }
+
+        internal abstract Sorter CreateSorter(Entry[] array);
+
+
+        [Test]
+        public virtual void TestEmptyArray()
+        {
+            this.TestGeneratedEntries(new Entry[0]);
+        }
+
+        [Test]
+        public virtual void TestOneValue()
+        {
+            this.RunStrategy(Strategy.RANDOM, 1);
+        }
+
+
+        [Test]
+        public virtual void TestTwoValues()
+        {
+            this.RunStrategy(Strategy.RANDOM_LOW_CARDINALITY, 2);
+        }
+
+        [Test]
+        public virtual void TestRandom()
+        {
+            this.RunStrategy(Strategy.RANDOM);
+        }
+
+        [Test]
+        public void TestRandomLowCardinality()
+        {
+            this.RunStrategy(Strategy.RANDOM_LOW_CARDINALITY);
+        }
+
+        [Test]
+        public void TestAscending()
+        {
+            this.RunStrategy(Strategy.ASCENDING);
+        }
+
+        [Test]
+        public void TestAscendingSequences()
+        {
+            this.RunStrategy(Strategy.ASCENDING_SEQUENCES);
+        }
+
+
+        [Test]
+        public void TestDescending()
+        {
+            this.RunStrategy(Strategy.DESCENDING);
+        }
+
+        [Test]
+        public void TestStrictlyDescending()
+        {
+            this.RunStrategy(Strategy.STRICTLY_DESCENDING);
+        }
+
+        protected void RunStrategy(Strategy strategy, int length = -1)
+        {
+            if (length < 0)
+                length = Random.Next(20000);
+
+            var entries = new Entry[length];
+            for (var i = 0; i < entries.Length; i++)
+            {
+                strategy.SetValue(this.Random, entries, i);
+            }
+
+            this.TestGeneratedEntries(entries);
+        }
+
+        protected void TestGeneratedEntries(Entry[] entries)
+        {
+            int o = this.Random.Next(1000);
+            var actual = new Entry[o + entries.Length + this.Random.Next(3)];
+            Array.Copy(entries, 0, actual, o, entries.Length);
+            var sorter = this.CreateSorter(actual);
+            sorter.SortSlice(o, o + entries.Length);
+
+            VerifySorted(entries, actual);
+        }
+
+        protected void VerifySorted(IEnumerable<Entry> original, IEnumerable<Entry>
sorted)
+        {
+            var originalCount = original.Count();
+
+            Equal(originalCount, sorted.Count());
+            var copy = original.ToList();
+            copy.Sort();
+
+            for (var i = 0; i < originalCount; i++)
+            {
+                var actual = copy.ElementAt(i);
+                var expected = copy.ElementAt(i);
+
+                Equal(actual.Value, expected.Value);
+
+                if (this.Stable)
+                {
+                    Equal(actual.Ordinal, expected.Ordinal);
+                }
+            }
+        }
+
+        internal protected class Strategy
+        {
+            public Strategy(Action<System.Random, IList<Entry>, int> setValue)
+            {
+                this.SetValue = setValue;
+            }
+
+            public Action<System.Random, IList<Entry>, int> SetValue { get; private
set; }
+
+
+            public static readonly Strategy RANDOM = new Strategy((random, col, index) =>
+            {
+                col[index] = new Entry(random.Next(), index);
+            });
+
+            public static readonly Strategy RANDOM_LOW_CARDINALITY = new Strategy((random,
col, index) =>
+            {
+                col[index] = new Entry(random.Next(6), index);
+            });
+
+
+            public static readonly Strategy ASCENDING = new Strategy((random, col, index)
=>
+            {
+                Entry value = null;
+
+                if (index == 0)
+                    value = new Entry(random.Next(6), 0);
+                else
+                    value = new Entry(col[index - 1].Value + random.Next(6), index);
+
+                col[index] = value;
+            });
+
+
+            public static readonly Strategy DESCENDING = new Strategy((random, col, index)
=>
+            {
+                Entry value = null;
+
+                if (index == 0)
+                    value = new Entry(random.Next(6), 0);
+                else
+                    value = new Entry(col[index - 1].Value + random.Next(6), index);
+
+                col[index] = value;
+            });
+
+            public static readonly Strategy STRICTLY_DESCENDING = new Strategy((random, col,
index) =>
+            {
+                Entry value = null;
+
+                if (index == 0)
+                    value = new Entry(random.Next(6), 0);
+                else
+                    value = new Entry(col[index - 1].Value - random.NextBetween(1, 5), index);
+
+                col[index] = value;
+            });
+
+            public static readonly Strategy ASCENDING_SEQUENCES = new Strategy((random, col,
index) =>
+            {
+                Entry value = null;
+
+                if (index == 0)
+                    value = new Entry(random.Next(6), 0);
+                else
+                    value = new Entry(random.Rarely() ? random.Next(1000) : col[index - 1].Value
+ random.Next(6), index);
+
+                col[index] = value;
+            });
+
+            public static readonly Strategy MOSTLY_ASCENDING = new Strategy((random, col,
index) =>
+            {
+                Entry value = null;
+
+                if (index == 0)
+                    value = new Entry(random.Next(6), 0);
+                else
+                    value = new Entry(col[index - 1].Value + random.NextBetween(-8, 10),
index);
+
+                col[index] = value;
+            });
+        }
+
+
+        public class Entry : IComparable<Entry>
+        {
+            public int Value { get; private set; }
+            public int Ordinal { get; private set; }
+
+            public Entry(int value, int ordinal)
+            {
+                this.Value = value;
+                this.Ordinal = ordinal;
+            }
+
+            public int CompareTo(Entry other)
+            {
+                return this.Value < other.Value ? -1 : Value == other.Value ? 0 : 1;
+            }
+        }
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/7fe487a4/test/Lucene.Net.TestFramework/Lucene.Net.TestFramework.csproj
----------------------------------------------------------------------
diff --git a/test/Lucene.Net.TestFramework/Lucene.Net.TestFramework.csproj b/test/Lucene.Net.TestFramework/Lucene.Net.TestFramework.csproj
index 678cc40..ba2b626 100644
--- a/test/Lucene.Net.TestFramework/Lucene.Net.TestFramework.csproj
+++ b/test/Lucene.Net.TestFramework/Lucene.Net.TestFramework.csproj
@@ -58,6 +58,7 @@
   </PropertyGroup>
   <ItemGroup>
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Random\RandomExtensions.cs" />
     <Compile Include="Util\LuceneTestCase.cs" />
     <Compile Include="Util\TestAttribute.cs" />
   </ItemGroup>

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/7fe487a4/test/Lucene.Net.TestFramework/Lucene.Net.TestFramework.kproj
----------------------------------------------------------------------
diff --git a/test/Lucene.Net.TestFramework/Lucene.Net.TestFramework.kproj b/test/Lucene.Net.TestFramework/Lucene.Net.TestFramework.kproj
index 3d1be63..8824aee 100644
--- a/test/Lucene.Net.TestFramework/Lucene.Net.TestFramework.kproj
+++ b/test/Lucene.Net.TestFramework/Lucene.Net.TestFramework.kproj
@@ -51,8 +51,10 @@
   </ItemGroup>
   <ItemGroup>
     <Compile Include="Properties\AssemblyInfo.cs" />
+    <Compile Include="Random\RandomExtensions.cs" />
     <Compile Include="Util\LuceneTestCase.cs" />
     <Compile Include="Util\TestAttribute.cs" />
+    <Compile Include="Util\TestUtil.cs" />
   </ItemGroup>
   <Import Project="$(VSToolsPath)\AspNet\Microsoft.Web.AspNet.targets" Condition="'$(VSToolsPath)'
!= ''" />
 </Project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/7fe487a4/test/Lucene.Net.TestFramework/Random/RandomExtensions.cs
----------------------------------------------------------------------
diff --git a/test/Lucene.Net.TestFramework/Random/RandomExtensions.cs b/test/Lucene.Net.TestFramework/Random/RandomExtensions.cs
new file mode 100644
index 0000000..78242fb
--- /dev/null
+++ b/test/Lucene.Net.TestFramework/Random/RandomExtensions.cs
@@ -0,0 +1,69 @@
+/*
+ * 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.
+ */
+
+
+namespace Lucene.Net.TestFramework.Random
+{
+    using System;
+    using System.Diagnostics;
+
+    /// <summary>
+    /// Summary description for RandomExtensions
+    /// </summary>
+    /// <remarks>
+    ///     <para>
+    ///         Java <see href="https://github.com/carrotsearch/randomizedtesting/blob/master/randomized-runner/src/main/java/com/carrotsearch/randomizedtesting/generators/RandomInts.java">Source</see>
+    ///     </para>
+    /// </remarks>
+    public static class RandomExtensions
+    {
+	     
+        public static int NextBetween(this Random random, int minValue, int maxValue)
+        {
+            Debug.Assert(maxValue >= minValue, string.Format("maxValue must be greater
than minValue" +
+                "Max value as {0}. Min value was {1}", minValue, maxValue));
+
+            var range = maxValue - minValue;
+
+            if (range < int.MaxValue)
+                return minValue + random.Next(1 + range);
+            else
+                return minValue + (int)Math.Round(random.NextDouble() * range);
+        }
+
+        public static int RandomInt(this Random random, int maxValue)
+        {
+            if (maxValue == 0)
+                return 0;
+
+            if (maxValue == int.MaxValue)
+                return random.Next() & 0x7fffffff;
+
+            return random.Next(maxValue + 1);
+        }
+
+        public static Boolean Rarely(this Random random)
+        {
+            // TODO: implement system properties and TEST_NIGHTLY & RANDOM_MULTIPLIER
+            var p = 10;
+            p += (int)(p * Math.Log((double)1));
+            var min = 100 - Math.Min(p, 50);
+
+            return random.Next(100) >= min;
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/7fe487a4/test/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
----------------------------------------------------------------------
diff --git a/test/Lucene.Net.TestFramework/Util/LuceneTestCase.cs b/test/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
index 4f265e0..de16693 100644
--- a/test/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
+++ b/test/Lucene.Net.TestFramework/Util/LuceneTestCase.cs
@@ -25,14 +25,32 @@ namespace Lucene.Net.TestFramework
     using System;
     using System.Collections.Generic;
     using System.Diagnostics;
+    using System.Threading;
     using Xunit;
 
     public class LuceneTestCase
     {
+        private static ThreadLocal<System.Random> random;
+
+        static LuceneTestCase()
+        {
+            random = new ThreadLocal<System.Random>(() => {
+                return new System.Random();
+            });
+        }
+
         public LuceneTestCase()
         {
+           
         }
 
+        /// <summary>
+        /// Placeholder for random values.
+        /// </summary>
+        public System.Random Random
+        {
+            get { return random.Value; }  
+        }
 
 #if XUNIT
 

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/7fe487a4/test/Lucene.Net.TestFramework/Util/TestUtil.cs
----------------------------------------------------------------------
diff --git a/test/Lucene.Net.TestFramework/Util/TestUtil.cs b/test/Lucene.Net.TestFramework/Util/TestUtil.cs
new file mode 100644
index 0000000..14bdb47
--- /dev/null
+++ b/test/Lucene.Net.TestFramework/Util/TestUtil.cs
@@ -0,0 +1,17 @@
+using System;
+
+namespace Lucene.Net.TestFramework
+{
+    /// <summary>
+    /// Summary description for TestUtil
+    /// </summary>
+    public class TestUtil
+    {
+	    public TestUtil()
+	    {
+		    //
+		    // TODO: Add constructor logic here
+		    //
+	    }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/lucenenet/blob/7fe487a4/test/Lucene.Net.TestFramework/project.json
----------------------------------------------------------------------
diff --git a/test/Lucene.Net.TestFramework/project.json b/test/Lucene.Net.TestFramework/project.json
index 87e426c..d30c47c 100644
--- a/test/Lucene.Net.TestFramework/project.json
+++ b/test/Lucene.Net.TestFramework/project.json
@@ -25,7 +25,9 @@
         "k10" : { 
             "dependencies": {
                 "System.Runtime": "4.0.20.0",
-                "System.Diagnostics.Debug": "4.0.10.0"
+                "System.Linq": "",
+                "System.Diagnostics.Debug": "4.0.10.0",
+                "System.Threading": ""
             }
         }
     }


Mime
View raw message