import {createSignal, join, waitFor} from '@revideo/core';
import {describe, expect, it} from 'vitest';
import {Circle} from '../Circle';
import {generatorTest} from './generatorTest';
import {mockScene2D} from './mockScene2D';
describe('state', () => {
mockScene2D();
it('Restoring state', () => {
const signal = createSignal(45);
const circle = (
) as Circle;
circle.save();
circle.lineWidth(16);
circle.startAngle(90);
circle.end(0.25);
circle.restore();
expect(circle.lineWidth()).toBe(8);
expect(circle.startAngle()).toBe(45);
expect(circle.end()).toBe(0.5);
signal(180);
expect(circle.startAngle()).toBe(45);
expect(circle.startArrow.context.isInitial()).toBe(true);
});
it(
'Tweening state',
generatorTest(function* () {
const signal = createSignal(20);
const circle = (
) as Circle;
circle.save();
circle.lineWidth(16);
circle.startAngle(40);
circle.end(0.3);
const task = yield circle.restore(2);
yield* waitFor(1);
expect(circle.lineWidth()).closeTo(12, 0.0001);
expect(circle.startAngle()).closeTo(30, 0.0001);
expect(circle.end()).closeTo(0.4, 0.0001);
yield* join(task);
expect(circle.lineWidth()).toBe(8);
expect(circle.startAngle()).toBe(20);
expect(circle.end()).toBe(0.5);
}),
);
});