import { describe, expect, it } from 'vitest' import { reuseStringArrayIfEqual, reuseStringSetIfEqual, } from '@/app/[locale]/workspace/[projectId]/modes/novel-promotion/components/script-view/selection-sync' describe('script view selection sync', () => { it('reuses the previous array reference when ids are unchanged', () => { const previous = ['char-1', 'char-2'] const next = ['char-1', 'char-2'] const result = reuseStringArrayIfEqual(previous, next) expect(result).toBe(previous) }) it('returns the next array when ids changed', () => { const previous = ['char-1', 'char-2'] const next = ['char-1', 'prop-1'] const result = reuseStringArrayIfEqual(previous, next) expect(result).toBe(next) }) it('reuses the previous set reference when selected appearance keys are unchanged', () => { const previous = new Set(['char-1::Base', 'char-2::Alt']) const next = new Set(['char-2::Alt', 'char-1::Base']) const result = reuseStringSetIfEqual(previous, next) expect(result).toBe(previous) }) it('returns the next set when selected appearance keys changed', () => { const previous = new Set(['char-1::Base']) const next = new Set(['char-1::Base', 'char-2::Alt']) const result = reuseStringSetIfEqual(previous, next) expect(result).toBe(next) }) })