104 lines
2.9 KiB
TypeScript
104 lines
2.9 KiB
TypeScript
/**
|
|
* MagnifierState Unit Tests
|
|
*
|
|
* Tests for the MagnifierState class which manages magnifier state.
|
|
*/
|
|
|
|
import { describe, it, expect, beforeEach } from 'vitest';
|
|
import { MagnifierState } from '../../src/magnify-glass/MagnifierState';
|
|
|
|
describe('MagnifierState', () => {
|
|
let state: MagnifierState;
|
|
|
|
beforeEach(() => {
|
|
state = new MagnifierState();
|
|
});
|
|
|
|
describe('constructor', () => {
|
|
it('should initialize as inactive', () => {
|
|
expect(state.active).toBe(false);
|
|
});
|
|
|
|
it('should initialize cursor at origin', () => {
|
|
expect(state.x).toBe(0);
|
|
expect(state.y).toBe(0);
|
|
});
|
|
|
|
it('should initialize source dimensions to zero', () => {
|
|
expect(state.sourceX).toBe(0);
|
|
expect(state.sourceY).toBe(0);
|
|
expect(state.sourceWidth).toBe(0);
|
|
expect(state.sourceHeight).toBe(0);
|
|
});
|
|
|
|
it('should initialize canvas scale to 1', () => {
|
|
expect(state.canvasScale).toBe(1.0);
|
|
});
|
|
|
|
it('should initialize canvas offsets to zero', () => {
|
|
expect(state.canvasOffsetX).toBe(0);
|
|
expect(state.canvasOffsetY).toBe(0);
|
|
});
|
|
|
|
it('should not be scheduled for render initially', () => {
|
|
expect(state.isRenderScheduled).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe('reset', () => {
|
|
it('should reset all state values to defaults', () => {
|
|
// Modify state
|
|
state.active = true;
|
|
state.x = 100;
|
|
state.y = 200;
|
|
state.sourceX = 50;
|
|
state.sourceY = 75;
|
|
state.canvasScale = 2.5;
|
|
|
|
// Reset
|
|
state.reset();
|
|
|
|
// Verify defaults
|
|
expect(state.active).toBe(false);
|
|
expect(state.x).toBe(0);
|
|
expect(state.y).toBe(0);
|
|
expect(state.sourceX).toBe(0);
|
|
expect(state.sourceY).toBe(0);
|
|
expect(state.canvasScale).toBe(1.0);
|
|
});
|
|
|
|
it('should reset wasActivatedBefore flag', () => {
|
|
state.wasActivatedBefore = true;
|
|
|
|
state.reset();
|
|
|
|
expect(state.wasActivatedBefore).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe('state mutations', () => {
|
|
it('should allow setting active state', () => {
|
|
state.active = true;
|
|
expect(state.active).toBe(true);
|
|
});
|
|
|
|
it('should allow setting cursor position', () => {
|
|
state.x = 150;
|
|
state.y = 250;
|
|
|
|
expect(state.x).toBe(150);
|
|
expect(state.y).toBe(250);
|
|
});
|
|
|
|
it('should allow setting canvas transform values', () => {
|
|
state.canvasScale = 3.0;
|
|
state.canvasOffsetX = -100;
|
|
state.canvasOffsetY = -200;
|
|
|
|
expect(state.canvasScale).toBe(3.0);
|
|
expect(state.canvasOffsetX).toBe(-100);
|
|
expect(state.canvasOffsetY).toBe(-200);
|
|
});
|
|
});
|
|
});
|