aboutsummaryrefslogtreecommitdiff
path: root/tests/vcomponent-formats-common-types.scm
blob: d9c80ff9f7a081f5abcddd623247db62a3b5baed (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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
(((vcomponent formats common types)
  get-parser)
 ((datetime) date time datetime))



(define parse-binary (get-parser 'BINARY))
;; TODO



(define parse-boolean (get-parser 'BOOLEAN))

(test-equal #t (parse-boolean #f "TRUE"))
(test-equal #f (parse-boolean #f "FALSE"))

(test-error 'warning (parse-boolean #f "ANYTHING ELSE"))



(define parse-cal-address (get-parser 'CAL-ADDRESS))

(test-equal "Test uri is passthrough" 74 (parse-cal-address #f 74))



(define parse-date (get-parser 'DATE))

(test-equal #2021-12-02 (parse-date #f "20211202"))
;; TODO negative test here



(define parse-datetime (get-parser 'DATE-TIME))

(test-equal #2021-12-02T10:20:30
  (parse-datetime (make-hash-table) "20211202T102030"))

;; TODO tests with timezones here
;; TODO test -X-HNH-ORIGINAL here

;; TODO negative test here



(define parse-duration (get-parser 'DURATION))

;; assume someone else tests this one
;; (test-eq (@ (vcomponent duration) parse-duration)
;;   parse-duration)



(define parse-float (get-parser 'FLOAT))

(test-equal 1.0 (parse-float #f "1.0"))
(test-equal 1 (parse-float #f "1"))
(test-equal 1/2 (parse-float #f "1/2"))

;; TODO negative test here?



(define parse-integer (get-parser 'INTEGER))

(test-equal "parse integer" 123456 (parse-integer #f "123456"))
(test-equal "parse bigint" 123451234512345123456666123456
            (parse-integer #f "123451234512345123456666123456"))

;; TODO is this expected behaivour?
(test-error 'warning (parse-integer #f "failure"))

(test-error
 "Non-integers aren't integers"
 'warning (parse-integer #f "1.1"))

(test-equal "But exact floats are"
  1.0 (parse-integer #f "1.0"))



(define parse-period (get-parser 'PERIOD))

;; TODO



(define parse-recur (get-parser 'RECUR))

;; (test-eq (@ (vcomponent recurrence parse) parse-recurrence-rule))



(define parse-text (get-parser 'TEXT))

;; TODO



(define parse-time (get-parser 'TIME))

(test-equal #10:20:30 (parse-time #f "102030"))
;; TODO negative test here



(define parse-uri (get-parser 'URI))

(test-equal "Test uri is passthrough" 74 (parse-uri #f 74))



(define parse-utc-offset (get-parser 'UTC-OFFSET))

;; TODO