old_contents: /*
   * Paper.js - The Swiss Army Knife of Vector Graphics Scripting.
   * http://paperjs.org/
   *
   * Copyright (c) 2011 - 2013, Juerg Lehni & Jonathan Puckey
   * http://lehni.org/ & http://jonathanpuckey.com/
   *
   * Distributed under the MIT license. See LICENSE file for details.
   *
   * All rights reserved.
   */
  
  module('Curve');
  
  test('Curve#getPointAt()', function() {
  	var curve = new Path.Circle({
  		center: [100, 100],
  		radius: 100
  	}).getFirstCurve();
  
  	var points = [
  		[0, new Point(0, 100)],
  		[0.25, new Point(7.8585, 61.07549)],
  		[0.5, new Point(29.28932, 29.28932)],
  		[0.75, new Point(61.07549, 7.8585)],
  		[1, new Point(100, 0)]
  	];
  
  	for (var i = 0; i < points.length; i++) {
  		var entry = points[i];
  		comparePoints(curve.getPointAt(entry[0], true), entry[1],
  				'curve.getPointAt(' + entry[0] + ', true);');
  	}
  });
  
  test('Curve#getTangentAt()', function() {
  	var curve = new Path.Circle({
  		center: [100, 100],
  		radius: 100
  	}).getFirstCurve();
  
  	var points = [
  		[0, new Point(0, -165.68542 )],
  		[0.25, new Point(60.7233, -143.56602)],
  		[0.5, new Point(108.57864, -108.57864)],
  		[0.75, new Point(143.56602, -60.7233)],
  		[1, new Point(165.68542, 0)]
  	];
  
  	for (var i = 0; i < points.length; i++) {
  		var entry = points[i];
  		comparePoints(curve.getTangentAt(entry[0], true), entry[1],
  				'curve.getPointAt(' + entry[0] + ', true);');
  	}
  });
  
  test('Curve#getNormalAt()', function() {
  	var curve = new Path.Circle({
  		center: [100, 100],
  		radius: 100
  	}).getFirstCurve();
  
  	var points = [
  		[0, new Point(-165.68542, 0)],
  		[0.25, new Point(-143.56602, -60.7233)],
  		[0.5, new Point(-108.57864, -108.57864)],
  		[0.75, new Point(-60.7233, -143.56602)],
  		[1, new Point(0, -165.68542)]
  	];
  
  	for (var i = 0; i < points.length; i++) {
  		var entry = points[i];
  		comparePoints(curve.getNormalAt(entry[0], true), entry[1],
  				'curve.getPointAt(' + entry[0] + ', true);');
  	}
  });
  
new_contents: /*
   * Paper.js - The Swiss Army Knife of Vector Graphics Scripting.
   * http://paperjs.org/
   *
   * Copyright (c) 2011 - 2013, Juerg Lehni & Jonathan Puckey
   * http://lehni.org/ & http://jonathanpuckey.com/
   *
   * Distributed under the MIT license. See LICENSE file for details.
   *
   * All rights reserved.
   */
  
  module('Curve');
  
  test('Curve#getPointAt()', function() {
  	var curve = new Path.Circle({
  		center: [100, 100],
  		radius: 100
  	}).getFirstCurve();
  
  	var points = [
  		[0, new Point(0, 100)],
  		[0.25, new Point(7.8585, 61.07549)],
  		[0.5, new Point(29.28932, 29.28932)],
  		[0.75, new Point(61.07549, 7.8585)],
  		[1, new Point(100, 0)]
  	];
  
  	for (var i = 0; i < points.length; i++) {
  		var entry = points[i];
  		comparePoints(curve.getPointAt(entry[0], true), entry[1],
  				'curve.getPointAt(' + entry[0] + ', true);');
  	}
  });
  
  test('Curve#getTangentAt()', function() {
  	var curve = new Path.Circle({
  		center: [100, 100],
  		radius: 100
  	}).getFirstCurve();
  
  	var tangents = [
  		[0, new Point(0, -165.68542 )],
  		[0.25, new Point(60.7233, -143.56602)],
  		[0.5, new Point(108.57864, -108.57864)],
  		[0.75, new Point(143.56602, -60.7233)],
  		[1, new Point(165.68542, 0)]
  	];
  
  	for (var i = 0; i < tangents.length; i++) {
  		var entry = tangents[i];
  		comparePoints(curve.getTangentAt(entry[0], true), entry[1],
  				'curve.getTangentAt(' + entry[0] + ', true);');
  	}
  });
  
  test('Curve#getNormalAt()', function() {
  	var curve = new Path.Circle({
  		center: [100, 100],
  		radius: 100
  	}).getFirstCurve();
  
  	var normals = [
  		[0, new Point(-165.68542, 0)],
  		[0.25, new Point(-143.56602, -60.7233)],
  		[0.5, new Point(-108.57864, -108.57864)],
  		[0.75, new Point(-60.7233, -143.56602)],
  		[1, new Point(0, -165.68542)]
  	];
  
  	for (var i = 0; i < normals.length; i++) {
  		var entry = normals[i];
  		comparePoints(curve.getNormalAt(entry[0], true), entry[1],
  				'curve.getNormalAt(' + entry[0] + ', true);');
  	}
  });
  
  test('Curve#getCurvatureAt()', function() {
  	var curve = new Path.Circle({
  		center: [100, 100],
  		radius: 100
  	}).getFirstCurve();
  
  	var curvatures = [
  		[0, 0.009785533905932729],
  		[0.25, 0.010062133221584524],
  		[0.5, 0.009937576453041297],
  		[0.75, 0.010062133221584524],
  		[1, 0.009785533905932727]
  	];
  
  	for (var i = 0; i < curvatures.length; i++) {
  		var entry = curvatures[i];
  		compareNumbers(curve.getCurvatureAt(entry[0], true), entry[1],
  				'curve.getCurvatureAt(' + entry[0] + ', true);');
  	}
  });
  
subject: Implement unit tests for Curve#getCurvatureAt().