test.ss
#lang scheme/base
(require "tz.ss" "base.ss" srfi/19 (planet bzlib/base) (planet bzlib/date))

(define tests '(((#s(*date 1800 1 1 0 0 0 0) "America/Los_Angeles") . -28378)
                ((#s(*date 1919 10 1 0 0 0 0) "America/Los_Angeles") . -25200)
                ((#s(*date 1948 4 2 0 0 0 0) "America/Los_Angeles") . -25200)
                ((#s(*date 1949 1 2 0 0 0 0) "America/Los_Angeles") . -28800)
                ((#s(*date 1989 4 10 0 0 0 0) "America/Los_Angeles") . -25200)
                ((#s(*date 2010 3 10 0 0 0 0) "America/Los_Angeles") . -28800)
                ((#s(*date 2010 3 20 0 0 0 0) "America/Los_Angeles") . -25200)
                ((#s(*date 2040 3 10 0 0 0 0) "America/Los_Angeles") . -28800)
                ((#s(*date 2040 3 20 0 0 0 0) "America/Los_Angeles") . -25200)
                ((#s(*date 1800 1 1 0 0 0 0) "Asia/Kolkata") . 21208)
                ((#s(*date 1943 1 1 0 0 0 0) "Asia/Kolkata") . 23400)
                ((#s(*date 2043 1 1 0 0 0 0) "Asia/Kolkata") . 19800)
                ((#s(*date 1800 1 1 0 0 0 0) "Asia/Taipei") . 29160)
                ((#s(*date 2043 1 1 0 0 0 0) "Asia/Taipei") . 28800)
                ((#s(*date 1980 8 1 0 0 0 0) "Asia/Taipei") . 32400)
                ((#s(*date 1980 5 1 0 0 0 0) "Asia/Taipei") . 28800)
                ))

(define (test-tz-offset!)
  (define (helper *date tz)
    (tz-offset (*date->date *date) tz))
  (map (lambda (test)
         (assert! (apply helper (car test)) = (cdr test)))
       tests))