public void CameraInitDirtyFlag()
        {
            DataSet set = new DataSet();

            set.Add(ComponentConstants.CAMERA_POS_X, "0.1");
            set.Add(ComponentConstants.CAMERA_POS_Y, "0.2");
            set.Add(ComponentConstants.CAMERA_POS_Z, "0.3");
            set.Add(ComponentConstants.CAMERA_TARGET_X, "0.4");
            set.Add(ComponentConstants.CAMERA_TARGET_Y, "0.5");
            set.Add(ComponentConstants.CAMERA_TARGET_Z, "0.6");
            set.Add(ComponentConstants.CAMERA_UP_X, "0.7");
            set.Add(ComponentConstants.CAMERA_UP_Y, "0.8");
            set.Add(ComponentConstants.CAMERA_UP_Z, "0.9");
            set.Add(ComponentConstants.CAMERA_ZNEAR, "1.0");
            set.Add(ComponentConstants.CAMERA_ZFAR, "1.1");
            set.Add(ComponentConstants.CAMERA_TYPE, Enum.GetName(typeof(ComponentConstants.CAM_TYPES), ComponentConstants.CAM_TYPES.PERSPECTIVE));
            set.Add(ComponentConstants.CAMERA_FOV, "1.2");
            set.Add(ComponentConstants.CAMERA_ASPECT, "1.3");
            CameraComponent           target      = new CameraComponent();
            PrivateObject             obj         = new PrivateObject(target);
            Mock <IExecutableContext> contextMock = new Mock <IExecutableContext>();
            Mock <IMessageRouter>     routerMock  = new Mock <IMessageRouter>();

            contextMock.Setup(f => f.Entity.Name).Returns("TEST");
            contextMock.Setup(f => f.MessageRouter).Returns(routerMock.Object);
            target.Init(contextMock.Object, set);
            bool isDirty = true;

            obj.SetFieldOrProperty("isDirty", isDirty);

            target.Update(0);

            Assert.IsFalse((bool)obj.GetFieldOrProperty("isDirty"));
            routerMock.Verify(f => f.SendMessage(MessagingConstants.CAMERA_MATRIX_TOPIC, It.IsAny <IMessage>()), Times.Once());
        }
        public void CameraPerspectiveInitTestSuccess()
        {
            DataSet set = new DataSet();

            set.Add(ComponentConstants.CAMERA_POS_X, "0.1");
            set.Add(ComponentConstants.CAMERA_POS_Y, "0.2");
            set.Add(ComponentConstants.CAMERA_POS_Z, "0.3");
            set.Add(ComponentConstants.CAMERA_TARGET_X, "0.4");
            set.Add(ComponentConstants.CAMERA_TARGET_Y, "0.5");
            set.Add(ComponentConstants.CAMERA_TARGET_Z, "0.6");
            set.Add(ComponentConstants.CAMERA_UP_X, "0.7");
            set.Add(ComponentConstants.CAMERA_UP_Y, "0.8");
            set.Add(ComponentConstants.CAMERA_UP_Z, "0.9");
            set.Add(ComponentConstants.CAMERA_ZNEAR, "1.0");
            set.Add(ComponentConstants.CAMERA_ZFAR, "1.1");
            set.Add(ComponentConstants.CAMERA_TYPE, Enum.GetName(typeof(ComponentConstants.CAM_TYPES), ComponentConstants.CAM_TYPES.PERSPECTIVE));
            set.Add(ComponentConstants.CAMERA_FOV, "1.2");
            set.Add(ComponentConstants.CAMERA_ASPECT, "1.3");

            CameraComponent           target      = new CameraComponent();
            PrivateObject             obj         = new PrivateObject(target);
            Mock <IExecutableContext> contextMock = new Mock <IExecutableContext>();
            Mock <IMessageRouter>     routerMock  = new Mock <IMessageRouter>();

            contextMock.Setup(f => f.Entity.Name).Returns("TEST");
            contextMock.Setup(f => f.MessageRouter).Returns(routerMock.Object);


            target.Init(contextMock.Object, set);


            Vector3d actualPos      = (Vector3d)obj.GetFieldOrProperty("Pos");
            Vector3d actualTarget   = (Vector3d)obj.GetFieldOrProperty("Target");
            Vector3d actualUp       = (Vector3d)obj.GetFieldOrProperty("Up");
            Vector3d expectedPos    = new Vector3d(0.1, 0.2, 0.3);
            Vector3d expectedTarget = new Vector3d(0.4, 0.5, 0.6);
            Vector3d expectedUp     = new Vector3d(0.7, 0.8, 0.9);
            double   actualZNear    = (double)obj.GetFieldOrProperty("zNear");
            double   actualZFar     = (double)obj.GetFieldOrProperty("zFar");
            double   expectedZNear  = 1.0;
            double   expectedZFar   = 1.1;

            ComponentConstants.CAM_TYPES actualCameraType   = (ComponentConstants.CAM_TYPES)obj.GetFieldOrProperty("cameraType");
            ComponentConstants.CAM_TYPES expectedCameraType = ComponentConstants.CAM_TYPES.PERSPECTIVE;
            double actualFOV      = (double)obj.GetFieldOrProperty("cameraFOV");
            double actualAspect   = (double)obj.GetFieldOrProperty("cameraAspect");
            double expectedFOV    = 1.2;
            double expectedAspect = 1.3;

            Assert.IsTrue(actualPos.Equals(expectedPos));
            Assert.IsTrue(actualTarget.Equals(expectedTarget));
            Assert.IsTrue(actualUp.Equals(expectedUp));
            Assert.AreEqual(expectedZFar, actualZFar);
            Assert.AreEqual(expectedZNear, actualZNear);
            Assert.AreEqual(expectedCameraType, actualCameraType);
            Assert.AreEqual(expectedFOV, actualFOV);
            Assert.AreEqual(expectedAspect, actualAspect);
        }
        public void CameraInitFailureTest()
        {
            DataSet set = new DataSet();

            CameraComponent           target      = new CameraComponent();
            PrivateObject             obj         = new PrivateObject(target);
            Mock <IExecutableContext> contextMock = new Mock <IExecutableContext>();
            Mock <IMessageRouter>     routerMock  = new Mock <IMessageRouter>();

            contextMock.Setup(f => f.Entity.Name).Returns("TEST");
            contextMock.Setup(f => f.MessageRouter).Returns(routerMock.Object);

            target.Init(contextMock.Object, set);
        }