36 lines
1.1 KiB
TypeScript
36 lines
1.1 KiB
TypeScript
/** @vitest-environment jsdom */
|
|
import { describe, it, expect, vi, beforeEach } from 'vitest';
|
|
import { EffectEngine } from '../../apps/desktop/src/renderer/features/effects/effect-engine';
|
|
|
|
// stub requestAnimationFrame
|
|
beforeEach(() => {
|
|
globalThis.requestAnimationFrame = ((cb: FrameRequestCallback) => { return 0 as any; }) as any;
|
|
globalThis.cancelAnimationFrame = (() => {}) as any;
|
|
});
|
|
|
|
describe('M6 EffectEngine 配置与降级 (FR-A11)', () => {
|
|
it('setType/setColor 改变状态', () => {
|
|
const e = new EffectEngine();
|
|
e.setType('particle'); e.setColor('#ff0000');
|
|
e.disable();
|
|
// disable 后 type 为 off
|
|
expect(e.isActive()).toBe(false);
|
|
});
|
|
|
|
it('attach 到 canvas 不抛错', () => {
|
|
const canvas = document.createElement('canvas');
|
|
document.body.appendChild(canvas);
|
|
const e = new EffectEngine();
|
|
expect(() => e.attach(canvas)).not.toThrow();
|
|
e.detach();
|
|
});
|
|
|
|
it('detach 后 isActive 为 false', () => {
|
|
const canvas = document.createElement('canvas');
|
|
const e = new EffectEngine();
|
|
e.attach(canvas);
|
|
e.detach();
|
|
expect(e.isActive()).toBe(false);
|
|
});
|
|
});
|