2d/2d-test/tests/lexer-stress-test.rkt
2015-09-07 18:06:30 -05:00

78 lines
2.4 KiB
Racket

#lang racket/gui
(require framework/private/color-local-member-name
syntax-color/racket-lexer
2d/lexer
framework)
(define f (new frame% [label ""] [width 400] [height 600]))
(define t (new (class racket:text%
(define/override (tokenizing-give-up-early)
(when (zero? (random 2))
(do-something))
#t)
(super-new))))
(define ec (new editor-canvas% [parent f] [editor t]))
(define count 0)
(define (do-something)
(queue-callback (λ ()
(set! count (+ count 1))
(cond
[(< count 100)
(cond
[(send t find-string "-" 'forward 0)
=>
(λ (x)
(send t delete x (+ x 1)))]
[else
;; these two numbers are dependent
;; on the string constant below
(define n (+ 36 (random 448)))
(define howmany (+ 1 (random 2)))
(for ([x (in-range howmany)])
(send t insert "-" n n))])]
[else
(send tmr stop)
(send f show #f)]))))
(define tmr (new timer% [notify-callback do-something] [interval 100]))
(send f show #t)
(send t insert
#<<---
#lang 2d racket/base
#2dx
╔═══╦═══╦═══╦═══╗
║ 1 ║ 2 ║ 3 ║ 4 ║
╠═══╬═══╩═══╩═══╣
║ 5 ║("abcdef") ║
╠═══╣(|zz zzz|) ║
║ 6 ║(31415926) ║
╠═══╬═══╦═══╦═══╣
║ 7 ║ 8 ║ 9 ║ 0 ║
╠═══╬═══╬═══╬═══╣
║ A ║ B ║ C ║ D ║
╠═══╬═══╩═══╩═══╣
║ E ║("ghijkl") ║
╠═══╣(|xx xxx|) ║
║ F ║(27182818) ║
╠═══╬═══╦═══╦═══╣
║ G ║ H ║ I ║ J ║
╠═══╬═══╬═══╬═══╣
║ K ║ L ║ M ║ N ║
╠═══╬═══╩═══╩═══╣
║ O ║("mnopqs") ║
╠═══╣(|yy yyy|) ║
║ P ║(whatever) ║
╠═══╬═══╦═══╦═══╣
║ Q ║ R ║ S ║ T ║
╚═══╩═══╩═══╩═══╝
---
)