예제 #1
0
        public void TestGetHashCode()
        {
            UniScalar testScalar       = new UniScalar(12.34f, 56.78f);
            UniScalar equivalentScalar = new UniScalar(12.34f, 56.78f);

            Assert.AreEqual(testScalar.GetHashCode(), equivalentScalar.GetHashCode());
        }
예제 #2
0
        public void TestFullConstructor()
        {
            UniScalar testScalar = new UniScalar(12.34f, 56.78f);

            Assert.AreEqual(12.34f, testScalar.Fraction);
            Assert.AreEqual(56.78f, testScalar.Offset);
        }
예제 #3
0
        public void TestOffsetConstructor()
        {
            UniScalar testScalar = new UniScalar(123.456f);

            Assert.AreEqual(0.0f, testScalar.Fraction);
            Assert.AreEqual(123.456f, testScalar.Offset);
        }
예제 #4
0
        public void TestImplicitConstructor()
        {
            UniScalar testScalar = 654.321f;

            Assert.AreEqual(0.0f, testScalar.Fraction);
            Assert.AreEqual(654.321f, testScalar.Offset);
        }
예제 #5
0
 /// <summary>Ensures that two unified scalars are nearly equal to each other</summary>
 /// <param name="expected">Expected unified scalar value</param>
 /// <param name="actual">Actual unified scalar value</param>
 /// <param name="deltaUlps">
 ///   Allowed deviation in representable floating point values for each of the
 ///   unified scalar's fields
 /// </param>
 public static void AreAlmostEqual(UniScalar expected, UniScalar actual, int deltaUlps)
 {
     if (!areAlmostEqual(expected, actual, deltaUlps))
     {
         Assert.AreEqual(expected, actual);
     }
 }
예제 #6
0
        public void TestMultiplicationOperator()
        {
            UniScalar testScalar   = new UniScalar(1.2f, 3.4f);
            UniScalar factorScalar = new UniScalar(5.6f, 7.8f);

            UniAssertHelper.AreAlmostEqual(
                new UniScalar(6.72f, 26.52f), testScalar * factorScalar, 4
                );
        }
예제 #7
0
        public void TestDivisionOperator()
        {
            UniScalar testScalar    = new UniScalar(1.2f, 3.4f);
            UniScalar divisorScalar = new UniScalar(2.5f, 5.0f);

            UniAssertHelper.AreAlmostEqual(
                new UniScalar(0.48f, 0.68f), testScalar / divisorScalar, 4
                );
        }
예제 #8
0
        public void TestInequalityOperator()
        {
            UniScalar testScalar       = new UniScalar(12.34f, 56.78f);
            UniScalar equivalentScalar = new UniScalar(12.34f, 56.78f);
            UniScalar differingScalar  = new UniScalar(87.65f, 43.21f);

            Assert.IsFalse(testScalar != equivalentScalar);
            Assert.IsTrue(testScalar != differingScalar);
        }
예제 #9
0
        public void TestEqualsWithDowncast()
        {
            UniScalar testScalar       = new UniScalar(12.34f, 56.78f);
            UniScalar equivalentScalar = new UniScalar(12.34f, 56.78f);
            UniScalar differingScalar  = new UniScalar(87.65f, 43.21f);

            Assert.IsTrue(testScalar.Equals((object)equivalentScalar));
            Assert.IsFalse(testScalar.Equals((object)differingScalar));
        }
예제 #10
0
        public void TestSubtractionOperator()
        {
            UniScalar testScalar       = new UniScalar(1.2f, 3.4f);
            UniScalar subtractedScalar = new UniScalar(5.6f, 7.8f);

            UniAssertHelper.AreAlmostEqual(
                new UniScalar(-4.4f, -4.4f), testScalar - subtractedScalar, 4
                );
        }
예제 #11
0
        public void TestAdditionOperator()
        {
            UniScalar testScalar  = new UniScalar(1.2f, 3.4f);
            UniScalar addedScalar = new UniScalar(5.6f, 7.8f);

            UniAssertHelper.AreAlmostEqual(
                new UniScalar(6.8f, 11.2f), testScalar + addedScalar, 4
                );
        }
