diff --git a/Geometry/Sphere.js b/Geometry/Sphere.js new file mode 100644 index 0000000000..82f539b917 --- /dev/null +++ b/Geometry/Sphere.js @@ -0,0 +1,19 @@ +/** + * This class represents a sphere and can calculate its volume and surface area + * @constructor + * @param {number} radius - The radius of the sphere + * @see https://en.wikipedia.org/wiki/Sphere + */ +export default class Sphere { + constructor (radius) { + this.radius = radius + } + + volume = () => { + return Math.pow(this.radius, 3) * Math.PI * 4 / 3 + } + + surfaceArea = () => { + return Math.pow(this.radius, 2) * Math.PI * 4 + } +} diff --git a/Geometry/Test/Sphere.test.js b/Geometry/Test/Sphere.test.js new file mode 100644 index 0000000000..18f8333a7c --- /dev/null +++ b/Geometry/Test/Sphere.test.js @@ -0,0 +1,11 @@ +import Sphere from '../Sphere' + +const sphere = new Sphere(3) + +test('The Volume of a sphere with base radius equal to 3 and height equal to 5', () => { + expect(parseFloat(sphere.volume().toFixed(2))).toEqual(113.1) +}) + +test('The Surface Area of a sphere with base radius equal to 3 and height equal to 5', () => { + expect(parseFloat(sphere.surfaceArea().toFixed(2))).toEqual(113.1) +})