[Sie-announce] SIEコード [2574] SVGUnit :: SVGAngleに関する同値分割テストと境界条件テストを追加

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2011年 4月 8日 (金) 21:23:05 JST


Revision: 2574
          http://sourceforge.jp/projects/sie/svn/view?view=rev&revision=2574
Author:   dhrname
Date:     2011-04-08 21:23:05 +0900 (Fri, 08 Apr 2011)

Log Message:
-----------
SVGUnit :: SVGAngleに関する同値分割テストと境界条件テストを追加

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

Modified: trunk/Spec/spec/SvgDomSpec.js
===================================================================
--- trunk/Spec/spec/SvgDomSpec.js	2011-04-08 12:10:09 UTC (rev 2573)
+++ trunk/Spec/spec/SvgDomSpec.js	2011-04-08 12:23:05 UTC (rev 2574)
@@ -923,9 +923,87 @@
       s = svg.createSVGAngle();
     });
     /*デフォルト値かどうかをチェックしていく(Checking the default value of a SVGNumber interface.)*/
-    it("for the default value on the property of SVGNumber", function() {
+    it("for the default value on the property of SVGAngle", function() {
       expect(s.value).toEqual(0);
+      expect(s.valueInSpecifiedUnits).toEqual(0);
       expect(s.unitType).toEqual(1);
     });
+    /*境界条件を調べておく (limit value analysis)*/
+    it("should be this for the value, when it calls a newValueSpecifiedUnits method (limit value analysis)", function() {
+      var t = [Number.MAX_VALUE, Number.MIN_VALUE, 0, Number.MAX_VALUE/2, -Number.MIN_VALUE];
+      for (var i=0,tli=t.length;i<tli;++i) {
+        s.newValueSpecifiedUnits(1, t[i]);
+        expect(s.valueInSpecifiedUnits).toEqual(t[i]);
+        expect(s.value).toEqual(t[i]);
+        expect(s.valueAsString).toEqual(t[i]+"");
+        expect(s.unitType).toEqual(1);
+      }
+      t = null;
+    });
+    /*同値分割をして、有効同値クラスを調べておく (Equivalence partitioning, the following is the valid partion)*/
+    it("should be this for the value, when it calls a newValueSpecifiedUnits method (the valid partion)", 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) {
+        s.newValueSpecifiedUnits(1, t[i]);
+        expect(s.valueInSpecifiedUnits).toEqual(t[i]);
+        expect(s.value).toEqual(t[i]);
+        expect(s.valueAsString).toEqual(t[i]+"");
+        expect(s.unitType).toEqual(1);
+      }
+      t = null;
+    });
+    /*同値分割をして、無効同値クラスを調べておく (Equivalence partitioning, the following is the invalid partion)*/
+    it("should throw a DOMException 'Not Supported Error', when it calls a newValueSpecifiedUnits method (the invalid partion)", function() {
+      var t = [Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY, Number.NaN, {}, [], "", "1", "-1", undefined, null, 0, -1, 11, 1.1, 10.1];
+      for (var i=0,tli=t.length;i<tli;++i) {
+        var ti = t[i],
+            sn = function() {
+              s.newValueSpecifiedUnits(ti, 0);
+            };
+        expect(sn).toThrow();
+        ti = sn = null;
+      }
+      t = null;
+    });
+    /*同値分割をして、有効同値クラスを調べておく (Equivalence partitioning, the following is the valid partion)*/
+    it("should be this for the value, when it calls a convertToSpecifiedUnits method (the valid partion)", function() {
+      var unit = ["", "deg", "rad", "grad"];
+      for (var i=1,tli=4;i<tli;++i) {
+        s.convertToSpecifiedUnits(i);
+        expect(s.valueInSpecifiedUnits).toEqual(0);
+        expect(s.value).toEqual(0);
+        expect(s.valueAsString).toEqual("0" + unit[i-1]);
+        expect(s.unitType).toEqual(i);
+      }
+      /*2gradにまず設定しておいて、その後、convertToSpecifiedUnitsメソッドで"deg"単位に変換する。
+       * (The 's' value set to "2cm", and convert from "cm" to "mm" unit in convertToSpecifiedUnits method.
+       */
+      s.newValueSpecifiedUnits(4, 2);
+      var sv = s.value;
+      s.convertToSpecifiedUnits(2);
+      expect(s.valueInSpecifiedUnits).toEqual(1.8);
+      expect(s.value).toEqual(sv);
+      expect(s.valueAsString).toEqual("1.8deg");
+      expect(s.unitType).toEqual(2);
+      unit = sv = null;
+    });
+    /*同値分割をして、無効同値クラスを調べておく (equivalence partitioning, the following is the invalid partion)*/
+    it("should throw a DOMException 'Not Supported Error', when it calls a convertToSpecifiedUnits method (the invalid partion)", function() {
+      var t = [Number.NEGATIVE_INFINITY, Number.POSITIVE_INFINITY, Number.NaN, {}, [], "", "1", "-1", undefined, null, 0, -1, 11, 1.1, 10.1];
+      for (var i=0,tli=t.length;i<tli;++i) {
+        var ti = t[i], sn = function() {
+          s.convertToSpecifiedUnits(ti);
+        };
+        expect(sn).toThrow();
+        ti = sn = null;
+      }
+      t = null;
+    });
   });
 });
\ No newline at end of file




Sie-announce メーリングリストの案内
Back to archive index