diff options
Diffstat (limited to 'tests/test/vcomponent.scm')
-rw-r--r-- | tests/test/vcomponent.scm | 40 |
1 files changed, 31 insertions, 9 deletions
diff --git a/tests/test/vcomponent.scm b/tests/test/vcomponent.scm index 68715462..a6989776 100644 --- a/tests/test/vcomponent.scm +++ b/tests/test/vcomponent.scm @@ -3,18 +3,18 @@ ;;; Code: (define-module (test vcomponent) + :use-module (srfi srfi-17) :use-module (srfi srfi-64) :use-module (srfi srfi-88) :use-module ((vcomponent base) - :select (prop make-vcomponent add-child! remove-child! - children)) - :use-module ((vcomponent formats ical parse) - :select (parse-calendar))) + :select (prop make-vcomponent reparent! abandon! + copy-vcomponent + type parent children))) (define ev - (call-with-input-string - "BEGIN:DUMMY\nX-KEY:value\nEND:DUMMY" - parse-calendar)) + (let ((ev (make-vcomponent 'DUMMY))) + (set! (prop ev 'X-KEY) "value") + ev)) (test-assert (eq? #f (prop ev 'MISSING))) @@ -24,7 +24,29 @@ (define calendar (make-vcomponent 'VCALENDAR)) -(add-child! calendar ev) +(reparent! calendar ev) (test-equal 1 (length (children calendar))) -(remove-child! calendar ev) +(abandon! calendar ev) (test-equal 0 (length (children calendar))) + + +(test-group "Copy VComponent" + (let ((ev1 (make-vcomponent 'A)) + (ev2 (make-vcomponent 'B)) + (ev3 (make-vcomponent 'C))) + (set! (prop ev3 'TEST) (list 1 2 3)) + (reparent! ev1 ev2) + (reparent! ev2 ev3) + (let* ((ev2* (copy-vcomponent ev2)) + (ev3* (car (children ev2*)))) + ;; NOTE replace this with `vcomponent=?' if that gets written + (test-group "New object is equivalent to old one" + (test-equal (type ev2) (type ev2*)) + (test-equal (length (children ev2)) (length (children ev2*)))) + (test-eq ev1 (parent ev2)) + + (set! (car (prop ev3* 'TEST)) 10) + (test-equal "Property values aren't deep copied" + '(10 2 3) (prop ev3 'TEST)) + (test-equal '(10 2 3) (prop ev3* 'TEST)) + ))) |