Files
cell/tests/pronto.cm
2026-02-25 17:43:01 -06:00

105 lines
3.1 KiB
Plaintext

// Test pronto functions
// Tests for fallback, parallel, race, sequence
var test_count = 0
function make_requestor(name, delay_seconds, should_succeed) {
return function(callback, value) {
log.console(`Starting ${name} with value: ${value}`)
if (delay_seconds > 0) {
$delay(function() {
if (should_succeed) {
log.console(`${name} succeeded with: ${value + 1}`)
callback(value + 1)
} else {
log.console(`${name} failed`)
callback(null, `${name} error`)
}
}, delay_seconds)
} else {
if (should_succeed) {
log.console(`${name} succeeded immediately with: ${value + 1}`)
callback(value + 1)
} else {
log.console(`${name} failed immediately`)
callback(null, `${name} error`)
}
}
}
}
return {
test_fallback: function() {
log.console("Testing fallback...")
var req1 = make_requestor("fallback_req1", 0.1, false) // fails
var req2 = make_requestor("fallback_req2", 0.1, true) // succeeds
var req3 = make_requestor("fallback_req3", 0.1, true) // should not run
fallback([req1, req2, req3])(function(result, reason) {
if (result != null) {
log.console(`Fallback succeeded: ${result}`)
} else {
log.console(`Fallback failed: ${reason}`)
}
}, 10)
},
test_parallel: function() {
log.console("Testing parallel...")
var req1 = make_requestor("parallel_req1", 0.2, true)
var req2 = make_requestor("parallel_req2", 0.1, true)
var req3 = make_requestor("parallel_req3", 0.3, true)
parallel([req1, req2, req3])(function(results, reason) {
if (results != null) {
log.console(`Parallel results: ${results}`)
} else {
log.console(`Parallel failed: ${reason}`)
}
}, 100)
},
test_race: function() {
log.console("Testing race...")
var req1 = make_requestor("race_req1", 0.3, true) // slow
var req2 = make_requestor("race_req2", 0.1, true) // fast winner
var req3 = make_requestor("race_req3", 0.2, true) // medium
race([req1, req2, req3])(function(result, reason) {
if (result != null) {
log.console(`Race winner: ${result}`)
} else {
log.console(`Race failed: ${reason}`)
}
}, 200)
},
test_sequence: function() {
log.console("Testing sequence...")
var req1 = make_requestor("seq_req1", 0.1, true)
var req2 = make_requestor("seq_req2", 0.1, true)
var req3 = make_requestor("seq_req3", 0.1, true)
sequence([req1, req2, req3])(function(result, reason) {
if (result != null) {
log.console(`Sequence result: ${result}`)
} else {
log.console(`Sequence failed: ${reason}`)
}
}, 1000)
},
test_immediate_requestors: function() {
log.console("Testing immediate requestors...")
var req1 = make_requestor("imm1", 0, true)
var req2 = make_requestor("imm2", 0, true)
sequence([req1, req2])(function(result, reason) {
if (result != null) {
log.console(`Immediate sequence result: ${result}`)
} else {
log.console(`Immediate sequence failed: ${reason}`)
}
}, 0)
}
}