84 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			84 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|  | using System; | ||
|  | using System.Collections.Generic; | ||
|  | 
 | ||
|  | namespace UnityEngine.TestTools.Utils | ||
|  | { | ||
|  |     /// <summary> | ||
|  |     /// Use this class to compare two Vector3 objects for equality with NUnit constraints. Call Vector3EqualityComparer.Instance comparer to perform a comparison with the default calculation error value 0.0001f. To specify a different error value, use the one argument constructor to instantiate a new comparer. | ||
|  |     /// </summary> | ||
|  |     public class Vector3EqualityComparer : IEqualityComparer<Vector3> | ||
|  |     { | ||
|  |         private const float k_DefaultError = 0.0001f; | ||
|  |         private readonly float AllowedError; | ||
|  | 
 | ||
|  |         private static readonly Vector3EqualityComparer m_Instance = new Vector3EqualityComparer(); | ||
|  | 
 | ||
|  |         /// <summary> | ||
|  |         /// A comparer instance with the default calculation error value equal to 0.0001f. | ||
|  |         ///</summary> | ||
|  |         public static Vector3EqualityComparer Instance { get { return m_Instance; } } | ||
|  | 
 | ||
|  |         private Vector3EqualityComparer() : this(k_DefaultError) {} | ||
|  | 
 | ||
|  |         /// <summary> | ||
|  |         /// A comparer instance with the default calculation error value equal to 0.0001f. | ||
|  |         ///</summary> | ||
|  |         /// <param name="allowedError">This value identifies the calculation error allowed.</param> | ||
|  |         public Vector3EqualityComparer(float allowedError) | ||
|  |         { | ||
|  |             AllowedError = allowedError; | ||
|  |         } | ||
|  | 
 | ||
|  |         ///<summary> | ||
|  |         /// Compares the actual and expected Vector3 objects | ||
|  |         /// for equality using <see cref="Utils.AreFloatsEqual"/> to compare the x, y, and z attributes of Vector3. | ||
|  |         /// </summary> | ||
|  |         /// <param name="expected">The expected Vector3 used for comparison</param> | ||
|  |         /// <param name="actual">The actual Vector3 to test</param> | ||
|  |         /// <returns>True if the vectors are equals, false otherwise.</returns> | ||
|  |         /// <example> | ||
|  |         /// <para>The following example shows how to verify if two Vector3 are equals</para> | ||
|  |         /// <code> | ||
|  |         /// [TestFixture] | ||
|  |         /// public class Vector3Test | ||
|  |         /// { | ||
|  |         ///     [Test] | ||
|  |         ///     public void VerifyThat_TwoVector3ObjectsAreEqual() | ||
|  |         ///     { | ||
|  |         ///     //Custom error 10e-6f | ||
|  |         ///     var actual = new Vector3(10e-8f, 10e-8f, 10e-8f); | ||
|  |         ///     var expected = new Vector3(0f, 0f, 0f); | ||
|  |         ///     var comparer = new Vector3EqualityComparer(10e-6f); | ||
|  |         /// | ||
|  |         /// | ||
|  |         ///     Assert.That(actual, Is.EqualTo(expected).Using(comparer)); | ||
|  |         /// | ||
|  |         ///     //Default error 0.0001f | ||
|  |         ///     actual = new Vector3(0.01f, 0.01f, 0f); | ||
|  |         ///     expected = new Vector3(0.01f, 0.01f, 0f); | ||
|  |         /// | ||
|  |         ///     Assert.That(actual, Is.EqualTo(expected).Using(Vector3EqualityComparer.Instance)); | ||
|  |         ///     } | ||
|  |         /// } | ||
|  |         /// </code> | ||
|  |         ///</example> | ||
|  | 
 | ||
|  |         public bool Equals(Vector3 expected, Vector3 actual) | ||
|  |         { | ||
|  |             return Utils.AreFloatsEqual(expected.x, actual.x, AllowedError) && | ||
|  |                 Utils.AreFloatsEqual(expected.y, actual.y, AllowedError) && | ||
|  |                 Utils.AreFloatsEqual(expected.z, actual.z, AllowedError); | ||
|  |         } | ||
|  | 
 | ||
|  |         /// <summary> | ||
|  |         /// Serves as the default hash function. | ||
|  |         /// </summary> | ||
|  |         /// <param name="vec3">A not null Vector3</param> | ||
|  |         /// <returns>Returns 0</returns> | ||
|  |         public int GetHashCode(Vector3 vec3) | ||
|  |         { | ||
|  |             return 0; | ||
|  |         } | ||
|  |     } | ||
|  | } |