Skip to content

Files

Latest commit

 

History

History
986 lines (892 loc) · 18.1 KB

testplan.org

File metadata and controls

986 lines (892 loc) · 18.1 KB

learntris test suite

[4/4] basic i/o

establish a command loop and a way to exit

> q

establish a way to print the matrix (p)

Matrix is the official term for the 10 × 22 grid of cells.

The playing area is only 10 × 20 but there are 2 extra lines above where new tetriminos form.

> p
# 1 2 3 4 5 6 7 8 9 ( first column, hidden by the #, is 0
. . . . . . . . . . #  0
. . . . . . . . . . #  1
. . . . . . . . . . #  2
. . . . . . . . . . #  3
. . . . . . . . . . #  4
. . . . . . . . . . #  5
. . . . . . . . . . #  6
. . . . . . . . . . #  7
. . . . . . . . . . #  8
. . . . . . . . . . #  9
. . . . . . . . . . # 10
. . . . . . . . . . # 11
. . . . . . . . . . # 12
. . . . . . . . . . # 13
. . . . . . . . . . # 14
. . . . . . . . . . # 15
. . . . . . . . . . # 16
. . . . . . . . . . # 17
. . . . . . . . . . # 18
. . . . . . . . . . # 19
. . . . . . . . . . # 20
. . . . . . . . . . # 21
> q

establish a way to set the entire matrix (g)

> g
> . . . . . . . . . . # 0
> . . . . . . . . . . # 1
> . . . . . . . . . . # 2
> . . . . . . . . . . # 3
> m m m m m m m m m m # 4
> b b b b b b b b b b # 5
> c c c c c c c c c c # 6
> g g g g g g g g g g # 7
> y y y y y y y y y y # 8
> o o o o o o o o o o # 9
> r r r r r r r r r r # 10
> . . . . . . . . . . # 11
> . . . . . . . . . . # 12
> . . . . . . . . . . # 13
> . . . . . . . . . . # 14
> c . . . . . . . . . # 15
> c . . . . . . . . . # 16
> c. . .  . g . . . . # 17
> c . . o . g g . . . # 18
> . . . o . b g . . . # 19
> . m r r o o b y y . # 20
> m m m r r b b y y . # 21
> p
. . . . . . . . . . # 0
. . . . . . . . . . # 1
. . . . . . . . . . # 2
. . . . . . . . . . # 3
m m m m m m m m m m # 4
b b b b b b b b b b # 5
c c c c c c c c c c # 6
g g g g g g g g g g # 7
y y y y y y y y y y # 8
o o o o o o o o o o # 9
r r r r r r r r r r # 10
. . . . . . . . . . # 11
. . . . . . . . . . # 12
. . . . . . . . . . # 13
. . . . . . . . . . # 14
c . . . . . . . . . # 15
c . . . . . . . . . # 16
c. . .  . g . . . . # 17
c . . o . g g . . . # 18
. . . o . b g . . . # 19
. m r r o o b y y . # 20
m m m r r b b y y . # 21
> q

and a way to clear the matrix (c)

This is the same as the previous test, but it adds a c command to clear it before the print.

