1(include "#.scm")
2
3(define tg (make-thread-group))
4
5(define t1 (make-thread (lambda () 111)))
6
7(define t2 (make-thread (lambda () 222)
8                        't2))
9
10(define t3 (make-thread (lambda () 333)
11                        't3
12                        tg))
13
14(define t4 (make-root-thread (lambda () 444)))
15
16(define t5 (make-root-thread (lambda () 555)
17                             't5))
18
19(define t6 (make-root-thread (lambda () 666)
20                             't6
21                             tg))
22
23(define t7 (make-root-thread (lambda () 777)
24                             't7
25                             tg
26                             (current-input-port)))
27
28(define t8 (make-root-thread (lambda () 888)
29                             't8
30                             tg
31                             (current-input-port)
32                             (current-output-port)))
33
34(define-type-of-thread mythread)
35
36(define t10 (make-mythread)) ;; create some uninitialized threads
37(define t11 (make-mythread))
38(define t12 (make-mythread))
39(define t13 (make-mythread))
40
41(check-equal? (thread-name t1) (void))
42(check-equal? (thread-name t2) 't2)
43(check-equal? (thread-name t3) 't3)
44(check-equal? (thread-name t4) (void))
45(check-equal? (thread-name t5) 't5)
46(check-equal? (thread-name t6) 't6)
47(check-equal? (thread-name t7) 't7)
48(check-equal? (thread-name t8) 't8)
49
50(check-tail-exn uninitialized-thread-exception? (lambda () (thread-name t10)))
51(check-tail-exn uninitialized-thread-exception? (lambda () (thread-name t11)))
52(check-tail-exn uninitialized-thread-exception? (lambda () (thread-name t12)))
53(check-tail-exn uninitialized-thread-exception? (lambda () (thread-name t13)))
54
55(check-eq? (thread-init! t10
56                         (lambda () 101010))
57           t10)
58
59(check-eq? (thread-init! t11
60                         (lambda () 111111)
61                         't11)
62           t11)
63
64(check-eq? (thread-init! t12
65                         (lambda () 121212)
66                         't12
67                         tg)
68           t12)
69
70(check-equal? (thread-name t10) (void))
71(check-equal? (thread-name t11) 't11)
72(check-equal? (thread-name t12) 't12)
73
74(check-tail-exn uninitialized-thread-exception? (lambda () (thread-name t13)))
75
76(check-equal? (thread-join! (thread-start! t1)) 111)
77(check-equal? (thread-join! (thread-start! t2)) 222)
78(check-equal? (thread-join! (thread-start! t3)) 333)
79(check-equal? (thread-join! (thread-start! t4)) 444)
80(check-equal? (thread-join! (thread-start! t5)) 555)
81(check-equal? (thread-join! (thread-start! t6)) 666)
82(check-equal? (thread-join! (thread-start! t7)) 777)
83(check-equal? (thread-join! (thread-start! t8)) 888)
84(check-equal? (thread-join! (thread-start! t10)) 101010)
85(check-equal? (thread-join! (thread-start! t11)) 111111)
86(check-equal? (thread-join! (thread-start! t12)) 121212)
87
88(check-equal? (thread-name t1) (void))
89(check-equal? (thread-name t2) 't2)
90(check-equal? (thread-name t3) 't3)
91(check-equal? (thread-name t4) (void))
92(check-equal? (thread-name t5) 't5)
93(check-equal? (thread-name t6) 't6)
94(check-equal? (thread-name t7) 't7)
95(check-equal? (thread-name t8) 't8)
96(check-equal? (thread-name t10) (void))
97(check-equal? (thread-name t11) 't11)
98(check-equal? (thread-name t12) 't12)
99
100(check-tail-exn uninitialized-thread-exception? (lambda () (thread-name t13)))
101
102(check-tail-exn type-exception? (lambda () (thread-name #f)))
103
104(check-tail-exn wrong-number-of-arguments-exception? (lambda () (thread-name)))
105(check-tail-exn wrong-number-of-arguments-exception? (lambda () (thread-name t1 #f)))
106