UNPKG

react-native-timer-picker

Version:

A simple, flexible, performant duration picker for React Native apps 🔥 Great for timers, alarms and duration inputs ⏰🕰️⏳ Includes iOS-style haptic and audio feedback 🍏

301 lines (300 loc) 9.76 kB
"use strict"; var _padNumber = require("../utils/padNumber"); describe("padNumber", () => { describe("padding with zero", () => { it("pads single digit with zero", () => { expect((0, _padNumber.padNumber)(0, { padWithZero: true })).toBe("00"); expect((0, _padNumber.padNumber)(1, { padWithZero: true })).toBe("01"); expect((0, _padNumber.padNumber)(5, { padWithZero: true })).toBe("05"); expect((0, _padNumber.padNumber)(9, { padWithZero: true })).toBe("09"); }); it("does not pad double digits", () => { expect((0, _padNumber.padNumber)(10, { padWithZero: true })).toBe("10"); expect((0, _padNumber.padNumber)(15, { padWithZero: true })).toBe("15"); expect((0, _padNumber.padNumber)(99, { padWithZero: true })).toBe("99"); }); it("does not pad triple digits", () => { expect((0, _padNumber.padNumber)(100, { padWithZero: true })).toBe("100"); expect((0, _padNumber.padNumber)(255, { padWithZero: true })).toBe("255"); expect((0, _padNumber.padNumber)(999, { padWithZero: true })).toBe("999"); }); it("handles very large numbers", () => { expect((0, _padNumber.padNumber)(1000, { padWithZero: true })).toBe("1000"); expect((0, _padNumber.padNumber)(99999, { padWithZero: true })).toBe("99999"); }); }); describe("padding with space", () => { it("pads single digit with space", () => { expect((0, _padNumber.padNumber)(0, { padWithZero: false })).toBe("\u20070"); expect((0, _padNumber.padNumber)(1, { padWithZero: false })).toBe("\u20071"); expect((0, _padNumber.padNumber)(5, { padWithZero: false })).toBe("\u20075"); expect((0, _padNumber.padNumber)(9, { padWithZero: false })).toBe("\u20079"); }); it("does not pad double digits", () => { expect((0, _padNumber.padNumber)(10, { padWithZero: false })).toBe("10"); expect((0, _padNumber.padNumber)(15, { padWithZero: false })).toBe("15"); expect((0, _padNumber.padNumber)(99, { padWithZero: false })).toBe("99"); }); it("does not pad triple digits", () => { expect((0, _padNumber.padNumber)(100, { padWithZero: false })).toBe("100"); expect((0, _padNumber.padNumber)(255, { padWithZero: false })).toBe("255"); expect((0, _padNumber.padNumber)(999, { padWithZero: false })).toBe("999"); }); it("handles very large numbers", () => { expect((0, _padNumber.padNumber)(1000, { padWithZero: false })).toBe("1000"); expect((0, _padNumber.padNumber)(99999, { padWithZero: false })).toBe("99999"); }); }); describe("no options provided", () => { it("defaults to space padding for single digits", () => { expect((0, _padNumber.padNumber)(0)).toBe("\u20070"); expect((0, _padNumber.padNumber)(1)).toBe("\u20071"); expect((0, _padNumber.padNumber)(5)).toBe("\u20075"); expect((0, _padNumber.padNumber)(9)).toBe("\u20079"); }); it("does not pad double digits", () => { expect((0, _padNumber.padNumber)(10)).toBe("10"); expect((0, _padNumber.padNumber)(15)).toBe("15"); expect((0, _padNumber.padNumber)(99)).toBe("99"); }); it("does not pad triple digits", () => { expect((0, _padNumber.padNumber)(100)).toBe("100"); expect((0, _padNumber.padNumber)(255)).toBe("255"); expect((0, _padNumber.padNumber)(999)).toBe("999"); }); }); describe("undefined padWithZero option", () => { it("defaults to space padding", () => { expect((0, _padNumber.padNumber)(0, {})).toBe("\u20070"); expect((0, _padNumber.padNumber)(5, {})).toBe("\u20075"); expect((0, _padNumber.padNumber)(9, {})).toBe("\u20079"); }); it("does not pad double digits", () => { expect((0, _padNumber.padNumber)(10, {})).toBe("10"); expect((0, _padNumber.padNumber)(50, {})).toBe("50"); }); }); describe("edge cases at boundary", () => { it("handles value exactly 9 (last single digit)", () => { expect((0, _padNumber.padNumber)(9, { padWithZero: true })).toBe("09"); expect((0, _padNumber.padNumber)(9, { padWithZero: false })).toBe("\u20079"); expect((0, _padNumber.padNumber)(9)).toBe("\u20079"); }); it("handles value exactly 10 (first double digit)", () => { expect((0, _padNumber.padNumber)(10, { padWithZero: true })).toBe("10"); expect((0, _padNumber.padNumber)(10, { padWithZero: false })).toBe("10"); expect((0, _padNumber.padNumber)(10)).toBe("10"); }); it("handles value exactly 0", () => { expect((0, _padNumber.padNumber)(0, { padWithZero: true })).toBe("00"); expect((0, _padNumber.padNumber)(0, { padWithZero: false })).toBe("\u20070"); expect((0, _padNumber.padNumber)(0)).toBe("\u20070"); }); }); describe("real-world scenarios", () => { it("formats hours for 12-hour display", () => { expect((0, _padNumber.padNumber)(1, { padWithZero: true })).toBe("01"); expect((0, _padNumber.padNumber)(12, { padWithZero: true })).toBe("12"); }); it("formats hours for 24-hour display", () => { expect((0, _padNumber.padNumber)(0, { padWithZero: true })).toBe("00"); expect((0, _padNumber.padNumber)(9, { padWithZero: true })).toBe("09"); expect((0, _padNumber.padNumber)(23, { padWithZero: true })).toBe("23"); }); it("formats minutes", () => { expect((0, _padNumber.padNumber)(0, { padWithZero: true })).toBe("00"); expect((0, _padNumber.padNumber)(5, { padWithZero: true })).toBe("05"); expect((0, _padNumber.padNumber)(30, { padWithZero: true })).toBe("30"); expect((0, _padNumber.padNumber)(59, { padWithZero: true })).toBe("59"); }); it("formats seconds", () => { expect((0, _padNumber.padNumber)(0, { padWithZero: true })).toBe("00"); expect((0, _padNumber.padNumber)(9, { padWithZero: true })).toBe("09"); expect((0, _padNumber.padNumber)(45, { padWithZero: true })).toBe("45"); expect((0, _padNumber.padNumber)(59, { padWithZero: true })).toBe("59"); }); it("formats days without padding preference", () => { expect((0, _padNumber.padNumber)(1, { padWithZero: false })).toBe("\u20071"); expect((0, _padNumber.padNumber)(7, { padWithZero: false })).toBe("\u20077"); expect((0, _padNumber.padNumber)(30, { padWithZero: false })).toBe("30"); expect((0, _padNumber.padNumber)(365, { padWithZero: false })).toBe("365"); }); }); describe("all single digits", () => { it("correctly pads all single digits 0-9 with zero", () => { for (let i = 0; i < 10; i++) { const result = (0, _padNumber.padNumber)(i, { padWithZero: true }); expect(result).toBe(`0${i}`); expect(result).toHaveLength(2); } }); it("correctly pads all single digits 0-9 with space", () => { for (let i = 0; i < 10; i++) { const result = (0, _padNumber.padNumber)(i, { padWithZero: false }); expect(result).toBe(`\u2007${i}`); expect(result).toHaveLength(2); } }); }); describe("return type", () => { it("always returns a string", () => { expect(typeof (0, _padNumber.padNumber)(0, { padWithZero: true })).toBe("string"); expect(typeof (0, _padNumber.padNumber)(5, { padWithZero: true })).toBe("string"); expect(typeof (0, _padNumber.padNumber)(10, { padWithZero: true })).toBe("string"); expect(typeof (0, _padNumber.padNumber)(100, { padWithZero: true })).toBe("string"); }); }); describe("string length", () => { it("returns 2-character string for single digits", () => { expect((0, _padNumber.padNumber)(0, { padWithZero: true })).toHaveLength(2); expect((0, _padNumber.padNumber)(5, { padWithZero: true })).toHaveLength(2); expect((0, _padNumber.padNumber)(9, { padWithZero: true })).toHaveLength(2); }); it("returns 2-character string for single digits with space", () => { expect((0, _padNumber.padNumber)(0, { padWithZero: false })).toHaveLength(2); expect((0, _padNumber.padNumber)(5, { padWithZero: false })).toHaveLength(2); expect((0, _padNumber.padNumber)(9, { padWithZero: false })).toHaveLength(2); }); it("returns correct length for double digits", () => { expect((0, _padNumber.padNumber)(10, { padWithZero: true })).toHaveLength(2); expect((0, _padNumber.padNumber)(50, { padWithZero: true })).toHaveLength(2); expect((0, _padNumber.padNumber)(99, { padWithZero: true })).toHaveLength(2); }); it("returns correct length for triple digits", () => { expect((0, _padNumber.padNumber)(100, { padWithZero: true })).toHaveLength(3); expect((0, _padNumber.padNumber)(500, { padWithZero: true })).toHaveLength(3); expect((0, _padNumber.padNumber)(999, { padWithZero: true })).toHaveLength(3); }); }); }); //# sourceMappingURL=padNumber.test.js.map