> g
> . . . . . . . . . . # 0
> . . . . . . . . . . # 1
> . . . . . . . . . . # 2
> . . . . . . . . . . # 3
> m m m m m m m m m m # 4
> b b b b b b b b b b # 5
> c c c c c c c c c c # 6
> g g g g g g g g g g # 7
> y y y y y y y y y y # 8
> o o o o o o o o o o # 9
> r r r r r r r r r r # 10
> . . . . . . . . . . # 11
> . . . . . . . . . . # 12
> . . . . . . . . . . # 13
> . . . . . . . . . . # 14
> c . . . . . . . . . # 15
> c . . . . . . . . . # 16
> c. . .  . g . . . . # 17
> c . . o . g g . . . # 18
> . . . o . b g . . . # 19
> . m r r o o b y y . # 20
> m m m r r b b y y . # 21
> c
> p
. . . . . . . . . . #  0
. . . . . . . . . . #  1
. . . . . . . . . . #  2
. . . . . . . . . . #  3
. . . . . . . . . . #  4
. . . . . . . . . . #  5
. . . . . . . . . . #  6
. . . . . . . . . . #  7
. . . . . . . . . . #  8
. . . . . . . . . . #  9
. . . . . . . . . . # 10
. . . . . . . . . . # 11
. . . . . . . . . . # 12
. . . . . . . . . . # 13
. . . . . . . . . . # 14
. . . . . . . . . . # 15
. . . . . . . . . . # 16
. . . . . . . . . . # 17
. . . . . . . . . . # 18
. . . . . . . . . . # 19
. . . . . . . . . . # 20
. . . . . . . . . . # 21
> q

[4/6] basic game ideas

establish protocol to set and query the score

score register:

> ?s
0
>q

number of lines register:

> ?n
0
>q

establish the line-clearing mechanic

> ?s
0
> g
> . . . . . . . . . . # 0
> . . . . . . . . . . # 1
> . . . . . . . . . . # 2
> . . . . . . . . . . # 3
> . . . . . . . . . . # 4
> . . . . . . . . . . # 5
> . . . . . . . . . . # 6
> . . . . . . . . . . # 7
> . . . . . . . . . . # 8
> . . . . . . . . . . # 9
> m c r g b y m c o b # 10
> . . . . . . . . . . # 11
> . . . . . . . . . . # 12
> m y o . c r g c m y # 13
> . . . . . . . . . . # 14
> . . . . . . . . . . # 15
> . . . . . . . . . . # 16
> . . . . . . . . . . # 17
> . . . . . . . . . . # 18
> . . . . . . . . . . # 19
> . . . . . . . . . . # 20
> . . . . . . . . . . # 21
> s
> p
. . . . . . . . . . #  0
. . . . . . . . . . #  1
. . . . . . . . . . #  2
. . . . . . . . . . #  3
. . . . . . . . . . #  4
. . . . . . . . . . #  5
. . . . . . . . . . #  6
. . . . . . . . . . #  7
. . . . . . . . . . #  8
. . . . . . . . . . #  9
. . . . . . . . . . # 10
. . . . . . . . . . # 11
. . . . . . . . . . # 12
m y o . c r g c m y # 13
. . . . . . . . . . # 14
. . . . . . . . . . # 15
. . . . . . . . . . # 16
. . . . . . . . . . # 17
. . . . . . . . . . # 18
. . . . . . . . . . # 19
. . . . . . . . . . # 20
. . . . . . . . . . # 21
> ?n
1
> ?s
100
> s
> q

[7/7] introduce the tetraminos

The I (cyan)

> I t q
. . . .
c c c c
. . . .
. . . .

The O (yellow)

The O spawns in a 4 × 3 grid:

> O t q
y y
y y

The Z (red)

The Z and others fit in 3x3 grids

> Z t q
r r .
. r r
. . .

The S (green)

> S t q
. g g
g g .
. . .

The J (blue)

> J t q
b . .
b b b
. . .

The L (orange)

> L t q
. . o
o o o
. . .

The T (magenta)

> T t q
. m .
m m m
. . .

[7/7] introduce (simplified) super rotation system

Clockwise only. No wall-kicks. For each test, four rotations should bring it back to the staring position.

The I (cyan)

> I ) t
. . c .
. . c .
. . c .
. . c .
> ) t
. . . .
. . . .
c c c c
. . . .
> ) t
. c . .
. c . .
. c . .
. c . .
> ) t q
. . . .
c c c c
. . . .
. . . .

The O (yellow)

The O looks the same in all orientations.

> O ) t
y y
y y
> ) t
y y
y y
> ) t
y y
y y
> ) t q
y y
y y

The Z (red)

The Z and others fit in 3x3 grids

