feat(chart): support fixed y-axis domains
All checks were successful
Package component / package (push) Successful in 9m22s
All checks were successful
Package component / package (push) Successful in 9m22s
This commit is contained in:
56
src/components/core/yDomain.test.ts
Normal file
56
src/components/core/yDomain.test.ts
Normal file
@@ -0,0 +1,56 @@
|
||||
import { describe, expect, it } from 'vitest'
|
||||
|
||||
import type { DisplayTrack } from './types'
|
||||
import { hasFixedYDomainForTrack, mergeYDomains, normalizeYDomain } from './yDomain'
|
||||
|
||||
const track: DisplayTrack = {
|
||||
id: 'shared-track',
|
||||
series: [],
|
||||
visibleSeries: [
|
||||
{
|
||||
id: 'channel-a',
|
||||
name: 'A',
|
||||
color: '#1677ff',
|
||||
lineType: 'linear',
|
||||
lineStyle: 'solid',
|
||||
pointType: 'none',
|
||||
errorBar: { visible: false, width: 1.5, capWidth: 8 },
|
||||
points: [],
|
||||
xDomain: [0, 1],
|
||||
yDomain: [0, 1],
|
||||
hasErrorPoints: false,
|
||||
},
|
||||
],
|
||||
xDomain: [0, 1],
|
||||
yDomain: [0, 1],
|
||||
}
|
||||
|
||||
describe('fixed Y domains', () => {
|
||||
it('normalizes valid reversed domains', () => {
|
||||
expect(normalizeYDomain([97, 3])).toEqual([3, 97])
|
||||
expect(normalizeYDomain([-10, 10])).toEqual([-10, 10])
|
||||
})
|
||||
|
||||
it.each([undefined, [1, 1], [Number.NaN, 1], [0, Number.POSITIVE_INFINITY]])(
|
||||
'rejects an invalid domain: %j',
|
||||
(domain) => {
|
||||
expect(normalizeYDomain(domain as [number, number] | undefined)).toBeUndefined()
|
||||
},
|
||||
)
|
||||
|
||||
it('detects valid track, series, and global configuration only', () => {
|
||||
expect(hasFixedYDomainForTrack(track, [-1, 1])).toBe(true)
|
||||
expect(hasFixedYDomainForTrack(track, undefined, { 'shared-track': [-2, 2] })).toBe(true)
|
||||
expect(hasFixedYDomainForTrack(track, undefined, { 'channel-a': [-3, 3] })).toBe(true)
|
||||
expect(hasFixedYDomainForTrack(track, [0, 0], { 'channel-a': [1, 1] })).toBe(false)
|
||||
})
|
||||
|
||||
it('merges configured and automatic series domains without padding', () => {
|
||||
expect(
|
||||
mergeYDomains([
|
||||
[3, 97],
|
||||
[-20, 40],
|
||||
]),
|
||||
).toEqual([-20, 97])
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user