literate: restructure all 19 org files with per-function blocks and prose
Every function, defclass, defstruct, defgeneric, defmethod, defmacro, defvar, and defparameter in every org file now has its own #+BEGIN_SRC block with literate prose above it explaining the design reasoning. Block counts before → after: package.org: 1 → 7 container-package.org: 1 → 1 (prose expanded) dirty.org: 4 → 6 render.org: 10 → 25 theme.org: 6 → 19 box-renderable.org: 9 → 29 scrollbox.org: 8 → 26 tabbar.org: 5 → 10 backend-protocol.org: 8 → 66 modern-backend.org: 17 → 53 detection.org: 4 → 6 layout-engine.org: 9 → 36 framebuffer.org: 8 → 37 markdown-renderer.org:13 → 38 dialog.org: 17 → 23 (merged dual structure) mouse.org: 4 → 25 select.org: 12 → 30 slot.org: 4 → 12 text-input.org: 11 → 53 Total: ~153 blocks → ~502 blocks Bugs fixed during restructuring: - render.org: stray π character typo (backenπd → backend) - modern-backend.org: sgr-attr missing closing paren + #+END_SRC - detection.org: invalid #\Esc character reference - select.org: extra closing paren in select-visible-options All 13 test suites pass at 100%.
This commit is contained in:
@@ -40,8 +40,14 @@ inherit from this.
|
||||
|
||||
* Tests
|
||||
|
||||
** ~dirty-mixin-default-is-dirty~
|
||||
|
||||
This test verifies that a freshly created ~dirty-mixin~ instance starts
|
||||
with ~dirty~ set to ~t~. This is the core invariant of the dirty tracking
|
||||
system — without this, the first render pass would skip new components,
|
||||
making them invisible until something explicitly marked them dirty.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/dirty-tests.lisp
|
||||
;; Dirty tracking tests are in box-tests.lisp (same test suite)
|
||||
(in-package :cl-tty-box-test)
|
||||
(in-suite box-suite)
|
||||
|
||||
@@ -49,12 +55,37 @@ inherit from this.
|
||||
"A dirty-mixin starts as dirty"
|
||||
(let ((c (make-instance 'dirty-mixin)))
|
||||
(is-true (dirty-p c) "new component should be dirty")))
|
||||
#+END_SRC
|
||||
|
||||
** ~mark-clean-clears-dirty~
|
||||
|
||||
This test checks that calling ~mark-clean~ on a dirty component sets its
|
||||
~dirty-p~ to ~nil~. This is called after a component is rendered,
|
||||
signaling that it is up-to-date and does not need re-render until the
|
||||
next change. Without this, every component would be re-rendered every
|
||||
frame.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/dirty-tests.lisp
|
||||
(in-package :cl-tty-box-test)
|
||||
(in-suite box-suite)
|
||||
|
||||
(test mark-clean-clears-dirty
|
||||
"mark-clean sets dirty to nil"
|
||||
(let ((c (make-instance 'dirty-mixin)))
|
||||
(mark-clean c)
|
||||
(is-false (dirty-p c) "after mark-clean, should not be dirty")))
|
||||
#+END_SRC
|
||||
|
||||
** ~mark-dirty-sets-dirty~
|
||||
|
||||
This test verifies that a component that has been cleaned can be
|
||||
re-marked as dirty via ~mark-dirty~. This exercises the full lifecycle:
|
||||
new (dirty) → render (mark-clean) → state change (mark-dirty) → render
|
||||
again. It ensures the dirty flag is not a one-shot toggle.
|
||||
|
||||
#+BEGIN_SRC lisp :tangle ../src/components/dirty-tests.lisp
|
||||
(in-package :cl-tty-box-test)
|
||||
(in-suite box-suite)
|
||||
|
||||
(test mark-dirty-sets-dirty
|
||||
"mark-dirty sets dirty to t"
|
||||
|
||||
Reference in New Issue
Block a user