> Z t
r r .
. r r
. . .
> ) t
. . r
. r r
. r .
> ) t
. . .
r r .
. r r
> ) t q
. r .
r r .
r . .

The S (green)

> S t ; ) t ; ) t ; ) t q
. g g
g g .
. . .

. g .
. g g
. . g

. . .
. g g
g g .

g . .
g g .
. g .

The J (blue)

> J t ; ) t ; ) t ; ) t q
b . .
b b b
. . .

. b b
. b .
. b .

. . .
b b b
. . b

. b .
. b .
b b .

The L (orange)

> L t ; ) t ; ) t ; ) t q
. . o
o o o
. . .

. o .
. o .
. o o

. . .
o o o
o . .

o o .
. o .
. o .

The T (magenta)

> T t ; ) t ; ) t ; ) t ; q
. m .
m m m
. . .

. m .
. m m
. m .

. . .
m m m
. m .

. m .
m m .
. m .

implement movement

[0/7] draw a shape in the matrix at the spawn point.

Use upper case letters.

the O

> cOPq
. . . . Y Y . . . . #  0
. . . . Y Y . . . . #  1
. . . . . . . . . . #  2
. . . . . . . . . . #  3
. . . . . . . . . . #  4
. . . . . . . . . . #  5
. . . . . . . . . . #  6
. . . . . . . . . . #  7
. . . . . . . . . . #  8
. . . . . . . . . . #  9
. . . . . . . . . . # 10
. . . . . . . . . . # 11
. . . . . . . . . . # 12
. . . . . . . . . . # 13
. . . . . . . . . . # 14
. . . . . . . . . . # 15
. . . . . . . . . . # 16
. . . . . . . . . . # 17
. . . . . . . . . . # 18
. . . . . . . . . . # 19
. . . . . . . . . . # 20
. . . . . . . . . . # 21

the L

> cLPq
. . . . . o . . . . #  0
. . . o o o . . . . #  1
. . . . . . . . . . #  2
. . . . . . . . . . #  3
. . . . . . . . . . #  4
. . . . . . . . . . #  5
. . . . . . . . . . #  6
. . . . . . . . . . #  7
. . . . . . . . . . #  8
. . . . . . . . . . #  9
. . . . . . . . . . # 10
. . . . . . . . . . # 11
. . . . . . . . . . # 12
. . . . . . . . . . # 13
. . . . . . . . . . # 14
. . . . . . . . . . # 15
. . . . . . . . . . # 16
. . . . . . . . . . # 17
. . . . . . . . . . # 18
. . . . . . . . . . # 19
. . . . . . . . . . # 20
. . . . . . . . . . # 21

the J

> cJPq
. . . b . . . . . . #  0
. . . b b b . . . . #  1
. . . . . . . . . . #  2
. . . . . . . . . . #  3
. . . . . . . . . . #  4
. . . . . . . . . . #  5
. . . . . . . . . . #  6
. . . . . . . . . . #  7
. . . . . . . . . . #  8
. . . . . . . . . . #  9
. . . . . . . . . . # 10
. . . . . . . . . . # 11
. . . . . . . . . . # 12
. . . . . . . . . . # 13
. . . . . . . . . . # 14
. . . . . . . . . . # 15
. . . . . . . . . . # 16
. . . . . . . . . . # 17
. . . . . . . . . . # 18
. . . . . . . . . . # 19
. . . . . . . . . . # 20
. . . . . . . . . . # 21

the Z

> cZPq
. . . r r . . . . . #  0
. . . . r r . . . . #  1
. . . . . . . . . . #  2
. . . . . . . . . . #  3
. . . . . . . . . . #  4
. . . . . . . . . . #  5
. . . . . . . . . . #  6
. . . . . . . . . . #  7
. . . . . . . . . . #  8
. . . . . . . . . . #  9
. . . . . . . . . . # 10
. . . . . . . . . . # 11
. . . . . . . . . . # 12
. . . . . . . . . . # 13
. . . . . . . . . . # 14
. . . . . . . . . . # 15
. . . . . . . . . . # 16
. . . . . . . . . . # 17
. . . . . . . . . . # 18
. . . . . . . . . . # 19
. . . . . . . . . . # 20
. . . . . . . . . . # 21

