예제 #1
0
        public void TestNative()
        {
            const int count = 100;
            var       data  = new int[count];
            var       rand  = new Random((int)DateTime.Now.Ticks);

            for (var i = count - 1; i >= 0; i--)
            {
                data[i] = rand.Next();
            }

            using var q = new NativePriorityQueue <int>(0, count);
            for (int i = 0; i < count; i++)
            {
                q.Enqueue(data[i]);
                Assert.True(q.Count == i + 1);
            }

            Array.Sort(data);
            var t = 0;

            while (!q.IsEmpty)
            {
                Assert.True(q.Peek() == data[t++]);
                q.Dequeue();
            }
        }
예제 #2
0
        public void NativePriorityQueue()
        {
            foreach (var vec4 in _data)
            {
                _native.Enqueue(vec4, _cmp);
            }

            while (!_native.IsEmpty)
            {
                _native.Dequeue(_cmp);
            }
        }
예제 #3
0
        public void TestPriorityQueue()
        {
            using (var pq = new NativePriorityQueue <int>(Allocator.Temp))
            {
                pq.Enqueue(2);
                pq.Enqueue(3);
                pq.Enqueue(1);
                pq.Enqueue(666);
                pq.Enqueue(23);
                pq.Enqueue(233);

                Assert.True(pq.Dequeue() == 1);
                Assert.True(pq.Dequeue() == 2);
                Assert.True(pq.Dequeue() == 3);
                Assert.True(pq.Dequeue() == 23);
                Assert.True(pq.Dequeue() == 233);
                Assert.True(pq.Dequeue() == 666);
            }
        }