import {linear, waitFor} from '@revideo/core'; import {describe, expect, it, vi} from 'vitest'; import {Txt} from './Txt'; import {TxtLeaf} from './TxtLeaf'; import {generatorTest} from './__tests__/generatorTest'; import {mockScene2D} from './__tests__/mockScene2D'; describe('Txt', () => { mockScene2D(); it('Handle plain text', () => { const node = (test) as Txt; const parseSpy = vi.spyOn(node as any, 'parseChildren'); const leaf = node.childAs(0); expect(node.text()).toBe('test'); expect(node.lineWidth()).toBe(8); expect(node.children().length).toBe(1); expect(leaf).toBeInstanceOf(TxtLeaf); expect(leaf!.text()).toBe('test'); expect(leaf!.lineWidth()).toBe(8); node.lineWidth(16); node.text('changed'); expect(node.childAs(0)).toBe(leaf); expect(leaf!.lineWidth()).toBe(16); expect(leaf!.text()).toBe('changed'); // Parsing should not happen when operating exclusively on simple text expect(parseSpy).toHaveBeenCalledTimes(0); }); it('Handle complex text', () => { const node = ( Apple Banana Cherry ) as Txt; const first = node.childAs(0); const second = node.childAs(1); const third = node.childAs(2); expect(node.text()).toBe('Apple Banana Cherry'); expect(node.lineWidth()).toBe(8); expect(node.children().length).toBe(3); expect(first).toBeInstanceOf(TxtLeaf); expect(first!.text()).toBe('Apple '); expect(first!.lineWidth()).toBe(8); expect(second).toBeInstanceOf(Txt); expect(second!.text()).toBe('Banana'); expect(second!.lineWidth()).toBe(8); expect(third).toBeInstanceOf(TxtLeaf); expect(third!.text()).toBe(' Cherry'); expect(third!.lineWidth()).toBe(8); }); it( 'Tween complex to simple text', generatorTest(function* () { const node = ( Apple Banana ) as Txt; yield node.text('Simple', 2, linear); yield* waitFor(1); const leaf = node.childAs(0)!; expect(node.children().length).toBe(1); expect(node.text()).toBe('Apple Ban'); expect(leaf.text()).toBe('Apple Ban'); }), ); });