diff --git a/tests/accessor.cpp b/tests/accessor.cpp index 0ca6e8cc06..ce0efa1efe 100644 --- a/tests/accessor.cpp +++ b/tests/accessor.cpp @@ -66,6 +66,35 @@ TEST_CASE("view.withAccessor.Default.SharedPtr") CHECK(addr == addr2); } +namespace +{ + struct AsScopedUpdate + { + template + LLAMA_FN_HOST_ACC_INLINE auto operator()(Reference&& r) const + { + return llama::ScopedUpdate(r); + } + }; +} // namespace + +TEST_CASE("view.withAccessor.AsScopedUpdate") +{ + auto change = [](int& v) { v = 42; }; + + auto view = llama::withAccessor(llama::allocView( + llama::mapping::Byteswap, Vec3I, llama::mapping::BindAoS<>::fn>{{}}, + llama::bloballoc::SharedPtr{})); + + { + auto x = view(0)(tag::X{}); + change(x); + CHECK(x == 42); + CHECK(view(0)(tag::X{}) == 0); + } + CHECK(view(0)(tag::X{}) == 42); +} + TEMPLATE_TEST_CASE( "view.withAccessor.shallowCopy.Default", "", @@ -171,4 +200,4 @@ TEST_CASE("view.allocView.Stacked") llama::accessor::Stacked{}); iotaFillView(view); iotaCheckView(view); -} \ No newline at end of file +}