tests/retreat: New; exercising retreat

Does not cover land unit retreat after a failed morale check.

The test exposes bugs.  They're marked "BUG:" in the test input.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
Markus Armbruster 2014-01-19 19:51:22 +01:00
parent c7af9bd955
commit 58cd269bed
8 changed files with 7585 additions and 0 deletions

View file

@ -264,12 +264,14 @@ ifeq ($(empthread),LWP)
$(srcdir)/tests/build-test $(srcdir) $(srcdir)/tests/build-test $(srcdir)
$(srcdir)/tests/fire-test $(srcdir) $(srcdir)/tests/fire-test $(srcdir)
$(srcdir)/tests/bridgefall-test $(srcdir) $(srcdir)/tests/bridgefall-test $(srcdir)
$(srcdir)/tests/retreat-test $(srcdir)
else else
@echo "$(srcdir)/tests/smoke-test SKIPPED" @echo "$(srcdir)/tests/smoke-test SKIPPED"
@echo "$(srcdir)/tests/actofgod-test SKIPPED" @echo "$(srcdir)/tests/actofgod-test SKIPPED"
@echo "$(srcdir)/tests/build-test SKIPPED" @echo "$(srcdir)/tests/build-test SKIPPED"
@echo "$(srcdir)/tests/fire-test SKIPPED" @echo "$(srcdir)/tests/fire-test SKIPPED"
@echo "$(srcdir)/tests/bridgefall-test SKIPPED" @echo "$(srcdir)/tests/bridgefall-test SKIPPED"
@echo "$(srcdir)/tests/retreat-test SKIPPED"
endif endif

22
tests/retreat-test Executable file
View file

