aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--webAO/__tests__/isAudio.test.ts29
-rw-r--r--webAO/client/isAudio.ts3
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