the S

> cSPq
. . . . g g . . . . #  0
. . . g g . . . . . #  1
. . . . . . . . . . #  2
. . . . . . . . . . #  3
. . . . . . . . . . #  4
. . . . . . . . . . #  5
. . . . . . . . . . #  6
. . . . . . . . . . #  7
. . . . . . . . . . #  8
. . . . . . . . . . #  9
. . . . . . . . . . # 10
. . . . . . . . . . # 11
. . . . . . . . . . # 12
. . . . . . . . . . # 13
. . . . . . . . . . # 14
. . . . . . . . . . # 15
. . . . . . . . . . # 16
. . . . . . . . . . # 17
. . . . . . . . . . # 18
. . . . . . . . . . # 19
. . . . . . . . . . # 20
. . . . . . . . . . # 21

the I

> cIPq
. . . . . . . . . . #  0
. . . c c c c . . . #  1
. . . . . . . . . . #  2
. . . . . . . . . . #  3
. . . . . . . . . . #  4
. . . . . . . . . . #  5
. . . . . . . . . . #  6
. . . . . . . . . . #  7
. . . . . . . . . . #  8
. . . . . . . . . . #  9
. . . . . . . . . . # 10
. . . . . . . . . . # 11
. . . . . . . . . . # 12
. . . . . . . . . . # 13
. . . . . . . . . . # 14
. . . . . . . . . . # 15
. . . . . . . . . . # 16
. . . . . . . . . . # 17
. . . . . . . . . . # 18
. . . . . . . . . . # 19
. . . . . . . . . . # 20
. . . . . . . . . . # 21

the T

> cTPq
. . . . m . . . . . #  0
. . . m m m . . . . #  1
. . . . . . . . . . #  2
. . . . . . . . . . #  3
. . . . . . . . . . #  4
. . . . . . . . . . #  5
. . . . . . . . . . #  6
. . . . . . . . . . #  7
. . . . . . . . . . #  8
. . . . . . . . . . #  9
. . . . . . . . . . # 10
. . . . . . . . . . # 11
. . . . . . . . . . # 12
. . . . . . . . . . # 13
. . . . . . . . . . # 14
. . . . . . . . . . # 15
. . . . . . . . . . # 16
. . . . . . . . . . # 17
. . . . . . . . . . # 18
. . . . . . . . . . # 19
. . . . . . . . . . # 20
. . . . . . . . . . # 21

[0/3] basic left/right/down movement ( < v > )

<

> cT<Pq
. . . m . . . . . . #  0
. . m m m . . . . . #  1
. . . . . . . . . . #  2
. . . . . . . . . . #  3
. . . . . . . . . . #  4
. . . . . . . . . . #  5
. . . . . . . . . . #  6
. . . . . . . . . . #  7
. . . . . . . . . . #  8
. . . . . . . . . . #  9
. . . . . . . . . . # 10
. . . . . . . . . . # 11
. . . . . . . . . . # 12
. . . . . . . . . . # 13
. . . . . . . . . . # 14
. . . . . . . . . . # 15
. . . . . . . . . . # 16
. . . . . . . . . . # 17
. . . . . . . . . . # 18
. . . . . . . . . . # 19
. . . . . . . . . . # 20
. . . . . . . . . . # 21

>

