#include #include "../c++/data.hpp" namespace { namespace sch { using namespace saw::schema; using Int32Array = Array< Int32 >; } SAW_TEST("Data Native/Array Access with Data Native"){ using namespace saw; data prim{2u}; prim.at(1u).set(0); data i{1u}; auto& a = prim.at({i}); a.set(5); auto b = prim.at({i}); b.set(10); // Check if it's a reference being manipulated SAW_EXPECT(a.get() == 5, "'a' has unexpected value."); SAW_EXPECT(b.get() == 10, "'b' has unexpected value."); } SAW_TEST("Data Native/Indexing"){ using namespace saw; data foo{10u}; auto& b = foo.at(5u); b.set(10); auto foo_meta = foo.dims(); auto foo_mi = foo_meta.at(0u); for(uint64_t i{0u}; i < foo_mi.get(); ++i){ auto& a = foo.at(i); a.set(5 * i); } for(uint64_t i{0u}; i < foo_mi.get(); ++i){ auto& a = foo.at(i); SAW_EXPECT(a.get() == static_cast::type>(5*i), std::string{"5*i, but is "} + std::to_string(i)); } } SAW_TEST("Data CT/Fixed Array"){ using namespace saw; constexpr data> foo{{10,5}}; } }