|
1 | 1 | import { describe, expect, it } from 'vitest' |
2 | 2 |
|
3 | | -import { |
4 | | - constrainRange, |
5 | | - denormalize, |
6 | | - formatMidpointLabel, |
7 | | - gammaToPosition, |
8 | | - isRangeValue, |
9 | | - normalize, |
10 | | - positionToGamma |
11 | | -} from './rangeUtils' |
12 | | - |
13 | | -describe('normalize', () => { |
14 | | - it('normalizes value to 0-1', () => { |
15 | | - expect(normalize(128, 0, 256)).toBe(0.5) |
16 | | - expect(normalize(0, 0, 255)).toBe(0) |
17 | | - expect(normalize(255, 0, 255)).toBe(1) |
18 | | - }) |
19 | | - |
20 | | - it('returns 0 when min equals max', () => { |
21 | | - expect(normalize(5, 5, 5)).toBe(0) |
22 | | - }) |
23 | | -}) |
24 | | - |
25 | | -describe('denormalize', () => { |
26 | | - it('converts normalized value back to range', () => { |
27 | | - expect(denormalize(0.5, 0, 256)).toBe(128) |
28 | | - expect(denormalize(0, 0, 255)).toBe(0) |
29 | | - expect(denormalize(1, 0, 255)).toBe(255) |
30 | | - }) |
31 | | - |
32 | | - it('round-trips with normalize', () => { |
33 | | - expect(denormalize(normalize(100, 0, 255), 0, 255)).toBeCloseTo(100) |
34 | | - }) |
35 | | -}) |
| 3 | +import { gammaToPosition, isRangeValue, positionToGamma } from './rangeUtils' |
36 | 4 |
|
37 | 5 | describe('positionToGamma', () => { |
38 | 6 | it('converts 0.5 to gamma 1.0', () => { |
@@ -60,51 +28,6 @@ describe('gammaToPosition', () => { |
60 | 28 | }) |
61 | 29 | }) |
62 | 30 |
|
63 | | -describe('formatMidpointLabel', () => { |
64 | | - it('formats linear scale as decimal', () => { |
65 | | - expect(formatMidpointLabel(0.5, 'linear')).toBe('0.50') |
66 | | - }) |
67 | | - |
68 | | - it('formats gamma scale as gamma value', () => { |
69 | | - expect(formatMidpointLabel(0.5, 'gamma')).toBe('1.00') |
70 | | - }) |
71 | | -}) |
72 | | - |
73 | | -describe('constrainRange', () => { |
74 | | - it('passes through valid range unchanged', () => { |
75 | | - const result = constrainRange({ min: 0.2, max: 0.8 }) |
76 | | - expect(result).toEqual({ min: 0.2, max: 0.8, midpoint: undefined }) |
77 | | - }) |
78 | | - |
79 | | - it('clamps values to default [0, 1]', () => { |
80 | | - const result = constrainRange({ min: -0.5, max: 1.5 }) |
81 | | - expect(result.min).toBe(0) |
82 | | - expect(result.max).toBe(1) |
83 | | - }) |
84 | | - |
85 | | - it('clamps values to custom range', () => { |
86 | | - const result = constrainRange({ min: -10, max: 300 }, 0, 255) |
87 | | - expect(result.min).toBe(0) |
88 | | - expect(result.max).toBe(255) |
89 | | - }) |
90 | | - |
91 | | - it('enforces min <= max', () => { |
92 | | - const result = constrainRange({ min: 0.8, max: 0.3 }) |
93 | | - expect(result.min).toBe(0.8) |
94 | | - expect(result.max).toBe(0.8) |
95 | | - }) |
96 | | - |
97 | | - it('preserves midpoint when present', () => { |
98 | | - const result = constrainRange({ min: 0.2, max: 0.8, midpoint: 0.5 }) |
99 | | - expect(result.midpoint).toBe(0.5) |
100 | | - }) |
101 | | - |
102 | | - it('clamps midpoint to [0, 1]', () => { |
103 | | - const result = constrainRange({ min: 0.2, max: 0.8, midpoint: 1.5 }) |
104 | | - expect(result.midpoint).toBe(1) |
105 | | - }) |
106 | | -}) |
107 | | - |
108 | 31 | describe('isRangeValue', () => { |
109 | 32 | it('returns true for valid range', () => { |
110 | 33 | expect(isRangeValue({ min: 0, max: 1 })).toBe(true) |
|
0 commit comments