Path: blob/main_old/src/tests/angle_unittests_utils.h
1693 views
//1// Copyright 2015 The ANGLE Project Authors. All rights reserved.2// Use of this source code is governed by a BSD-style license that can be3// found in the LICENSE file.4//5// angle_unittests_utils.h:6// Helpers for mocking and unit testing.78#ifndef TESTS_ANGLE_UNITTESTS_UTILS_H_9#define TESTS_ANGLE_UNITTESTS_UTILS_H_1011#include "libANGLE/Surface.h"12#include "libANGLE/renderer/ContextImpl.h"13#include "libANGLE/renderer/EGLImplFactory.h"14#include "libANGLE/renderer/GLImplFactory.h"1516namespace rx17{1819// Useful when mocking a part of the GLImplFactory class20class NullFactory : public GLImplFactory21{22public:23NullFactory() {}2425// Shader creation26CompilerImpl *createCompiler() override { return nullptr; }27ShaderImpl *createShader(const gl::ShaderState &data) override { return nullptr; }28ProgramImpl *createProgram(const gl::ProgramState &data) override { return nullptr; }2930// Framebuffer creation31FramebufferImpl *createFramebuffer(const gl::FramebufferState &data) override32{33return nullptr;34}3536// Texture creation37TextureImpl *createTexture(const gl::TextureState &data) override { return nullptr; }3839// Renderbuffer creation40RenderbufferImpl *createRenderbuffer(const gl::RenderbufferState &state) override41{42return nullptr;43}4445// Buffer creation46BufferImpl *createBuffer(const gl::BufferState &state) override { return nullptr; }4748// Vertex Array creation49VertexArrayImpl *createVertexArray(const gl::VertexArrayState &data) override50{51return nullptr;52}5354// Query and Fence creation55QueryImpl *createQuery(gl::QueryType type) override { return nullptr; }56FenceNVImpl *createFenceNV() override { return nullptr; }57SyncImpl *createSync() override { return nullptr; }5859// Transform Feedback creation60TransformFeedbackImpl *createTransformFeedback(const gl::TransformFeedbackState &state) override61{62return nullptr;63}6465// Sampler object creation66SamplerImpl *createSampler(const gl::SamplerState &state) override { return nullptr; }6768// Program Pipeline creation69ProgramPipelineImpl *createProgramPipeline(const gl::ProgramPipelineState &data) override70{71return nullptr;72}7374SemaphoreImpl *createSemaphore() override { return nullptr; }7576OverlayImpl *createOverlay(const gl::OverlayState &state) override { return nullptr; }77};7879// A class with all the factory methods mocked.80class MockGLFactory : public GLImplFactory81{82public:83MOCK_METHOD1(createContext, ContextImpl *(const gl::State &));84MOCK_METHOD0(createCompiler, CompilerImpl *());85MOCK_METHOD1(createShader, ShaderImpl *(const gl::ShaderState &));86MOCK_METHOD1(createProgram, ProgramImpl *(const gl::ProgramState &));87MOCK_METHOD1(createProgramPipeline, ProgramPipelineImpl *(const gl::ProgramPipelineState &));88MOCK_METHOD1(createFramebuffer, FramebufferImpl *(const gl::FramebufferState &));89MOCK_METHOD0(createMemoryObject, MemoryObjectImpl *());90MOCK_METHOD1(createTexture, TextureImpl *(const gl::TextureState &));91MOCK_METHOD1(createRenderbuffer, RenderbufferImpl *(const gl::RenderbufferState &));92MOCK_METHOD1(createBuffer, BufferImpl *(const gl::BufferState &));93MOCK_METHOD1(createVertexArray, VertexArrayImpl *(const gl::VertexArrayState &));94MOCK_METHOD1(createQuery, QueryImpl *(gl::QueryType type));95MOCK_METHOD0(createFenceNV, FenceNVImpl *());96MOCK_METHOD0(createSync, SyncImpl *());97MOCK_METHOD1(createTransformFeedback,98TransformFeedbackImpl *(const gl::TransformFeedbackState &));99MOCK_METHOD1(createSampler, SamplerImpl *(const gl::SamplerState &));100MOCK_METHOD0(createSemaphore, SemaphoreImpl *());101MOCK_METHOD1(createOverlay, OverlayImpl *(const gl::OverlayState &));102};103104class MockEGLFactory : public EGLImplFactory105{106public:107MOCK_METHOD3(createWindowSurface,108SurfaceImpl *(const egl::SurfaceState &,109EGLNativeWindowType,110const egl::AttributeMap &));111MOCK_METHOD2(createPbufferSurface,112SurfaceImpl *(const egl::SurfaceState &, const egl::AttributeMap &));113MOCK_METHOD4(createPbufferFromClientBuffer,114SurfaceImpl *(const egl::SurfaceState &,115EGLenum,116EGLClientBuffer,117const egl::AttributeMap &));118MOCK_METHOD3(createPixmapSurface,119SurfaceImpl *(const egl::SurfaceState &,120NativePixmapType,121const egl::AttributeMap &));122MOCK_METHOD4(createImage,123ImageImpl *(const egl::ImageState &,124const gl::Context *,125EGLenum,126const egl::AttributeMap &));127MOCK_METHOD5(createContext,128ContextImpl *(const gl::State &,129gl::ErrorSet *,130const egl::Config *,131const gl::Context *,132const egl::AttributeMap &));133MOCK_METHOD2(createStreamProducerD3DTexture,134StreamProducerImpl *(egl::Stream::ConsumerType, const egl::AttributeMap &));135MOCK_METHOD0(createShareGroup, ShareGroupImpl *());136};137138} // namespace rx139140#endif // TESTS_ANGLE_UNITTESTS_UTILS_H_141142143