Skip to content

Commit b3d646e

Browse files
committed
using resource Input<Keycode> for example of test is more interesting
1 parent 63d8a0c commit b3d646e

File tree

1 file changed

+19
-21
lines changed

1 file changed

+19
-21
lines changed

tests/how_to_test_systems.rs

Lines changed: 19 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,10 @@
1-
use std::collections::HashMap;
2-
31
use bevy::prelude::*;
42

3+
#[derive(Default)]
54
struct Enemy {
65
hit_points: u32,
76
}
87

9-
struct CharacterTemplate {
10-
hit_points: HashMap<&'static str, u32>,
11-
}
12-
138
fn despawn_dead_enemies(mut commands: Commands, enemies: Query<(Entity, &Enemy)>) {
149
for (entity, enemy) in enemies.iter() {
1510
if enemy.hit_points == 0 {
@@ -24,10 +19,10 @@ fn hurt_enemies(mut enemies: Query<&mut Enemy>) {
2419
}
2520
}
2621

27-
fn spawn_enemy(mut commands: Commands, character_template: Res<CharacterTemplate>) {
28-
commands.spawn().insert(Enemy {
29-
hit_points: *character_template.hit_points.get("enemy").unwrap(),
30-
});
22+
fn spawn_enemy(mut commands: Commands, keyboard_input: Res<Input<KeyCode>>) {
23+
if keyboard_input.just_pressed(KeyCode::Space) {
24+
commands.spawn().insert(Enemy { hit_points: 5 });
25+
}
3126
}
3227

3328
#[test]
@@ -72,7 +67,7 @@ fn did_despawn_enemy() {
7267
}
7368

7469
#[test]
75-
fn spawned_from_resource() {
70+
fn spawn_enemy_using_input_resource() {
7671
// Setup world
7772
let mut world = World::default();
7873

@@ -81,18 +76,21 @@ fn spawned_from_resource() {
8176
update_stage.add_system(spawn_enemy.system());
8277

8378
// Setup test resource
84-
let mut hit_points = HashMap::new();
85-
hit_points.insert("enemy", 25);
86-
world.insert_resource(CharacterTemplate { hit_points });
79+
let mut input = Input::<KeyCode>::default();
80+
input.press(KeyCode::Space);
81+
world.insert_resource(input);
8782

8883
// Run systems
8984
update_stage.run(&mut world);
9085

91-
// Check resulting changes
92-
let mut query = world.query::<&Enemy>();
93-
let results = query
94-
.iter(&world)
95-
.map(|enemy| enemy.hit_points)
96-
.collect::<Vec<_>>();
97-
assert_eq!(results, vec![25]);
86+
// Check resulting changes, one entity has been spawned with `Enemy` component
87+
assert_eq!(world.query::<&Enemy>().iter(&world).len(), 1);
88+
89+
world.get_resource_mut::<Input<KeyCode>>().unwrap().update();
90+
91+
// Run systems
92+
update_stage.run(&mut world);
93+
94+
// Check resulting changes, no new entity has been spawned
95+
assert_eq!(world.query::<&Enemy>().iter(&world).len(), 1);
9896
}

0 commit comments

Comments
 (0)