From 4fcdc7d96f901aba43a86ee05fd3761c94faabb0 Mon Sep 17 00:00:00 2001 From: webdevcom01-cell Date: Thu, 7 May 2026 20:33:36 +0200 Subject: [PATCH 1/2] feat(clamp-number-utility): SDLC [{{pipelineResult.runId}}] --- src/utils/clampNumber.ts | 15 +++++++++++++++ 1 file changed, 15 insertions(+) create mode 100644 src/utils/clampNumber.ts diff --git a/src/utils/clampNumber.ts b/src/utils/clampNumber.ts new file mode 100644 index 0000000..01ceb7c --- /dev/null +++ b/src/utils/clampNumber.ts @@ -0,0 +1,15 @@ +/** + * Clamps a number between min and max (inclusive). + * @param value - The input number to clamp. + * @param min - The minimum allowable value. + * @param max - The maximum allowable value. + * @returns The clamped number. + */ +export function clampNumber(value: number, min: number, max: number): number { + if (min > max) { + throw new Error('min must be less than or equal to max'); + } + if (value < min) return min; + if (value > max) return max; + return value; +} From a9b6f1e49332760fc0a0d1e462a2011babb994e2 Mon Sep 17 00:00:00 2001 From: webdevcom01-cell Date: Thu, 7 May 2026 20:33:37 +0200 Subject: [PATCH 2/2] test(clamp-number-utility): SDLC [{{pipelineResult.runId}}] --- src/utils/clampNumber.test.ts | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 src/utils/clampNumber.test.ts diff --git a/src/utils/clampNumber.test.ts b/src/utils/clampNumber.test.ts new file mode 100644 index 0000000..a64f0dd --- /dev/null +++ b/src/utils/clampNumber.test.ts @@ -0,0 +1,34 @@ +import { describe, it, expect } from 'vitest'; +import { clampNumber } from './clampNumber'; + +describe('clampNumber', () => { + it('returns value if within min and max', () => { + expect(clampNumber(5, 1, 10)).toBe(5); + }); + + it('returns min if value is less than min', () => { + expect(clampNumber(-5, 0, 10)).toBe(0); + }); + + it('returns max if value is greater than max', () => { + expect(clampNumber(20, 0, 10)).toBe(10); + }); + + it('returns min when value equals min', () => { + expect(clampNumber(3, 3, 8)).toBe(3); + }); + + it('returns max when value equals max', () => { + expect(clampNumber(8, 3, 8)).toBe(8); + }); + + it('handles zero boundaries correctly', () => { + expect(clampNumber(0, 0, 0)).toBe(0); + expect(clampNumber(1, 0, 0)).toBe(0); + expect(clampNumber(-1, 0, 0)).toBe(0); + }); + + it('throws if min > max', () => { + expect(() => clampNumber(5, 10, 1)).toThrow('min must be less than or equal to max'); + }); +});