diff --git a/application/source/dom/dimension.mjs b/application/source/dom/dimension.mjs index d145a44bd422ae30762aab041183e4775db6ed4e..e8fdb5e5ea158dc700cb6d22d939a1afa96c6303 100644 --- a/application/source/dom/dimension.mjs +++ b/application/source/dom/dimension.mjs @@ -70,11 +70,19 @@ function getDeviceDPI() { * @copyright schukai GmbH * @throws {Error} Unsupported unit * @memberOf Monster.DOM + * @throws {Error} Invalid value format */ function convertToPixels(value, parentElement = document.documentElement, fontSizeElement = document.documentElement) { const regex = /^([\d.]+)(.*)$/; - const [, num, unit] = value.match(regex); + const matchResult = value.match(regex); + + if (!matchResult) { + throw new Error(`Invalid value format: ${value}`); + } + + const [, num, unit] = matchResult; + const number = parseFloat(num); const dpi = getDeviceDPI(); diff --git a/development/test/cases/dom/dimension.mjs b/development/test/cases/dom/dimension.mjs index 02241332b71bf6d70bdd4762c10542344a9b6617..6cf31dd23f74787c74e066390be27907b1845383 100644 --- a/development/test/cases/dom/dimension.mjs +++ b/development/test/cases/dom/dimension.mjs @@ -61,6 +61,16 @@ describe('dimension', () => { expect(result).to.equal(100); }); + it("should throw an error when the input value has an invalid format", () => { + const invalidValue = "invalid_value"; + + const errorFn = () => { + convertToPixels(invalidValue); + }; + + expect(errorFn).to.throw(Error, `Invalid value format: ${invalidValue}`); + }); + it('should correctly convert em values', () => { const testElement = document.createElement('div'); testElement.style.fontSize = '16px';