[Sie-announce] SIEコード [2309] createSVGMatrixメソッドとmultiplyメソッドのチェックを開始

アーカイブの一覧に戻る

svnno****@sourc***** svnno****@sourc*****
2011年 1月 18日 (火) 23:08:16 JST


Revision: 2309
          http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=2309
Author:   dhrname
Date:     2011-01-18 23:08:16 +0900 (Tue, 18 Jan 2011)

Log Message:
-----------
createSVGMatrixメソッドとmultiplyメソッドのチェックを開始

Modified Paths:
--------------
    trunk/Spec/SvgDomSpec.js

Modified: trunk/Spec/SvgDomSpec.js
===================================================================
--- trunk/Spec/SvgDomSpec.js	2011-01-17 14:41:02 UTC (rev 2308)
+++ trunk/Spec/SvgDomSpec.js	2011-01-18 14:08:16 UTC (rev 2309)
@@ -75,6 +75,7 @@
  */
 
 describe("SVG Spec in JavaScript", function() {
+  /*Refer to W3C SVG1.1 (second edition)*/
   var doc, svg;
   beforeEach(function() {
     /*前もって実行しておく変数(The variable 'doc' is a document node, and the 'svg' is a root element node.)*/
@@ -165,36 +166,81 @@
       }
       t = null;
     });
-    describe("SVG Unit :: SVG Matrix", function() {
-      var s;
-      beforeEach(function() {
-        s = svg.createSVGMatrix();
-      });
-      it("for the default value on the property of SVGMtrix", function() {
-        /*See http://www.w3.org/TR/SVG/struct.html#InterfaceSVGSVGElement
-         * The object is initialized to the identity matrix.
-         */
-        expect(s.a).toEqual(1);
-        expect(s.b).toEqual(0);
-        expect(s.c).toEqual(0);
-        expect(s.d).toEqual(1);
-        expect(s.e).toEqual(0);
-        expect(s.f).toEqual(0);
-      });
-      /*境界条件を調べておく (limit value analysis)*/
-      it("should be this for the value, when it calls a 'multiply' method", function() {
-        var t = [Number.MAX_VALUE, Number.MIN_VALUE, 0, Number.MAX_VALUE/2, Number.MIN_VALUE/2];
-        for (var i=0,tli=t.length;i<tli;++i) {
-          var n = svg.createSVGMatrix();
-          n.a = t[i];
-          n.b = t[i];
-          n.c = t[i];
-          n.d = t[i];
-          n.e = t[i];
-          s.multiply(n);
-        }
-        t = null;
-      });
+  });
+  describe("SVG Unit :: SVG Matrix", function() {
+    var s;
+    beforeEach(function() {
+      s = svg.createSVGMatrix();
     });
+    it("for the default value on the property of SVGMtrix", function() {
+      /*See http://www.w3.org/TR/SVG/struct.html#InterfaceSVGSVGElement
+       * *The object is initialized to the identity matrix.
+       *以下では、createSVGElementが単位行列を返しているかどうかをチェック
+       */
+      expect(s.a).toEqual(1);
+      expect(s.b).toEqual(0);
+      expect(s.c).toEqual(0);
+      expect(s.d).toEqual(1);
+      expect(s.e).toEqual(0);
+      expect(s.f).toEqual(0);
+    });
+    /*境界条件を調べておく (limit value analysis)*/
+    it("should be this for the value, when it calls a 'multiply' method", function() {
+      var t = [Number.MAX_VALUE, Number.MIN_VALUE, 0, Number.MAX_VALUE/2, Number.MIN_VALUE/2, 0];
+      for (var i=0,tli=t.length;i<tli;++i) {
+        var n = svg.createSVGMatrix();
+        n.a = t[i];
+        n.b = t[i];
+        n.c = t[i];
+        n.d = t[i];
+        n.e = t[i];
+        s.multiply(n);
+        n = null;
+      }
+      t = null;
+    });
+    it("should return the SVGMatrix Object, when it calls a 'multiply' method", function() {
+      var t = s.multiply(svg.createSVGMatrix());
+      expect(t.a).toEqual(1);
+      expect(t.b).toEqual(0);
+      expect(t.c).toEqual(0);
+      expect(t.d).toEqual(1);
+      expect(t.e).toEqual(0);
+      expect(t.f).toEqual(0);
+      /*See http://www.w3.org/TR/SVG/coords.html#InterfaceSVGMatrix
+       * *..returning the resulting new matrix. 
+       *以下では新しいSVGMatrixオブジェクトを返しているかどうかをチェック
+       */
+      expect(t).toNotBe(s);
+    });
+    /*同値分割をして、有効同値クラスを調べておく (Equivalence partitioning, the following is the valid partion)*/
+    it("should be this for the value", function() {
+      var t = [Math.PI, 10/3], num = (t[0]+"").length - 1; //無理数を作って、ぎりぎりの有効数字の桁数numをはじき出しておく
+      for (var i=1;i<num;++i) {
+        t[t.length] = Math.pow(10, i);
+        t[t.length] = Math.pow(10, -i);
+        t[t.length] = Math.pow(10, i);
+        t[t.length] = Math.pow(10, -i);
+      }
+      for (var i=0,tli=t.length;i<tli;++i) {
+        var n = svg.createSVGMatrix(), ti = t[i];
+        n.a = ti;
+        n.b = ti;
+        n.c = ti;
+        n.d = ti;
+        n.e = ti;
+        n.f = ti;
+        var d = n.multiply(s);
+        /*注:sが単位行列であることに注意すること (Note that the variable 's' is a identity matrix)*/
+        expect(d.a).toEqual(ti);
+        expect(d.b).toEqual(ti);
+        expect(d.c).toEqual(ti);
+        expect(d.d).toEqual(ti);
+        expect(d.e).toEqual(ti);
+        expect(d.f).toEqual(ti);
+        n = d = null;
+      }
+      t = null;
+    });
   });
 });
\ No newline at end of file




Sie-announce メーリングリストの案内
アーカイブの一覧に戻る