49 lines
1.4 KiB
TypeScript
49 lines
1.4 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
|
|
import { gardenAudioConfig } from './garden-audio-config';
|
|
import { GardenAudioEnergy } from './garden-audio-energy';
|
|
|
|
describe('GardenAudioEnergy', () => {
|
|
it('suspends activity but keeps a fading level when the gesture ends', () => {
|
|
const energy = new GardenAudioEnergy(gardenAudioConfig);
|
|
|
|
energy.beginGesture(0);
|
|
energy.recordStroke(0.8, 0.1);
|
|
energy.update(0.1);
|
|
energy.update(0.2);
|
|
|
|
const levelBeforeLift = energy.getLevel();
|
|
expect(energy.getActivity()).toBeGreaterThan(0);
|
|
|
|
energy.endGesture();
|
|
|
|
expect(energy.getActivity()).toBe(0);
|
|
expect(energy.getLevel()).toBe(levelBeforeLift);
|
|
energy.update(0.3);
|
|
expect(energy.getLevel()).toBeLessThan(levelBeforeLift);
|
|
expect(energy.getLevel()).toBeGreaterThan(0);
|
|
});
|
|
|
|
it('uses recent stroke intensity rather than gesture duration alone', () => {
|
|
const energy = new GardenAudioEnergy(gardenAudioConfig);
|
|
|
|
energy.beginGesture(0);
|
|
energy.recordStroke(1, 0.1);
|
|
energy.update(0.1);
|
|
energy.update(0.2);
|
|
const activeLevel = energy.getActivity();
|
|
|
|
energy.update(1.2);
|
|
|
|
expect(energy.getActivity()).toBeLessThan(activeLevel);
|
|
});
|
|
|
|
it('raises activity immediately when a stroke is recorded', () => {
|
|
const energy = new GardenAudioEnergy(gardenAudioConfig);
|
|
|
|
energy.beginGesture(0);
|
|
energy.recordStroke(0.12, 0.05);
|
|
|
|
expect(energy.getActivity()).toBeGreaterThan(0.09);
|
|
});
|
|
});
|