fix(ludic.wildlife): a newcomer takes the record of one of its species removed for good - its row, its key and so the game's drawing, every other field as new
Each morning's repopulation made a new WildAnimal (and the game a new drawing, actor and skeleton, keyed by an ever-rising key) for every animal that had gone. A legend's record is never taken, nor one still in a crowd. reuse_test: a hundred removes and makes are one record. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
3311269b23
commit
0e2d2a6fab
5 changed files with 158 additions and 5 deletions
67
packages/ludic.wildlife/tests/reuse_test.ludic
Normal file
67
packages/ludic.wildlife/tests/reuse_test.ludic
Normal file
|
|
@ -0,0 +1,67 @@
|
|||
# reuse_test.ludic - a newcomer of a species takes the record of one removed for good: the same key
|
||||
# (and so the game's drawing), fields as new, its row living again; a legend's is never taken
|
||||
import "ludic.wildlife"
|
||||
import "ludic.base"
|
||||
import "fake"
|
||||
program WildReuseTest {
|
||||
numbers float
|
||||
bind WildlifeWorld {
|
||||
ground: fn fk_ground
|
||||
water: fn fk_water
|
||||
forest: fn fk_forest
|
||||
sight: fn fk_sight
|
||||
push: fn fk_push
|
||||
pushed_x: fn fk_pushed_x
|
||||
pushed_z: fn fk_pushed_z
|
||||
players: fn fk_players
|
||||
player_on: fn fk_player_on
|
||||
player_x: fn fk_x
|
||||
player_y: fn fk_y
|
||||
player_z: fn fk_z
|
||||
hidden: fn fk_is_hidden
|
||||
noise: fn fk_noise_of
|
||||
scent: fn fk_scent_of
|
||||
stillness: fn fk_still_of
|
||||
wind: fn fk_wind_of
|
||||
wind_dir: fn fk_wind_to
|
||||
winterness: fn fk_winter_of
|
||||
about: fn fk_about_of
|
||||
per_range: fn fk_one
|
||||
lures: fn fk_count
|
||||
lure: fn fk_lure
|
||||
present: fn fk_present
|
||||
born: fn fk_on_born
|
||||
spot: fn fk_spot
|
||||
}
|
||||
|
||||
|
||||
test "a removed animal's record is taken by the next of its species, as new, and nothing more is made" (wildlife_st: mut WildlifeState, wildlife_tests_fake_st: mut WildlifeTestsFakeState) {
|
||||
fk_setup(wildlife_st, wildlife_tests_fake_st)
|
||||
let a = wildlife_new(wildlife_st, 0, 10.0, 10.0, false)
|
||||
expect(a != null)
|
||||
let key = a.key
|
||||
a.fed = 3
|
||||
a.spook = 50.0
|
||||
wildlife_remove(a)
|
||||
let b = wildlife_new(wildlife_st, 0, 40.0, 40.0, false)
|
||||
expect(b == a)
|
||||
expect_eq(b.key, key)
|
||||
expect(b.alive and b.shown)
|
||||
expect(b.fed == 0 and b.spook == 0.0)
|
||||
expect(wildlife_nearest(wildlife_st, 0, 40.0, 40.0, 5.0) == b)
|
||||
if b.nid != 0 { expect(wildlife_by_nid(wildlife_st, b.nid) == b) }
|
||||
for k in 0 .. 100 {
|
||||
wildlife_remove(b)
|
||||
expect(wildlife_new(wildlife_st, 0, float(k), 0.0, false) == b)
|
||||
}
|
||||
}
|
||||
test "a legend's record is never taken, and another species' neither" (wildlife_st: mut WildlifeState, wildlife_tests_fake_st: mut WildlifeTestsFakeState) {
|
||||
fk_setup(wildlife_st, wildlife_tests_fake_st)
|
||||
let l = wildlife_new(wildlife_st, 0, 10.0, 10.0, true)
|
||||
wildlife_remove(l)
|
||||
expect(wildlife_new(wildlife_st, 0, 20.0, 20.0, false) != l)
|
||||
let c = wildlife_new(wildlife_st, 0, 30.0, 30.0, false)
|
||||
wildlife_remove(c)
|
||||
expect(wildlife_new(wildlife_st, 1, 30.0, 30.0, false) != c)
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue