UNPKG

lambda-live-debugger

Version:

Debug Lambda functions locally like it is running in the cloud

176 lines (158 loc) 8.61 kB
import toNumber from "../strnum.js"; describe("Should convert all the valid numeric strings to number", () => { it("should return undefined, null, empty string, or non-numeric as it is", () => { expect(toNumber(undefined)).not.toBeDefined(); expect(toNumber(null)).toEqual(null); expect(toNumber("")).toEqual(""); expect(toNumber(" ")).toEqual(" "); expect(toNumber("string")).toEqual("string"); expect(toNumber("e89794659669cb7bb967db73a7ea6889c3891727")).toEqual("e89794659669cb7bb967db73a7ea6889c3891727"); }); it("should not parse number with spaces or comma", () => { expect(toNumber("12,12")).toEqual("12,12"); expect(toNumber("12 12")).toEqual("12 12"); expect(toNumber("12-12")).toEqual("12-12"); expect(toNumber("12.12.12")).toEqual("12.12.12"); }) it("should consider + sign", () => { expect(toNumber("+12")).toEqual(12); expect(toNumber("+ 12")).toEqual("+ 12"); expect(toNumber("12+12")).toEqual("12+12"); expect(toNumber("1212+")).toEqual("1212+"); }) it("should parse hexadecimal values", () => { expect(toNumber("0x2f")).toEqual(47); expect(toNumber("-0x2f")).toEqual(-47); expect(toNumber("0x2f", { hex: true })).toEqual(47); expect(toNumber("-0x2f", { hex: true })).toEqual(-47); expect(toNumber("0x2f", { hex: false })).toEqual("0x2f"); expect(toNumber("-0x2f", { hex: false })).toEqual("-0x2f"); }) it("should not parse strings with 0x embedded", () => { expect(toNumber("0xzz")).toEqual("0xzz"); expect(toNumber("iweraf0x123qwerqwer")).toEqual("iweraf0x123qwerqwer"); expect(toNumber("1230x55")).toEqual("1230x55"); expect(toNumber("JVBERi0xLjMNCiXi48")).toEqual("JVBERi0xLjMNCiXi48"); }) it("leading zeros", () => { expect(toNumber("0")).toEqual(0); expect(toNumber("00")).toEqual(0); expect(toNumber("00.0")).toEqual(0); expect(toNumber("0", { leadingZeros: false })).toEqual(0); expect(toNumber("00", { leadingZeros: false })).toEqual("00"); expect(toNumber("00.0", { leadingZeros: false })).toEqual("00.0"); expect(toNumber("06")).toEqual(6); expect(toNumber("06", { leadingZeros: true })).toEqual(6); expect(toNumber("06", { leadingZeros: false })).toEqual("06"); expect(toNumber("006")).toEqual(6); expect(toNumber("006", { leadingZeros: true })).toEqual(6); expect(toNumber("006", { leadingZeros: false })).toEqual("006"); expect(toNumber("000000000000000000000000017717", { leadingZeros: false })).toEqual("000000000000000000000000017717"); expect(toNumber("000000000000000000000000017717", { leadingZeros: true })).toEqual(17717); expect(toNumber("020211201030005811824")).toEqual("020211201030005811824"); expect(toNumber("0420926189200190257681175017717")).toEqual(4.209261892001902e+29); }) it("invalid floating number", () => { expect(toNumber("20.21.030")).toEqual("20.21.030"); expect(toNumber("0.21.030")).toEqual("0.21.030"); expect(toNumber("0.21.")).toEqual("0.21."); }); it("floating point and leading zeros", () => { expect(toNumber("0.")).toEqual(0); expect(toNumber("+0.")).toEqual(0); expect(toNumber("-0.")).toEqual(-0); expect(toNumber("1.")).toEqual(1); expect(toNumber("00.00")).toEqual(0); expect(toNumber("0.06")).toEqual(0.06); expect(toNumber("00.6")).toEqual(0.6); expect(toNumber(".006")).toEqual(0.006); expect(toNumber("6.0")).toEqual(6); expect(toNumber("06.0")).toEqual(6); expect(toNumber("0.0", { leadingZeros: false })).toEqual(0); expect(toNumber("00.00", { leadingZeros: false })).toEqual("00.00"); expect(toNumber("0.06", { leadingZeros: false })).toEqual(0.06); expect(toNumber("00.6", { leadingZeros: false })).toEqual("00.6"); expect(toNumber(".006", { leadingZeros: false })).toEqual(0.006); expect(toNumber("6.0", { leadingZeros: false })).toEqual(6); expect(toNumber("06.0", { leadingZeros: false })).toEqual("06.0"); }) it("negative number leading zeros", () => { expect(toNumber("+06")).toEqual(6); expect(toNumber("-06")).toEqual(-6); expect(toNumber("-06", { leadingZeros: true })).toEqual(-6); expect(toNumber("-06", { leadingZeros: false })).toEqual("-06"); expect(toNumber("-0.0")).toEqual(-0); expect(toNumber("-00.00")).toEqual(-0); expect(toNumber("-0.06")).toEqual(-0.06); expect(toNumber("-00.6")).toEqual(-0.6); expect(toNumber("-.006")).toEqual(-0.006); expect(toNumber("-6.0")).toEqual(-6); expect(toNumber("-06.0")).toEqual(-6); expect(toNumber("+06.0")).toEqual(6); expect(toNumber("-0.0", { leadingZeros: false })).toEqual(-0); expect(toNumber("-00.00", { leadingZeros: false })).toEqual("-00.00"); expect(toNumber("-0.06", { leadingZeros: false })).toEqual(-0.06); expect(toNumber("-00.6", { leadingZeros: false })).toEqual("-00.6"); expect(toNumber("-.006", { leadingZeros: false })).toEqual(-0.006); expect(toNumber("-6.0", { leadingZeros: false })).toEqual(-6); expect(toNumber("-06.0", { leadingZeros: false })).toEqual("-06.0"); }) it("long number", () => { expect(toNumber("020211201030005811824")).toEqual("020211201030005811824"); expect(toNumber("20211201030005811824")).toEqual("20211201030005811824"); expect(toNumber("20.211201030005811824")).toEqual("20.211201030005811824"); expect(toNumber("0.211201030005811824")).toEqual("0.211201030005811824"); }); it("scientific notation", () => { expect(toNumber("01.0e2", { leadingZeros: false })).toEqual("01.0e2"); expect(toNumber("-01.0e2", { leadingZeros: false })).toEqual("-01.0e2"); expect(toNumber("01.0e2")).toEqual(100); expect(toNumber("-01.0e2")).toEqual(-100); expect(toNumber("1.0e2")).toEqual(100); expect(toNumber("-1.0e2")).toEqual(-100); expect(toNumber("1.0e-2")).toEqual(0.01); expect(toNumber("420926189200190257681175017717")).toEqual(4.209261892001902e+29); expect(toNumber("420926189200190257681175017717", { eNotation: false })).toEqual("420926189200190257681175017717"); expect(toNumber("1e-2")).toEqual(0.01); expect(toNumber("1e+2")).toEqual(100); expect(toNumber("1.e+2")).toEqual(100); expect(toNumber("1.5e3", { leadingZeros: false })).toEqual(1500); }); it("scientific notation with upper E", () => { expect(toNumber("01.0E2", { leadingZeros: false })).toEqual("01.0E2"); expect(toNumber("-01.0E2", { leadingZeros: false })).toEqual("-01.0E2"); expect(toNumber("01.0E2")).toEqual(100); expect(toNumber("-01.0E2")).toEqual(-100); expect(toNumber("1.0E2")).toEqual(100); expect(toNumber("-1.0E2")).toEqual(-100); expect(toNumber("1.0E-2")).toEqual(0.01); expect(toNumber("E-2")).toEqual("E-2"); expect(toNumber("E2")).toEqual("E2"); expect(toNumber("0E2")).toEqual(0); expect(toNumber("-0E2")).toEqual(-0); expect(toNumber("00E2")).toEqual("00E2"); expect(toNumber("00E2", { leadingZeros: false })).toEqual("00E2"); }); it("should skip matching pattern", () => { expect(toNumber("0", { skipLike: /.*/ })).toEqual("0"); expect(toNumber("+12", { skipLike: /\+[0-9]{10}/ })).toEqual(12); expect(toNumber("12+12", { skipLike: /\+[0-9]{10}/ })).toEqual("12+12"); expect(toNumber("12+1212121212", { skipLike: /\+[0-9]{10}/ })).toEqual("12+1212121212"); expect(toNumber("+1212121212")).toEqual(1212121212); expect(toNumber("+1212121212", { skipLike: /\+[0-9]{10}/ })).toEqual("+1212121212"); }) it("should not change string if not number", () => { expect(toNumber("+12 12")).toEqual("+12 12"); expect(toNumber(" +12 12 ")).toEqual(" +12 12 "); }) it("should ignore sorrounded spaces ", () => { expect(toNumber(" +1212 ")).toEqual(1212); }) it("negative numbers", () => { expect(toNumber("+1212")).toEqual(1212); expect(toNumber("+12.12")).toEqual(12.12); expect(toNumber("-12.12")).toEqual(-12.12); expect(toNumber("-012.12")).toEqual(-12.12); expect(toNumber("-012.12")).toEqual(-12.12); }) });