예제 #12
0
 public void TestThrowOnAlmostEqualScalarsWithTooLowOffset() {
   UniScalar testScalar = new UniScalar(exactFloat, minusTwoFloat);
   Assert.Throws<AssertionException>(
     delegate() {
       UniAssertHelper.AreAlmostEqual(
         new UniScalar(exactFloat, exactFloat), testScalar, 1
       );
     }
   );
 }
예제 #13
0
        public void TestMultiplicationOperatorWithScalarOnLeftSide()
        {
            UniVector testVector = new UniVector(firstTestScalar, secondTestScalar);

            UniVector result = new UniScalar(2.0f, 4.0f) * testVector;

            Assert.That(result.X.Fraction, Is.EqualTo(2.0f).Within(4).Ulps);
            Assert.That(result.X.Offset, Is.EqualTo(8.0f).Within(4).Ulps);
            Assert.That(result.Y.Fraction, Is.EqualTo(6.0f).Within(4).Ulps);
            Assert.That(result.Y.Offset, Is.EqualTo(16.0f).Within(4).Ulps);
        }
예제 #14
0
        public void TestThrowOnAlmostEqualScalarsWithTooLowOffset()
        {
            UniScalar testScalar = new UniScalar(exactFloat, minusTwoFloat);

            Assert.Throws <AssertionException>(
                delegate() {
                UniAssertHelper.AreAlmostEqual(
                    new UniScalar(exactFloat, exactFloat), testScalar, 1
                    );
            }
                );
        }
예제 #15
0
 /// <summary>
 ///   Initializes a new rectangle from the provided individual coordinates
 /// </summary>
 /// <param name="x">X coordinate of the rectangle's left border</param>
 /// <param name="y">Y coordinate of the rectangle's upper border</param>
 /// <param name="width">Width of the area covered by the rectangle</param>
 /// <param name="height">Height of the area covered by the rectangle</param>
 public UniRectangle(UniScalar x, UniScalar y, UniScalar width, UniScalar height)
 {
     this.Location = new UniVector(x, y);
     this.Size     = new UniVector(width, height);
 }
예제 #16
0
    public void TestMultiplicationOperatorWithScalarOnLeftSide() {
      UniVector testVector = new UniVector(firstTestScalar, secondTestScalar);

      UniVector result = new UniScalar(2.0f, 4.0f) * testVector;

      Assert.That(result.X.Fraction, Is.EqualTo(2.0f).Within(4).Ulps);
      Assert.That(result.X.Offset, Is.EqualTo(8.0f).Within(4).Ulps);
      Assert.That(result.Y.Fraction, Is.EqualTo(6.0f).Within(4).Ulps);
      Assert.That(result.Y.Offset, Is.EqualTo(16.0f).Within(4).Ulps);
    }
예제 #17
0
    public void TestInequalityOperator() {
      UniScalar testScalar = new UniScalar(12.34f, 56.78f);
      UniScalar equivalentScalar = new UniScalar(12.34f, 56.78f);
      UniScalar differingScalar = new UniScalar(87.65f, 43.21f);

      Assert.IsFalse(testScalar != equivalentScalar);
      Assert.IsTrue(testScalar != differingScalar);
    }
예제 #18
0
        public void TestToOffsetWithNormalScalar()
        {
            UniScalar testScalar = new UniScalar(1.23f, 4.5f);

            Assert.AreEqual(1234.5f, testScalar.ToOffset(1000.0f));
        }
예제 #19
0
 /// <summary>Determines whether two unified scalar values are nearly equal</summary>
 /// <param name="left">Unified scalar value to compare on the left side</param>
 /// <param name="right">Unified scalar value to compare on the right side</param>
 /// <param name="deltaUlps">
 ///   Allowed deviation in representable floating point values for each of the
 ///   unified vector's fields
 /// </param>
 /// <returns>True if the provided unified scalar values are nearly equal</returns>
 private static bool areAlmostEqual(UniScalar left, UniScalar right, int deltaUlps)
 {
     return
         (FloatHelper.AreAlmostEqual(left.Fraction, right.Fraction, deltaUlps) &&
          FloatHelper.AreAlmostEqual(left.Offset, right.Offset, deltaUlps));
 }
