diff --git a/src/runtime2/tests/mod.rs b/src/runtime2/tests/mod.rs index e1e36e0ebfa199dc82afa8adafc2ba6afe54037c..49a2f41a5183022d5f967d62d9efa27006c6e2e1 100644 --- a/src/runtime2/tests/mod.rs +++ b/src/runtime2/tests/mod.rs @@ -8,15 +8,44 @@ fn test_component_creation() { let pd = ProtocolDescription::parse(b" primitive nothing_at_all() { s32 a = 5; - print(\"hello\"); auto b = 5 + a; } ").expect("compilation"); let rt = Runtime::new(1, pd); - let prompt = rt.inner.protocol.new_component(b"", b"nothing_at_all", ValueGroup::new_stack(Vec::new())) - .expect("component creation"); - let comp = CompPDL::new(prompt, 0); - let (key, _) = rt.inner.create_pdl_component(comp, true); + for i in 0..20 { + let prompt = rt.inner.protocol.new_component(b"", b"nothing_at_all", ValueGroup::new_stack(Vec::new())) + .expect("component creation"); + let comp = CompPDL::new(prompt, 0); + let (key, _) = rt.inner.create_pdl_component(comp, true); + rt.inner.enqueue_work(key); + } +} + +#[test] +fn test_component_communication() { + let pd = ProtocolDescription::parse(b" + primitive sender(out o) { + print(\"sender\"); + sync put(o, 1); + } + primitive receiver(in i) { + print(\"receiver\"); + sync get(i); + } + composite constructor() { + channel o -> i; + print(\"creating sender\"); + new sender(o); + print(\"creating receiver\"); + new receiver(i); + print(\"done\"); + } + ").expect("compilation"); + let rt = Runtime::new(1, pd); + + let prompt = rt.inner.protocol.new_component(b"", b"constructor", ValueGroup::new_stack(Vec::new())) + .expect("creation"); + let (key, _) = rt.inner.create_pdl_component(CompPDL::new(prompt, 0), true); rt.inner.enqueue_work(key); } \ No newline at end of file