def random generator:&:stream:num -> result:num, fail?:bool, generator:&:stream:num [
local-scope
load-ingredients
{
break-if generator
result <- real-random
reply result, 0/false
}
result, fail?, generator <- read generator
]
def assume-random-numbers -> result:&:stream:num [
local-scope
load-ingredients
result-len:num <- copy 0
{
_, arg-received?:bool <- next-ingredient
break-unless arg-received?
result-len <- add result-len, 1
loop
}
rewind-ingredients
result-data:&:@:num <- new number:type, result-len
idx:num <- copy 0
{
curr:num, arg-received?:bool <- next-ingredient
break-unless arg-received?
*result-data <- put-index *result-data, idx, curr
idx <- add idx, 1
loop
}
result <- new-stream result-data
]
scenario random-numbers-in-scenario [
local-scope
source:&:stream:num <- assume-random-numbers 34, 35, 37
1:num/raw, 2:bool/raw <- random source
3:num/raw, 4:bool/raw <- random source
5:num/raw, 6:bool/raw <- random source
7:num/raw, 8:bool/raw <- random source
memory-should-contain [
1 <- 34
2 <- 0
3 <- 35
4 <- 0
5 <- 37
6 <- 0
7 <- 0
8 <- 1
]
]