summaryrefslogtreecommitdiff
path: root/tests/test-wttrin--cleanup-cache-constants.el
diff options
context:
space:
mode:
Diffstat (limited to 'tests/test-wttrin--cleanup-cache-constants.el')
-rw-r--r--tests/test-wttrin--cleanup-cache-constants.el146
1 files changed, 0 insertions, 146 deletions
diff --git a/tests/test-wttrin--cleanup-cache-constants.el b/tests/test-wttrin--cleanup-cache-constants.el
deleted file mode 100644
index dd2e4bb..0000000
--- a/tests/test-wttrin--cleanup-cache-constants.el
+++ /dev/null
@@ -1,146 +0,0 @@
-;;; test-wttrin--cleanup-cache-constants.el --- Tests for cache cleanup constants -*- lexical-binding: t; -*-
-
-;; Copyright (C) 2024 Craig Jennings
-
-;;; Commentary:
-;; Unit tests verifying cache cleanup behavior with named constants.
-;; These tests verify the behavior before and after refactoring magic numbers.
-
-;;; Code:
-
-(require 'ert)
-(require 'wttrin)
-
-;;; Normal Cases - Cache Cleanup Behavior
-
-(ert-deftest test-wttrin--cleanup-cache-removes-oldest-entries ()
- "Test that cleanup removes oldest entries when cache exceeds max."
- (let ((wttrin--cache (make-hash-table :test 'equal))
- (wttrin-cache-max-entries 5)
- (now (float-time)))
- ;; Add 10 entries with sequential timestamps
- (dotimes (i 10)
- (puthash (format "location-%d" i)
- (cons (+ now i) (format "data-%d" i))
- wttrin--cache))
- ;; Cache should have 10 entries
- (should (= 10 (hash-table-count wttrin--cache)))
-
- ;; Trigger cleanup
- (wttrin--cleanup-cache-if-needed)
-
- ;; After cleanup, cache should have fewer entries
- ;; With 10 entries and max of 5, should remove 20% = 2 entries
- ;; Leaving 8 entries
- (should (= 8 (hash-table-count wttrin--cache)))
-
- ;; Oldest entries (location-0, location-1) should be removed
- (should-not (gethash "location-0" wttrin--cache))
- (should-not (gethash "location-1" wttrin--cache))
-
- ;; Newer entries should remain
- (should (gethash "location-9" wttrin--cache))
- (should (gethash "location-8" wttrin--cache))))
-
-(ert-deftest test-wttrin--cleanup-cache-removes-approximately-20-percent ()
- "Test that cleanup removes approximately 20% of entries."
- (let ((wttrin--cache (make-hash-table :test 'equal))
- (wttrin-cache-max-entries 10)
- (now (float-time)))
- ;; Add 20 entries (twice the max)
- (dotimes (i 20)
- (puthash (format "loc-%d" i)
- (cons (+ now i) (format "data-%d" i))
- wttrin--cache))
-
- (should (= 20 (hash-table-count wttrin--cache)))
-
- ;; Trigger cleanup - should remove 20% of 20 = 4 entries
- (wttrin--cleanup-cache-if-needed)
-
- ;; Should have 16 entries remaining (20 - 4)
- (should (= 16 (hash-table-count wttrin--cache)))))
-
-(ert-deftest test-wttrin--cleanup-cache-no-action-when-under-max ()
- "Test that cleanup does nothing when cache is under max."
- (let ((wttrin--cache (make-hash-table :test 'equal))
- (wttrin-cache-max-entries 10)
- (now (float-time)))
- ;; Add 5 entries (under max of 10)
- (dotimes (i 5)
- (puthash (format "location-%d" i)
- (cons (+ now i) (format "data-%d" i))
- wttrin--cache))
-
- (should (= 5 (hash-table-count wttrin--cache)))
-
- ;; Trigger cleanup
- (wttrin--cleanup-cache-if-needed)
-
- ;; Should still have 5 entries (no cleanup needed)
- (should (= 5 (hash-table-count wttrin--cache)))))
-
-;;; Boundary Cases
-
-(ert-deftest test-wttrin--cleanup-cache-exactly-at-max ()
- "Test that cleanup does nothing when cache is exactly at max."
- (let ((wttrin--cache (make-hash-table :test 'equal))
- (wttrin-cache-max-entries 5)
- (now (float-time)))
- ;; Add exactly 5 entries (at max)
- (dotimes (i 5)
- (puthash (format "location-%d" i)
- (cons (+ now i) (format "data-%d" i))
- wttrin--cache))
-
- (should (= 5 (hash-table-count wttrin--cache)))
-
- ;; Trigger cleanup - should do nothing since not > max
- (wttrin--cleanup-cache-if-needed)
-
- ;; Should still have 5 entries
- (should (= 5 (hash-table-count wttrin--cache)))))
-
-(ert-deftest test-wttrin--cleanup-cache-one-over-max ()
- "Test cleanup when cache has just one entry over max."
- (let ((wttrin--cache (make-hash-table :test 'equal))
- (wttrin-cache-max-entries 5)
- (now (float-time)))
- ;; Add 6 entries (1 over max)
- (dotimes (i 6)
- (puthash (format "location-%d" i)
- (cons (+ now i) (format "data-%d" i))
- wttrin--cache))
-
- (should (= 6 (hash-table-count wttrin--cache)))
-
- ;; Trigger cleanup - should remove 20% of 6 = 1.2 = 1 entry (floor)
- (wttrin--cleanup-cache-if-needed)
-
- ;; Should have 5 entries remaining
- (should (= 5 (hash-table-count wttrin--cache)))
-
- ;; Oldest entry (location-0) should be removed
- (should-not (gethash "location-0" wttrin--cache))))
-
-;;; Tests for Mode-Line Startup Delay (after refactoring)
-
-(ert-deftest test-wttrin-mode-line-startup-delay-exists ()
- "Test that wttrin-mode-line-startup-delay defcustom exists after refactoring."
- ;; This test will fail initially, then pass after refactoring
- (should (boundp 'wttrin-mode-line-startup-delay)))
-
-(ert-deftest test-wttrin-mode-line-startup-delay-is-number ()
- "Test that startup delay is a number."
- (should (numberp wttrin-mode-line-startup-delay)))
-
-(ert-deftest test-wttrin-mode-line-startup-delay-reasonable-range ()
- "Test that startup delay default value is in reasonable range (1-10 seconds)."
- ;; Check the defcustom's standard value, not current runtime value
- ;; (other tests may set it to 0 for faster testing)
- (let ((default-value (eval (car (get 'wttrin-mode-line-startup-delay 'standard-value)))))
- (should (>= default-value 1))
- (should (<= default-value 10))))
-
-(provide 'test-wttrin--cleanup-cache-constants)
-;;; test-wttrin--cleanup-cache-constants.el ends here