You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
89 lines
2.5 KiB
89 lines
2.5 KiB
import { init_game, bake_items, is_menu_item_enabled } from './game.js'; |
|
|
|
describe('init_game', () => { |
|
test('should create a new game state with default values', () => { |
|
const game = init_game(); |
|
|
|
expect(game.player_money).toBe(0); |
|
expect(game.time.day).toBe(1); |
|
expect(game.time.phase).toBe('planning'); |
|
expect(game.oven.capacity).toBe(4); |
|
expect(game.oven.used).toBe(0); |
|
}); |
|
|
|
test('should start with zero supplies', () => { |
|
const game = init_game(); |
|
|
|
expect(game.supplies.flour).toBe(0); |
|
expect(game.supplies.eggs).toBe(0); |
|
expect(game.supplies.sugar).toBe(0); |
|
}); |
|
}); |
|
|
|
describe('is_menu_item_enabled', () => { |
|
test('should return false when supplies are insufficient', () => { |
|
const game = init_game(); |
|
// No supplies, so nothing should be enabled |
|
expect(is_menu_item_enabled(game, 'bread')).toBe(false); |
|
expect(is_menu_item_enabled(game, 'cookies')).toBe(false); |
|
}); |
|
|
|
test('should return true when supplies are sufficient', () => { |
|
const game = init_game(); |
|
// Add enough supplies for bread (flour: 2, yeast: 1, milk: 1) |
|
game.supplies.flour = 10; |
|
game.supplies.yeast = 5; |
|
game.supplies.milk = 5; |
|
|
|
expect(is_menu_item_enabled(game, 'bread')).toBe(true); |
|
}); |
|
|
|
test('should return false for non-existent menu item', () => { |
|
const game = init_game(); |
|
expect(is_menu_item_enabled(game, 'pizza')).toBe(false); |
|
}); |
|
}); |
|
|
|
describe('bake_items', () => { |
|
test('should deduct ingredients when baking', () => { |
|
const game = init_game(); |
|
// Add supplies for bread |
|
game.supplies.flour = 10; |
|
game.supplies.yeast = 5; |
|
game.supplies.milk = 5; |
|
|
|
const result = bake_items(game, 'bread'); |
|
|
|
// Bread uses: flour: 2, yeast: 1, milk: 1 |
|
expect(result.supplies.flour).toBe(8); |
|
expect(result.supplies.yeast).toBe(4); |
|
expect(result.supplies.milk).toBe(4); |
|
}); |
|
|
|
test('should increase oven used slots', () => { |
|
const game = init_game(); |
|
game.supplies.flour = 10; |
|
game.supplies.yeast = 5; |
|
game.supplies.milk = 5; |
|
|
|
const result = bake_items(game, 'bread'); |
|
|
|
// Bread uses 1 oven slot |
|
expect(result.oven.used).toBe(1); |
|
}); |
|
|
|
test('should not mutate the original game state', () => { |
|
const game = init_game(); |
|
game.supplies.flour = 10; |
|
game.supplies.yeast = 5; |
|
game.supplies.milk = 5; |
|
|
|
bake_items(game, 'bread'); |
|
|
|
// Original should be unchanged |
|
expect(game.supplies.flour).toBe(10); |
|
expect(game.oven.used).toBe(0); |
|
}); |
|
}); |
|
|
|
|
|
|