From c4d9f14e411c2c6ec259667ac05d873986802073 Mon Sep 17 00:00:00 2001 From: David Thompson Date: Sat, 12 Nov 2022 18:23:56 -0500 Subject: scene: Add current-scene parameter and some tests. --- tests/scene.scm | 87 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 tests/scene.scm (limited to 'tests/scene.scm') diff --git a/tests/scene.scm b/tests/scene.scm new file mode 100644 index 0000000..533c738 --- /dev/null +++ b/tests/scene.scm @@ -0,0 +1,87 @@ +(define-module (tests scene) + #:use-module (catbird mode) + #:use-module (catbird node) + #:use-module (catbird scene) + #:use-module (oop goops) + #:use-module (srfi srfi-64) + #:use-module (tests utils)) + +(define-class ()) + +(with-tests "scene" + (test-group "$" + (let ((scene (make ))) + (test-eq "no arguments" + (with-scene scene + ($)) + scene)) + (let ((scene (make )) + (node (make #:name 'foo))) + (test-eq "one argument" + (with-scene scene + (attach-to scene node) + ($ foo)) + node))) + (let ((scene (make )) + (node (make #:name 'foo))) + (test-eq "add-to-scene" + (with-scene scene + (add-to-scene node) + (child-ref scene 'foo)) + node)) + (test-eq "initial major mode" + (class-of (major-mode (make ))) + ) + (test-group "replace-major-mode" + (test-eq "replacing does not add to the mode stack" + (let ((scene (make ))) + (replace-major-mode scene (make )) + (pop-major-mode scene) + (class-of (major-mode scene))) + ) + (test-assert "exits previous mode, enters new one" + (let ((scene (make )) + (entered? #f) + (exited? #f)) + (define-class ()) + (define-class ()) + (define-method (on-exit (mode )) + (set! exited? #t)) + (define-method (on-enter (mode )) + (set! entered? #t)) + (replace-major-mode scene (make )) + (replace-major-mode scene (make )) + (and entered? exited?)))) + (test-group "push-major-mode" + (test-eq "adds previous mode to the mode stack so it can be restored" + (let ((scene (make ))) + (push-major-mode scene (make )) + (pop-major-mode scene) + (class-of (major-mode scene))) + ) + (test-assert "pauses the previous mode, enters new one" + (let ((scene (make )) + (paused? #f) + (entered? #f)) + (define-class ()) + (define-class ()) + (define-method (on-pause (mode )) + (set! paused? #t)) + (define-method (on-enter (mode )) + (set! entered? #t)) + (push-major-mode scene (make )) + (push-major-mode scene (make )) + (and paused? entered?)))) + (test-group "pop-major-mode" + (test-eq "does nothing when there is no previous major mode" + (let ((scene (make ))) + (pop-major-mode scene) + (class-of (major-mode scene))) + ) + (test-assert "returns to previous major mode" + (let ((scene (make ))) + (push-major-mode scene (make )) + (and (eq? (class-of (major-mode scene)) ) + (begin + (pop-major-mode scene) + (eq? (class-of (major-mode scene)) ))))))) -- cgit v1.2.3