import { describe, expect, it } from 'vitest' import type { ColumnCondition, RowCondition } from '../../types' import { createColumnConditionMap, createColumnConditionSpans, createRowConditionMap, createRowConditionSpanByRow, createRowConditionSpans, } from '../../components/WellPlate.conditions' const columnCondition: ColumnCondition = { label: 'Drug A', color: '#10b981', concentrations: [1, 10], cols: [2, 3], unit: 'uM', } const rowCondition: RowCondition = { label: 'Drug B', color: '#6366f1', concentrations: [0.1, 1], rows: ['B', 'C'], } describe('WellPlate condition helpers', () => { it('maps column and row labels to their condition index', () => { expect(createColumnConditionMap([columnCondition]).get(3)).toEqual({ condition: columnCondition, indexInGroup: 1, }) expect(createRowConditionMap([rowCondition]).get('C')).toEqual({ condition: rowCondition, indexInGroup: 1, }) }) it('creates column spans with gaps around condition groups', () => { const spans = createColumnConditionSpans( [1, 2, 3, 4], createColumnConditionMap([columnCondition]), ) expect(spans).toEqual([ { gap: true, colspan: 1 }, { condition: columnCondition, colspan: 2 }, { gap: true, colspan: 1 }, ]) }) it('creates row spans and indexes them by starting row', () => { const spans = createRowConditionSpans( ['A', 'B', 'C', 'D'], createRowConditionMap([rowCondition]), ) expect(spans).toEqual([ { gap: true, rowspan: 1, startRow: 0 }, { condition: rowCondition, rowspan: 2, startRow: 1 }, { gap: true, rowspan: 1, startRow: 3 }, ]) expect(createRowConditionSpanByRow(spans).get(1)).toEqual({ condition: rowCondition, rowspan: 2, startRow: 1, }) }) })