use inkling::*; #[test] fn global_variables_are_parsed_when_the_story_is_read() { let content = " VAR value = 3.6 VAR unit = \"Röntgen\" VAR is_hazardous = false The latest measurement is {value} {unit}. "; let mut story = read_story_from_string(content).unwrap(); let mut line_buffer = Vec::new(); story.start().unwrap(); story.resume(&mut line_buffer).unwrap(); assert_eq!( &line_buffer[0].text, "The latest measurement is 3.6 Röntgen.\n" ); } #[test] fn global_variables_can_be_changed_from_the_caller() { let content = " VAR value = 3.6 VAR unit = \"Röntgen\" VAR is_hazardous = false The latest measurement is {value} {unit}. "; let mut story = read_story_from_string(content).unwrap(); let mut line_buffer = Vec::new(); story.set_variable("value", 15000.0).unwrap(); story.start().unwrap(); story.resume(&mut line_buffer).unwrap(); assert_eq!( &line_buffer[0].text, "The latest measurement is 15000 Röntgen.\n" ); } #[test] fn variables_can_be_used_in_conditions() { let content = " VAR value = 3.6 VAR threshold = 10 VAR unit = \"Röntgen\" -> root == root The latest measurement is {value} {unit}. {value < threshold: Not terrible, not great. | Oh no.} + [Redo measurement] -> root "; let mut story = read_story_from_string(content).unwrap(); let mut line_buffer = Vec::new(); story.start().unwrap(); story.resume(&mut line_buffer).unwrap(); assert_eq!( &line_buffer[0].text, "The latest measurement is 3.6 Röntgen. Not terrible, not great.\n" ); story.set_variable("value", 15000.0).unwrap(); line_buffer.clear(); story.make_choice(0).unwrap(); story.resume(&mut line_buffer).unwrap(); assert_eq!( &line_buffer[0].text, "The latest measurement is 15000 Röntgen. Oh no.\n" ); } #[test] fn variables_can_be_changed_and_influence_the_story_flow_in_conditions() { let content = " VAR value = 3.6 VAR unit = \"Röntgen\" VAR is_hazardous = false -> root == root The latest measurement is {value} {unit}. {not is_hazardous: Not terrible, not great. | Oh no.} + [Redo measurement] -> root "; let mut story = read_story_from_string(content).unwrap(); let mut line_buffer = Vec::new(); story.start().unwrap(); story.resume(&mut line_buffer).unwrap(); assert_eq!( &line_buffer[0].text, "The latest measurement is 3.6 Röntgen. Not terrible, not great.\n" ); story.set_variable("value", 15000.0).unwrap(); story.set_variable("is_hazardous", true).unwrap(); line_buffer.clear(); story.make_choice(0).unwrap(); story.resume(&mut line_buffer).unwrap(); assert_eq!( &line_buffer[0].text, "The latest measurement is 15000 Röntgen. Oh no.\n" ); }