#lang racket/base ;; Tests for mapping.rkt. ;; ;;; Copyright 2010, 2011, 2012, 2013 Tony Garnock-Jones ;;; ;;; This file is part of marketplace-dns. ;;; ;;; marketplace-dns 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. ;;; ;;; marketplace-dns 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 marketplace-dns. If not, see ;;; . (require "mapping.rkt") (require rackunit) (define-mapping a->b b->a (a b)) (check-equal? (a->b 'a) 'b) (check-equal? (b->a 'b) 'a) (check-exn exn:fail:contract? (lambda () (a->b 123))) (check-exn exn:fail:contract? (lambda () (a->b 'b))) (check-exn exn:fail:contract? (lambda () (b->a 123))) (check-exn exn:fail:contract? (lambda () (b->a 'a))) (define-mapping c->d d->c #:forward-default (lambda (x) 'default-d) #:backward-default (lambda (x) 'default-c) (c 123) (e 234)) (check-equal? (c->d 'c) 123) (check-equal? (d->c 234) 'e) (check-equal? (c->d 'other) 'default-d) (check-equal? (d->c '235) 'default-c)