public void ValidateMatchesCache_WithMismatchedDelegateTypeIndices_Throws() { var cache = new EntityQueryCache(1); var builder = new EntityQueryBuilder().WithAll <EcsTestTag>(); int index; fixed(int *delegateTypes = new[] { 1 }) index = cache.CreateCachedQuery(0, k_DummyGroup, ref builder, delegateTypes, 1); Assert.Throws <InvalidOperationException>(() => cache.ValidateMatchesCache(index, ref builder, null, 0)); // note: can't use a `fixed` var inside a closure, so below we implement a manual Assert.Throws InvalidOperationException testException0 = null; try { fixed(int *anotherDelegateTypes0 = new[] { 2 }) cache.ValidateMatchesCache(index, ref builder, anotherDelegateTypes0, 1); } catch (InvalidOperationException x) { testException0 = x; } Assert.NotNull(testException0); InvalidOperationException testException1 = null; try { fixed(int *anotherDelegateTypes1 = new[] { 1, 2 }) cache.ValidateMatchesCache(index, ref builder, anotherDelegateTypes1, 2); } catch (InvalidOperationException x) { testException1 = x; } Assert.NotNull(testException1); }
public void CalcUsedCacheCount_WithFullCache_ReturnsCorrectNumber() { var cache = new EntityQueryCache(1); SimpleWrapCreateCachedQuery(cache, 0, k_DummyGroup); Assert.AreEqual(1, cache.CalcUsedCacheCount()); }
public void CreateCachedQuery_WithExistingHash_Throws() { var cache = new EntityQueryCache(1); SimpleWrapCreateCachedQuery(cache, 0, k_DummyGroup); Assert.Throws <InvalidOperationException>(() => SimpleWrapCreateCachedQuery(cache, 0, k_DummyGroup)); }
public void FindQueryInCache_WithEmptyCache_ReturnsErrorIndex() { var cache = new EntityQueryCache(1); var found = cache.FindQueryInCache(0); Assert.Less(found, 0); }
static void SimpleWrapCreateCachedQuery(EntityQueryCache cache, uint hash, EntityQuery group) { #if ENABLE_UNITY_COLLECTIONS_CHECKS var builder = new EntityQueryBuilder(); cache.CreateCachedQuery(hash, group, ref builder, null, 0); #else cache.CreateCachedQuery(hash, group); #endif }
public void CreateCachedQuery_OverflowWithCacheSize1_ResizesAndWarns() { var cache = new EntityQueryCache(1); SimpleWrapCreateCachedQuery(cache, 0, k_DummyGroup); LogAssert.Expect(LogType.Error, k_ResizeError); SimpleWrapCreateCachedQuery(cache, 1, k_DummyGroup); }
public void GetCachedQuery_WithValidIndex_ReturnsGroup() { var cache = new EntityQueryCache(1); SimpleWrapCreateCachedQuery(cache, 0, k_DummyGroup); var group = cache.GetCachedQuery(0); Assert.AreEqual(k_DummyGroup, group); }
public void FindQueryInCache_WithHashNotFound_ReturnsErrorIndex() { var cache = new EntityQueryCache(1); SimpleWrapCreateCachedQuery(cache, 0, k_DummyGroup); var found = cache.FindQueryInCache(1); Assert.Less(found, 0); }
public void FindQueryInCache_WithHashFound_ReturnsFoundIndex() { var cache = new EntityQueryCache(2); SimpleWrapCreateCachedQuery(cache, 0, k_DummyGroup); SimpleWrapCreateCachedQuery(cache, 1, k_DummyGroup); var found = cache.FindQueryInCache(1); Assert.AreEqual(1, found); }
public void ValidateMatchesCache_WithMismatchedBuilder_Throws() { var cache = new EntityQueryCache(1); var builder = new EntityQueryBuilder().WithAll <EcsTestTag>(); var index = cache.CreateCachedQuery(0, k_DummyGroup, ref builder, null, 0); var anotherBuilder = new EntityQueryBuilder(); Assert.IsFalse(builder.ShallowEquals(ref anotherBuilder)); Assert.Throws <InvalidOperationException>(() => cache.ValidateMatchesCache(index, ref anotherBuilder, null, 0)); }
public void CreateCachedQuery_OverflowWithCacheSize1_ResizesAndWarns() { var cache = new EntityQueryCache(1); SimpleWrapCreateCachedQuery(cache, 0, k_DummyGroup); #if UNITY_DOTSRUNTIME LogAssert.ExpectReset(); #endif LogAssert.Expect(LogType.Error, k_ResizeError); SimpleWrapCreateCachedQuery(cache, 1, k_DummyGroup); LogAssert.NoUnexpectedReceived(); }
public void CreateCachedQuery_OverflowWithCacheSize4_ResizesByAtLeastHalf() { var cache = new EntityQueryCache(4); SimpleWrapCreateCachedQuery(cache, 0, k_DummyGroup); SimpleWrapCreateCachedQuery(cache, 1, k_DummyGroup); SimpleWrapCreateCachedQuery(cache, 2, k_DummyGroup); SimpleWrapCreateCachedQuery(cache, 3, k_DummyGroup); LogAssert.Expect(LogType.Error, k_ResizeError); SimpleWrapCreateCachedQuery(cache, 4, k_DummyGroup); // this should not error SimpleWrapCreateCachedQuery(cache, 5, k_DummyGroup); }
public void ValidateMatchesCache_WithValidMatch_DoesNotThrow() { var cache = new EntityQueryCache(1); int index; fixed(int *delegateTypes = new[] { 1 }) { var builder = new EntityQueryBuilder().WithAll <EcsTestTag>(); index = cache.CreateCachedQuery(0, k_DummyGroup, ref builder, delegateTypes, 1); } Assert.AreEqual(0, index); var testBuilder = new EntityQueryBuilder().WithAll <EcsTestTag>(); fixed(int *testDelegateTypes = new[] { 1 }) cache.ValidateMatchesCache(index, ref testBuilder, testDelegateTypes, 1); }
public void CreateCachedQuery_OverflowWithCacheSize4_ResizesByAtLeastHalf() { var cache = new EntityQueryCache(4); SimpleWrapCreateCachedQuery(cache, 0, k_DummyGroup); SimpleWrapCreateCachedQuery(cache, 1, k_DummyGroup); SimpleWrapCreateCachedQuery(cache, 2, k_DummyGroup); SimpleWrapCreateCachedQuery(cache, 3, k_DummyGroup); #if UNITY_DOTSRUNTIME LogAssert.ExpectReset(); #endif LogAssert.Expect(LogType.Error, k_ResizeError); SimpleWrapCreateCachedQuery(cache, 4, k_DummyGroup); LogAssert.NoUnexpectedReceived(); // this should not error SimpleWrapCreateCachedQuery(cache, 5, k_DummyGroup); LogAssert.NoUnexpectedReceived(); }
public void CreateCachedQuery_WithNullGroup_Throws() { var cache = new EntityQueryCache(1); Assert.Throws <ArgumentNullException>(() => SimpleWrapCreateCachedQuery(cache, 2, null)); }
public void GetCachedQuery_WithInvalidIndex_Throws() { var cache = new EntityQueryCache(1); Assert.Throws <IndexOutOfRangeException>(() => cache.GetCachedQuery(1)); }
public void CalcUsedCacheCount_WithEmptyCache_ReturnsZero() { var cache = new EntityQueryCache(1); Assert.AreEqual(0, cache.CalcUsedCacheCount()); }