]> source.dussan.org Git - svg.js.git/commitdiff
added a few missing tests to increase coverage
authorUlrich-Matthias Schäfer <ulima.ums@googlemail.com>
Fri, 24 Feb 2017 20:50:07 +0000 (21:50 +0100)
committerUlrich-Matthias Schäfer <ulima.ums@googlemail.com>
Fri, 24 Feb 2017 20:50:07 +0000 (21:50 +0100)
spec/SpecRunner.html
spec/fixture.svg
spec/spec/adopter.js
spec/spec/array.js
spec/spec/element.js
spec/spec/utils.js [new file with mode: 0644]

index eea498fa67bd6ea91b653d4b26e5df58fbd98a67..3163e046a8fc86be315f3583789f4bb25b8d274e 100644 (file)
 
 <body>
   <svg height="0" width="0" id="inlineSVG">
+    <defs>
+      <linearGradient>
+        <stop offset="5%"  stop-color="green"/>
+        <stop offset="95%" stop-color="gold"/>
+      </linearGradient>
+      <radialGradient>
+        <stop offset="10%" stop-color="gold"/>
+        <stop offset="95%" stop-color="green"/>
+      </radialGradient>
+    </defs>
     <desc>Some description</desc>
     <path id="lineAB" d="M 100 350 l 150 -300" stroke="red" stroke-width="3" fill="none" />
     <path id="lineBC" d="M 250 50 l 150 300" stroke="red" stroke-width="3" fill="none" />
@@ -44,6 +54,7 @@
     </g>
     <polygon points="200,10 250,190 160,210" />
     <polyline points="20,20 40,25 60,40 80,120 120,140 200,180" />
+    
   </svg>
 
   <!-- include spec files here... -->
@@ -88,6 +99,7 @@
   <script src="spec/viewbox.js"></script>
   <script src="spec/sugar.js"></script>
   <script src="spec/fx.js"></script>
+  <script src="spec/utils.js"></script>
 
   <script type="text/javascript" src="spec/helper.js"></script>
 </body>
index 34bb671063746f84114a8e0e9b34611a03fe307e..f910dc128deee27e85f2913183e6810f4a95d379 100644 (file)
@@ -1,4 +1,14 @@
 <svg height="0" width="0" id="inlineSVG">
+    <defs>
+      <linearGradient>
+        <stop offset="5%"  stop-color="green"/>
+        <stop offset="95%" stop-color="gold"/>
+      </linearGradient>
+      <radialGradient>
+        <stop offset="10%" stop-color="gold"/>
+        <stop offset="95%" stop-color="green"/>
+      </radialGradient>
+    </defs>
        <desc>Some description</desc>
        <path id="lineAB" d="M 100 350 l 150 -300" stroke="red" stroke-width="3" fill="none" />
        <path id="lineBC" d="M 250 50 l 150 300" stroke="red" stroke-width="3" fill="none" />
