|
| 1 | +import * as assert from 'assert' |
1 | 2 | import { Position } from 'vscode-languageserver-types' |
2 | | - |
3 | 3 | import { CodeViewProps, DOM } from './testutils/dom' |
4 | | -import { convertNode, findElementWithOffset, getTokenAtPosition, HoveredToken, locateTarget } from './token_position' |
| 4 | +import { |
| 5 | + convertNode, |
| 6 | + findElementWithOffset, |
| 7 | + getCodeElementsInRange, |
| 8 | + getTokenAtPosition, |
| 9 | + HoveredToken, |
| 10 | + locateTarget, |
| 11 | +} from './token_position' |
5 | 12 |
|
6 | 13 | const { expect } = chai |
7 | 14 |
|
@@ -203,4 +210,29 @@ describe('token_positions', () => { |
203 | 210 | } |
204 | 211 | }) |
205 | 212 | }) |
| 213 | + |
| 214 | + describe('getCodeElementsInRange()', () => { |
| 215 | + it('returns all code elements within a given range on a non-diff code view', () => { |
| 216 | + const codeView = document.createElement('div') |
| 217 | + codeView.innerHTML = ` |
| 218 | + <div>Line 1</div> |
| 219 | + <div>Line 2</div> |
| 220 | + <div>Line 3</div> |
| 221 | + <div>Line 4</div> |
| 222 | + <div>Line 5</div> |
| 223 | + ` |
| 224 | + const codeElements = getCodeElementsInRange({ |
| 225 | + codeView, |
| 226 | + position: { line: 2, endLine: 4 }, |
| 227 | + getCodeElementFromLineNumber: (codeView, line) => codeView.children[line - 1] as HTMLElement, |
| 228 | + }) |
| 229 | + assert.deepStrictEqual(codeElements.map(({ line, element }) => ({ line, content: element.textContent })), [ |
| 230 | + { line: 2, content: 'Line 2' }, |
| 231 | + { line: 3, content: 'Line 3' }, |
| 232 | + { line: 4, content: 'Line 4' }, |
| 233 | + ]) |
| 234 | + }) |
| 235 | + |
| 236 | + it('returns all code elements within a given range on a diff code view') |
| 237 | + }) |
206 | 238 | }) |
0 commit comments