]> gitweb.factorcode.org Git - factor.git/blob - basis/compiler/cfg/loop-detection/loop-detection-tests.factor
factor: rename [ ] [ ] unit-test -> { } [ ] unit-test using a refactoring tool!
[factor.git] / basis / compiler / cfg / loop-detection / loop-detection-tests.factor
1 USING: accessors compiler.cfg compiler.cfg.loop-detection
2 compiler.cfg.loop-detection.private compiler.cfg.debugger
3 compiler.cfg.predecessors compiler.cfg.utilities tools.test dlists kernel
4 namespaces sequences ;
5 IN: compiler.cfg.loop-detection.tests
6 QUALIFIED: sets
7
8 { V{ 0 } { 1 } } [
9     V{ } 0 insns>block V{ } 1 insns>block [ connect-bbs ] keep
10     f f <natural-loop> [ process-loop-block ] keep
11     blocks>> sets:members
12     [ [ number>> ] map ] bi@
13 ] unit-test
14
15 ! process-loop-ends
16 { } [
17     f f <natural-loop> process-loop-ends
18 ] unit-test
19
20
21 V{ } 0 test-bb
22 V{ } 1 test-bb
23 V{ } 2 test-bb
24
25 0 { 1 2 } edges
26 2 0 edge
27
28 : test-loop-detection ( -- )
29     0 get block>cfg needs-loops ;
30
31 { } [ test-loop-detection ] unit-test
32
33 { 1 } [ 0 get loop-nesting-at ] unit-test
34 { 0 } [ 1 get loop-nesting-at ] unit-test
35 { 1 } [ 2 get loop-nesting-at ] unit-test