reactive_scores/
reactive_scores.rs1#[macro_use]
2extern crate epoxy;
3
4use epoxy::ReactiveValue;
5
6fn main() {
7 let player_1_points = epoxy::ReactiveValue::new(4);
8 let player_1_multiplier = epoxy::ReactiveValue::new(1.0_f32);
9
10 let player_2_points = epoxy::ReactiveValue::new(5);
11 let player_2_multiplier = epoxy::ReactiveValue::new(1.0_f32);
12
13 let player_1_score = computed!(*player_1_points as f32 * player_1_multiplier);
14 let player_2_score = computed!(*player_2_points as f32 * player_2_multiplier);
15
16 let winner = computed! {
17 if (player_1_score == player_2_score) {
18 "Tie"
19 } else if (player_1_score > player_2_score) {
20 "Player 1"
21 } else {
22 "Player 2"
23 }
24 };
25
26 assert_eq!(*player_1_score.get(), 4_f32);
27 assert_eq!(*player_2_score.get(), 5_f32);
28 assert_eq!(*winner.get(), "Player 2");
29
30 player_1_multiplier.set(2.5_f32);
31
32 assert_eq!(*player_1_score.get(), 10_f32);
33 assert_eq!(*player_2_score.get(), 5_f32);
34 assert_eq!(*winner.get(), "Player 1");
35
36 player_2_points.set(9);
37
38 assert_eq!(*player_1_score.get(), 10_f32);
39 assert_eq!(*player_2_score.get(), 9_f32);
40 assert_eq!(*winner.get(), "Player 1");
41
42 player_2_points.set(10);
43
44 assert_eq!(*player_1_score.get(), 10_f32);
45 assert_eq!(*player_2_score.get(), 10_f32);
46 assert_eq!(*winner.get(), "Tie");
47}