public void EqualityTest()
        {
            try {
                IavaSkeleton[] skeletons = new IavaSkeleton[] { new IavaSkeleton(), new IavaSkeleton(), new IavaSkeleton(),
                                                                new IavaSkeleton(), new IavaSkeleton(), new IavaSkeleton() };

                IavaSkeletonFrame_Accessor accessor1 = new IavaSkeletonFrame_Accessor()
                {
                    FloorClipPlane = Tuple.Create(1.0f, 2.0f, 3.0f, 4.0f),
                    FrameNumber = 14,
                    Skeletons = skeletons,
                    Timestamp = 123456789
                };

                IavaSkeletonFrame_Accessor accessor2 = new IavaSkeletonFrame_Accessor()
                {
                    FloorClipPlane = Tuple.Create(1.0f, 2.0f, 3.0f, 4.0f),
                    FrameNumber = 14,
                    Skeletons = skeletons,
                    Timestamp = 123456789
                };

                IavaSkeletonFrame_Accessor accessor3 = new IavaSkeletonFrame_Accessor()
                {
                    FloorClipPlane = Tuple.Create(4.0f, 3.0f, 2.0f, 1.0f),
                    FrameNumber = 18,
                    Skeletons = skeletons,
                    Timestamp = 123456789
                };

                IavaSkeletonFrameReadyEventArgs eventArgs1 = new IavaSkeletonFrameReadyEventArgs((IavaSkeletonFrame)accessor1.Target);
                IavaSkeletonFrameReadyEventArgs eventArgs2 = new IavaSkeletonFrameReadyEventArgs((IavaSkeletonFrame)accessor2.Target);
                IavaSkeletonFrameReadyEventArgs eventArgs3 = new IavaSkeletonFrameReadyEventArgs((IavaSkeletonFrame)accessor3.Target);
                IavaSkeletonFrameReadyEventArgs eventArgs4 = new IavaSkeletonFrameReadyEventArgs((IavaSkeletonFrame)null);
                IavaSkeletonFrameReadyEventArgs eventArgs5 = new IavaSkeletonFrameReadyEventArgs((IavaSkeletonFrame)null);

                // Make sure eventArgs1 does not equal null
                Assert.IsFalse(eventArgs1 == null);

                // Make sure null does not equal eventArgs1
                Assert.IsFalse(null == eventArgs1);

                // Make sure eventArgs1 and eventArgs3 are not equal
                Assert.IsFalse(eventArgs1 == eventArgs3);

                // Make sure eventArgs1 and eventArgs2 are equal
                Assert.IsTrue(eventArgs1 == eventArgs2);

                // Make sure eventArgs4 and eventArgs5 are equal
                Assert.IsTrue(eventArgs4 == eventArgs5);

                // Make sure eventArgs1 equals itself
                Assert.IsTrue(eventArgs1 == eventArgs1);
            }
            catch (Exception ex) {
                Assert.Fail(ex.Message);
            }
        }
        public void EqualityTest()
        {
            try {
                // Define once to populate the various objects
                IavaSkeleton[] skeletonArray = new IavaSkeleton[] { new IavaSkeleton(), new IavaSkeleton(), new IavaSkeleton(),
                                                                    new IavaSkeleton(), new IavaSkeleton(), new IavaSkeleton()};

                IavaSkeletonFrame_Accessor accessor1 = new IavaSkeletonFrame_Accessor()
                {
                    FloorClipPlane = new Tuple<float, float, float, float>(1.0f, 2.0f, 2.5f, 0.3f),
                    FrameNumber = 456,
                    Skeletons = skeletonArray,
                    Timestamp = 123456789
                };

                IavaSkeletonFrame_Accessor accessor2 = new IavaSkeletonFrame_Accessor()
                {
                    FloorClipPlane = new Tuple<float, float, float, float>(1.0f, 2.0f, 2.5f, 0.3f),
                    FrameNumber = 456,
                    Skeletons = skeletonArray,
                    Timestamp = 123456789
                };

                IavaSkeletonFrame_Accessor accessor3 = new IavaSkeletonFrame_Accessor()
                {
                    FloorClipPlane = new Tuple<float, float, float, float>(7.0f, 2.1f, 2.5f, 0.3f),
                    FrameNumber = 487,
                    Skeletons = skeletonArray,
                    Timestamp = 123456789
                };

                IavaSkeletonFrame frame1 = (IavaSkeletonFrame)accessor1.Target;
                IavaSkeletonFrame frame2 = (IavaSkeletonFrame)accessor2.Target;
                IavaSkeletonFrame frame3 = (IavaSkeletonFrame)accessor3.Target;

                // Make sure eventArgs1 does not equal null
                Assert.IsFalse(frame1 == null);

                // Make sure null does not equal eventArgs1
                Assert.IsFalse(null == frame1);

                // Make sure eventArgs1 and eventArgs3 are not equal
                Assert.IsFalse(frame1 == frame3);

                // Make sure eventArgs1 and eventArgs2 are equal
                Assert.IsTrue(frame1 == frame2);

                // Make sure eventArgs1 equals itself
                Assert.IsTrue(frame1 == frame1);
            }
            catch (Exception ex) {
                Assert.Fail(ex.Message);
            }
        }
        /// <summary>
        /// Handles the job of initializing a IavaSkeletonFrame that can be used by the Unit Tests
        /// </summary>
        /// <returns></returns>
        IavaSkeletonFrame CreateSkeletonFrame()
        {
            IavaSkeleton[] skeletons = new IavaSkeleton[] { new IavaSkeleton(), new IavaSkeleton(), new IavaSkeleton(),
                                                            new IavaSkeleton(), new IavaSkeleton(), new IavaSkeleton() };

            IavaSkeletonFrame_Accessor accessor = new IavaSkeletonFrame_Accessor()
            {
                FloorClipPlane = Tuple.Create(1.0f, 2.0f, 3.0f, 4.0f),
                FrameNumber = 14,
                Skeletons = skeletons,
                Timestamp = 123456789
            };

            return (IavaSkeletonFrame)accessor.Target;
        }
        public void TimestampTest()
        {
            try {
                IavaSkeletonFrame_Accessor iavaFrame = new IavaSkeletonFrame_Accessor();

                // Set the Timestamp
                iavaFrame.Timestamp = 123456789;

                // Make sure the property set correctly
                Assert.AreEqual(123456789, iavaFrame.Timestamp);
            }
            catch (Exception ex) {
                Assert.Fail(ex.Message);
            }
        }
        public void SkeletonsTest()
        {
            try {
                IavaSkeletonFrame_Accessor iavaFrame = new IavaSkeletonFrame_Accessor();

                IavaSkeleton[] skeletonArray = new IavaSkeleton[] { new IavaSkeleton(), new IavaSkeleton(), new IavaSkeleton(),
                                                                    new IavaSkeleton(), new IavaSkeleton(), new IavaSkeleton()};

                // Set the Skeletons
                iavaFrame.Skeletons = skeletonArray;

                // Make sure the property set correctly
                Assert.IsTrue(iavaFrame.Skeletons.SequenceEqual(skeletonArray));
            }
            catch (Exception ex) {
                Assert.Fail(ex.Message);
            }
        }
        public void GetActiveSkeletonTest()
        {
            try {
                IavaSkeleton skeleton = new IavaSkeleton() { Position = new Iava.Core.Math.IavaSkeletonPoint() { X = 1.0, Y = 1.0, Z = 1.0 } };

                // Define once to populate the various objects
                IavaSkeleton[] skeletonArray = new IavaSkeleton[] { new IavaSkeleton(), new IavaSkeleton(), new IavaSkeleton(),
                                                                    new IavaSkeleton(), new IavaSkeleton(), skeleton };

                IavaSkeletonFrame_Accessor accessor = new IavaSkeletonFrame_Accessor()
                {
                    FloorClipPlane = new Tuple<float, float, float, float>(1.0f, 2.0f, 2.5f, 0.3f),
                    FrameNumber = 456,
                    Skeletons = skeletonArray,
                    Timestamp = 123456789
                };

                // Make sure the ActiveSkeleton is our skeleton
                Assert.AreEqual(skeleton, accessor.GetActiveSkeleton());

                // Make sure the property calls the correct method
                Assert.AreEqual(skeleton, accessor.ActiveSkeleton);
            }
            catch (Exception ex) {
                Assert.Fail(ex.Message);
            }
        }
        public void FrameNumberTest()
        {
            try {
                IavaSkeletonFrame_Accessor iavaFrame = new IavaSkeletonFrame_Accessor();

                // Set the FrameNumber
                iavaFrame.FrameNumber = 480;

                // Make sure the property set correctly
                Assert.AreEqual(480, iavaFrame.FrameNumber);
            }
            catch (Exception ex) {
                Assert.Fail(ex.Message);
            }
        }
        public void FloorClipPlaneTest()
        {
            try {
                IavaSkeletonFrame_Accessor iavaFrame = new IavaSkeletonFrame_Accessor();

                Tuple<float,float,float,float> clipPlane = new Tuple<float,float,float,float>(0.3f, 1.0f, 2.5f, 3.0f);

                // Set the FloorClipPlane
                iavaFrame.FloorClipPlane = clipPlane;

                // Make sure the property set correctly
                Assert.AreEqual(clipPlane, iavaFrame.FloorClipPlane);
            }
            catch (Exception ex) {
                Assert.Fail(ex.Message);
            }
        }
        public void ExplicitCastTest()
        {
            try {
                // Create the Kinect Object
                SkeletonFrame kinectFrame = CreateSkeletonFrame();

                // Create the Iava Equivalent
                IavaSkeletonFrame_Accessor accessor = new IavaSkeletonFrame_Accessor();
                accessor.FloorClipPlane = kinectFrame.FloorClipPlane;
                accessor.FrameNumber = kinectFrame.FrameNumber;
                accessor.Skeletons = new IavaSkeleton[kinectFrame.SkeletonArrayLength];
                accessor.Timestamp = kinectFrame.Timestamp;

                // Init the skeletons...
                for (int i = 0; i < accessor.Skeletons.Length; i++) { accessor.Skeletons[i] = new IavaSkeleton(); }

                // Get the Iava object
                IavaSkeletonFrame iavaFrame = (IavaSkeletonFrame)accessor.Target;

                // Test the object as a whole
                Assert.AreEqual(iavaFrame, (IavaSkeletonFrame)kinectFrame);

                // Set the Kinect Object to null
                kinectFrame = null;

                // Make sure we don't attempt to cast nulls
                Assert.IsNull((IavaSkeletonFrame)kinectFrame);
            }
            catch (Exception ex) {
                Assert.Fail(ex.Message);
            }
        }