Beispiel #1
0
        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);
        }
Beispiel #2
0
        public void CalcUsedCacheCount_WithFullCache_ReturnsCorrectNumber()
        {
            var cache = new EntityQueryCache(1);

            SimpleWrapCreateCachedQuery(cache, 0, k_DummyGroup);

            Assert.AreEqual(1, cache.CalcUsedCacheCount());
        }
Beispiel #3
0
        public void CreateCachedQuery_WithExistingHash_Throws()
        {
            var cache = new EntityQueryCache(1);

            SimpleWrapCreateCachedQuery(cache, 0, k_DummyGroup);

            Assert.Throws <InvalidOperationException>(() => SimpleWrapCreateCachedQuery(cache, 0, k_DummyGroup));
        }
Beispiel #4
0
        public void FindQueryInCache_WithEmptyCache_ReturnsErrorIndex()
        {
            var cache = new EntityQueryCache(1);

            var found = cache.FindQueryInCache(0);

            Assert.Less(found, 0);
        }
Beispiel #5
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
 }
Beispiel #6
0
        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);
        }
Beispiel #7
0
        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);
        }
Beispiel #8
0
        public void FindQueryInCache_WithHashNotFound_ReturnsErrorIndex()
        {
            var cache = new EntityQueryCache(1);

            SimpleWrapCreateCachedQuery(cache, 0, k_DummyGroup);

            var found = cache.FindQueryInCache(1);

            Assert.Less(found, 0);
        }
Beispiel #9
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);
        }
Beispiel #10
0
        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();
        }
Beispiel #12
0
        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);
        }
Beispiel #13
0
        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();
        }
Beispiel #15
0
        public void CreateCachedQuery_WithNullGroup_Throws()
        {
            var cache = new EntityQueryCache(1);

            Assert.Throws <ArgumentNullException>(() => SimpleWrapCreateCachedQuery(cache, 2, null));
        }
Beispiel #16
0
        public void GetCachedQuery_WithInvalidIndex_Throws()
        {
            var cache = new EntityQueryCache(1);

            Assert.Throws <IndexOutOfRangeException>(() => cache.GetCachedQuery(1));
        }
Beispiel #17
0
        public void CalcUsedCacheCount_WithEmptyCache_ReturnsZero()
        {
            var cache = new EntityQueryCache(1);

            Assert.AreEqual(0, cache.CalcUsedCacheCount());
        }