]> source.dussan.org Git - svg.js.git/commitdiff
added tests to cover all branches
authorUlrich-Matthias Schäfer <ulima.ums@googlemail.com>
Fri, 10 Apr 2020 09:24:08 +0000 (19:24 +1000)
committerUlrich-Matthias Schäfer <ulima.ums@googlemail.com>
Fri, 10 Apr 2020 09:24:08 +0000 (19:24 +1000)
spec/spec/elements/Circle.js
spec/spec/elements/Dom.js
spec/spec/elements/Ellipse.js
spec/spec/elements/G.js
spec/spec/elements/Line.js
spec/spec/elements/Marker.js
spec/spec/elements/Stop.js
spec/spec/elements/Text.js
spec/spec/elements/TextPath.js

index e9b8b56480a7887433c5d1d0e4566cee13448f0b..0b339f1904f1ec5534ff793fe03927034f013538 100644 (file)
@@ -61,6 +61,13 @@ describe('Circle.js', () => {
         expect(circle.attr('r')).toBe(25)
         expect(circle).toEqual(any(Circle))
       })
+
+      it('defaults to zero size', () => {
+        const group = new G()
+        const circle = group.circle()
+        expect(circle.attr('r')).toBe(0)
+        expect(circle).toEqual(any(Circle))
+      })
     })
   })
 })
index 3227ba15df9ff2e3b9a6d33aee2904de4f3e4641..23104733055d7506b599211d26ac4b3f3bdef18e 100644 (file)
@@ -48,6 +48,14 @@ describe('Dom.js', function () {
       expect(g.get(1)).toBe(rect)
     })
 
+    it('does nothing if element is already the element at that position', () => {
+      const g = new G()
+      g.rect(100, 100)
+      const rect = g.rect(100, 100)
+      g.add(rect, 1)
+      expect(g.get(1)).toBe(rect)
+    })
+
     it('handles svg strings', () => {
       const g = new G()
       g.add('<rect>')
index 56e5d11b748633a3da68bde3901098a39d69f0a0..2172669285fe520d215162df22ff6960e79b8461 100644 (file)
@@ -55,6 +55,22 @@ describe('Ellipse.js', () => {
         expect(ellipse.attr('ry')).toBe(25)
         expect(ellipse).toEqual(any(Ellipse))
       })
+
+      it('defaults to same radius with one argument', () => {
+        const group = new G()
+        const ellipse = group.ellipse(50)
+        expect(ellipse.attr('rx')).toBe(25)
+        expect(ellipse.attr('ry')).toBe(25)
+        expect(ellipse).toEqual(any(Ellipse))
+      })
+
+      it('defaults to zero radius with no argument', () => {
+        const group = new G()
+        const ellipse = group.ellipse()
+        expect(ellipse.attr('rx')).toBe(0)
+        expect(ellipse.attr('ry')).toBe(0)
+        expect(ellipse).toEqual(any(Ellipse))
+      })
     })
   })
 })
index b6850d580f12b244379ace18024099a7468d4575..e9f803f6da454c4f8f84c1acaf10123cba105526 100644 (file)
@@ -96,6 +96,17 @@ describe('G.js', () => {
       g.move(100, 150)
       expect(g.dmove).toHaveBeenCalledWith(-11, -73)
     })
+
+    it('defaults to x=0 and y=0', () => {
+      const canvas = SVG().addTo(container)
+      const g = canvas.group()
+      g.rect(100, 200).move(111, 223)
+
+      spyOn(g, 'dmove')
+
+      g.move()
+      expect(g.dmove).toHaveBeenCalledWith(-111, -223)
+    })
   })
 
   describe('x()', () => {
index ebb2406ba60df6a8ec3a659aee237c1b99c6e223..9f25937e75516340bd495375b439d670fc4fd2d6 100644 (file)
@@ -123,6 +123,13 @@ describe('Line.js', () => {
         expect(line.array()).toEqual([ [ 1, 2 ], [ 3, 4 ] ])
         expect(line).toEqual(any(Line))
       })
+
+      it('defaults to zero line', () => {
+        const group = new G()
+        const line = group.line()
+        expect(line.array()).toEqual([ [ 0, 0 ], [ 0, 0 ] ])
+        expect(line).toEqual(any(Line))
+      })
     })
   })
 })
index 129bbc2ee68fe6a7932b19a9355e30f95661ee2b..d2726a9266fcca89b8a4a2120ddcb0c89507cc5c 100644 (file)
@@ -93,7 +93,25 @@ describe('Marker.js', function () {
     })
   })
 
