Edit

kc3-lang/angle/src/tests/angle_unittests_utils.h

Branch :

  • Show log

    Commit

  • Author : Jeff Gilbert
    Date : 2017-11-14 16:44:36
    Hash : 3dddccff
    Message : Support RGB gl-tex-external stream consumers for StreamProducerNV12. This makes it relatively simple to sample from a D3D11Texture of arbitrary format. From: https://bugzilla.mozilla.org/show_bug.cgi?id=1322746 BUG=angleproject:2233 TEST=angle_end2end_tests Change-Id: I10cd3043b5cb0c5d36dd613467ba6c0ceadf41af Reviewed-on: https://chromium-review.googlesource.com/758042 Commit-Queue: Geoff Lang <geofflang@chromium.org> Reviewed-by: Jamie Madill <jmadill@chromium.org>

  • src/tests/angle_unittests_utils.h
  • //
    // Copyright 2015 The ANGLE Project Authors. All rights reserved.
    // Use of this source code is governed by a BSD-style license that can be
    // found in the LICENSE file.
    //
    // angle_unittests_utils.h:
    //   Helpers for mocking and unit testing.
    
    #ifndef TESTS_ANGLE_UNITTESTS_UTILS_H_
    #define TESTS_ANGLE_UNITTESTS_UTILS_H_
    
    #include "libANGLE/Surface.h"
    #include "libANGLE/renderer/ContextImpl.h"
    #include "libANGLE/renderer/EGLImplFactory.h"
    #include "libANGLE/renderer/GLImplFactory.h"
    
    namespace rx
    {
    
    // Useful when mocking a part of the GLImplFactory class
    class NullFactory : public GLImplFactory
    {
      public:
        NullFactory() {}
    
        // Shader creation
        CompilerImpl *createCompiler() override { return nullptr; }
        ShaderImpl *createShader(const gl::ShaderState &data) override { return nullptr; }
        ProgramImpl *createProgram(const gl::ProgramState &data) override { return nullptr; }
    
        // Framebuffer creation
        FramebufferImpl *createFramebuffer(const gl::FramebufferState &data) override
        {
            return nullptr;
        }
    
        // Texture creation
        TextureImpl *createTexture(const gl::TextureState &data) override { return nullptr; }
    
        // Renderbuffer creation
        RenderbufferImpl *createRenderbuffer() override { return nullptr; }
    
        // Buffer creation
        BufferImpl *createBuffer(const gl::BufferState &state) override { return nullptr; }
    
        // Vertex Array creation
        VertexArrayImpl *createVertexArray(const gl::VertexArrayState &data) override
        {
            return nullptr;
        }
    
        // Query and Fence creation
        QueryImpl *createQuery(GLenum type) override { return nullptr; }
        FenceNVImpl *createFenceNV() override { return nullptr; }
        SyncImpl *createSync() override { return nullptr; }
    
        // Transform Feedback creation
        TransformFeedbackImpl *createTransformFeedback(const gl::TransformFeedbackState &state) override
        {
            return nullptr;
        }
    
        // Sampler object creation
        SamplerImpl *createSampler(const gl::SamplerState &state) override { return nullptr; }
    
        // Program Pipeline creation
        ProgramPipelineImpl *createProgramPipeline(const gl::ProgramPipelineState &data) override
        {
            return nullptr;
        }
    
        std::vector<PathImpl *> createPaths(GLsizei range) override
        {
            return std::vector<PathImpl *>();
        }
    };
    
    // A class with all the factory methods mocked.
    class MockGLFactory : public GLImplFactory
    {
      public:
        MOCK_METHOD1(createContext, ContextImpl *(const gl::ContextState &));
        MOCK_METHOD0(createCompiler, CompilerImpl *());
        MOCK_METHOD1(createShader, ShaderImpl *(const gl::ShaderState &));
        MOCK_METHOD1(createProgram, ProgramImpl *(const gl::ProgramState &));
        MOCK_METHOD1(createProgramPipeline, ProgramPipelineImpl *(const gl::ProgramPipelineState &));
        MOCK_METHOD1(createFramebuffer, FramebufferImpl *(const gl::FramebufferState &));
        MOCK_METHOD1(createTexture, TextureImpl *(const gl::TextureState &));
        MOCK_METHOD0(createRenderbuffer, RenderbufferImpl *());
        MOCK_METHOD1(createBuffer, BufferImpl *(const gl::BufferState &));
        MOCK_METHOD1(createVertexArray, VertexArrayImpl *(const gl::VertexArrayState &));
        MOCK_METHOD1(createQuery, QueryImpl *(GLenum type));
        MOCK_METHOD0(createFenceNV, FenceNVImpl *());
        MOCK_METHOD0(createSync, SyncImpl *());
        MOCK_METHOD1(createTransformFeedback,
                     TransformFeedbackImpl *(const gl::TransformFeedbackState &));
        MOCK_METHOD1(createSampler, SamplerImpl *(const gl::SamplerState &));
        MOCK_METHOD1(createPaths, std::vector<PathImpl *>(GLsizei));
    };
    
    class MockEGLFactory : public EGLImplFactory
    {
      public:
        MOCK_METHOD3(createWindowSurface,
                     SurfaceImpl *(const egl::SurfaceState &,
                                   EGLNativeWindowType,
                                   const egl::AttributeMap &));
        MOCK_METHOD2(createPbufferSurface,
                     SurfaceImpl *(const egl::SurfaceState &, const egl::AttributeMap &));
        MOCK_METHOD4(createPbufferFromClientBuffer,
                     SurfaceImpl *(const egl::SurfaceState &,
                                   EGLenum,
                                   EGLClientBuffer,
                                   const egl::AttributeMap &));
        MOCK_METHOD3(createPixmapSurface,
                     SurfaceImpl *(const egl::SurfaceState &,
                                   NativePixmapType,
                                   const egl::AttributeMap &));
        MOCK_METHOD3(createImage,
                     ImageImpl *(const egl::ImageState &, EGLenum, const egl::AttributeMap &));
        MOCK_METHOD1(createContext, ContextImpl *(const gl::ContextState &));
        MOCK_METHOD2(createStreamProducerD3DTexture,
                     StreamProducerImpl *(egl::Stream::ConsumerType, const egl::AttributeMap &));
    };
    
    }  // namespace rx
    
    #endif // TESTS_ANGLE_UNITTESTS_UTILS_H_