diff --git a/Conversions/BinaryToDecimal.js b/Conversions/BinaryToDecimal.js index d149de0df2..3193783b80 100644 --- a/Conversions/BinaryToDecimal.js +++ b/Conversions/BinaryToDecimal.js @@ -1,4 +1,12 @@ export default function binaryToDecimal(binaryString) { + if (typeof binaryString !== 'string') { + throw new TypeError('Argument is not a string type') + } + + if (!/^[01]+$/.test(binaryString)) { + throw new Error('Argument is not a valid binary string!') + } + let decimalNumber = 0 const binaryDigits = binaryString.split('').reverse() // Splits the binary number into reversed single digits binaryDigits.forEach((binaryDigit, index) => { diff --git a/Conversions/test/BinaryToDecimal.test.js b/Conversions/test/BinaryToDecimal.test.js index 97f23aeb49..43a4a04896 100644 --- a/Conversions/test/BinaryToDecimal.test.js +++ b/Conversions/test/BinaryToDecimal.test.js @@ -12,4 +12,15 @@ describe('BinaryToDecimal', () => { it('expects to return correct hexadecimal value for padding-required binary', () => { expect(binaryToDecimal('1000101')).toBe(69) }) + + it('expects to throw for a non-string argument', () => { + expect(() => binaryToDecimal(1000)).toThrowError() + expect(() => binaryToDecimal(null)).toThrowError() + }) + + it('expects to throw for a non-binary string', () => { + expect(() => binaryToDecimal('2')).toThrowError() + expect(() => binaryToDecimal('102')).toThrowError() + expect(() => binaryToDecimal('')).toThrowError() + }) })