Files
orca/mobile/src/session/mobile-diff-lines.test.ts
T

53 lines
2.1 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import { buildMobileDiffLines } from './mobile-diff-lines'
describe('buildMobileDiffLines', () => {
it('marks added, deleted, and unchanged lines', () => {
const result = buildMobileDiffLines('one\ntwo\nthree\n', 'one\nTWO\nthree\nfour\n')
expect(result.truncated).toBe(false)
expect(result.lines).toEqual([
{ kind: 'context', text: 'one', oldLineNumber: 1, newLineNumber: 1 },
{ kind: 'delete', text: 'two', oldLineNumber: 2 },
{ kind: 'add', text: 'TWO', newLineNumber: 2 },
{ kind: 'context', text: 'three', oldLineNumber: 3, newLineNumber: 3 },
{ kind: 'add', text: 'four', newLineNumber: 4 }
])
})
it('caps add-only preview rows before returning the mobile truncation marker', () => {
const modified = Array.from({ length: 3_000 }, (_, index) => `line-${index + 1}`).join('\n')
const result = buildMobileDiffLines('', `${modified}\n`)
expect(result.truncated).toBe(true)
expect(result.lines).toHaveLength(2_501)
expect(result.lines[0]).toEqual({ kind: 'add', text: 'line-1', newLineNumber: 1 })
expect(result.lines[2_499]).toEqual({ kind: 'add', text: 'line-2500', newLineNumber: 2500 })
expect(result.lines[2_500]).toEqual({
kind: 'context',
text: '... diff truncated for mobile preview ...'
})
})
it('caps prefix-suffix fallback rows for very large changed files', () => {
const original = Array.from({ length: 3_000 }, (_, index) => `old-${index + 1}`).join('\n')
const modified = Array.from({ length: 3_000 }, (_, index) => `new-${index + 1}`).join('\n')
const result = buildMobileDiffLines(`${original}\n`, `${modified}\n`)
expect(result.truncated).toBe(true)
expect(result.lines).toHaveLength(2_501)
expect(result.lines[0]).toEqual({ kind: 'delete', text: 'old-1', oldLineNumber: 1 })
expect(result.lines[2_499]).toEqual({
kind: 'delete',
text: 'old-2500',
oldLineNumber: 2500
})
expect(result.lines[2_500]).toEqual({
kind: 'context',
text: '... diff truncated for mobile preview ...'
})
})
})