summaryrefslogtreecommitdiff
path: root/tests/test-video-audio-recording-parse-sources.el
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-video-audio-recording-parse-sources.el')
-rw-r--r--tests/test-video-audio-recording-parse-sources.el98
1 files changed, 0 insertions, 98 deletions
diff --git a/tests/test-video-audio-recording-parse-sources.el b/tests/test-video-audio-recording-parse-sources.el
deleted file mode 100644
index d6d445b5..00000000
--- a/tests/test-video-audio-recording-parse-sources.el
+++ /dev/null
@@ -1,98 +0,0 @@
-;;; test-video-audio-recording-parse-sources.el --- Tests for cj/recording-parse-sources -*- lexical-binding: t; -*-
-
-;;; Commentary:
-;; Unit tests for cj/recording-parse-sources function.
-;; Tests the wrapper that calls pactl and delegates to internal parser.
-;; Mocks shell-command-to-string to avoid system dependencies.
-
-;;; Code:
-
-(require 'ert)
-
-;; Stub dependencies before loading the module
-(defvar cj/custom-keymap (make-sparse-keymap)
- "Stub keymap for testing.")
-
-;; Now load the actual production module
-(require 'video-audio-recording)
-
-;;; Test Fixtures Helper
-
-(defun test-load-fixture (filename)
- "Load fixture file FILENAME from tests/fixtures directory."
- (let ((fixture-path (expand-file-name
- (concat "tests/fixtures/" filename)
- user-emacs-directory)))
- (with-temp-buffer
- (insert-file-contents fixture-path)
- (buffer-string))))
-
-;;; Normal Cases
-
-(ert-deftest test-video-audio-recording-parse-sources-normal-calls-pactl-and-parses ()
- "Test that parse-sources calls shell command and returns parsed list."
- (let ((fixture-output (test-load-fixture "pactl-output-normal.txt")))
- (cl-letf (((symbol-function 'shell-command-to-string)
- (lambda (_cmd) fixture-output)))
- (let ((result (cj/recording-parse-sources)))
- (should (listp result))
- (should (= 6 (length result)))
- ;; Verify it returns structured data
- (should (equal "alsa_output.pci-0000_00_1f.3.analog-stereo.monitor"
- (car (nth 0 result))))
- (should (equal "PipeWire" (nth 1 (nth 0 result))))
- (should (equal "SUSPENDED" (nth 2 (nth 0 result))))))))
-
-(ert-deftest test-video-audio-recording-parse-sources-normal-single-device-returns-list ()
- "Test parse-sources with single device."
- (let ((fixture-output (test-load-fixture "pactl-output-single.txt")))
- (cl-letf (((symbol-function 'shell-command-to-string)
- (lambda (_cmd) fixture-output)))
- (let ((result (cj/recording-parse-sources)))
- (should (listp result))
- (should (= 1 (length result)))))))
-
-;;; Boundary Cases
-
-(ert-deftest test-video-audio-recording-parse-sources-boundary-empty-output-returns-empty-list ()
- "Test that empty pactl output returns empty list."
- (cl-letf (((symbol-function 'shell-command-to-string)
- (lambda (_cmd) "")))
- (let ((result (cj/recording-parse-sources)))
- (should (listp result))
- (should (null result)))))
-
-(ert-deftest test-video-audio-recording-parse-sources-boundary-whitespace-output-returns-empty-list ()
- "Test that whitespace-only output returns empty list."
- (cl-letf (((symbol-function 'shell-command-to-string)
- (lambda (_cmd) " \n\t\n ")))
- (let ((result (cj/recording-parse-sources)))
- (should (listp result))
- (should (null result)))))
-
-;;; Error Cases
-
-(ert-deftest test-video-audio-recording-parse-sources-error-malformed-output-returns-empty-list ()
- "Test that malformed output is handled gracefully."
- (let ((fixture-output (test-load-fixture "pactl-output-malformed.txt")))
- (cl-letf (((symbol-function 'shell-command-to-string)
- (lambda (_cmd) fixture-output)))
- (let ((result (cj/recording-parse-sources)))
- (should (listp result))
- (should (null result))))))
-
-(ert-deftest test-video-audio-recording-parse-sources-error-mixed-valid-invalid-returns-valid-only ()
- "Test that mix of valid and invalid lines returns only valid entries."
- (let ((mixed-output (concat
- "50\talsa_input.pci-0000_00_1f.3.analog-stereo\tPipeWire\ts32le 2ch 48000Hz\tSUSPENDED\n"
- "invalid line\n"
- "79\tbluez_input.00:1B:66:C0:91:6D\tPipeWire\tfloat32le 1ch 48000Hz\tRUNNING\n")))
- (cl-letf (((symbol-function 'shell-command-to-string)
- (lambda (_cmd) mixed-output)))
- (let ((result (cj/recording-parse-sources)))
- (should (= 2 (length result)))
- (should (equal "alsa_input.pci-0000_00_1f.3.analog-stereo" (car (nth 0 result))))
- (should (equal "bluez_input.00:1B:66:C0:91:6D" (car (nth 1 result))))))))
-
-(provide 'test-video-audio-recording-parse-sources)
-;;; test-video-audio-recording-parse-sources.el ends here