added tests for David's port pull request
This commit is contained in:
parent
333e0aa070
commit
d727355d9c
35
pkgs/htdp-pkgs/htdp-test/2htdp/tests/two-ports.rkt
Normal file
35
pkgs/htdp-pkgs/htdp-test/2htdp/tests/two-ports.rkt
Normal file
|
@ -0,0 +1,35 @@
|
|||
#lang racket
|
||||
|
||||
(require 2htdp/universe 2htdp/image)
|
||||
|
||||
;; Run two client-server pairs
|
||||
(define (run)
|
||||
(launch-many-worlds
|
||||
(server 8081) (client 'a 8081 'blue) (client 'b 8081 'blue)
|
||||
(server 8082) (client 'c 8082 'green) (client 'd 8082 'green)))
|
||||
|
||||
;; Port -> #f
|
||||
(define (server p)
|
||||
(define (noop s msg) (make-bundle s (map (λ (s) (make-mail s msg)) s) '()))
|
||||
(universe '()
|
||||
(port p)
|
||||
(on-tick (λ (u) (make-bundle u '() '())) 1 5)
|
||||
(on-new (λ (u iw) (make-bundle (cons iw u) '() '())))
|
||||
(on-msg (λ (u _iw msg) (noop u msg)))))
|
||||
|
||||
;; Symbol Port ColorSymbol -> #f
|
||||
(define (client name p c)
|
||||
(define mt (place-image (text (symbol->string name) 22 'blue) 100 100 (empty-scene 400 400)))
|
||||
(big-bang (list #f 0)
|
||||
(port p)
|
||||
(on-tick
|
||||
(λ (s) (if (first s)
|
||||
(make-package (list #f (add1 (second s))) (second s))
|
||||
(list #t (second s))))
|
||||
1)
|
||||
(on-receive
|
||||
(λ (s msg) (displayln msg) (list (first s) (+ (second s) msg))))
|
||||
(to-draw
|
||||
(λ (s) (if (first s) (place-image (circle (second s) 'solid c) 200 200 mt) mt)))
|
||||
(register LOCALHOST)))
|
||||
(run)
|
|
@ -53,3 +53,4 @@ run pad1.rkt
|
|||
run pad1-handler.rkt
|
||||
run pad1-in-bsl.rkt
|
||||
run error-messages.rkt
|
||||
run two-ports.rkt
|
||||
|
|
Loading…
Reference in New Issue
Block a user