murmuraba
Version:
Real-time audio noise reduction with advanced chunked processing for web applications
128 lines • 5.16 kB
TypeScript
import { vi } from 'vitest';
/**
* Centralized Audio Context test utilities
* Eliminates duplication across test files
*/
export interface AudioContextMockOptions {
state?: AudioContextState;
sampleRate?: number;
currentTime?: number;
baseLatency?: number;
outputLatency?: number;
includeWorklet?: boolean;
includeAnalyser?: boolean;
includeBiquadFilter?: boolean;
includeMediaStreamDestination?: boolean;
}
export interface MockGainNode {
gain: {
value: number;
setValueAtTime: ReturnType<typeof vi.fn>;
linearRampToValueAtTime: ReturnType<typeof vi.fn>;
exponentialRampToValueAtTime: ReturnType<typeof vi.fn>;
setTargetAtTime: ReturnType<typeof vi.fn>;
setValueCurveAtTime: ReturnType<typeof vi.fn>;
cancelScheduledValues: ReturnType<typeof vi.fn>;
cancelAndHoldAtTime: ReturnType<typeof vi.fn>;
};
connect: ReturnType<typeof vi.fn>;
disconnect: ReturnType<typeof vi.fn>;
numberOfInputs: number;
numberOfOutputs: number;
channelCount: number;
channelCountMode: ChannelCountMode;
channelInterpretation: ChannelInterpretation;
}
export declare function createMockGainNode(initialValue?: number): MockGainNode;
export declare function createMockAnalyserNode(): {
fftSize: number;
frequencyBinCount: number;
minDecibels: number;
maxDecibels: number;
smoothingTimeConstant: number;
getByteFrequencyData: import("vitest").Mock<(array: Uint8Array) => void>;
getByteTimeDomainData: import("vitest").Mock<(array: Uint8Array) => void>;
getFloatFrequencyData: import("vitest").Mock<(...args: any[]) => any>;
getFloatTimeDomainData: import("vitest").Mock<(...args: any[]) => any>;
connect: import("vitest").Mock<(...args: any[]) => any>;
disconnect: import("vitest").Mock<(...args: any[]) => any>;
};
export declare function createMockScriptProcessor(bufferSize?: number, numberOfInputChannels?: number, numberOfOutputChannels?: number): {
bufferSize: number;
numberOfInputs: number;
numberOfOutputs: number;
onaudioprocess: any;
connect: import("vitest").Mock<(...args: any[]) => any>;
disconnect: import("vitest").Mock<(...args: any[]) => any>;
addEventListener: import("vitest").Mock<(...args: any[]) => any>;
removeEventListener: import("vitest").Mock<(...args: any[]) => any>;
};
export declare function createMockBiquadFilter(): {
type: BiquadFilterType;
frequency: {
value: number;
setValueAtTime: import("vitest").Mock<(...args: any[]) => any>;
};
Q: {
value: number;
setValueAtTime: import("vitest").Mock<(...args: any[]) => any>;
};
gain: {
value: number;
setValueAtTime: import("vitest").Mock<(...args: any[]) => any>;
};
detune: {
value: number;
setValueAtTime: import("vitest").Mock<(...args: any[]) => any>;
};
connect: import("vitest").Mock<(...args: any[]) => any>;
disconnect: import("vitest").Mock<(...args: any[]) => any>;
getFrequencyResponse: import("vitest").Mock<(...args: any[]) => any>;
};
export declare function createMockMediaStreamSource(): {
connect: import("vitest").Mock<(...args: any[]) => any>;
disconnect: import("vitest").Mock<(...args: any[]) => any>;
mediaStream: null;
numberOfInputs: number;
numberOfOutputs: number;
};
export declare function createMockMediaStreamDestination(): {
stream: {
id: string;
active: boolean;
getTracks: import("vitest").Mock<(...args: any[]) => any>;
getAudioTracks: import("vitest").Mock<(...args: any[]) => any>;
getVideoTracks: import("vitest").Mock<(...args: any[]) => any>;
addEventListener: import("vitest").Mock<(...args: any[]) => any>;
removeEventListener: import("vitest").Mock<(...args: any[]) => any>;
addTrack: import("vitest").Mock<(...args: any[]) => any>;
removeTrack: import("vitest").Mock<(...args: any[]) => any>;
clone: import("vitest").Mock<(...args: any[]) => any>;
getTrackById: import("vitest").Mock<(...args: any[]) => any>;
};
numberOfInputs: number;
numberOfOutputs: number;
};
export declare function createMockAudioBuffer(numberOfChannels?: number, length?: number, sampleRate?: number): {
numberOfChannels: number;
length: number;
sampleRate: number;
duration: number;
getChannelData: import("vitest").Mock<() => Float32Array<ArrayBuffer>>;
copyFromChannel: import("vitest").Mock<(...args: any[]) => any>;
copyToChannel: import("vitest").Mock<(...args: any[]) => any>;
};
export declare function createMockAudioContext(options?: AudioContextMockOptions): any;
/**
* Setup AudioContext mock globally
* Returns the mock instance for further customization
*/
export declare function setupAudioContextMock(options?: AudioContextMockOptions): {
context: any;
restore: () => void;
};
/**
* Helper to use AudioContext mock in beforeEach/afterEach
*/
export declare function useAudioContextMock(options?: AudioContextMockOptions): () => any;
//# sourceMappingURL=audio-context-utils.d.ts.map