예제 #20
0
 /// <summary>Ensures that two unified scalars are nearly equal to each other</summary>
 /// <param name="expected">Expected unified scalar value</param>
 /// <param name="actual">Actual unified scalar value</param>
 /// <param name="deltaUlps">
 ///   Allowed deviation in representable floating point values for each of the
 ///   unified scalar's fields
 /// </param>
 public static void AreAlmostEqual(UniScalar expected, UniScalar actual, int deltaUlps) {
   if(!areAlmostEqual(expected, actual, deltaUlps)) {
     Assert.AreEqual(expected, actual);
   }
 }
예제 #21
0
        public void TestEqualsWithNullReference()
        {
            UniScalar testScalar = new UniScalar(12.34f, 56.78f);

            Assert.IsFalse(testScalar.Equals(null));
        }
예제 #22
0
 /// <summary>Initializes a new vector from the provided components</summary>
 /// <param name="x">Absolute and relative X coordinate of the vector</param>
 /// <param name="y">Absolute and relative Y coordinate of the vector</param>
 public UniVector(UniScalar x, UniScalar y) {
   this.X = x;
   this.Y = y;
 }
예제 #23
0
    public void TestGetHashCode() {
      UniScalar testScalar = new UniScalar(12.34f, 56.78f);
      UniScalar equivalentScalar = new UniScalar(12.34f, 56.78f);

      Assert.AreEqual(testScalar.GetHashCode(), equivalentScalar.GetHashCode());
    }
예제 #24
0
 /// <summary>
 ///   Initializes a new rectangle from the provided individual coordinates
 /// </summary>
 /// <param name="x">X coordinate of the rectangle's left border</param>
 /// <param name="y">Y coordinate of the rectangle's upper border</param>
 /// <param name="width">Width of the area covered by the rectangle</param>
 /// <param name="height">Height of the area covered by the rectangle</param>
 public UniRectangle(UniScalar x, UniScalar y, UniScalar width, UniScalar height) {
   this.Location = new UniVector(x, y);
   this.Size = new UniVector(width, height);
 }
예제 #25
0
    public void TestEqualsWithNullReference() {
      UniScalar testScalar = new UniScalar(12.34f, 56.78f);

      Assert.IsFalse(testScalar.Equals(null));
    }
예제 #26
0
    public void TestEqualsWithDifferentType() {
      UniScalar testScalar = new UniScalar(12.34f, 56.78f);

      Assert.IsFalse(testScalar.Equals(DateTime.MinValue));
    }
예제 #27
0
    public void TestEqualsWithDowncast() {
      UniScalar testScalar = new UniScalar(12.34f, 56.78f);
      UniScalar equivalentScalar = new UniScalar(12.34f, 56.78f);
      UniScalar differingScalar = new UniScalar(87.65f, 43.21f);

      Assert.IsTrue(testScalar.Equals((object)equivalentScalar));
      Assert.IsFalse(testScalar.Equals((object)differingScalar));
    }
예제 #28
0
 /// <summary>Initializes a new vector from the provided components</summary>
 /// <param name="x">Absolute and relative X coordinate of the vector</param>
 /// <param name="y">Absolute and relative Y coordinate of the vector</param>
 public UniVector(UniScalar x, UniScalar y)
 {
     this.X = x;
     this.Y = y;
 }
예제 #29
0
 public void TestToOffsetWithNormalScalar() {
   UniScalar testScalar = new UniScalar(1.23f, 4.5f);
   Assert.AreEqual(1234.5f, testScalar.ToOffset(1000.0f));
 }
예제 #30
0
        public void TestEqualsWithDifferentType()
        {
            UniScalar testScalar = new UniScalar(12.34f, 56.78f);

            Assert.IsFalse(testScalar.Equals(DateTime.MinValue));
        }
예제 #31
0
 public void TestAdditionOperator() {
   UniScalar testScalar = new UniScalar(1.2f, 3.4f);
   UniScalar addedScalar = new UniScalar(5.6f, 7.8f);
   UniAssertHelper.AreAlmostEqual(
     new UniScalar(6.8f, 11.2f), testScalar + addedScalar, 4
   );
 }