index a8fdd113caa08a59f301351d83034b9cf029a195..a73bc3525296a02ffd261317cb3ede95e0d88bea 100644 (file)
@@ -1,10 +1,12 @@
 describe('Adopter', function() {
-  var path, polyline, polygon
+  var path, polyline, polygon, linearGradient, radialGradient
 
   beforeEach(function() {
     path      = SVG.get('lineAB')
     polyline  = SVG.get('inlineSVG').select('polyline').first()
     polygon   = SVG.get('inlineSVG').select('polygon').first()
+    linearGradient   = SVG.get('inlineSVG').select('linearGradient').first()
+    radialGradient   = SVG.get('inlineSVG').select('radialGradient').first()
   })
 
   describe('with SVG.Doc instance', function() {
@@ -49,6 +51,24 @@ describe('Adopter', function() {
       expect(polygon.array() instanceof SVG.PointArray).toBeTruthy()
     })
   })
+  
+  describe('with linear SVG.Gradient instance', function() {
+    it('is instance of SVG.Gradient', function() {
+      expect(linearGradient instanceof SVG.Gradient).toBeTruthy()
+    })
+    it('has type of linear', function() {
+      expect(linearGradient.type).toBe('linearGradient') // actually it should be 'linear'. see #606
+    })
+  })
+
+  describe('with radial SVG.Gradient instance', function() {
+    it('is instance of SVG.Gradient', function() {
+      expect(radialGradient instanceof SVG.Gradient).toBeTruthy()
+    })
+    it('has type of radial', function() {
+      expect(radialGradient.type).toBe('radialGradient') // actually it should be 'radial'. see #606
+    })
+  })
 
   describe('with node that has no matching svg.js class', function() {
     it('wraps the node in the base SVG.Element class', function() {
index f1d264a1e988d9902ae1a190e23c4da060843280..b7e2a29618205db59c6f9caf03994f068ca27319 100644 (file)
@@ -1,5 +1,5 @@
 describe('Array', function () {
-  var array
+  var array, arr1, arr2
 
   it('parses a matrix array correctly to string', function() {
     array = new SVG.Array([ .343,  .669, .119, 0,   0
@@ -9,6 +9,12 @@ describe('Array', function () {
 
     expect(array + '').toBe('0.343 0.669 0.119 0 0 0.249 -0.626 0.13 0 0 0.172 0.334 0.111 0 0 0 0 0 1 0')
   })
+  it('parses space seperated string and converts it to array', function() {
+    expect((new SVG.Array('1 2 3 4')).value).toEqual([1,2,3,4])
+  })
+  it('parses comma seperated string and converts it to array', function() {
+    expect((new SVG.Array('1,2,3,4')).value).toEqual([1,2,3,4])
+  })
   describe('reverse()', function() {
     it('reverses the array', function() {
       array = new SVG.Array([1 ,2 ,3, 4, 5]).reverse()
@@ -59,6 +65,65 @@ describe('Array', function () {
       }
     })
   })
+  describe('morph()', function() {
+    it('adds entries so that destination array has equal length', function() {
+    
+      arr1 = new SVG.Array([1,2,3,4,5])
+      arr2 = new SVG.Array([1,2,3,4])
+      
+      arr1.morph(arr2)
+      
+      expect(arr1.destination.length).toBe(arr1.value.length)
+    })
+    it('does the same the other way round', function() {
+    
+      arr1 = new SVG.Array([1,2,3,4])
+      arr2 = new SVG.Array([1,2,3,4,5])
+      
+      arr1.morph(arr2)
+      
+      expect(arr1.destination.length).toBe(arr1.value.length)
+    })
+  })
+  describe('settle()', function() {
+    it('cleans up any duplicate value', function() {
+      array = new SVG.Array([1,2,3,4,5,4,3,2,1])
+      expect(array.settle().sort()).toEqual([1,2,3,4,5].sort())
+    })
+  })
+  describe('at()', function() {
+    it('returns a new array instance', function() {
+      arr1 = new SVG.Array([1,2,3,4])
+      arr2 = new SVG.Array([2,3,4,5])
+      
+      arr1.morph(arr2)
+      
+      start = arr1.at(0)
+      end = arr1.at(1)
+      
+      expect(start instanceof SVG.Array).toBeTruthy()
+      expect(start).not.toBe(arr1)  
+      
+      expect(end instanceof SVG.Array).toBeTruthy()
+      expect(end).not.toBe(arr2)
+    })
+    it('morphs all values of the array', function() {
+      arr1 = new SVG.Array([1,2,3,4])
+      arr2 = new SVG.Array([2,3,4,5])
+      
+      arr1.morph(arr2)
+      
+      expect(arr1.at(0.5).value).toEqual([1.5, 2.5, 3.5, 4.5])
+    })
+    it('returns array if no destination was specified', function() {
+      arr1 = new SVG.Array([1,2,3,4])
+      
+      arr2 = arr1.at(0.5)
+      
+      expect(arr2.value).toEqual([1,2,3,4])
+      expect(arr2).toBe(arr1)
+    })
+  })
 })
 
 
index 0dc9124ea649f38570998c142568f93ae1462d12..3482948b97b74b3aebb5891e5eff046bf631973b 100644 (file)
@@ -730,4 +730,40 @@ describe('Element', function() {
       expect(rect.point(pos.x, pos.y).y).toBeCloseTo(pos.y - translation.y)
     })
   })
+  
+  describe('inside()', function() {
+    it('checks whether the given point inside the bounding box of the element', function() {
+      var rect = draw.rect(100,100)
+      expect(rect.inside(50,50)).toBeTruthy()
+      expect(rect.inside(150,150)).toBeFalsy()
+    })
+  })  
+  describe('show()', function() {
+    it('sets display property to ""', function() {
+      var rect = draw.rect(100,100).show()
+      expect(rect.style('display')).toBe('')
+    })
+  })
+  describe('hide()', function() {
+    it('sets display property to none', function() {
+      var rect = draw.rect(100,100).hide()
+      expect(rect.style('display')).toBe('none')
+    })
+  })
+  describe('visible()', function() {
+    it('checks if element is hidden or not', function() {
+      var rect = draw.rect(100,100).hide()
+      expect(rect.visible()).toBeFalsy()
+      rect.show()
+      expect(rect.visible()).toBeTruthy()
+    })
+  })
+  describe('is()', function() {
+    it('checks if element is instance of a certain kind', function() {
+      var rect = draw.rect(100,100)
+      expect(rect.is(SVG.Rect)).toBeTruthy()
+      expect(rect.is(SVG.Element)).toBeTruthy()
+      expect(rect.is(SVG.Parent)).toBeFalsy()
+    })
+  })
 })
diff --git a/spec/spec/utils.js b/spec/spec/utils.js
new file mode 100644 (file)
index 0000000..be8262e
--- /dev/null
@@ -0,0 +1,10 @@
+describe('SVG.utils', function() {
+  describe('degrees()', function() {
+    it('converts radiant to degrees', function() {
+      expect(SVG.utils.degrees(Math.PI)).toBe(180)
+    })
+    it('maps to 0 - 360 degree only', function() {
+      expect(SVG.utils.degrees(2.5 * Math.PI)).toBe(90)
+    })
+  })
+})
\ No newline at end of file