feat: 又是更新了一大堆

This commit is contained in:
claude-code-best
2026-04-21 21:38:13 +08:00
parent f74492617b
commit 970fcd627f
22 changed files with 417 additions and 126 deletions

View File

@@ -1,7 +1,7 @@
import { describe, test, expect } from 'bun:test'
import type { SpeciesId, Creature } from '../types'
import { generateCreature, calculateStats, getCreatureName, getTotalEV, recalculateLevel } from '../core/creature'
import { SPECIES_DATA } from '../data/species'
import { getSpeciesData } from '../data/species'
describe('generateCreature', () => {
test('creates a creature with correct defaults', () => {
@@ -10,7 +10,7 @@ describe('generateCreature', () => {
expect(c.level).toBe(1)
expect(c.xp).toBe(0)
expect(c.totalXp).toBe(0)
expect(c.friendship).toBe(SPECIES_DATA.bulbasaur.baseHappiness)
expect(c.friendship).toBe(getSpeciesData('bulbasaur').baseHappiness)
expect(c.isShiny).toBeDefined()
expect(c.id).toBeTruthy()
expect(Object.values(c.iv).every((v) => v >= 0 && v <= 31)).toBe(true)

View File

@@ -4,10 +4,11 @@ import type { BuddyData } from '../types'
import { generateCreature } from '../core/creature'
function makeBuddyData(overrides: Partial<BuddyData['stats']> = {}): BuddyData {
const creature = generateCreature('bulbasaur')
return {
version: 1,
activeCreatureId: 'test',
creatures: [generateCreature('bulbasaur')],
party: [creature.id, null, null, null, null, null],
creatures: [creature],
eggs: [],
dex: [{ speciesId: 'bulbasaur', discoveredAt: Date.now(), caughtCount: 1, bestLevel: 1 }],
stats: {

View File

@@ -1,6 +1,6 @@
import { describe, test, expect } from 'bun:test'
import { determineGender, getGenderSymbol } from '../core/gender'
import { SPECIES_DATA } from '../data/species'
import { getSpeciesData } from '../data/species'
describe('determineGender', () => {
test('genderless species', () => {
@@ -8,12 +8,12 @@ describe('determineGender', () => {
// Venusaur has genderRate 1 (12.5% female)
// For testing genderless, we'd need a species with genderRate -1
// None in MVP are genderless, so test the basic logic
const pikachu = SPECIES_DATA.pikachu
const pikachu = getSpeciesData('pikachu')
expect(pikachu.genderRate).toBe(4)
})
test('pikachu 50% female ratio', () => {
const pikachu = SPECIES_DATA.pikachu
const pikachu = getSpeciesData('pikachu')
let males = 0
let females = 0
for (let seed = 0; seed < 1000; seed++) {
@@ -27,7 +27,7 @@ describe('determineGender', () => {
})
test('starters are ~12.5% female', () => {
const bulbasaur = SPECIES_DATA.bulbasaur
const bulbasaur = getSpeciesData('bulbasaur')
let females = 0
for (let seed = 0; seed < 1000; seed++) {
if (determineGender(bulbasaur, seed) === 'female') females++