Tests for the ScriptParser.parse() methods in the ScriptParser module.

4:U2 WR MD2 WR- U- WR MD2 WR- U-

0..30 sequence{ 0..2 move{ 1:8:2 } 3..5 move{ 0:6:1 } 6..9 move{ 1:2:-2 } 10..13 inversion{ 10..12 move{ 0:6:1 } } 14..16 inversion{ 14..15 move{ 1:8:1 } } 17..19 move{ 0:6:1 } 20..23 move{ 1:2:-2 } 24..27 inversion{ 24..26 move{ 0:6:1 } } 28..30 inversion{ 28..29 move{ 1:8:1 } } }

4:MB

0..2 sequence{ 0..2 move{ 2:2:-1 } }

4:(MB2 MR2)2 U- (MB2 MR2)2 U

0..26 sequence{ 0..10 repetition{ 2, 0..9 grouping{ 1..4 move{ 2:2:-2 } 5..8 move{ 0:4:2 } } } 11..13 inversion{ 11..12 move{ 1:8:1 } } 14..24 repetition{ 2, 14..23 grouping{ 15..18 move{ 2:2:-2 } 19..22 move{ 0:4:2 } } } 25..26 move{ 1:8:1 } }

3:

0..0 sequence{ }

3:

0..0 sequence{ }

3:  

0..0 sequence{ }

3:.

0..1 sequence{ 0..1 nop{ } }

3:R

0..1 sequence{ 0..1 move{ 0:4:1 } }

3:U

0..1 sequence{ 0..1 move{ 1:4:1 } }

3:F

0..1 sequence{ 0..1 move{ 2:4:1 } }

3:L

0..1 sequence{ 0..1 move{ 0:1:-1 } }

3:D

0..1 sequence{ 0..1 move{ 1:1:-1 } }

3:B

0..1 sequence{ 0..1 move{ 2:1:-1 } }

3:R'

0..2 sequence{ 0..2 inversion{ 0..1 move{ 0:4:1 } } }

3:U'

0..2 sequence{ 0..2 inversion{ 0..1 move{ 1:4:1 } } }

3:F'

0..2 sequence{ 0..2 inversion{ 0..1 move{ 2:4:1 } } }

3:L'

0..2 sequence{ 0..2 inversion{ 0..1 move{ 0:1:-1 } } }

3:D'

0..2 sequence{ 0..2 inversion{ 0..1 move{ 1:1:-1 } } }

3:B'

0..2 sequence{ 0..2 inversion{ 0..1 move{ 2:1:-1 } } }

3:R2

0..2 sequence{ 0..2 move{ 0:4:2 } }

3:U2

0..2 sequence{ 0..2 move{ 1:4:2 } }

3:F2

0..2 sequence{ 0..2 move{ 2:4:2 } }

3:L2

0..2 sequence{ 0..2 move{ 0:1:-2 } }

3:D2

0..2 sequence{ 0..2 move{ 1:1:-2 } }

3:B2

0..2 sequence{ 0..2 move{ 2:1:-2 } }

3:MR

0..2 sequence{ 0..2 move{ 0:2:1 } }

3:MU

0..2 sequence{ 0..2 move{ 1:2:1 } }

3:MF

0..2 sequence{ 0..2 move{ 2:2:1 } }

3:ML

0..2 sequence{ 0..2 move{ 0:2:-1 } }

3:MD

0..2 sequence{ 0..2 move{ 1:2:-1 } }

3:MB

0..2 sequence{ 0..2 move{ 2:2:-1 } }

3:MR'

0..3 sequence{ 0..3 inversion{ 0..2 move{ 0:2:1 } } }

3:MU'

0..3 sequence{ 0..3 inversion{ 0..2 move{ 1:2:1 } } }

3:MF'

0..3 sequence{ 0..3 inversion{ 0..2 move{ 2:2:1 } } }

3:ML'

0..3 sequence{ 0..3 inversion{ 0..2 move{ 0:2:-1 } } }

3:MD'

0..3 sequence{ 0..3 inversion{ 0..2 move{ 1:2:-1 } } }

3:MB'

0..3 sequence{ 0..3 inversion{ 0..2 move{ 2:2:-1 } } }

3:MR2

0..3 sequence{ 0..3 move{ 0:2:2 } }

3:MU2

0..3 sequence{ 0..3 move{ 1:2:2 } }

3:MF2

0..3 sequence{ 0..3 move{ 2:2:2 } }

3:ML2

0..3 sequence{ 0..3 move{ 0:2:-2 } }

3:MD2

0..3 sequence{ 0..3 move{ 1:2:-2 } }

3:MB2

0..3 sequence{ 0..3 move{ 2:2:-2 } }

3:TR

0..2 sequence{ 0..2 move{ 0:6:1 } }

3:TU

0..2 sequence{ 0..2 move{ 1:6:1 } }

3:TF

0..2 sequence{ 0..2 move{ 2:6:1 } }

3:TL

0..2 sequence{ 0..2 move{ 0:3:-1 } }

3:TD

0..2 sequence{ 0..2 move{ 1:3:-1 } }

3:TB

0..2 sequence{ 0..2 move{ 2:3:-1 } }

3:TR'

0..3 sequence{ 0..3 inversion{ 0..2 move{ 0:6:1 } } }

3:TU'

0..3 sequence{ 0..3 inversion{ 0..2 move{ 1:6:1 } } }

3:TF'

0..3 sequence{ 0..3 inversion{ 0..2 move{ 2:6:1 } } }

3:TL'

0..3 sequence{ 0..3 inversion{ 0..2 move{ 0:3:-1 } } }

3:TD'

0..3 sequence{ 0..3 inversion{ 0..2 move{ 1:3:-1 } } }

3:TB'

0..3 sequence{ 0..3 inversion{ 0..2 move{ 2:3:-1 } } }

3:TR2

0..3 sequence{ 0..3 move{ 0:6:2 } }

3:TU2

0..3 sequence{ 0..3 move{ 1:6:2 } }

3:TF2

0..3 sequence{ 0..3 move{ 2:6:2 } }

3:TL2

0..3 sequence{ 0..3 move{ 0:3:-2 } }

3:TD2

0..3 sequence{ 0..3 move{ 1:3:-2 } }

3:TB2

0..3 sequence{ 0..3 move{ 2:3:-2 } }

3:CR

0..2 sequence{ 0..2 move{ 0:7:1 } }

3:CU

0..2 sequence{ 0..2 move{ 1:7:1 } }

3:CF

0..2 sequence{ 0..2 move{ 2:7:1 } }

3:CL

0..2 sequence{ 0..2 move{ 0:7:-1 } }

3:CD

0..2 sequence{ 0..2 move{ 1:7:-1 } }

3:CB

0..2 sequence{ 0..2 move{ 2:7:-1 } }

3:CR'

0..3 sequence{ 0..3 inversion{ 0..2 move{ 0:7:1 } } }

3:CU'

0..3 sequence{ 0..3 inversion{ 0..2 move{ 1:7:1 } } }

3:CF'

0..3 sequence{ 0..3 inversion{ 0..2 move{ 2:7:1 } } }

3:CL'

0..3 sequence{ 0..3 inversion{ 0..2 move{ 0:7:-1 } } }

3:CD'

0..3 sequence{ 0..3 inversion{ 0..2 move{ 1:7:-1 } } }

3:CB'

0..3 sequence{ 0..3 inversion{ 0..2 move{ 2:7:-1 } } }

3:CR2

0..3 sequence{ 0..3 move{ 0:7:2 } }

3:CU2

0..3 sequence{ 0..3 move{ 1:7:2 } }

3:CF2

0..3 sequence{ 0..3 move{ 2:7:2 } }

3:CL2

0..3 sequence{ 0..3 move{ 0:7:-2 } }

3:CD2

0..3 sequence{ 0..3 move{ 1:7:-2 } }

3:CB2

0..3 sequence{ 0..3 move{ 2:7:-2 } }

3:SR

0..2 sequence{ 0..2 move{ 0:5:1 } }

3:SU

0..2 sequence{ 0..2 move{ 1:5:1 } }

3:SF

0..2 sequence{ 0..2 move{ 2:5:1 } }

3:SL

0..2 sequence{ 0..2 move{ 0:5:-1 } }

3:SD

0..2 sequence{ 0..2 move{ 1:5:-1 } }

3:SB

0..2 sequence{ 0..2 move{ 2:5:-1 } }

3:SR'

0..3 sequence{ 0..3 inversion{ 0..2 move{ 0:5:1 } } }

3:SU'

0..3 sequence{ 0..3 inversion{ 0..2 move{ 1:5:1 } } }

3:SF'

0..3 sequence{ 0..3 inversion{ 0..2 move{ 2:5:1 } } }

3:SL'

0..3 sequence{ 0..3 inversion{ 0..2 move{ 0:5:-1 } } }

3:SD'

0..3 sequence{ 0..3 inversion{ 0..2 move{ 1:5:-1 } } }

3:SB'

0..3 sequence{ 0..3 inversion{ 0..2 move{ 2:5:-1 } } }

3:SR2

0..3 sequence{ 0..3 move{ 0:5:2 } }

3:SU2

0..3 sequence{ 0..3 move{ 1:5:2 } }

3:SF2

0..3 sequence{ 0..3 move{ 2:5:2 } }

3:SL2

0..3 sequence{ 0..3 move{ 0:5:-2 } }

3:SD2

0..3 sequence{ 0..3 move{ 1:5:-2 } }

3:SB2

0..3 sequence{ 0..3 move{ 2:5:-2 } }

3:R U F

0..5 sequence{ 0..1 move{ 0:4:1 } 2..3 move{ 1:4:1 } 4..5 move{ 2:4:1 } }

3:(R U F)

0..7 sequence{ 0..7 grouping{ 1..2 move{ 0:4:1 } 3..4 move{ 1:4:1 } 5..6 move{ 2:4:1 } } }

3:(R U F)'

0..8 sequence{ 0..8 inversion{ 0..7 grouping{ 1..2 move{ 0:4:1 } 3..4 move{ 1:4:1 } 5..6 move{ 2:4:1 } } } }

3:(R)2

0..4 sequence{ 0..4 repetition{ 2, 0..3 grouping{ 1..2 move{ 0:4:1 } } } }

3:R3

0..2 sequence{ 0..2 repetition{ 3, 0..1 move{ 0:4:1 } } }

3:(R U F)3

0..8 sequence{ 0..8 repetition{ 3, 0..7 grouping{ 1..2 move{ 0:4:1 } 3..4 move{ 1:4:1 } 5..6 move{ 2:4:1 } } } }

3:(R U F)'3

0..9 sequence{ 0..9 repetition{ 3, 0..8 inversion{ 0..7 grouping{ 1..2 move{ 0:4:1 } 3..4 move{ 1:4:1 } 5..6 move{ 2:4:1 } } } } }

3:(R U F)3'

0..9 sequence{ 0..9 inversion{ 0..8 repetition{ 3, 0..7 grouping{ 1..2 move{ 0:4:1 } 3..4 move{ 1:4:1 } 5..6 move{ 2:4:1 } } } } }

3:(R U F)3''

0..10 sequence{ 0..10 inversion{ 0..9 inversion{ 0..8 repetition{ 3, 0..7 grouping{ 1..2 move{ 0:4:1 } 3..4 move{ 1:4:1 } 5..6 move{ 2:4:1 } } } } } }

3:(R U F)3'4

0..10 sequence{ 0..10 repetition{ 4, 0..9 inversion{ 0..8 repetition{ 3, 0..7 grouping{ 1..2 move{ 0:4:1 } 3..4 move{ 1:4:1 } 5..6 move{ 2:4:1 } } } } } }

3:(R)'

0..4 sequence{ 0..4 inversion{ 0..3 grouping{ 1..2 move{ 0:4:1 } } } }

3:(R F)'

0..6 sequence{ 0..6 inversion{ 0..5 grouping{ 1..2 move{ 0:4:1 } 3..4 move{ 2:4:1 } } } }

