running-tools

A collection of tools for runners and their coaches
git clone https://git.ashermorgan.net/running-tools/
Log | Files | Refs | README

commit a73aceb13035be2bf75322bc2663ad0dcfaf5692
parent 282143d3f2fe613380ba2c9983b8ba8071ba8333
Author: ashermorgan <59518073+ashermorgan@users.noreply.github.com>
Date:   Wed, 11 Aug 2021 12:29:02 -0700

Add pace utilities

Diffstat:
Asrc/utils/paces.js | 42++++++++++++++++++++++++++++++++++++++++++
Atests/unit/pace.spec.js | 24++++++++++++++++++++++++
2 files changed, 66 insertions(+), 0 deletions(-)

diff --git a/src/utils/paces.js b/src/utils/paces.js @@ -0,0 +1,42 @@ +/** + * Calculate pace from distance and time + * @param {Number} distance The distance (in meters) + * @param {Number} time The time (in seconds) + * @returns {Number} The pace (in seconds per meter) + */ +function getPace(distance, time) { + return time / distance; +} + + + +/** + * Calculate time from pace and distance + * @param {Number} pace The pace (in seconds per meter) + * @param {Number} distance The distance (in meters) + * @returns {Number} The time (in seconds) + */ +function getTime(pace, distance) { + return pace * distance; + +} + + + +/** + * Calculate distance from pace and time + * @param {Number} pace The pace (in seconds per meter) + * @param {Number} time The time (in seconds) + * @return {Number} The distance (in meters) + */ +function getDistance(pace, time) { + return time / pace; +} + + + +export default { + getPace, + getTime, + getDistance, +} diff --git a/tests/unit/pace.spec.js b/tests/unit/pace.spec.js @@ -0,0 +1,24 @@ +import { expect } from 'chai'; +import pace from '@/utils/paces.js'; + + + +describe('utils/pace.js', () => { + describe('getPace method', () => { + it('2 meters in 6 seconds should equal 3 seconds per meter', () => { + expect(pace.getPace(2, 6)).to.equal(3); + }); + }); + + describe('getTime method', () => { + it('2 meters at 3 seconds per meter should equal 6 seconds', () => { + expect(pace.getTime(3, 2)).to.equal(6); + }); + }); + + describe('getDistance method', () => { + it('6 seconds at 3 seconds per meter should equal 2 meters', () => { + expect(pace.getDistance(3, 6)).to.equal(2); + }); + }); +});