{
let message = "";
const PA = new Point(1, 2);
if (PA.equals(new Point(1, 2)) !== true) {
message += `Equals: PA.equals(new Point(1, 2)) !== true test failed. \n`;
}
if (PA.equals(new Point(1, 1)) !== false) {
message += `Equals: PA.equals(new Point(1, 1)) !== false test failed. \n`;
}
if (PA.equals(PA.clone()) !== true) {
message += `Clone: PA.equals(PA.clone()) !== true test failed. \n`;
}
if (PA.isZero() === true) {
message += `IsZero: PA.isZero() === true test failed. \n`;
}
if (new Point(0, 0).isZero() !== true) {
message += `IsZero: new Point(0, 0).isZero() !== true test failed. \n`;
}
if (PA.angle() !== Math.atan2(2, 1) * (180 / Math.PI)) {
message += `Angle: PA.angle() !== Math.atan2(2, 1) * (180 / Math.PI) test failed. \n`;
}
if (new Point(1, 0).angle() !== 0) {
message += `Angle: new Point(1, 0).angle() !== 0 test failed. \n`;
}
if (new Point(0, 0).angle() !== 0) {
message += `Angle: new Point(0, 0).angle() !== 0 test failed. \n`;
}
if (new Point(1, 1).angle() !== 45) {
message += `Angle: new Point(1, 1).angle() !== 45 test failed. \n`;
}
if (new Point(0, 1).angle() !== 90) {
message += `Angle: Point(0, 1).angle() !== 90 test failed. \n`;
}
if (new Point(-1, 0).angle() !== 180) {
message += `Angle: Point(-1, 0).angle() !== 180 test failed. \n`;
}
if (new Point(-1, -1).angle() !== -135) {
message += `Angle: new Point(-1, -1).angle() !== -135 test failed. \n`;
}
// Length
if (PA.length() !== Math.sqrt(5)) {
message += `Length: PA.length() !== Math.sqrt(5) test failed. \n`;
}
if (new Point(0, 0).length() !== 0) {
message += `Length: new Point(0, 0).length() !== 0 test failed. \n`;
}
if (new Point(1, 0).length() !== 1) {
message += `Length: new Point(1, 0).length() !== 1 test failed. \n`;
}
if (new Point(0, 1).length() !== 1) {
message += `Length: new Point(0, 1).length() !== 1 test failed. \n`;
}
if (new Point(-1, -1).length() !== Math.sqrt(2)) {
message += `Length: new Point(-1, -1).length() !== Math.sqrt(2) test failed. \n`;
}
// Distance
if (PA.distance({ x: 1, y: 2 }) !== 0) {
message += `Distance: PA.distance({ x: 1, y: 2 }) !== 0 test failed. \n`;
}
if (PA.distance({ x: -1, y: -2 }) !== Math.sqrt(20)) {
message += `Distance: PA.distance({ x: -1, y: -2 }) !== Math.sqrt(20) test failed. \n`;
}
if (PA.distance({ x: 0, y: 0 }) !== Math.sqrt(5)) {
message += `Distance: PA.distance({ x: 0, y: 0 }) !== Math.sqrt(5) test failed. \n`;
}
// Add
if (PA.add(PA).equals(new Point(2, 4)) !== true) {
message += `Add: PA.add(PA).equals(new Point(2, 4)) !== true test failed. \n`;
}
if (PA.add(new Point(-1, -2)).isZero() !== true) {
message += `Add: PA.add(new Point(-1, -2)).isZero() !== true test failed. \n`;
}
if (PA.add(new Point(0, 0)).equals(PA) !== true) {
message += `Add: PA.add(new Point(0, 0)).equals(PA) !== true test failed. \n`;
}
// Substract
if (PA.substract(PA).isZero() !== true) {
message += `Substract: PA.substract(PA).isZero() !== true test failed. \n`;
}
if (PA.substract(new Point(-1, -2)).equals(new Point(2, 4)) !== true) {
message += `Substract: PA.substract(new Point(-1, -2)).equals(new Point(2, 4)) !== true test failed. \n`;
}
if (PA.substract(new Point(0, 0)).equals(PA) !== true) {
message += `Substract: PA.substract(new Point(0, 0)).equals(PA) !== true test failed. \n`;
}
// Scale
if (PA.scale(0.5).equals(new Point(0.5, 1)) !== true) {
message += `Scale: PA.scale(0.5).equals(new Point(0.5, 1)) !== true test failed. \n`;
}
if (PA.scale(1).equals(new Point(1, 2)) !== true) {
message += `Scale: PA.scale(1).equals(new Point(1, 2)) !== true test failed. \n`;
}
if (PA.scale(0.5, { x: 2, y: 3 }).equals(new Point(1.5, 2.5)) !== true) {
message += `Scale: PA.scale(0.5, { x: 2, y: 3 }).equals(new Point(1.5, 2.5)) !== true test failed. \n`;
}
if (PA.scale(0, { x: 1, y: 2 }).equals(new Point(1, 2)) !== true) {
message += `Scale: PA.scale(0.5, { x: 1, y: 2 }).equals(new Point(1, 2)) !== true test failed. \n`;
}
if (PA.scale(2,{ x: 1, y: 2 }).equals(new Point(1, 2)) !== true) {
message += `Scale: PA.scale(2, { x: 1, y: 2 }).equals(new Point(1, 2)) !== true test failed. \n`;
}
// Rotate
if ((PA.rotate(90).x === -2 && Math.round(PA.rotate(90).y) === 1) !== true) {
message += `Rotate: (PA.rotate(90).x === -2 && Math.round(PA.rotate(90).y) === 1) !== true test failed. \n`;
}
if (PA.rotate(0).equals(new Point(1, 2)) !== true) {
message += `Rotate: PA.rotate(0).equals(new Point(1, 2)) !== true test failed. \n`;
}
if (PA.rotate(90, { x: 2, y: 3 }).equals(new Point(3, 2)) !== true) {
message += `Rotate: PA.rotate(90, { x: 2, y: 3 }).equals(new Point(3, 2)) !== true test failed. \n`;
}
if (PA.rotate(0, { x: 1, y: 2 }).equals(new Point(1, 2)) !== true) {
message += `Rotate: PA.rotate(0, { x: 1, y: 2 }).equals(new Point(1, 2)) !== true test failed. \n`;
}
if (PA.rotate(90, { x: 1, y: 2 }).equals(new Point(1, 2)) !== true) {
message += `Rotate: PA.rotate(90, { x: 1, y: 2 }).equals(new Point(1, 2)) !== true test failed. \n`;
}
// PointSymmetry
if (PA.pointSymmetry({ x: 0, y: 0}).equals(new Point(-1, -2)) !== true) {
message += `pointSymmetry: PA.symmetry({ x: 0, y: 0}).equals(new Point(-1, -2)) !== true test failed. \n`;
}
if (PA.pointSymmetry({ x: 1, y: 2}).equals(new Point(1, 2)) !== true) {
message += `pointSymmetry: PA.symmetry({ x: 1, y: 2}).equals(new Point(1, 2)) !== true test failed. \n`;
}
if (PA.pointSymmetry({ x: 0, y: 2}).equals(new Point(-1, 2)) !== true) {
message += `pointSymmetry: PA.symmetry({ x: 1, y: 2}).equals(new Point(1, 2)) !== true test failed. \n`;
}
if (PA.pointSymmetry({ x: 1, y: 0}).equals(new Point(1, -2)) !== true) {
message += `pointSymmetry: PA.symmetry({ x: 1, y: 0}).equals(new Point(1, -2)) !== true test failed. \n`;
}
// Succeed?
if (message === "") {
message = "Succeed";
}
return md`${message}`;
}