-  describe('Path', () => {
+  describe('Defs', () => {
+    describe('marker()', () => {
+      it('creates a marker in the defs and sets all attributes', () => {
+        const canvas = SVG()
+        const defs = canvas.defs()
+        const marker = defs.marker(10, 12)
+        expect(marker.attr('refX')).toBe(5)
+        expect(marker.attr('refY')).toBe(6)
+        expect(marker.attr('markerWidth')).toBe(10)
+        expect(marker.attr('markerHeight')).toBe(12)
+        expect(marker.attr('viewBox')).toBe('0 0 10 12')
+        expect(marker.attr('orient')).toBe('auto')
+        expect(marker).toEqual(any(Marker))
+        expect(defs.children()).toEqual([ marker ])
+      })
+    })
+  })
+
+  describe('marker', () => {
     var path, marker, canvas
 
     beforeEach(() => {
@@ -140,6 +158,13 @@ describe('Marker.js', function () {
         expect(path.node.getAttribute('marker-end')).toBe(marker.toString())
       })
 
+      it('creates a marker and applies it to the marker-end attribute', () => {
+        path.marker('all', 10, 12)
+        marker = path.reference('marker')
+
+        expect(path.node.getAttribute('marker')).toBe(marker.toString())
+      })
+
       it('accepts an instance of an existing marker element as the second argument', () => {
         marker = new Marker().size(11, 11)
         path.marker('mid', marker)
index b6f331d186197539438b7f721c178e720324b287..e2ce2a83598d5ac9b56cb937f2849b2a4bf22ba3 100644 (file)
@@ -31,6 +31,26 @@ describe('Stop.js', () => {
       expect(stop.attr('stop-color')).toBe('#ffffff')
       expect(stop.attr('stop-opacity')).toBe(0.5)
     })
+
+    it('sets efault values if not all supplied', () => {
+      let stop = new Stop()
+      stop.update({ offset: 0.1 })
+      expect(stop.attr('offset')).toBe(0.1)
+      expect(stop.attr('stop-color')).toBe('#000000')
+      expect(stop.attr('stop-opacity')).toBe(1)
+
+      stop = new Stop()
+      stop.update({ color: '#ffffff' })
+      expect(stop.attr('offset')).toBe(0)
+      expect(stop.attr('stop-color')).toBe('#ffffff')
+      expect(stop.attr('stop-opacity')).toBe(1)
+
+      stop = new Stop()
+      stop.update({ opacity: 0.5 })
+      expect(stop.attr('offset')).toBe(0)
+      expect(stop.attr('stop-color')).toBe('#000000')
+      expect(stop.attr('stop-opacity')).toBe(0.5)
+    })
   })
 
   describe('Gradient', () => {
index f28c2567533a886f6b6ffc135be56ec7d1b594f0..e1a74d2dc04d67ae32f831c63404faa2fa5dbe26 100644 (file)
@@ -125,6 +125,13 @@ describe('Text.js', () => {
       expect(text.dom.leading.value).toBe(3)
       expect(text.dom.leading.unit).toBe('px')
     })
+
+    it('uses a leading of 1.3 when no leading is set or 0', () => {
+      const text = new Text()
+      text.setData({ leading: 0 })
+
+      expect(text.dom.leading.value).toBe(1.3)
+    })
   })
 
   describe('Container', () => {
@@ -135,6 +142,13 @@ describe('Text.js', () => {
         expect(text).toEqual(any(Text))
         expect(text.text()).toBe('Hello World\nHow is it\ngoing')
       })
+
+      it('defaults to empty string', () => {
+        const group = new G()
+        const text = group.text()
+        expect(text).toEqual(any(Text))
+        expect(text.text()).toBe('')
+      })
     })
 
     describe('plain()', () => {
@@ -144,6 +158,13 @@ describe('Text.js', () => {
         expect(text).toEqual(any(Text))
         expect(text.node.childNodes[0].data).toBe('A piece')
       })
+
+      it('defaults to empty string', () => {
+        const group = new G()
+        const text = group.plain()
+        expect(text).toEqual(any(Text))
+        expect(text.node.childNodes[0].data).toBe('')
+      })
     })
   })
 })
index 213b86704676f3fcd881b18023bdfe28e9f1f319..41c235761d568adb27a9020689cbe9e77cdde167 100644 (file)
@@ -53,6 +53,11 @@ describe('TextPath.js', () => {
       expect(textPath.plot()).toBe(textPath.array())
       expect(textPath.plot()).not.toBe(null)
     })
+
+    it('does nothingif no path is attached as track', () => {
+      const textPath = Object.freeze(new TextPath())
+      expect(textPath.plot('M0 0')).toBe(textPath)
+    })
   })
 
   describe('Container', () => {
@@ -95,6 +100,17 @@ describe('TextPath.js', () => {
         const textPath = text.path(path)
         expect(textPath.reference('href')).toBe(path)
       })
+
+      it('imports all nodes from the text by default', () => {
+        const children = text.children()
+        const textPath = text.path(path)
+        expect(textPath.children()).toEqual(children)
+      })
+
+      it('does not import all nodes from the text when second parameter false', () => {
+        const textPath = text.path(path, false)
+        expect(textPath.children()).toEqual([])
+      })
     })
 
     describe('textPath()', () => {