aboutsummaryrefslogtreecommitdiff
path: root/tests/test/base64.scm
blob: b24d2e8b8f479f260726b31d966390af9f3582bf (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
;;; Commentary:
;; Test that Base64 encoding and decoding works
;; Examples from RFC4648
;;; Code:

(define-module (test base64)
  :use-module (srfi srfi-64)
  :use-module (srfi srfi-64 test-error)
  :use-module (srfi srfi-88)
  :use-module (base64))

(test-group "Tests from RFC 4648"
  (test-group "Decoding tests"
    (test-equal "" (base64encode ""))
    (test-equal "Zg==" (base64encode "f"))
    (test-equal "Zm8=" (base64encode "fo"))
    (test-equal "Zm9v" (base64encode "foo"))
    (test-equal "Zm9vYg==" (base64encode "foob"))
    (test-equal "Zm9vYmE=" (base64encode "fooba"))
    (test-equal "Zm9vYmFy" (base64encode "foobar")))
  (test-group "Encoding tests"
    (test-equal "" (base64decode ""))
    (test-equal "f" (base64decode "Zg=="))
    (test-equal "fo" (base64decode "Zm8="))
    (test-equal "foo" (base64decode "Zm9v"))
    (test-equal "foob" (base64decode "Zm9vYg=="))
    (test-equal "fooba" (base64decode "Zm9vYmE="))
    (test-equal "foobar" (base64decode "Zm9vYmFy"))))


;; Other tests

(test-error "Invalid base64"
  'decoding-error
  (base64decode "@@@@"))

(test-error "To short base64"
  'decoding-error
  (base64decode "="))

(test-equal "AAECAw==" (bytevector->base64-string #vu8(0 1 2 3)))

(test-equal #vu8(0 1 2 3) (base64-string->bytevector "AAECAw=="))