using Unity.Jobs; using Unity.Collections; using Unity.Burst; using Unity.Collections.Tests; internal class NativeMultiHashMapTestsFixture : CollectionsTestFixture { protected const int hashMapSize = 10 * 1024; [BurstCompile(CompileSynchronously = true)] public struct MultiHashMapSimpleWriteJob : IJob { public NativeMultiHashMap<int, int>.ParallelWriter hashMap; public void Execute() { hashMap.Add(0, 0); } } // Burst error BC1005: The `try` construction is not supported // [BurstCompile(CompileSynchronously = true)] public struct MultiHashMapWriteParallelForJob : IJobParallelFor { public NativeMultiHashMap<int, int>.ParallelWriter hashMap; public NativeArray<int> status; public int keyMod; public void Execute(int i) { status[i] = 0; try { hashMap.Add(i % keyMod, i); } catch (System.InvalidOperationException) { status[i] = -2; } } } [BurstCompile(CompileSynchronously = true)] public struct MultiHashMapReadParallelForJob : IJobParallelFor { [ReadOnly] public NativeMultiHashMap<int, int> hashMap; public NativeArray<int> values; public int keyMod; public void Execute(int i) { int iSquared; values[i] = -1; NativeMultiHashMapIterator<int> it; if (hashMap.TryGetFirstValue(i % keyMod, out iSquared, out it)) { int count = 0; do { if (iSquared % keyMod != i % keyMod) { values[i] = -2; return; } ++count; } while (hashMap.TryGetNextValue(out iSquared, ref it)); values[i] = count; } } } }