Add additional Vector2 tests
authorvaron <varon@users.noreply.github.com>
Sun, 19 Mar 2017 14:32:37 +0000 (16:32 +0200)
committervaron <varon@users.noreply.github.com>
Sun, 19 Mar 2017 14:32:37 +0000 (16:32 +0200)
tests/OpenTK.Tests/Vectors.fs

index 13e6a75..7376324 100644 (file)
@@ -8,6 +8,39 @@ open OpenTK
 
 module Vector2 = 
     [<Properties(Arbitrary = [| typeof<OpenTKGen> |])>]
+    module Constructors = 
+        //
+        [<Property>]
+        let ``Single value constructor sets all components to the same value`` (f : float32) = 
+            let v = Vector2(f)
+            Assert.Equal(f,v.X)
+            Assert.Equal(f,v.Y)
+        
+        [<Property>]
+        let ``Two value constructor sets all components correctly`` (x,y) = 
+            let v = Vector2(x,y)
+            Assert.Equal(x,v.X)
+            Assert.Equal(y,v.Y)
+        
+        [<Property>]
+        let ``Index operators work for the correct components`` (x,y) = 
+            let v = Vector2(x,y)
+            Assert.Equal(v.[0],v.X)
+            Assert.Equal(v.[1],v.Y)
+        
+        [<Property>]
+        let ``Clamping works for each component`` (a : Vector2,b : Vector2,c : Vector2) = 
+            let inline clamp (value : float32) minV maxV = MathHelper.Clamp(value,minV,maxV)
+            let r = Vector2.Clamp(a,b,c)
+            Assert.Equal(clamp a.X b.X c.X,r.X)
+            Assert.Equal(clamp a.X b.X c.X,r.Y)
+        
+        [<Property>]
+        let ``Length is always >= 0`` (a : Vector2) = 
+            //
+            Assert.True(a.Length >= 0.0f)
+    
+    [<Properties(Arbitrary = [| typeof<OpenTKGen> |])>]
     module ``Simple Properties`` = 
         //
         [<Property>]