3:(R- U F)- (R' U F)'

0..19 sequence{ 0..9 inversion{ 0..8 grouping{ 1..3 inversion{ 1..2 move{ 0:4:1 } } 4..5 move{ 1:4:1 } 6..7 move{ 2:4:1 } } } 10..19 inversion{ 10..18 grouping{ 11..13 inversion{ 11..12 move{ 0:4:1 } } 14..15 move{ 1:4:1 } 16..17 move{ 2:4:1 } } } }

3:<CU>R

0..5 sequence{ 0..5 conjugation{ 1..3 sequence{ 1..3 move{ 1:7:1 } } 4..5 move{ 0:4:1 } } }

3:<CU CF>(R)

0..10 sequence{ 0..10 conjugation{ 1..6 sequence{ 1..3 move{ 1:7:1 } 4..6 move{ 2:7:1 } } 7..10 grouping{ 8..9 move{ 0:4:1 } } } }

3:<CU CF>'(R)

0..11 sequence{ 0..11 rotation{ 1..6 sequence{ 1..3 move{ 1:7:1 } 4..6 move{ 2:7:1 } } 8..11 grouping{ 9..10 move{ 0:4:1 } } } }

3:<CU CF>(R B)

0..12 sequence{ 0..12 conjugation{ 1..6 sequence{ 1..3 move{ 1:7:1 } 4..6 move{ 2:7:1 } } 7..12 grouping{ 8..9 move{ 0:4:1 } 10..11 move{ 2:1:-1 } } } }

3:<R>U

0..4 sequence{ 0..4 conjugation{ 1..2 sequence{ 1..2 move{ 0:4:1 } } 3..4 move{ 1:4:1 } } }

3:[CU,R]

0..6 sequence{ 0..6 commutation{ 1..3 sequence{ 1..3 move{ 1:7:1 } } 4..5 sequence{ 4..5 move{ 0:4:1 } } } }

3:[CU CF,R]

0..9 sequence{ 0..9 commutation{ 1..6 sequence{ 1..3 move{ 1:7:1 } 4..6 move{ 2:7:1 } } 7..8 sequence{ 7..8 move{ 0:4:1 } } } }

3:[CU CF,R B]

0..11 sequence{ 0..11 commutation{ 1..6 sequence{ 1..3 move{ 1:7:1 } 4..6 move{ 2:7:1 } } 7..10 sequence{ 7..8 move{ 0:4:1 } 9..10 move{ 2:1:-1 } } } }

3:[R,U]

0..5 sequence{ 0..5 commutation{ 1..2 sequence{ 1..2 move{ 0:4:1 } } 3..4 sequence{ 3..4 move{ 1:4:1 } } } }

3:R U R'

0..6 sequence{ 0..1 move{ 0:4:1 } 2..3 move{ 1:4:1 } 4..6 inversion{ 4..5 move{ 0:4:1 } } }

3:R U /* a comment */ R' U'

0..25 sequence{ 0..1 move{ 0:4:1 } 2..3 move{ 1:4:1 } 20..22 inversion{ 20..21 move{ 0:4:1 } } 23..25 inversion{ 23..24 move{ 1:4:1 } } }

3:R*

0..2 sequence{ 0..2 reflection{ 0..1 move{ 0:4:1 } } }

3:(R' U F)*

0..9 sequence{ 0..9 reflection{ 0..8 grouping{ 1..3 inversion{ 1..2 move{ 0:4:1 } } 4..5 move{ 1:4:1 } 6..7 move{ 2:4:1 } } } }

3:R . U · F

0..9 sequence{ 0..1 move{ 0:4:1 } 2..3 nop{ } 4..5 move{ 1:4:1 } 6..7 nop{ } 8..9 move{ 2:4:1 } }

3:(+urf,bru,drb,frd) (+ur,br,dr,fr) (+r) (r,b) (++u,d) (++f,+l)

0..61 sequence{ 0..18 permutation{ Corner sign:2 0:0 2:2 3:0 1:2 } 19..33 permutation{ Edge sign:1 0:0 4:1 2:0 1:1 } 34..38 permutation{ Side sign:3 0:0 } 39..44 permutation{ Side sign:0 0:0 5:0 } 45..52 permutation{ Side sign:2 1:0 4:0 } 53..61 permutation{ Side sign:2 2:0 3:3 } }