diff options
| -rw-r--r-- | webAO/__tests__/isAudio.test.ts | 29 | ||||
| -rw-r--r-- | webAO/client/isAudio.ts | 3 |
2 files changed, 32 insertions, 0 deletions
diff --git a/webAO/__tests__/isAudio.test.ts b/webAO/__tests__/isAudio.test.ts new file mode 100644 index 0000000..327a0de --- /dev/null +++ b/webAO/__tests__/isAudio.test.ts @@ -0,0 +1,29 @@ +import { isAudio } from '../client/isAudio'; + +// Test cases +describe('isAudio', () => { + test('should return true for valid audio file extensions', () => { + expect(isAudio('song.wav')).toBe(true); + expect(isAudio('music.mp3')).toBe(true); + expect(isAudio('track.ogg')).toBe(true); + expect(isAudio('audio.opus')).toBe(true); + }); + + test('should return false for non-audio file extensions', () => { + expect(isAudio('image.jpg')).toBe(false); + expect(isAudio('document.pdf')).toBe(false); + expect(isAudio('text.txt')).toBe(false); + }); + + test('should handle edge cases', () => { + expect(isAudio('')).toBe(false); // Empty string + expect(isAudio(undefined)).toBe(false); // Undefined input + expect(isAudio(null)).toBe(false); // Null input + expect(isAudio({})).toBe(false); // Invalid type (object) + }); + + test('should return true for files with multiple valid extensions', () => { + expect(isAudio('file.wav.mp3')).toBe(true); + expect(isAudio('track.ogg.opus')).toBe(true); + }); +});
\ No newline at end of file diff --git a/webAO/client/isAudio.ts b/webAO/client/isAudio.ts index 52e53a1..032b68f 100644 --- a/webAO/client/isAudio.ts +++ b/webAO/client/isAudio.ts @@ -1,4 +1,7 @@ export const isAudio = (trackname: string) => { + if (!trackname || typeof trackname !== 'string') { + return false; + } const audioEndings = [".wav", ".mp3", ".ogg", ".opus"]; return ( audioEndings.filter((ending) => trackname.endsWith(ending)).length === 1 |