예제 #32
0
 /// <summary>Determines whether two unified scalar values are nearly equal</summary>
 /// <param name="left">Unified scalar value to compare on the left side</param>
 /// <param name="right">Unified scalar value to compare on the right side</param>
 /// <param name="deltaUlps">
 ///   Allowed deviation in representable floating point values for each of the
 ///   unified vector's fields
 /// </param>
 /// <returns>True if the provided unified scalar values are nearly equal</returns>
 private static bool areAlmostEqual(UniScalar left, UniScalar right, int deltaUlps) {
   return
     FloatHelper.AreAlmostEqual(left.Fraction, right.Fraction, deltaUlps) &&
     FloatHelper.AreAlmostEqual(left.Offset, right.Offset, deltaUlps);
 }
예제 #33
0
 public void TestSubtractionOperator() {
   UniScalar testScalar = new UniScalar(1.2f, 3.4f);
   UniScalar subtractedScalar = new UniScalar(5.6f, 7.8f);
   UniAssertHelper.AreAlmostEqual(
     new UniScalar(-4.4f, -4.4f), testScalar - subtractedScalar, 4
   );
 }
예제 #34
0
 public void TestAlmostEqualScalars() {
   UniScalar testScalar = new UniScalar(minusOneFloat, plusOneFloat);
   UniAssertHelper.AreAlmostEqual(new UniScalar(exactFloat, exactFloat), testScalar, 1);
 }
예제 #35
0
 public void TestMultiplicationOperator() {
   UniScalar testScalar = new UniScalar(1.2f, 3.4f);
   UniScalar factorScalar = new UniScalar(5.6f, 7.8f);
   UniAssertHelper.AreAlmostEqual(
     new UniScalar(6.72f, 26.52f), testScalar * factorScalar, 4
   );
 }
예제 #36
0
        public void TestToOffsetWithOffsetOnly()
        {
            UniScalar testScalar = new UniScalar(0.0f, 987.654f);

            Assert.AreEqual(987.654f, testScalar.ToOffset(1000.0f));
        }
예제 #37
0
 /// <summary>Checks whether another instance is equal to this instance</summary>
 /// <param name="other">Other instance to compare to this instance</param>
 /// <returns>True if the other instance is equal to this instance</returns>
 public bool Equals(UniScalar other) {
   // For a struct, 'other' cannot be null
   return (this.Fraction == other.Fraction) && (this.Offset == other.Offset);
 }
예제 #38
0
 public void TestOffsetConstructor() {
   UniScalar testScalar = new UniScalar(123.456f);
   Assert.AreEqual(0.0f, testScalar.Fraction);
   Assert.AreEqual(123.456f, testScalar.Offset);
 }
예제 #39
0
 public void TestDivisionOperator() {
   UniScalar testScalar = new UniScalar(1.2f, 3.4f);
   UniScalar divisorScalar = new UniScalar(2.5f, 5.0f);
   UniAssertHelper.AreAlmostEqual(
     new UniScalar(0.48f, 0.68f), testScalar / divisorScalar, 4
   );
 }
예제 #40
0
 public void TestFullConstructor() {
   UniScalar testScalar = new UniScalar(12.34f, 56.78f);
   Assert.AreEqual(12.34f, testScalar.Fraction);
   Assert.AreEqual(56.78f, testScalar.Offset);
 }
예제 #41
0
 public void TestToOffsetWithOffsetOnly() {
   UniScalar testScalar = new UniScalar(0.0f, 987.654f);
   Assert.AreEqual(987.654f, testScalar.ToOffset(1000.0f));
 }
예제 #42
0
 /// <summary>Checks whether another instance is equal to this instance</summary>
 /// <param name="other">Other instance to compare to this instance</param>
 /// <returns>True if the other instance is equal to this instance</returns>
 public bool Equals(UniScalar other)
 {
     // For a struct, 'other' cannot be null
     return((this.Fraction == other.Fraction) && (this.Offset == other.Offset));
 }
예제 #43
0
        public void TestAlmostEqualScalars()
        {
            UniScalar testScalar = new UniScalar(minusOneFloat, plusOneFloat);

            UniAssertHelper.AreAlmostEqual(new UniScalar(exactFloat, exactFloat), testScalar, 1);
        }