diff --git a/src/Lucene.Net.Tests/Support/TestArrays.cs b/src/Lucene.Net.Tests/Support/TestArrays.cs
index 75b8002358..b32d7db8b8 100644
--- a/src/Lucene.Net.Tests/Support/TestArrays.cs
+++ b/src/Lucene.Net.Tests/Support/TestArrays.cs
@@ -3,6 +3,7 @@
using Lucene.Net.Util;
using NUnit.Framework;
+using System;
namespace Lucene.Net.Support
{
@@ -67,11 +68,11 @@ public void TestFill_ByteArray_Int_Int_Byte()
Arrays.Fill(new byte[2], 2, 1, (byte)27);
result = 0;
}
- catch (ArrayIndexOutOfBoundsException)
+ catch (Exception e) when (e.IsArrayIndexOutOfBoundsException())
{
result = 1;
}
- catch (IllegalArgumentException)
+ catch (Exception e) when (e.IsIllegalArgumentException())
{
result = 2;
}
@@ -82,11 +83,11 @@ public void TestFill_ByteArray_Int_Int_Byte()
Arrays.Fill(new byte[2], -1, 1, (byte)27);
result = 0;
}
- catch (ArrayIndexOutOfBoundsException)
+ catch (Exception e) when (e.IsArrayIndexOutOfBoundsException())
{
result = 1;
}
- catch (IllegalArgumentException)
+ catch (Exception e) when (e.IsIllegalArgumentException())
{
result = 2;
}
@@ -97,11 +98,11 @@ public void TestFill_ByteArray_Int_Int_Byte()
Arrays.Fill(new byte[2], 1, 4, (byte)27);
result = 0;
}
- catch (ArrayIndexOutOfBoundsException e)
+ catch (Exception e) when (e.IsArrayIndexOutOfBoundsException())
{
result = 1;
}
- catch (IllegalArgumentException e)
+ catch (Exception e) when (e.IsIllegalArgumentException())
{
result = 2;
}
@@ -417,5 +418,164 @@ public void TestFill_ObjectArray_Int_Int_Object()
assertNull("Failed to fill Object array correctly with nulls", d[i]);
}
}
+
+ ///
+ /// Adapted from test_equals$B$B() in Harmony
+ ///
+ [Test]
+ public void TestEquals_ByteArrays()
+ {
+ // Test for method bool Arrays.Equals(byte[], byte[])
+ byte[] d = new byte[1000];
+ byte[] x = new byte[1000];
+ Arrays.Fill(d, byte.MaxValue);
+ Arrays.Fill(x, byte.MinValue);
+ assertTrue("Inequal arrays returned true", !Arrays.Equals(d, x));
+ Arrays.Fill(x, byte.MaxValue);
+ assertTrue("equal arrays returned false", Arrays.Equals(d, x));
+ }
+
+ ///
+ /// Adapted from test_equals$S$S() in Harmony
+ ///
+ [Test]
+ public void TestEquals_ShortArrays()
+ {
+ // Test for method bool Arrays.Equals(short[], short[])
+ short[] d = new short[1000];
+ short[] x = new short[1000];
+ Arrays.Fill(d, short.MaxValue);
+ Arrays.Fill(x, short.MinValue);
+ assertTrue("Inequal arrays returned true", !Arrays.Equals(d, x));
+ Arrays.Fill(x, short.MaxValue);
+ assertTrue("equal arrays returned false", Arrays.Equals(d, x));
+ }
+
+ ///
+ /// Adapted from test_equals$C$C() in Harmony
+ ///
+ [Test]
+ public void TestEquals_CharArrays()
+ {
+ // Test for method bool Arrays.Equals(char[], char[])
+ char[] d = new char[1000];
+ char[] x = new char[1000];
+ const char c = 'T';
+ Arrays.Fill(d, c);
+ Arrays.Fill(x, 'L');
+ assertTrue("Inequal arrays returned true", !Arrays.Equals(d, x));
+ Arrays.Fill(x, c);
+ assertTrue("equal arrays returned false", Arrays.Equals(d, x));
+ }
+
+ ///
+ /// Adapted from test_equals$I$I() in Harmony
+ ///
+ [Test]
+ public void TestEquals_IntArrays()
+ {
+ // Test for method bool Arrays.Equals(int[], int[])
+ int[] d = new int[1000];
+ int[] x = new int[1000];
+ Arrays.Fill(d, int.MaxValue);
+ Arrays.Fill(x, int.MinValue);
+ assertTrue("Inequal arrays returned true", !Arrays.Equals(d, x));
+ Arrays.Fill(x, int.MaxValue);
+ assertTrue("equal arrays returned false", Arrays.Equals(d, x));
+
+ assertTrue("wrong result for null array1", !Arrays.Equals(new int[2], null));
+ assertTrue("wrong result for null array2", !Arrays.Equals(null, new int[2]));
+ }
+
+ ///
+ /// Adapted from test_equals$J$J() in Harmony
+ ///
+ [Test]
+ public void TestEquals_LongArrays()
+ {
+ // Test for method bool Arrays.Equals(long[], long[])
+ long[] d = new long[1000];
+ long[] x = new long[1000];
+ Arrays.Fill(d, long.MaxValue);
+ Arrays.Fill(x, long.MinValue);
+ assertTrue("Inequal arrays returned true", !Arrays.Equals(d, x));
+ Arrays.Fill(x, long.MaxValue);
+ assertTrue("equal arrays returned false", Arrays.Equals(d, x));
+
+ assertTrue("should be false", !Arrays.Equals(new[] { 0x100000000L }, new[] { 0x200000000L }));
+ }
+
+ ///
+ /// Adapted from test_equals$F$F() in Harmony
+ ///
+ [Test]
+ public void TestEquals_FloatArrays()
+ {
+ // Test for method bool Arrays.Equals(float[], float[])
+ float[] d = new float[1000];
+ float[] x = new float[1000];
+ Arrays.Fill(d, float.MaxValue);
+ Arrays.Fill(x, float.MinValue);
+ assertTrue("Inequal arrays returned true", !Arrays.Equals(d, x));
+ Arrays.Fill(x, float.MaxValue);
+ assertTrue("equal arrays returned false", Arrays.Equals(d, x));
+
+ assertTrue("NaN not equals", Arrays.Equals(new[] { float.NaN }, new[] { float.NaN }));
+ assertTrue("0f equals -0f", !Arrays.Equals(new[] { 0f }, new[] { -0f }));
+ }
+
+ ///
+ /// Adapted from test_equals$D$D() in Harmony
+ ///
+ [Test]
+ public void TestEquals_DoubleArrays()
+ {
+ // Test for method bool Arrays.Equals(double[], double[])
+ double[] d = new double[1000];
+ double[] x = new double[1000];
+ Arrays.Fill(d, double.MaxValue);
+ Arrays.Fill(x, double.MinValue);
+ assertTrue("Inequal arrays returned true", !Arrays.Equals(d, x));
+ Arrays.Fill(x, double.MaxValue);
+ assertTrue("equal arrays returned false", Arrays.Equals(d, x));
+
+ assertTrue("NaN not equals", Arrays.Equals(new[] { double.NaN }, new[] { double.NaN }));
+ assertTrue("0f equals -0f", !Arrays.Equals(new[] { 0d }, new[] { -0d }));
+ }
+
+ ///
+ /// Adapted from test_equals$Z$Z() in Harmony
+ ///
+ [Test]
+ public void TestEquals_BoolArrays()
+ {
+ // Test for method bool Arrays.Equals(bool[], bool[])
+ bool[] d = new bool[1000];
+ bool[] x = new bool[1000];
+ Arrays.Fill(d, true);
+ Arrays.Fill(x, false);
+ assertTrue("Inequal arrays returned true", !Arrays.Equals(d, x));
+ Arrays.Fill(x, true);
+ assertTrue("equal arrays returned false", Arrays.Equals(d, x));
+ }
+
+ ///
+ /// Adapted from test_equals$Ljava_lang_Object$Ljava_lang_Object() in Harmony
+ ///
+ [Test]
+ public void TestEquals_ObjectArrays()
+ {
+ // Test for method bool Arrays.Equals(object[], object[])
+ object[] d = new object[1000];
+ object[] x = new object[1000];
+ object o = new object();
+ Arrays.Fill(d, o);
+ Arrays.Fill(x, new object());
+ assertTrue("Inequal arrays returned true", !Arrays.Equals(d, x));
+ Arrays.Fill(x, o);
+ d[50] = null;
+ x[50] = null;
+ assertTrue("equal arrays returned false", Arrays.Equals(d, x));
+ }
}
}