public void TestTrackingLostRaised()
        {
            List <ulong> found = new List <ulong>();

            BodyTrackingProcessor processor = new BodyTrackingProcessor();

            ulong lostBodyId = 256;

            var firstFrame = new KinectBody[]
            {
                FakeBodies.FakeRandomBody(128, true),
                FakeBodies.FakeRandomBody(lostBodyId, true),
                FakeBodies.FakeRandomBody(32, false)
            };

            processor.Next(firstFrame);

            //Register to event now
            processor.BodyTrackingLost += (s, e) => found.Add(e.Body.TrackingId);

            ulong newBodyId = 17;

            var secondFrame = new KinectBody[]
            {
                FakeBodies.FakeRandomBody(128, true),
                FakeBodies.FakeRandomBody(newBodyId, true),
            };

            processor.Next(secondFrame);

            Assert.AreEqual(found.Count, 1);
            Assert.AreEqual(found.Contains(lostBodyId), true);
        }
        public void TestValidRightClosed()
        {
            KinectBody body = FakeBodies.FakeRandomBody(128, true);
            var        args = new KinectHandStateEventArgs(body, HandType.Right, Microsoft.Kinect.HandState.Closed);

            Assert.AreEqual(body, args.Body);
            Assert.AreEqual(HandType.Right, args.HandType);
            Assert.AreEqual(Microsoft.Kinect.HandState.Closed, args.PreviousHandState);
        }
        public void TestValidLeftOpen()
        {
            KinectBody body = FakeBodies.FakeRandomBody(128, true);
            var        args = new KinectHandStateEventArgs(body, HandType.Left, Microsoft.Kinect.HandState.Open);

            Assert.AreEqual(body, args.Body);
            Assert.AreEqual(HandType.Left, args.HandType);
            Assert.AreEqual(Microsoft.Kinect.HandState.Open, args.PreviousHandState);
        }
        public void TestTrackingFirstRaised()
        {
            bool isRaised = false;
            BodyTrackingProcessor processor = new BodyTrackingProcessor();

            processor.BodyTrackingStarted += (s, e) => isRaised = true;

            var dataSet = new KinectBody[]
            {
                FakeBodies.FakeRandomBody(128, true)
            };

            processor.Next(dataSet);

            Assert.AreEqual(isRaised, true);
        }
        public void TestFindByIdFalse()
        {
            KinectBody[] bodies = new KinectBody[]
            {
                FakeBodies.FakeRandomBody(10, true),
                FakeBodies.FakeRandomBody(20, true),
                FakeBodies.FakeRandomBody(30, false),
                FakeBodies.FakeRandomBody(40, true),
                FakeBodies.FakeRandomBody(50, true),
                FakeBodies.FakeRandomBody(60, false),
            };

            var nomatch = FakeBodies.FakeRandomBody(128, false);

            Assert.AreEqual(nomatch.FindById(bodies), null);
        }
        public void TestFindById()
        {
            KinectBody[] bodies = new KinectBody[]
            {
                FakeBodies.FakeRandomBody(10, true),
                FakeBodies.FakeRandomBody(20, true),
                FakeBodies.FakeRandomBody(30, false),
                FakeBodies.FakeRandomBody(40, true),
                FakeBodies.FakeRandomBody(50, true),
                FakeBodies.FakeRandomBody(60, false),
            };

            var match0 = FakeBodies.FakeRandomBody(30, false);

            Assert.AreEqual(match0.FindById(bodies), bodies[2]);
        }
        public void TestContainsId()
        {
            KinectBody[] bodies = new KinectBody[]
            {
                FakeBodies.FakeRandomBody(10, true),
                FakeBodies.FakeRandomBody(20, true),
                FakeBodies.FakeRandomBody(30, false),
                FakeBodies.FakeRandomBody(40, true),
                FakeBodies.FakeRandomBody(50, true),
                FakeBodies.FakeRandomBody(60, false),
            };

            var match0 = FakeBodies.FakeRandomBody(10, false);

            Assert.AreEqual(match0.ContainsId(bodies), true);

            var match1 = FakeBodies.FakeRandomBody(40, false);

            Assert.AreEqual(match1.ContainsId(bodies), true);
        }
        public void TestTrackedOnly()
        {
            KinectBody[] bodies = new KinectBody[]
            {
                FakeBodies.FakeRandomBody(10, true),
                FakeBodies.FakeRandomBody(20, true),
                FakeBodies.FakeRandomBody(30, false),
                FakeBodies.FakeRandomBody(40, true),
                FakeBodies.FakeRandomBody(50, true),
                FakeBodies.FakeRandomBody(60, false),
            };

            var filtered = bodies.TrackedOnly().ToArray();

            Assert.AreEqual(filtered.Length, 4);
            Assert.AreEqual(filtered.Contains(bodies[0]), true);
            Assert.AreEqual(filtered.Contains(bodies[1]), true);
            Assert.AreEqual(filtered.Contains(bodies[3]), true);
            Assert.AreEqual(filtered.Contains(bodies[4]), true);
        }
        public void TestFirstFrame2in1out()
        {
            List <ulong> found = new List <ulong>();

            BodyTrackingProcessor processor = new BodyTrackingProcessor();

            processor.BodyTrackingStarted += (s, e) => found.Add(e.Body.TrackingId);

            var dataSet = new KinectBody[]
            {
                FakeBodies.FakeRandomBody(128, true),
                FakeBodies.FakeRandomBody(256, true),
                FakeBodies.FakeRandomBody(32, false)
            };

            processor.Next(dataSet);

            Assert.AreEqual(found.Count, 2);
            Assert.AreEqual(found.Contains(128), true);
            Assert.AreEqual(found.Contains(256), true);
        }