> cT>Pq
. . . . . m . . . . #  0
. . . . m m m . . . #  1
. . . . . . . . . . #  2
. . . . . . . . . . #  3
. . . . . . . . . . #  4
. . . . . . . . . . #  5
. . . . . . . . . . #  6
. . . . . . . . . . #  7
. . . . . . . . . . #  8
. . . . . . . . . . #  9
. . . . . . . . . . # 10
. . . . . . . . . . # 11
. . . . . . . . . . # 12
. . . . . . . . . . # 13
. . . . . . . . . . # 14
. . . . . . . . . . # 15
. . . . . . . . . . # 16
. . . . . . . . . . # 17
. . . . . . . . . . # 18
. . . . . . . . . . # 19
. . . . . . . . . . # 20
. . . . . . . . . . # 21

v

> cTvPq
. . . . . . . . . . #  0
. . . . m . . . . . #  1
. . . m m m . . . . #  2
. . . . . . . . . . #  3
. . . . . . . . . . #  4
. . . . . . . . . . #  5
. . . . . . . . . . #  6
. . . . . . . . . . #  7
. . . . . . . . . . #  8
. . . . . . . . . . #  9
. . . . . . . . . . # 10
. . . . . . . . . . # 11
. . . . . . . . . . # 12
. . . . . . . . . . # 13
. . . . . . . . . . # 14
. . . . . . . . . . # 15
. . . . . . . . . . # 16
. . . . . . . . . . # 17
. . . . . . . . . . # 18
. . . . . . . . . . # 19
. . . . . . . . . . # 20
. . . . . . . . . . # 21

[0/5] collision detection

left wall

# nudging <<< should put T on the left wall
> cT<<<P
. m . . . . . . . . #  0
m m m . . . . . . . #  1
. . . . . . . . . . #  2
. . . . . . . . . . #  3
. . . . . . . . . . #  4
. . . . . . . . . . #  5
. . . . . . . . . . #  6
. . . . . . . . . . #  7
. . . . . . . . . . #  8
. . . . . . . . . . #  9
. . . . . . . . . . # 10
. . . . . . . . . . # 11
. . . . . . . . . . # 12
. . . . . . . . . . # 13
. . . . . . . . . . # 14
. . . . . . . . . . # 15
. . . . . . . . . . # 16
. . . . . . . . . . # 17
. . . . . . . . . . # 18
. . . . . . . . . . # 19
. . . . . . . . . . # 20
. . . . . . . . . . # 21
# nudging again should do nothing:
> <Pq
. m . . . . . . . . #  0
m m m . . . . . . . #  1
. . . . . . . . . . #  2
. . . . . . . . . . #  3
. . . . . . . . . . #  4
. . . . . . . . . . #  5
. . . . . . . . . . #  6
. . . . . . . . . . #  7
. . . . . . . . . . #  8
. . . . . . . . . . #  9
. . . . . . . . . . # 10
. . . . . . . . . . # 11
. . . . . . . . . . # 12
. . . . . . . . . . # 13
. . . . . . . . . . # 14
. . . . . . . . . . # 15
. . . . . . . . . . # 16
. . . . . . . . . . # 17
. . . . . . . . . . # 18
. . . . . . . . . . # 19
. . . . . . . . . . # 20
. . . . . . . . . . # 21

right wall

# nudging >>>> should put T on the right wall
> cT>>>>P
. . . . . . . . m . #  0
. . . . . . . m m m #  1
. . . . . . . . . . #  2
. . . . . . . . . . #  3
. . . . . . . . . . #  4
. . . . . . . . . . #  5
. . . . . . . . . . #  6
. . . . . . . . . . #  7
. . . . . . . . . . #  8
. . . . . . . . . . #  9
. . . . . . . . . . # 10
. . . . . . . . . . # 11
. . . . . . . . . . # 12
. . . . . . . . . . # 13
. . . . . . . . . . # 14
. . . . . . . . . . # 15
. . . . . . . . . . # 16
. . . . . . . . . . # 17
. . . . . . . . . . # 18
. . . . . . . . . . # 19
. . . . . . . . . . # 20
. . . . . . . . . . # 21
# nudging again should do nothing:
> >Pq
. . . . . . . . m . #  0
. . . . . . . m m m #  1
. . . . . . . . . . #  2
. . . . . . . . . . #  3
. . . . . . . . . . #  4
. . . . . . . . . . #  5
. . . . . . . . . . #  6
. . . . . . . . . . #  7
. . . . . . . . . . #  8
. . . . . . . . . . #  9
. . . . . . . . . . # 10
. . . . . . . . . . # 11
. . . . . . . . . . # 12
. . . . . . . . . . # 13
. . . . . . . . . . # 14
. . . . . . . . . . # 15
. . . . . . . . . . # 16
. . . . . . . . . . # 17
. . . . . . . . . . # 18
. . . . . . . . . . # 19
. . . . . . . . . . # 20
. . . . . . . . . . # 21

