blob: 18e2a88cc7b75f6775e8570230f0e1fc17df021f [file] [log] [blame]
<!DOCTYPE html>
<script src='../resources/testharness.js'></script>
<script src='../resources/testharnessreport.js'></script>
<script>
EPSILON = 0.000001;
test(function() {
assert_throws(new TypeError(), function() { new CSSAngleValue(100, null); });
assert_throws(new TypeError(), function() { new CSSAngleValue(100, ''); });
assert_throws(new TypeError(), function() { new CSSAngleValue(100, 'px'); });
assert_throws(new TypeError(), function() { new CSSAngleValue(100, 'bananas'); });
}, 'Invalid unit name throws an exception')
test(function() {
var angleValue = new CSSAngleValue(100.1, 'deg');
assert_equals(angleValue.degrees, 100.1);
assert_approx_equals(angleValue.radians, 1.747075, EPSILON);
assert_approx_equals(angleValue.gradians, 111.222222, EPSILON);
assert_approx_equals(angleValue.turns, 0.278056, EPSILON);
}, 'Test degree conversions');
test(function() {
var angleValue = new CSSAngleValue(100, 'rad');
assert_equals(angleValue.radians, 100);
assert_approx_equals(angleValue.degrees, 5729.577951, EPSILON);
assert_approx_equals(angleValue.gradians, 6366.197724, EPSILON);
assert_approx_equals(angleValue.turns, 15.915494, EPSILON);
}, 'Test radian conversions');
test(function() {
var angleValue = new CSSAngleValue(100, 'grad');
assert_equals(angleValue.gradians, 100);
assert_equals(angleValue.degrees, 90);
assert_approx_equals(angleValue.radians, 1.570796, EPSILON);
assert_equals(angleValue.turns, 0.25);
}, 'Test gradian conversions');
test(function() {
var angleValue = new CSSAngleValue(100, 'turn');
assert_equals(angleValue.turns, 100);
assert_equals(angleValue.degrees, 36000);
assert_approx_equals(angleValue.radians, 628.31853, EPSILON);
assert_equals(angleValue.gradians, 40000);
}, 'Test turn conversions');
test(function() {
assert_equals((new CSSAngleValue(100, 'deg')).cssText, '100deg');
assert_equals((new CSSAngleValue(200, 'rad')).cssText, '200rad');
assert_equals((new CSSAngleValue(300, 'grad')).cssText, '300grad');
assert_equals((new CSSAngleValue(400, 'turn')).cssText, '400turn');
}, 'Test cssText');
</script>