;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014, 2015, 2016 Ludovic Courtès ;;; Copyright © 2014 Eric Bavier ;;; ;;; 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-combinators) #:use-module (guix combinators) #:use-module (srfi srfi-1) #:use-module (srfi srfi-64) #:use-module (ice-9 vlist)) (test-begin "combinators") (test-equal "fold2, 1 list" (list (reverse (iota 5)) (map - (reverse (iota 5)))) (call-with-values (lambda () (fold2 (lambda (i r1 r2) (values (cons i r1) (cons (- i) r2))) '() '() (iota 5))) list)) (test-equal "fold2, 2 lists" (list (reverse '((a . 0) (b . 1) (c . 2) (d . 3))) (reverse '((a . 0) (b . -1) (c . -2) (d . -3)))) (call-with-values (lambda () (fold2 (lambda (k v r1 r2) (values (alist-cons k v r1) (alist-cons k (- v) r2))) '() '() '(a b c d) '(0 1 2 3))) list)) (let* ((tree (alist->vhash '((0 2 3) (1 3 4) (2) (3 5 6) (4 6) (5) (6)) hashq)) (add-one (lambda (_ r) (1+ r))) (tree-lookup (lambda (n) (cdr (vhash-assq n tree))))) (test-equal "fold-tree, single root" 5 (fold-tree add-one 0 tree-lookup '(0))) (test-equal "fold-tree, two roots" 7 (fold-tree add-one 0 tree-lookup '(0 1))) (test-equal "fold-tree, sum" 16 (fold-tree + 0 tree-lookup '(0))) (test-equal "fold-tree, internal" 18 (fold-tree + 0 tree-lookup '(3 4))) (test-equal "fold-tree, cons" '(1 3 4 5 6) (sort (fold-tree cons '() tree-lookup '(1)) <)) (test-equal "fold-tree, overlapping paths" '(1 3 4 5 6) (sort (fold-tree cons '() tree-lookup '(1 4)) <)) (test-equal "fold-tree, cons, two roots" '(0 2 3 4 5 6) (sort (fold-tree cons '() tree-lookup '(0 4)) <)) (test-equal "fold-tree-leaves, single root" 2 (fold-tree-leaves add-one 0 tree-lookup '(1))) (test-equal "fold-tree-leaves, single root, sum" 11 (fold-tree-leaves + 0 tree-lookup '(1))) (test-equal "fold-tree-leaves, two roots" 3 (fold-tree-leaves add-one 0 tree-lookup '(0 1))) (test-equal "fold-tree-leaves, two roots, sum" 13 (fold-tree-leaves + 0 tree-lookup '(0 1)))) (test-end) ay easily clash with user values for boolean fields, is confusing (i.e. its meaning is *not* boolean false, but unspecified) and it also passes silently through the symbol? predicate of a field of type symbol. * gnu/services/configuration.scm (configuration-missing-default-value): Renamed from configuration-no-default-value. (define-maybe-helper): Use *unspecified* instead of 'disabled, and make the default value optional. * gnu/home/services/desktop.scm (home-redshift-configuration): Change (maybe-xyz 'disabled) to maybe-xyz. * gnu/services/authentication.scm (nslcd-configuration): Likewise. * gnu/services/cgit.scm (repository-cgit-configuration): Likewise. * gnu/services/file-sharing.scm (serialize-maybe-string) (serialize-maybe-file-object): Use 'unspecified?' instead of (eq? val 'disabled). * gnu/services/messaging.scm (raw-content?): Likewise. (ssl-configuration): Change (maybe-xyz 'disabled) to maybe-xyz. (prosody-configuration): Likewise. * gnu/services/file-sharing.scm (transmission-daemon-configuration): Likewise. * gnu/services/messaging.scm (define-all-configurations): Use *unspecified* instead of 'disabled'. * gnu/services/networking.scm (opendht-configuration): Likewise. * gnu/services/pm.scm (tlp-configuration): Likewise. * gnu/services/telephony.scm (jami-account): Likewise. (jami-configuration): Likewise. * gnu/services/vpn.scm (openvpn-client-configuration): Likewise. * tests/services/configuration.scm ("maybe type, no default") ("maybe type, with default"): New tests. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Attila Lendvai 2022-03-20services: thermald: Add 'adaptive?' field....* gnu/services/pm.scm (<thermald-configuration>): Add 'adaptive?' field. (thermald-shepherd-service): Use it to pass --adaptive to thermald. * doc/guix.texi (Power Management Services): Document the 'adaptive?' field of 'thermald-configuration'. Jelle Licht 2022-02-02services: tlp: Add config variables for battery charging....* gnu/services/pm.scm (tlp-configuration): Add start-charge-thresh-bat0, stop-charge-thresh-bat0, start-charge-thresh-bat1, stop-charge-thresh-bat1. * doc/guix.texi (Power Management Services): Document them. Signed-off-by: Ricardo Wurmus <rekado@elephly.net> Attila Lendvai 2021-11-30services: Accept <inferior-package>s in lieu of <package>s....* gnu/services/authentication.scm (fprintd-configuration) (nslcd-configuration): Substitute file-like objects for package ones. * gnu/services/cgit.scm (cgit-configuration, opaque-cgit-configuration): Likewise. * gnu/services/cups.scm (package-list?, cups-configuration): Likewise. * gnu/services/dns.scm (verify-knot-configuration) (ddclient-configuration): Likewise. * gnu/services/docker.scm (docker-configuration): Likewise. * gnu/services/file-sharing.scm (transmission-daemon-configuration): Likewise. * gnu/services/getmail.scm (getmail-configuration): Likewise. * gnu/services/mail.scm (dovecot-configuration) (opaque-dovecot-configuration): Likewise. * gnu/services/messaging.scm (prosody-configuration) (opaque-prosody-configuration): Likewise. * gnu/services/monitoring.scm (zabbix-server-configuration) (zabbix-agent-configuration): Likewise. * gnu/services/networking.scm (opendht-configuration): Likewise. * gnu/services/pm.scm (tlp-configuration): Likewise. * gnu/services/telephony.scm (jami-configuration): Likewise. * gnu/services/virtualization.scm (libvirt-configuration) (qemu-guest-agent-configuration): Likewise. * gnu/services/vpn.scm (openvpn-client-configuration): Likewise. Tobias Geerinckx-Rice