it changes based on the orientation, though

> T ) >>>> > Pq
. . . . . . . . . M #  0
. . . . . . . . M M #  1
. . . . . . . . . M #  2
. . . . . . . . . . #  3
. . . . . . . . . . #  4
. . . . . . . . . . #  5
. . . . . . . . . . #  6
. . . . . . . . . . #  7
. . . . . . . . . . #  8
. . . . . . . . . . #  9
. . . . . . . . . . # 10
. . . . . . . . . . # 11
. . . . . . . . . . # 12
. . . . . . . . . . # 13
. . . . . . . . . . # 14
. . . . . . . . . . # 15
. . . . . . . . . . # 16
. . . . . . . . . . # 17
. . . . . . . . . . # 18
. . . . . . . . . . # 19
. . . . . . . . . . # 20
. . . . . . . . . . # 21

floor

collide with blocks

> g
. . . . . . . . . . #  0
. . . . . . . . . . #  1
. . . . . . . . . . #  2
. . . . . . . . . . #  3
. . . . . . . . . . #  4
. . . . . . . . . . #  5
. . . . g . . . . . #  6
. . . . g g . . . . #  7
. . . . . g . . . . #  8
. . . . . o . . . . #  9
. . . o o o . . . . # 10
. . . c . . . . . . # 11
. . . c . . . . . . # 12
. . . c . . . . . . # 13
. . . c . . . . . . # 14
. . . m . . . . . . # 15
. . . m m . . . . . # 16
. . . m . . . . . . # 17
. . . r . . . . . . # 18
. . r r . b . . . . # 19
y y r g g b . m . . # 20
y y g g b b m m m . # 21
> T P
. . . . M . . . . . #  0
. . . M M M . . . . #  1
. . . . . . . . . . #  2
. . . . . . . . . . #  3
. . . . . . . . . . #  4
. . . . . . . . . . #  5
. . . . g . . . . . #  6
. . . . g g . . . . #  7
. . . . . g . . . . #  8
. . . . . o . . . . #  9
. . . o o o . . . . # 10
. . . c . . . . . . # 11
. . . c . . . . . . # 12
. . . c . . . . . . # 13
. . . c . . . . . . # 14
. . . m . . . . . . # 15
. . . m m . . . . . # 16
. . . m . . . . . . # 17
. . . r . . . . . . # 18
. . r r . b . . . . # 19
y y r g g b . m . . # 20
y y g g b b m m m . # 21
> >>vvvvvvvv
. . . . M . . . . . #  0
. . . M M M . . . . #  1
. . . . . . . . . . #  2
. . . . . . . . . . #  3
. . . . . . . . . . #  4
. . . . . . . . . . #  5
. . . . g . . . . . #  6
. . . . g g . . . . #  7
. . . . . g . . . . #  8
. . . . . o . . . . #  9
. . . o o o . . . . # 10
. . . c . . . . . . # 11
. . . c . . . . . . # 12
. . . c . . . . . . # 13
. . . c . . . . . . # 14
. . . m . . . . . . # 15
. . . m m . . . . . # 16
. . . m . . . . . . # 17
. . . r . . . . . . # 18
. . r r . b . . . . # 19
y y r g g b . m . . # 20
y y g g b b m m m . # 21

gravity during step

hard drops

clearing lines