Files
@ 38c129959044
Branch filter:
Location: CSY/reowolf/src/runtime2/tests/error_handling.rs - annotation
38c129959044
2.3 KiB
application/rls-services+xml
feat: transmitting ports
1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 1f78496722d1 | use super::*;
#[test]
fn test_unconnected_component_error() {
compile_and_create_component("
primitive interact_with_noone() {
u8[] array = { 5 };
auto value = array[1];
}", "interact_with_noone", no_args());
}
#[test]
fn test_connected_uncommunicating_component_error() {
compile_and_create_component("
primitive crashing_and_burning(out<u32> unused) {
u8[] array = { 1337 };
auto value = array[1337];
}
primitive sitting_idly_waiting(in<u32> never_providing) {
sync auto a = get(never_providing);
}
composite constructor() {
// Test one way
// channel a -> b;
// new sitting_idly_waiting(b);
// new crashing_and_burning(a);
// And the other way around
channel c -> d;
new crashing_and_burning(c);
new sitting_idly_waiting(d);
}", "constructor", no_args())
}
#[test]
fn test_connected_communicating_component_error() {
compile_and_create_component("
primitive send_and_fail(out<u32> tx) {
u8[] array = {};
sync {
put(tx, 0);
array[0] = 5;
}
}
primitive receive_once(in<u32> rx) {
sync auto a = get(rx);
}
composite constructor() {
channel a -> b;
new send_and_fail(a);
new receive_once(b);
channel c -> d;
new receive_once(d);
new send_and_fail(c);
}
", "constructor", no_args())
}
#[test]
fn test_failing_after_successful_sync() {
compile_and_create_component("
primitive put_and_fail(out<u8> tx) { sync put(tx, 1); u8 a = {}[0]; }
primitive get_and_fail(in<u8> rx) { sync auto a = get(rx); u8 a = {}[0]; }
primitive put_and_exit(out<u8> tx) { sync put(tx, 2); }
primitive get_and_exit(in<u8> rx) { sync auto a = get(rx); }
composite constructor() {
{
channel a -> b;
new put_and_fail(a);
new get_and_exit(b);
}
{
channel a -> b;
new get_and_exit(b);
new put_and_fail(a);
}
{
channel a -> b;
new put_and_exit(a);
new get_and_fail(b);
}
{
channel a -> b;
new get_and_fail(b);
new put_and_exit(a);
}
}
", "constructor", no_args());
}
|