summaryrefslogtreecommitdiff
path: root/test/example/cpp-unit.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'test/example/cpp-unit.cpp')
-rw-r--r--test/example/cpp-unit.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/test/example/cpp-unit.cpp b/test/example/cpp-unit.cpp
index 9c95bb31c..41096a43a 100644
--- a/test/example/cpp-unit.cpp
+++ b/test/example/cpp-unit.cpp
@@ -599,12 +599,26 @@ void test_cost() {
void test_effects() {
PassOptions options;
Module module;
+
// Unreachables trap.
Unreachable unreachable;
assert_equal(EffectAnalyzer(options, module, &unreachable).trap, true);
+
// Nops... do not.
Nop nop;
assert_equal(EffectAnalyzer(options, module, &nop).trap, false);
+
+ // ArrayCopy can trap, reads arrays, and writes arrays (but not structs).
+ {
+ ArrayCopy arrayCopy(module.allocator);
+ EffectAnalyzer effects(options, module);
+ effects.visit(&arrayCopy);
+ assert_equal(effects.trap, true);
+ assert_equal(effects.readsArray, true);
+ assert_equal(effects.writesArray, true);
+ assert_equal(effects.readsStruct, false);
+ assert_equal(effects.writesStruct, false);
+ }
}
void test_literals() {