| // Copyright 2018 The Fuchsia Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <math.h> |
| #include <chrono> |
| #include <thread> |
| |
| #include "gtest/gtest.h" |
| |
| #include <glm/gtc/type_ptr.hpp> |
| #include "garnet/lib/ui/gfx/resources/stereo_camera.h" |
| #include "garnet/lib/ui/gfx/tests/session_test.h" |
| #include "garnet/lib/ui/gfx/tests/util.h" |
| #include "src/ui/lib/escher/util/epsilon_compare.h" |
| #include "lib/ui/scenic/cpp/commands.h" |
| |
| namespace scenic_impl { |
| namespace gfx { |
| namespace test { |
| |
| using StereoCameraTest = SessionTest; |
| |
| TEST_F(StereoCameraTest, Basic) { |
| const ResourceId invalid_id = 0; |
| const ResourceId scene_id = 1; |
| const ResourceId camera_id = 2; |
| ASSERT_TRUE(Apply(scenic::NewCreateSceneCmd(scene_id))); |
| EXPECT_TRUE(Apply(scenic::NewCreateStereoCameraCmd(camera_id, scene_id))); |
| EXPECT_FALSE(Apply(scenic::NewCreateStereoCameraCmd(camera_id, invalid_id))); |
| |
| // Not really projection matrices but we're just testing the setters |
| glm::mat4 left_projection = glm::mat4(2); |
| glm::mat4 right_projection = glm::mat4(3); |
| |
| EXPECT_TRUE(Apply(scenic::NewSetStereoCameraProjectionCmd( |
| camera_id, glm::value_ptr(left_projection), |
| glm::value_ptr(right_projection)))); |
| |
| auto camera = session_->resources()->FindResource<StereoCamera>(camera_id); |
| EXPECT_TRUE(camera); |
| |
| EXPECT_TRUE(escher::CompareMatrix( |
| left_projection, |
| camera->GetEscherCamera(StereoCamera::Eye::LEFT).projection())); |
| EXPECT_TRUE(escher::CompareMatrix( |
| right_projection, |
| camera->GetEscherCamera(StereoCamera::Eye::RIGHT).projection())); |
| } |
| |
| } // namespace test |
| } // namespace gfx |
| } // namespace scenic_impl |