refactor: Migrate tests into literate Org files per LP standard
Some checks failed
Deploy-Agent-V15-Stdin / JOB-V15-STDIN (push) Failing after 3s

- Add test suites inline in harness/communication.org
- Add test suites inline in harness/perceive.org, reason.org, act.org
- Add test suites inline in harness/skills.org, memory.org, loop.org
- Tests now live alongside code, not in separate .lisp files
- Each test block has prose explaining its purpose

Test results: 84/84 pass (100%)
This commit is contained in:
2026-04-25 19:01:48 -04:00
parent 2cac7a730e
commit 97168ae512
8 changed files with 345 additions and 15 deletions

View File

@@ -153,3 +153,52 @@ Frames a message with a hex length prefix and ensures all data is serializable.
(len (length payload)))
(format nil "~6,'0x~a" len payload)))
#+end_src
* Test Suite
These tests verify the communication protocol functions. Run with:
~(fiveam:run! 'communication-protocol-suite)~
#+begin_src lisp :tangle ../library/communication-tests.lisp
(defpackage :opencortex-communication-tests
(:use :cl :fiveam :opencortex)
(:export #:communication-protocol-suite))
(in-package :opencortex-communication-tests)
(def-suite communication-protocol-suite
:description "Test suite for opencortex Communication Protocol")
(in-suite communication-protocol-suite)
(test test-framing
"Verify that messages are correctly prefixed with a 6-character hex length."
(let* ((msg '(:type :EVENT :payload (:action :handshake)))
(framed (frame-message msg))
(len-str (subseq framed 0 6))
(payload (subseq framed 6)))
(is (string= "00002C" (string-upcase len-str)))
(is (equalp msg (read-from-string payload)))))
(test test-parse-message
"Verify that incoming framed strings are parsed into Lisp plists."
(let ((framed "00002c(:type :EVENT :payload (:action :handshake))"))
(is (equal '(:type :EVENT :payload (:action :handshake))
(read-from-string (subseq framed 6))))))
(test test-hello-handshake
"Verify the structure of the HELLO handshake message."
(let ((hello (make-hello-message "0.1.0")))
(is (eq :EVENT (getf hello :type)))
(is (eq :handshake (getf (getf hello :payload) :action)))
(is (string= "0.1.0" (getf (getf hello :payload) :version)))))
(test test-find-missing-id
"Verify that the daemon can find a headline missing an ID."
(let* ((ast '(:type :org-data :contents
((:type :HEADLINE :properties (:TITLE "No ID Here") :contents nil)
(:type :HEADLINE :properties (:ID "exists" :TITLE "Has ID") :contents nil))))
(found (find-headline-missing-id ast)))
(is (not (null found)))
(is (string= "No ID Here" (getf (getf found :properties) :TITLE)))))
#+end_src