|
5 | 5 | * |
6 | 6 | * Copyright Oxide Computer Company |
7 | 7 | */ |
| 8 | +import { type ReactElement } from 'react' |
8 | 9 | import { expect, test } from 'vitest' |
9 | 10 |
|
10 | 11 | import { groupBy, intersperse, lowestBy, sortBy, sumBy } from './array' |
@@ -68,12 +69,31 @@ test('sumBy', () => { |
68 | 69 | }) |
69 | 70 |
|
70 | 71 | test('intersperse', () => { |
71 | | - expect(intersperse([], 'x')).toEqual([]) |
72 | | - expect(intersperse(['a'], 'x')).toEqual(['a']) |
| 72 | + expect(intersperse([], <>,</>)).toEqual([]) |
73 | 73 |
|
74 | | - expect(intersperse(['a', 'b'], ',')).toEqual(['a', ',', 'b']) |
75 | | - expect(intersperse(['a', 'b'], ',', 'or')).toEqual(['a', 'or', 'b']) |
| 74 | + const a = <span key="a">a</span> |
| 75 | + const b = <span key="b">b</span> |
| 76 | + const c = <span key="c">c</span> |
| 77 | + const comma = <>,</> |
| 78 | + const or = <>or</> |
76 | 79 |
|
77 | | - expect(intersperse(['a', 'b', 'c'], ',')).toEqual(['a', ',', 'b', ',', 'c']) |
78 | | - expect(intersperse(['a', 'b', 'c'], ',', 'or')).toEqual(['a', ',', 'b', ',', 'or', 'c']) |
| 80 | + const getText = (el: ReactElement) => el.props.children |
| 81 | + const getKey = (el: ReactElement) => el.key |
| 82 | + |
| 83 | + expect(intersperse([a], comma).map(getText)).toEqual(['a']) |
| 84 | + expect(intersperse([a], comma).map(getKey)).toEqual(['a']) |
| 85 | + |
| 86 | + expect(intersperse([a, b], comma).map(getText)).toEqual(['a', ',', 'b']) |
| 87 | + expect(intersperse([a, b], comma).map(getKey)).toEqual(['a', 'sep-1', 'b']) |
| 88 | + |
| 89 | + expect(intersperse([a, b], comma, or).map(getText)).toEqual(['a', 'or', 'b']) |
| 90 | + expect(intersperse([a, b], comma, or).map(getKey)).toEqual(['a', 'conj', 'b']) |
| 91 | + |
| 92 | + let result = intersperse([a, b, c], comma) |
| 93 | + expect(result.map(getText)).toEqual(['a', ',', 'b', ',', 'c']) |
| 94 | + expect(result.map(getKey)).toEqual(['a', 'sep-1', 'b', 'sep-2', 'c']) |
| 95 | + |
| 96 | + result = intersperse([a, b, c], comma, or) |
| 97 | + expect(result.map(getText)).toEqual(['a', ',', 'b', ',', 'or', 'c']) |
| 98 | + expect(result.map(getKey)).toEqual(['a', 'sep-1', 'b', 'sep-2', 'conj', 'c']) |
79 | 99 | }) |
0 commit comments