| OLD | NEW | 
|---|
|  | (Empty) | 
| 1 <!doctype html> |  | 
| 2 <title>SVGAngle tests</title> |  | 
| 3 <script src=../../resources/testharness.js></script> |  | 
| 4 <script src=../../resources/testharnessreport.js></script> |  | 
| 5 <div id="testcontainer"> |  | 
| 6 <svg width="1" height="1" visibility="hidden"> |  | 
| 7 <defs><marker/></defs> |  | 
| 8 </svg> |  | 
| 9 </div> |  | 
| 10 <div id=log></div> |  | 
| 11 <script> |  | 
| 12 var svg = document.querySelector("svg"); |  | 
| 13 var marker = document.querySelector("marker"); |  | 
| 14 var EPSILON = Math.pow(2, -8); |  | 
| 15 var angles = [ 10, 0, 360, 500, 90, 180, 45, 25.9, 145, 270, 0.5, 0.2, 1.37, 3.1
     4159 /* Math.PI */, 0.523599 /* Math.PI/6 */ ]; |  | 
| 16 var units = { |  | 
| 17         "" : 1, |  | 
| 18         "deg": 2, |  | 
| 19         "rad": 3, |  | 
| 20         "grad": 4, |  | 
| 21         "turn": 5 |  | 
| 22 }; |  | 
| 23 var highestExposedUnit = 4; // SVG_ANGLETYPE_GRAD |  | 
| 24 var unitconstants = { |  | 
| 25         "UNKNOWN" : 0, |  | 
| 26         "UNSPECIFIED": 1, |  | 
| 27         "DEG": 2, |  | 
| 28         "RAD": 3, |  | 
| 29         "GRAD": 4, |  | 
| 30 }; |  | 
| 31 var nonexposedunitconstants = { |  | 
| 32         "TURN": 5 |  | 
| 33 }; |  | 
| 34 |  | 
| 35 function convertTo(value, unit, outunit) { |  | 
| 36         switch(unit) { |  | 
| 37             case "": |  | 
| 38             case "deg": |  | 
| 39                         switch(outunit) { |  | 
| 40                                 case "": |  | 
| 41                                 case "deg": |  | 
| 42                                         return value; |  | 
| 43                                 case "rad": |  | 
| 44                                         return value*(Math.PI/180); |  | 
| 45                                 case "grad": |  | 
| 46                                         return value*(400/360); |  | 
| 47                                 case "turn": |  | 
| 48                                         return value/360; |  | 
| 49                         } |  | 
| 50                 case "rad": |  | 
| 51                         switch(outunit) { |  | 
| 52                                 case "": |  | 
| 53                                 case "deg": |  | 
| 54                                         return value * 180 / Math.PI; |  | 
| 55                                 case "rad": |  | 
| 56                                         return value; |  | 
| 57                                 case "grad": |  | 
| 58                                         return value * 180 / Math.PI * 400 / 360
     ; |  | 
| 59                                 case "turn": |  | 
| 60                                         return value / (2 * Math.PI); |  | 
| 61                         } |  | 
| 62                 case "grad": |  | 
| 63                         switch(outunit) { |  | 
| 64                                 case "": |  | 
| 65                                 case "deg": |  | 
| 66                                         return value * 360 / 400; |  | 
| 67                                 case "rad": |  | 
| 68                                         return value * Math.PI * 2 / 400; |  | 
| 69                                 case "grad": |  | 
| 70                                         return value; |  | 
| 71                                 case "turn": |  | 
| 72                                         return value / 400; |  | 
| 73                         } |  | 
| 74                 case "turn": |  | 
| 75                         switch(outunit) { |  | 
| 76                                 case "": |  | 
| 77                                 case "deg": |  | 
| 78                                         return value * 360; |  | 
| 79                                 case "rad": |  | 
| 80                                         return value * Math.PI * 2; |  | 
| 81                                 case "grad": |  | 
| 82                                         return value * 400; |  | 
| 83                                 case "turn": |  | 
| 84                                         return value; |  | 
| 85                         } |  | 
| 86         } |  | 
| 87 } |  | 
| 88 |  | 
| 89 function createAngle(valuestr) { |  | 
| 90         var angle = svg.createSVGAngle(); |  | 
| 91         angle.valueAsString = valuestr; |  | 
| 92         return angle; |  | 
| 93 } |  | 
| 94 |  | 
| 95 for(var unit in units) { |  | 
| 96         test(function() { |  | 
| 97                 var result = undefined; |  | 
| 98                 try { |  | 
| 99                         var a = createAngle(47 + unit); |  | 
| 100                         result = a.unitType; |  | 
| 101                 } |  | 
| 102                 catch(e) {} |  | 
| 103                 if (units[unit] > highestExposedUnit) |  | 
| 104                         assert_equals(result, undefined); |  | 
| 105                 else |  | 
| 106                         assert_equals(result, units[unit]); |  | 
| 107         }, "SVGAngle(47" + unit + ").unitType"); |  | 
| 108 } |  | 
| 109 |  | 
| 110 for(var constant in unitconstants) { |  | 
| 111         var str = "SVG_ANGLETYPE_" + constant; |  | 
| 112         test(function() { |  | 
| 113                 assert_exists(SVGAngle, str, ""); |  | 
| 114         }, "SVGAngle." + str); |  | 
| 115 } |  | 
| 116 for(var constant in nonexposedunitconstants) { |  | 
| 117         var str = "SVG_ANGLETYPE_" + constant; |  | 
| 118         test(function() { |  | 
| 119                 assert_not_exists(SVGAngle, str, ""); |  | 
| 120         }, "SVGAngle." + str); |  | 
| 121 } |  | 
| 122 |  | 
| 123 angles.forEach(function(angle) { |  | 
| 124         for(var unit in units) { |  | 
| 125                 var anglestr = angle + unit; |  | 
| 126                 var ref; |  | 
| 127                 try { |  | 
| 128                         ref = createAngle(anglestr); |  | 
| 129                 } |  | 
| 130                 catch(e) { |  | 
| 131                         continue; |  | 
| 132                 } |  | 
| 133 |  | 
| 134                 test(function() { |  | 
| 135                         assert_approx_equals(angle, ref.valueInSpecifiedUnits, E
     PSILON); |  | 
| 136                 }, "SVGAngle(" + anglestr + ").valueInSpecifiedUnits"); |  | 
| 137 |  | 
| 138                 try { |  | 
| 139                         marker.setAttribute("orient", anglestr); |  | 
| 140 |  | 
| 141                         test(function() { |  | 
| 142                                 assert_equals(marker.orientAngle.baseVal.valueAs
     String, anglestr); |  | 
| 143                         }, "orient=\"" + anglestr + "\".valueAsString"); |  | 
| 144 |  | 
| 145                         test(function() { |  | 
| 146                                 assert_approx_equals(marker.orientAngle.baseVal.
     value, convertTo(angle, unit, "deg"), EPSILON); |  | 
| 147                         }, "orient=\"" + anglestr + "\".value"); |  | 
| 148                 } |  | 
| 149                 finally { |  | 
| 150                         marker.removeAttribute("orient"); |  | 
| 151                 } |  | 
| 152 |  | 
| 153                 for (var otherunit in units) { |  | 
| 154                         test(function() { |  | 
| 155                                 var a = createAngle(anglestr); |  | 
| 156                                 try { |  | 
| 157                                         a.convertToSpecifiedUnits(units[otheruni
     t]); |  | 
| 158                                 } |  | 
| 159                                 catch(e) {} |  | 
| 160 |  | 
| 161                                 // unknown unit |  | 
| 162                                 if (units[otherunit] > highestExposedUnit) |  | 
| 163                                         assert_approx_equals(a.valueInSpecifiedU
     nits, angle, EPSILON); |  | 
| 164                                 else |  | 
| 165                                         assert_approx_equals(a.valueInSpecifiedU
     nits, convertTo(angle, unit, otherunit), EPSILON); |  | 
| 166                         }, "SVGAngle(" + anglestr + ").convertToSpecifiedUnits("
      + units[otherunit] + " /*" + (otherunit ? otherunit : "unspecified") + "*/)"); |  | 
| 167 |  | 
| 168                         test(function() { |  | 
| 169                                 var result = ""; |  | 
| 170                                 try { |  | 
| 171                                         var a = createAngle(47 + otherunit); |  | 
| 172                                         a.newValueSpecifiedUnits(units[unit], an
     gle); |  | 
| 173                                         result = a.valueAsString; |  | 
| 174                                 } |  | 
| 175                                 catch(e) { |  | 
| 176                                 } |  | 
| 177 |  | 
| 178                                 // unknown unit |  | 
| 179                                 if (units[unit] > highestExposedUnit || units[ot
     herunit] > highestExposedUnit) |  | 
| 180                                         assert_equals(result, ""); |  | 
| 181                                 else |  | 
| 182                                         assert_equals(result, ref.valueAsString)
     ; |  | 
| 183                         }, "newValueSpecifiedUnits(" + units[unit] + ", " + angl
     e + ")" ); |  | 
| 184                 }; |  | 
| 185         } |  | 
| 186 }); |  | 
| 187 |  | 
| 188 </script> |  | 
| OLD | NEW | 
|---|