blob: a69897766d0ea337b6759d44b66da595cd6b58d6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
|
;;; Commentary:
;; Test that vcomponent parsing works at all.
;;; 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 reparent! abandon!
copy-vcomponent
type parent children)))
(define ev
(let ((ev (make-vcomponent 'DUMMY)))
(set! (prop ev 'X-KEY) "value")
ev))
(test-assert (eq? #f (prop ev 'MISSING)))
(test-assert (prop ev 'X-KEY))
(test-equal "value" (prop ev 'X-KEY))
(define calendar (make-vcomponent 'VCALENDAR))
(reparent! calendar ev)
(test-equal 1 (length (children calendar)))
(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))
)))
|