@neutrium/quantity
Version:
The NeutriumJS unit conversion module.
53 lines (40 loc) • 1.52 kB
JavaScript
import { NearleyQtyParser } from '../../dist/parsers/NearleyQtyParser.js'
import { RegexQtyParser } from '../../dist/parsers/RegexQtyParser.js';
//
// RegexQtyParser cannot do:
// - numbers to the power i.e. must be a straight up number
// - parentises
[
["NearleyQtyParser Unit Tests", new NearleyQtyParser()],
["RegexQtyParser Unit Tests", new RegexQtyParser()]
]
.forEach(([description, parser]) => {
describe("Neutrium Quantity - " + description, function() {
describe("number parsing logic", function() {
it("correctly parses an integer", function() {
let result = parser.parse("1");
expect(result.scalar.eq(1)).toBe(true);
expect(result.numerator).toEqual(['<1>']);
expect(result.denominator).toEqual(['<1>']);
});
it("correctly parses a float", function() {
let result = parser.parse("1.2");
expect(result.scalar.eq(1.2)).toBe(true);
expect(result.numerator).toEqual(['<1>']);
expect(result.denominator).toEqual(['<1>']);
});
it("correctly parses a signed float", function() {
let result = parser.parse("-1.2");
expect(result.scalar.eq(-1.2)).toBe(true);
});
it("correctly parses a signed float with an integer exponent", function() {
let result = parser.parse("-1.2e2");
expect(result.scalar.eq(-1.2e2)).toBe(true);
});
it("correctly parses a signed float with an negative integer exponent", function() {
let result = parser.parse("-1.2e-2");
expect(result.scalar.eq(-1.2e-2)).toBe(true);
});
});
});
})