@ -0,0 +1,22 @@
#!/bin/sh -e
# Ship and land unit retreat test for Empire
if [ $# -ne 1 ]
then echo "Usage: $0 SRCDIR" >&2; exit 1
fi
srcdir="$1"
. "$srcdir"/tests/test-common.sh
create_sandbox
cat >>sandbox/etc/empire/econfig <<EOF
WORLD_X 24
WORLD_Y 12
EOF
begin_test "$srcdir"/tests/retreat/setup-POGO
feed_dir "$srcdir"/tests/retreat
end_test
cmp_out var/empire/server.log var/empire/journal.log final.xdump

200
tests/retreat/01-retreat-1 Normal file
View file

@ -0,0 +1,200 @@
||| Commands
|| retreat command
| garbage path
retr 0 garbage i
| condition help, then junk conditions
retr 1 g
?
junk
| long path, all conditions
retr 2/3 bgyujnbgyujnbgyujn itshbdu
| clear retreat order
retr 3 ignored c
| group retreat order
retr a ?uid=4 b h
| show retreat orders
retr
0/1/2/3/4
|| lretreat command
| garbage path
lret 0 garbage i
| condition help, then junk conditions
lret 1 g
?
junk
| long path, all conditions
lret 2/3 yujnbgyujnbgyujnbg ihb
| clear retreat order
lret 3 ignored c
| group retreat order
lret a ?uid=4 b h
| show retreat orders
lret
0/1/2/3/4
||| Ships
|| ships failing to retreat
| sunk
fire se -2,2 30
| sailing
fire se -2,2 31
| crewless
fire se -2,2 32
| construction zone
fire se -2,2 33
| landlocked
fire se -2,2 34
| no mobility
fire se -2,2 35
|| ships having difficulties during retreat
| out of mobility after n
fire se -2,2 40
| into non-navigable sector after n
fire se -2,2 41
| into unfriendly sector right away
fire se -2,2 42
| gg with 43, sweeping and hitting mines
fire se -2,2 44
|| ships retreating fully
| nh
fire se -2,2 10
| h
fire se -2,2 10
| nj into friendly harbor
fire se -2,2 10
|| own ship
fire se -2,2 2
|| ships retreating from gun fire
| injured covered above
| helpless
fire se -2,2 11
| not helpless
fire se -2,-2 20
|| ships retreating from depth charges
| depth-charged
fire sh 5 50
fire sh 5 51
| helpless
fire sh 5 52
| not helpless
navi 5 gyuh
fire sh 5 53
|| ships retreating from bombs
| injured
bomb 0/1/2/3/4 . p -2,2 jh
s
60
61
62
63
64
| bombed
bomb 0/1/2/3/4 . p -2,2 jh
s
65
66
67
68
69
| helpless is not implemented
|| ships retreating from missiles
| injured
launch 10 80
launch 11 81
launch 12 82
launch 13 83
launch 14 84
| bombed and helpless doesn't apply to missiles (I guess they should)
|| ships retreating from torpedoes
| torpedoed
torp 6 100
torp 6 101
torp 6 102
torp 6 103
torp 6 104
| BUG: retreats only when hit
| injured is not implemented
| helpless is not implemented
|| ships retreating from sonar pings
| naval sonar
navi 5 bsh
| retreat on plane sonar is not implemented
|| ships retreating from unsuccessful boarding
navi 5 nh
board 130 5
1
||| Land units
| only retreat on p-bombing is implemented
| BUG: condition b triggers only on hit
|| land units failing to retreat
| these bombing runs must hit; if they don't, use __cmd to make them
| destroyed
bomb 30 . p -2,2 ujh
l
30
| loaded, but there's no way to trigger a retreat then
| crewless
__cmd added -1 0 0
bomb 30 . p -2,2 ujh
l
32
| BUG: retreats anyway
| kidnapped
bomb 30 . p -2,2 uh
l
33
| BUG: retreats anyway
| no mobility
bomb 30 . p -2,2 ujh
l
35
|| land units having difficulties during retreat
| these bombing runs must hit; if they don't, use __cmd to make them
| out of mobility after n
__cmd added -1 0 0
bomb 30 . p -2,2 ujh
l
40
| into mountain after j
bomb 30 . p -2,2 ujh
l
41
| into foreign sector right away
__cmd added -1 0 0
bomb 30 . p -2,2 ujh
l
42
| yu with 43, sweeping and hitting mines
__cmd added -1 0 0
bomb 30 . p -2,2 ujh
l
44
| BUG: oopses!
|| land units retreating fully
| jh
bomb 30 . p -2,2 ujh
l
10
| h
__cmd added -1 0 0
bomb 30 . p -2,2 ujjh
l
10
| uy into allied sector
__cmd added -1 0 0
bomb 30 . p -2,2 ujjh
l
10
| BUG: can't enter allied sector
| own land unit
bomb 30 . p -3,1 h
l
2
| injured
bomb 20/21/22/23/24 . p -2,2 uuh
l
60
61
62
63
64
| bombed covered above

8
tests/retreat/99-POGO Normal file
View file

@ -0,0 +1,8 @@
read 1
read 2
ship * ?fleet#a
retr * ?fleet#a
miss s * ?mission#0 q
land * ?army#a
lretr * ?army#a
miss l * ?mission#0 q

5551
tests/retreat/final.xdump Normal file

File diff suppressed because it is too large Load diff

1624
tests/retreat/journal.log Normal file

File diff suppressed because it is too large Load diff

19
tests/retreat/server.log Normal file
View file

@ -0,0 +1,19 @@
------------------------------------------------------
Empire server (pid 42) started
Configured for testing
Update schedule read
No update scheduled
Listening on 127.0.0.1
Connect from 127.0.0.1
Connect from 127.0.0.1
tester@127.0.0.1 using country #1
tester@127.0.0.1 logged in as country #1
Oops: bug in ../src/lib/subs/nxtitem.c:106
Crash dump complete
tester@127.0.0.1 logged out, country #1
Connect from 127.0.0.1
tester@127.0.0.1 using country #0
tester@127.0.0.1 logged in as country #0
tester@127.0.0.1 logged out, country #0
Shutdown commencing (cleaning up threads.)
Server shutting down on signal 15

159
tests/retreat/setup-POGO Normal file
View file

@ -0,0 +1,159 @@
|| create land
desi @0,0:2 a
desi 4,4 h
give c * ?des#. 100
|| country#1
add 1 1 1 p
desi -2,0 c
edit c 1 c -2,0 s 4 b 640 M 25000 T 100
| two forts (one with, one without return fire)
desi -2,2 f
desi -2,-2 f
| harbor for building of non-landlocked ships
desi -3,1 h
edit l * ?des#.&xloc<0 o 1 O 1
| ships for testing retreat command
build s -3,1 cs 5
| ship to drop depth charges
build s -3,1 dd
| ship to launch torpedoes
edit s 5 g 1 s 40
build s -3,1 sb
edit s 6 T 165 L -1,3 g 1 s 36
| p-bombers with 50% hit chance vs. dd in port
build p -2,2 lb 5
| marine missiles acc 50
edit p 0 U 10 T mi t 160 U 11 U 12 U 13 U 14
| p-bombers with 50% hit chance vs. cav
edit p 0 U 20 t 400 U 21 U 22 U 23 U 24
| very accurate p-bomber
edit p 0 U 30 T ac t 400
| land units for testing retreat command
build l -3,1 inf 5
| fortify to reduce unwanted collateral damage
edit u * F 127
|| country#2
add 2 2 2 p
| mountain, to test "can't retreat into mountain"
desi 2,0 ^
edit c 2 c 2,0 s 4 b 640 M 25000 T 100
| a harbor for building, a harbor for testing construction zone retreat
desi 0:2,2 h
edit l 2,2 e 1
edit l * ?des#.&own=0 o 2 O 2
| ship that can return fire to -2,-2 and -5,-1 weakly
edit s 5 U 9 O 2 L -4,-2 E 60
| a train to carry land units
edit u 0 U 9 O 2 T tra L 1,1
| target ships gun fire: injured, helpless, not helpless
edit s 0 U 20 O 2 U 10 L 0,2 U 11
retr 10 nhhnj ih
retr 11 n h
retr 20 u h
| target ships that want to retreat, but can't: sunk, sailing, crewless,
| in construction zone, landlocked, no mobility
edit s 10 U 30 U 31 U 32 U 33 U 34 U 35
sail 31 nnnnh
edit s 33 L 2,2
edit s 34 L 3,1
retr 30/31/32/33/34/35 n i
| target ships having difficulties during retreat: out of mobility,
| into non-navigable, into unfriendly, as group into minefield
edit s 10 U 40 t lc U 41 U 42
retr 40 nnnnh i
edit s 40 M 5
retr 41 nuh i
edit s 42 L -4,2
retr 42 ugggh i
edit s 10 U 43 t ms U 44
fleet m 43/44
edit s m L -4,4
edit l -8:-6,4 M 100
retr m gg i
miss s 40/41/42 int .
| target ships depth-charges: injured vs. depth-charged, depth-charged,
| helpless, not helpless
edit s 10 U 50 t sb L -5,1 U 51 U 52 U 53 L -4,-2
retr 50 gg dih
retr 51 gg dh
retr 52/53 gg h
| target ships bombs: injured vs. bombed, bombed
| five of each, to have a decent chance at getting both a hit and a miss
edit s 10 U 60 t dd U 61 U 62 U 63 U 64 U 65 U 66 U 67 U 68 U 69
retr 60/61/62/63/64 nn bih
retr 65/66/67/68/69 nn bh
| target ships missiles: injured (bombed doesn't apply)
| five, to have a decent chance at getting both a hit and a miss
edit s 60 U 80 U 81 U 82 U 83 U 84
retr 80/81/82/83/84 nn bih
| target ships torpedoes: torpedoed (injured not implemented)
| five, to have a decent chance at getting both a hit and a miss
edit s 10 U 100 U 101 U 102 U 103 U 104
retr 100/101/102/103/104 nn tih
| target ship sonar
edit s 50 U 120
retr 120 gg s
| target ship boarding
edit s 50 U 130 t tt
retr 130 gg u
| target land units bombs: bombed
edit u 9 U 10 T cav
lret 10 jhhuy b
| target land units that want to retreat, but can't: destroyed,
| loaded on ship, crewless, kidnapped, loaded on land unit, no mobility
edit u 10 U 30 T inf
edit u 10 U 31 S 35
edit u 10 U 32 U 33 U 35
edit u 33 L -1,1
edit u 10 U 34 Y 9
lret 30/31/32/33/34/35 j b
| target land units having difficulties during retreat: out of mobility,
| into mountain, into foreign sector, as group into minefield
edit u 10 U 40 U 41 U 42
lret 40 nu b
edit u 40 M 5
lret 41 jy b
lret 42 g b
edit u 10 U 43 T eng U 44
army m 43/44
edit l 0:1,-1:0 O 1 M 100
lret m yu b
miss l 40/41/42 res .
| target land units bombs: injured vs. bombed
| five, to have a decent chance at getting both a hit and a miss
edit u 10 U 60 L 0,0 U 61 U 62 U 63 U 64
lret 60/61/62/63/64 nj bih
|| country#3, allied to #2
add 3 3 3 p
edit l 2:3,-2:-1 o 3 O 3
|| country#4, friendly to #2
add 4 4 4 p
edit l 4,4 o 4 O 4
|| finishing touches
give m * ?des=f 5
give g * ?des=f 2
give s * ?des=f 100
give p * ?des=f 100
edit l * ?des#.&eff=0 e 100 m 127
edit s * ?eff=20&uid#30 E 100
edit s * ?mob=0&uid#35 M 127
edit s * ?uid#32 m 10
edit u * ?eff=10&uid#30 e 100
edit u * ?mob=0&uid#35 M 127
edit u * ?uid#32 m 10
fleet a * ?own=1&uid#2
fleet a 9
army a * ?own=1&uid#2
edit p * e 100 m 127
|| relations
decl w 1 2
decl w 2 1
decl a 2 3
decl f 2 4
|| show initial state here to help maintainers
map *
ship *
retr *
land *
lretr *
plane *