Skip to content

Commit

Permalink
ran lint
Browse files Browse the repository at this point in the history
  • Loading branch information
Yves Ulrich Tittes committed Oct 21, 2024
1 parent 7b47fe5 commit 586d86d
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 31 deletions.
50 changes: 24 additions & 26 deletions src/common/utils.spec.ts
Original file line number Diff line number Diff line change
@@ -1,49 +1,47 @@
// Currently only covers converToSI
import { convertToSI } from './utils';
import { createUnit, Unit } from 'mathjs';
import { convertToSI } from "./utils";


describe('convertToSI', () => {
it('should convert a known unit to SI successfully', () => {
const result = convertToSI(1, 'cm');
describe("convertToSI", () => {
it("should convert a known unit to SI successfully", () => {
const result = convertToSI(1, "cm");
expect(result.valueSI).toBeCloseTo(0.01);
expect(result.unitSI).toEqual('m');
expect(result.unitSI).toEqual("m");
});

it('should convert angstrom to SI successfully', () => {
const result = convertToSI(1, 'Å');
it("should convert angstrom to SI successfully", () => {
const result = convertToSI(1, "Å");
expect(result.valueSI).toBeCloseTo(1e-10);
expect(result.unitSI).toEqual('m');
expect(result.unitSI).toEqual("m");
});

it('should handle different versions of Å in unicode', () => {
const inputUnit = '\u212B'; // Old unicode representation of "Å", is not boolean equal to the one we added.
it("should handle different versions of Å in unicode", () => {
const inputUnit = "\u212B"; // Old unicode representation of "Å", is not boolean equal to the one we added.
const result = convertToSI(1, inputUnit);
expect(result.valueSI).toBeCloseTo(1e-10);
expect(result.unitSI).toEqual('m');
expect(result.unitSI).toEqual("m");
});

it('should return the input value and unit if conversion fails', () => {
const result = convertToSI(1, 'invalidUnit');
it("should return the input value and unit if conversion fails", () => {
const result = convertToSI(1, "invalidUnit");
expect(result.valueSI).toEqual(1);
expect(result.unitSI).toEqual('invalidUnit');
expect(result.unitSI).toEqual("invalidUnit");
});

it('should convert SI units correctly', () => {
const result = convertToSI(1000, 'g');
it("should convert SI units correctly", () => {
const result = convertToSI(1000, "g");
expect(result.valueSI).toBeCloseTo(1);
expect(result.unitSI).toEqual('kg');
expect(result.unitSI).toEqual("kg");
});

it('should handle already normalized units', () => {
const result = convertToSI(1, 'm');
it("should handle already normalized units", () => {
const result = convertToSI(1, "m");
expect(result.valueSI).toEqual(1);
expect(result.unitSI).toEqual('m');
expect(result.unitSI).toEqual("m");
});

it('should handle negative values properly', () => {
const result = convertToSI(-5, 'cm');
it("should handle negative values properly", () => {
const result = convertToSI(-5, "cm");
expect(result.valueSI).toBeCloseTo(-0.05);
expect(result.unitSI).toEqual('m');
expect(result.unitSI).toEqual("m");
});
});
});
10 changes: 5 additions & 5 deletions src/common/utils.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,18 +14,18 @@ import {
import { ScientificRelation } from "./scientific-relation.enum";

// add Å to mathjs accepted units as equivalent to angstrom
const isAlphaOriginal = Unit.isValidAlpha
const isAlphaOriginal = Unit.isValidAlpha;
Unit.isValidAlpha = function (c) {
return isAlphaOriginal(c) || c == 'Å'
}
createUnit('Å', '1 angstrom')
return isAlphaOriginal(c) || c == "Å";
};
createUnit("Å", "1 angstrom");

export const convertToSI = (
inputValue: number,
inputUnit: string,
): { valueSI: number; unitSI: string } => {
try {
const normalizedUnit = inputUnit.normalize('NFC'); // catch and normalize the different versions of Å in unicode
const normalizedUnit = inputUnit.normalize("NFC"); // catch and normalize the different versions of Å in unicode
// Workaround related to a bug reported at https://github.com/josdejong/mathjs/issues/3097 and https://github.com/josdejong/mathjs/issues/2499
const quantity = unit(inputValue, normalizedUnit)
.to(unit(normalizedUnit).toSI().toJSON().unit)
Expand Down

0 comments on commit 586d86d

Please sign in to comment.