From 9d55ed149e100b4fb3ef6f5a79d263dcb26ce835 Mon Sep 17 00:00:00 2001 From: Craig Jennings Date: Fri, 14 Nov 2025 02:31:16 -0600 Subject: checking in modified/removed tests and other misc changes --- tests/test-custom-ordering-number-lines.el | 181 ----------------------------- 1 file changed, 181 deletions(-) delete mode 100644 tests/test-custom-ordering-number-lines.el (limited to 'tests/test-custom-ordering-number-lines.el') diff --git a/tests/test-custom-ordering-number-lines.el b/tests/test-custom-ordering-number-lines.el deleted file mode 100644 index adda84f0..00000000 --- a/tests/test-custom-ordering-number-lines.el +++ /dev/null @@ -1,181 +0,0 @@ -;;; test-custom-ordering-number-lines.el --- Tests for cj/--number-lines -*- lexical-binding: t; -*- - -;;; Commentary: -;; Tests for the cj/--number-lines function from custom-ordering.el -;; -;; This function numbers lines in a region with a customizable format. -;; The format string uses "N" as a placeholder for the line number. -;; Optionally supports zero-padding for alignment. -;; -;; Examples: -;; Input: "apple\nbanana\ncherry" -;; Format: "N. " -;; Output: "1. apple\n2. banana\n3. cherry" -;; -;; With zero-padding and 100 lines: -;; "001. line\n002. line\n...\n100. line" -;; -;; We test the NON-INTERACTIVE implementation (cj/--number-lines) to avoid -;; mocking user input. This follows our testing best practice of -;; separating business logic from UI interaction. - -;;; Code: - -(require 'ert) -(require 'testutil-general) -(require 'cl-lib) - -;; Add modules directory to load path -(add-to-list 'load-path (expand-file-name "modules" user-emacs-directory)) - -;; Stub dependencies before loading the module -(defvar cj/custom-keymap (make-sparse-keymap) - "Stub keymap for testing.") - -;; Now load the actual production module -(require 'custom-ordering) - -;;; Test Helpers - -(defun test-number-lines (input-text format-string zero-pad) - "Test cj/--number-lines on INPUT-TEXT. -FORMAT-STRING is the format template. -ZERO-PAD enables zero-padding. -Returns the transformed string." - (with-temp-buffer - (insert input-text) - (cj/--number-lines (point-min) (point-max) format-string zero-pad))) - -;;; Normal Cases - Standard Format "N. " - -(ert-deftest test-number-lines-standard-format () - "Should number lines with standard format." - (let ((result (test-number-lines "apple\nbanana\ncherry" "N. " nil))) - (should (string= result "1. apple\n2. banana\n3. cherry")))) - -(ert-deftest test-number-lines-two-lines () - "Should number two lines." - (let ((result (test-number-lines "first\nsecond" "N. " nil))) - (should (string= result "1. first\n2. second")))) - -(ert-deftest test-number-lines-single-line () - "Should number single line." - (let ((result (test-number-lines "only" "N. " nil))) - (should (string= result "1. only")))) - -;;; Normal Cases - Alternative Formats - -(ert-deftest test-number-lines-parenthesis-format () - "Should number with parenthesis format." - (let ((result (test-number-lines "a\nb\nc" "N) " nil))) - (should (string= result "1) a\n2) b\n3) c")))) - -(ert-deftest test-number-lines-bracket-format () - "Should number with bracket format." - (let ((result (test-number-lines "x\ny\nz" "[N] " nil))) - (should (string= result "[1] x\n[2] y\n[3] z")))) - -(ert-deftest test-number-lines-no-space-format () - "Should number without space." - (let ((result (test-number-lines "a\nb" "N." nil))) - (should (string= result "1.a\n2.b")))) - -(ert-deftest test-number-lines-custom-format () - "Should number with custom format." - (let ((result (test-number-lines "foo\nbar" "Item N: " nil))) - (should (string= result "Item 1: foo\nItem 2: bar")))) - -;;; Normal Cases - Zero Padding - -(ert-deftest test-number-lines-zero-pad-single-digit () - "Should not pad when max is single digit." - (let ((result (test-number-lines "a\nb\nc" "N. " t))) - (should (string= result "1. a\n2. b\n3. c")))) - -(ert-deftest test-number-lines-zero-pad-double-digit () - "Should pad to 2 digits when max is 10-99." - (let* ((lines (make-list 12 "line")) - (input (mapconcat #'identity lines "\n")) - (result (test-number-lines input "N. " t)) - (result-lines (split-string result "\n"))) - (should (string-prefix-p "01. " (nth 0 result-lines))) - (should (string-prefix-p "09. " (nth 8 result-lines))) - (should (string-prefix-p "10. " (nth 9 result-lines))) - (should (string-prefix-p "12. " (nth 11 result-lines))))) - -(ert-deftest test-number-lines-zero-pad-triple-digit () - "Should pad to 3 digits when max is 100+." - (let* ((lines (make-list 105 "x")) - (input (mapconcat #'identity lines "\n")) - (result (test-number-lines input "N. " t)) - (result-lines (split-string result "\n"))) - (should (string-prefix-p "001. " (nth 0 result-lines))) - (should (string-prefix-p "099. " (nth 98 result-lines))) - (should (string-prefix-p "100. " (nth 99 result-lines))) - (should (string-prefix-p "105. " (nth 104 result-lines))))) - -;;; Boundary Cases - -(ert-deftest test-number-lines-empty-string () - "Should handle empty string." - (let ((result (test-number-lines "" "N. " nil))) - (should (string= result "1. ")))) - -(ert-deftest test-number-lines-empty-lines () - "Should number empty lines." - (let ((result (test-number-lines "\n\n" "N. " nil))) - (should (string= result "1. \n2. \n3. ")))) - -(ert-deftest test-number-lines-with-existing-numbers () - "Should number lines that already have content." - (let ((result (test-number-lines "1. old\n2. old" "N. " nil))) - (should (string= result "1. 1. old\n2. 2. old")))) - -(ert-deftest test-number-lines-multiple-N-in-format () - "Should replace multiple N occurrences." - (let ((result (test-number-lines "a\nb" "N-N. " nil))) - (should (string= result "1-1. a\n2-2. b")))) - -(ert-deftest test-number-lines-long-content () - "Should number lines with long content." - (let* ((long-line (make-string 100 ?x)) - (input (format "%s\n%s" long-line long-line)) - (result (test-number-lines input "N. " nil))) - (should (string-prefix-p "1. " result)) - (should (string-match "2\\. " result)))) - -;;; Normal Cases - No Zero Padding vs Zero Padding - -(ert-deftest test-number-lines-comparison-no-pad-vs-pad () - "Should show difference between no padding and padding." - (let* ((input "a\nb\nc\nd\ne\nf\ng\nh\ni\nj") - (no-pad (test-number-lines input "N. " nil)) - (with-pad (test-number-lines input "N. " t)) - (no-pad-lines (split-string no-pad "\n")) - (with-pad-lines (split-string with-pad "\n"))) - ;; Without padding: "1. ", "10. " - (should (string-prefix-p "1. " (nth 0 no-pad-lines))) - (should (string-prefix-p "10. " (nth 9 no-pad-lines))) - ;; With padding: "01. ", "10. " - (should (string-prefix-p "01. " (nth 0 with-pad-lines))) - (should (string-prefix-p "10. " (nth 9 with-pad-lines))))) - -;;; Error Cases - -(ert-deftest test-number-lines-start-greater-than-end () - "Should error when start > end." - (should-error - (with-temp-buffer - (insert "line1\nline2") - (cj/--number-lines (point-max) (point-min) "N. " nil)) - :type 'error)) - -(ert-deftest test-number-lines-empty-region () - "Should handle empty region (start == end)." - (with-temp-buffer - (insert "line1\nline2") - (let ((pos (/ (+ (point-min) (point-max)) 2))) - (should (string= "1. " (cj/--number-lines pos pos "N. " nil)))))) - -(provide 'test-custom-ordering-number-lines) -;;; test-custom-ordering-number-lines.el ends here -- cgit v1.2.3