From 11ebbefb55127eee884a9080ece4aa201ad579c1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Thu, 23 Feb 2023 03:22:04 +0100 Subject: Change child/parent interface for vcomponent. --- tests/test/add-and-save.scm | 2 +- tests/test/vcomponent.scm | 32 ++++++++++++++++++++++++++++---- 2 files changed, 29 insertions(+), 5 deletions(-) (limited to 'tests/test') diff --git a/tests/test/add-and-save.scm b/tests/test/add-and-save.scm index 70b8cce2..fb3277bb 100644 --- a/tests/test/add-and-save.scm +++ b/tests/test/add-and-save.scm @@ -112,7 +112,7 @@ (test-equal "Correct amount of children in calendar" - 2 (length (children calendar))) + 5 (length (children calendar))) (define get-events (@@ (vcomponent util instance methods) get-events)) diff --git a/tests/test/vcomponent.scm b/tests/test/vcomponent.scm index 52e1b6bb..a6989776 100644 --- a/tests/test/vcomponent.scm +++ b/tests/test/vcomponent.scm @@ -3,11 +3,13 @@ ;;; 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))) + :select (prop make-vcomponent reparent! abandon! + copy-vcomponent + type parent children))) (define ev (let ((ev (make-vcomponent 'DUMMY))) @@ -22,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)) + ))) -- cgit v1.2.3