public void Resize()
        {
            const int initialLength = 8;
            var       shared        = new SharedArray <Vector3>(initialLength);

            Vector3[] asManaged = shared;
            for (int i = 0; i < asManaged.Length; i++)
            {
                asManaged[i] = Vector3.one * i;
            }

            Assert.AreEqual(initialLength, shared.Length);
            Assert.AreEqual(initialLength, ((NativeArray <Vector3>)shared).Length);

            const int resizedLength = 16;

            shared.Resize(resizedLength);

            Vector3[] managedAfterResize = shared;
            // did data from before resize get preserved ?
            for (int i = 0; i < initialLength; i++)
            {
                Assert.AreEqual(Vector3.one * i, managedAfterResize[i]);
            }

            Assert.AreEqual(resizedLength, managedAfterResize.Length);
            Assert.AreEqual(resizedLength, ((NativeArray <Vector3>)shared).Length);
        }
        public void Resize_ThrowsIf_AnyJobsAreUsingData()
        {
            var shared = new SharedArray <Vector2>(4);

            AssertSafety.ThrowsIfAnyDataUsers_SingleCall(shared, () => shared.Resize(8));
        }