Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 33 additions & 0 deletions Conversions/VolumeConversion.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
/**
* @function litresToGallons
* @description Converts volume from litres to US gallons.
* @param {number} litres - Volume in litres
* @returns {number} - Volume in US gallons
* @see https://en.wikipedia.org/wiki/Gallon
* @example litresToGallons(1) => 0.264172
* @example litresToGallons(10) => 2.64172
*/
const litresToGallons = (litres) => {
if (typeof litres !== 'number' || isNaN(litres)) {
throw new TypeError('Input must be a number')
}
return litres * 0.264172
}

/**
* @function gallonsToLitres
* @description Converts volume from US gallons to litres.
* @param {number} gallons - Volume in US gallons
* @returns {number} - Volume in litres
* @see https://en.wikipedia.org/wiki/Litre
* @example gallonsToLitres(1) => 3.78541
* @example gallonsToLitres(10) => 37.8541
*/
const gallonsToLitres = (gallons) => {
if (typeof gallons !== 'number' || isNaN(gallons)) {
throw new TypeError('Input must be a number')
}
return gallons * 3.78541
}

export { litresToGallons, gallonsToLitres }
53 changes: 53 additions & 0 deletions Conversions/test/VolumeConversion.test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import { litresToGallons, gallonsToLitres } from '../VolumeConversion.js'

describe('litresToGallons', () => {
test('litresToGallons(0) returns 0', () => {
expect(litresToGallons(0)).toBe(0)
})

test('litresToGallons(1) returns 0.264172', () => {
expect(litresToGallons(1)).toBeCloseTo(0.264172)
})

test('litresToGallons(10) returns 2.64172', () => {
expect(litresToGallons(10)).toBeCloseTo(2.64172)
})

test('litresToGallons(100) returns 26.4172', () => {
expect(litresToGallons(100)).toBeCloseTo(26.4172)
})

test('throws TypeError for non-number input', () => {
expect(() => litresToGallons('10')).toThrow(TypeError)
})

test('throws TypeError for NaN', () => {
expect(() => litresToGallons(NaN)).toThrow(TypeError)
})
})

describe('gallonsToLitres', () => {
test('gallonsToLitres(0) returns 0', () => {
expect(gallonsToLitres(0)).toBe(0)
})

test('gallonsToLitres(1) returns 3.78541', () => {
expect(gallonsToLitres(1)).toBeCloseTo(3.78541)
})

test('gallonsToLitres(10) returns 37.8541', () => {
expect(gallonsToLitres(10)).toBeCloseTo(37.8541)
})

test('gallonsToLitres(5) returns 18.92705', () => {
expect(gallonsToLitres(5)).toBeCloseTo(18.92705)
})

test('throws TypeError for non-number input', () => {
expect(() => gallonsToLitres('10')).toThrow(TypeError)
})

test('throws TypeError for NaN', () => {
expect(() => gallonsToLitres(NaN)).toThrow(TypeError)
})
})
Loading