;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2015, 2020 Ludovic Courtès ;;; ;;; This file is part of GNU Guix. ;;; ;;; GNU Guix is free software; you can redistribute it and/or modify it ;;; under the terms of the GNU General Public License as published by ;;; the Free Software Foundation; either version 3 of the License, or (at ;;; your option) any later version. ;;; ;;; GNU Guix is distributed in the hope that it will be useful, but ;;; WITHOUT ANY WARRANTY; without even the implied warranty of ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;;; GNU General Public License for more details. ;;; ;;; You should have received a copy of the GNU General Public License ;;; along with GNU Guix. If not, see . (define-module (test-base32) #:use-module (gcrypt hash) #:use-module (guix base32) #:use-module (guix utils) #:use-module (srfi srfi-1) #:use-module (srfi srfi-34) #:use-module (srfi srfi-64) #:use-module (ice-9 match) #:use-module (rnrs bytevectors) #:use-module (rnrs io ports)) ;; Test the (guix base32) module. (test-begin "base32") (test-assert "bytevector->base32-string" (fold (lambda (bv expected result) (and result (string=? (bytevector->base32-string bv) expected))) #t ;; Examples from RFC 4648. (map string->utf8 '("" "f" "fo" "foo" "foob" "fooba" "foobar")) '("" "my" "mzxq" "mzxw6" "mzxw6yq" "mzxw6ytb" "mzxw6ytboi"))) (test-assert "base32-string->bytevector" (every (lambda (bv) (equal? (base32-string->bytevector (bytevector->base32-string bv)) bv)) ;; Examples from RFC 4648. (map string->utf8 '("" "f" "fo" "foo" "foob" "fooba" "foobar")))) (test-assert "nix-base32-string->bytevector" (every (lambda (bv) (equal? (nix-base32-string->bytevector (bytevector->nix-base32-string bv)) bv)) ;; Examples from RFC 4648. (map string->utf8 '("" "f" "fo" "foo" "foob" "fooba" "foobar")))) (test-equal "&invalid-base32-character" #\e (guard (c ((invalid-base32-character? c) (invalid-base32-character-value c))) (nix-base32-string->bytevector (string-append (make-string 51 #\a) "e")))) (test-end) d84d7bf6052c0c80bd212d4524876576e9817d4'>build: Require Guile >= 2.0.13....Ludovic Courtès 2018-01-06build: Detect broken 'equal?' in Guile 2.2.1....Ludovic Courtès 2017-06-30build: Remove check for broken (srfi srfi-37)....Ludovic Courtès 2017-02-20gnu: Add bootstrap-binaries for 'aarch64-linux'....Efraim Flashner 2016-11-25offload: Use Guile-SSH instead of GNU lsh....Ludovic Courtès 2016-08-10build: Correctly determine the system type for GNU/Hurd systems....Manolis Ragkousis 2016-07-20Merge branch 'master' into core-updatesLudovic Courtès 2016-07-19Add (guix zlib)....Ludovic Courtès 2016-06-23build: Remove unneeded conditionals for (guix build syscalls)....Manolis Ragkousis 2016-03-19build: Protect against misconfiguration of localstatedir....Ludovic Courtès 2016-01-13build: Use 127 as the Linux hash-bang limit....Ludovic Courtès 2016-01-12build: 'make check' errors out if file name limits would be hit....Ludovic Courtès 2016-01-12build: Warn against long hash bang lines for tests....Ludovic Courtès 2015-12-01build: Fix detection of ARM systems....Ludovic Courtès 2015-11-25build: Reject ARMv6 systems....Ludovic Courtès 2015-10-09build: Fix libgcrypt detection on FHS systems....Ludovic Courtès 2015-10-06build: Automatically determine libgcrypt's file name....Ludovic Courtès 2015-08-27build: Do not build (guix build syscalls) if 'mount' is missing from libc....Ludovic Courtès 2015-05-19build: Make sure $CXX supports C++11....Ludovic Courtès