aboutsummaryrefslogtreecommitdiff
path: root/tests/unit/vcomponent/vcomponent.scm
diff options
context:
space:
mode:
Diffstat (limited to 'tests/unit/vcomponent/vcomponent.scm')
-rw-r--r--tests/unit/vcomponent/vcomponent.scm105
1 files changed, 105 insertions, 0 deletions
diff --git a/tests/unit/vcomponent/vcomponent.scm b/tests/unit/vcomponent/vcomponent.scm
new file mode 100644
index 00000000..ebd0b1ff
--- /dev/null
+++ b/tests/unit/vcomponent/vcomponent.scm
@@ -0,0 +1,105 @@
+;;; Commentary:
+;; Test base functionallity of vcomponent structures.
+;;; Code:
+
+(define-module (test vcomponent)
+ :use-module (srfi srfi-17)
+ :use-module (srfi srfi-64)
+ :use-module (srfi srfi-88)
+ :use-module (hnh util table)
+ :use-module (datetime)
+ :use-module (vcomponent base))
+
+
+
+
+(define ev
+ (prop (vcomponent type: 'DUMMY)
+ 'X-KEY "value"))
+
+(test-eqv "Non-existant properties return #f"
+ #f (prop ev 'MISSING))
+
+(test-assert "Existing property is non-false"
+ (prop ev 'X-KEY))
+
+(test-equal "Getting value of existing property"
+ "value" (prop ev 'X-KEY))
+
+(define calendar (add-child (vcomponent type: 'VCALENDAR)
+ ev))
+
+(test-equal 1 (length (children calendar)))
+
+;;; TODO remove child
+;; (abandon! calendar ev)
+;; (test-equal 0 (length (children calendar)))
+
+
+
+(define vline*
+ (vline
+ key: 'DTSTART
+ vline-value: (date year: 2020 month: 01 day: 02)
+ vline-parameters: (alist->table
+ '((VALUE . "DATE")))
+ vline-source: "DTSTART;VALUE=DATE:2020-01-02"))
+
+(test-group "vline"
+ (test-assert "Type check works as expected"
+ (vline? vline*)))
+
+(define vcomponent*
+ (vcomponent type: 'VEVENT))
+
+(test-assert "Type check works as expected"
+ (vcomponent? vcomponent*))
+
+(define child
+ (vcomponent type: 'CHILD))
+
+
+(test-eqv
+ "An added component extends length"
+ 1 (length (children (add-child vcomponent* child))))
+
+(test-eqv
+ "But the source isn't modified"
+ 0 (length (children vcomponent*)))
+
+(test-equal "Setting property"
+ (list (list 'KEY (vline key: 'KEY vline-value: "Value")))
+ (properties
+ (prop vcomponent* 'KEY "Value")))
+
+(let ((vl (vline key: 'KEY vline-value: "Value")))
+ (test-equal "Setting property vline"
+ (list (list 'KEY vl))
+ (properties
+ (prop* vcomponent* 'KEY vl))))
+
+(test-equal "Set properties test"
+ '(K1 K2)
+ (map car
+ (properties
+ (apply set-properties
+ vcomponent*
+ `((K1 . "V1")
+ (K2 . "V2"))))))
+
+;; remove-property
+
+;; extract extract*
+
+
+;; remove-parameter
+;; value
+;; param
+
+;; parameters
+;; properties
+
+;; x-property?
+;; internal-field?
+
+'((vcomponent base))