1#lang racket/base
2(require "../host/bootstrap.rkt"
3         "main.rkt")
4
5(define-syntax-rule (test expect rhs)
6  (let ([e expect]
7        [v rhs])
8    (unless (equal? e v)
9      (error 'failed "~s: ~e" 'rhs v))))
10
11(define root-logger (make-logger))
12
13(test 'none (log-max-level root-logger))
14(add-stderr-log-receiver! root-logger 'warning)
15
16(test 'warning (log-max-level root-logger))
17
18(log-message root-logger 'error "this should print to stderr" 5)
19
20(define demo1-logger (make-logger 'demo1 root-logger))
21(define demo2-logger (make-logger 'demo2 root-logger 'fatal))
22
23(log-message demo1-logger 'error "this should print to stderr, too" 5)
24(log-message demo2-logger 'error "this should not print to stderr" 5)
25
26(test 'warning (log-max-level demo1-logger))
27(test 'fatal (log-max-level demo2-logger))
28
29(define lr1 (make-log-receiver root-logger 'info 'cats))
30
31(test 'info (log-max-level demo1-logger))
32(test 'fatal (log-max-level demo2-logger))
33
34(test 'info (log-max-level demo1-logger 'cats))
35(test 'fatal (log-max-level demo2-logger 'cats))
36
37(test 'warning (log-max-level demo1-logger 'dogs))
38(test 'fatal (log-max-level demo2-logger 'dogs))
39
40(test #t (log-level? demo1-logger 'info 'cats))
41(test #f (log-level? demo1-logger 'debug 'cats))
42(test #f (log-level? demo1-logger 'info 'dogs))
43
44(define msg1 #f)
45(define th1 (thread (lambda () (set! msg1 (sync lr1)))))
46(sync (system-idle-evt))
47(test #f msg1)
48
49(log-message demo1-logger 'info 'cats "hello" 7)
50(sync (system-idle-evt))
51(test '#(info "cats: hello" 7 cats) msg1)
52
53(log-message demo1-logger 'info 'cats "goodbye" 9)
54(test '#(info "cats: goodbye" 9 cats) (sync lr1))
55