Flutter Engine Uber Docs
Docs for the entire Flutter Engine repo.
 
Loading...
Searching...
No Matches
proc_table_gles_unittests.cc File Reference
#include <optional>
#include "flutter/testing/testing.h"
#include "gmock/gmock.h"
#include "gtest/gtest.h"
#include "impeller/renderer/backend/gles/proc_table_gles.h"
#include "impeller/renderer/backend/gles/test/mock_gles.h"

Go to the source code of this file.

Namespaces

namespace  impeller
 
namespace  impeller::testing
 

Macros

#define EXPECT_AVAILABLE(proc_ivar)    EXPECT_TRUE(mock_gles->GetProcTable().proc_ivar.IsAvailable());
 
#define EXPECT_UNAVAILABLE(proc_ivar)    EXPECT_FALSE(mock_gles->GetProcTable().proc_ivar.IsAvailable());
 

Functions

 impeller::testing::TEST (ProcTableGLES, ResolvesCorrectClearDepthProcOnES)
 
 impeller::testing::TEST (ProcTableGLES, ResolvesCorrectClearDepthProcOnDesktopGL)
 
 impeller::testing::TEST (ProcTableGLES, CheckFrameBufferStatusDebugOnly)
 
 impeller::testing::TEST (GLErrorToString, ReturnsCorrectStringForKnownErrors)
 
 impeller::testing::TEST (GLErrorToString, ReturnsUnknownForInvalidError)
 
 impeller::testing::TEST (GLErrorToString, ReturnValueIsValidStringView)
 
 impeller::testing::TEST (GLProc, NameFieldWorksWithStringView)
 

Macro Definition Documentation

◆ EXPECT_AVAILABLE

#define EXPECT_AVAILABLE (   proc_ivar)     EXPECT_TRUE(mock_gles->GetProcTable().proc_ivar.IsAvailable());

Definition at line 18 of file proc_table_gles_unittests.cc.

23 {
24 auto mock_gles = MockGLES::Init(std::nullopt, "OpenGL ES 3.0");
25 EXPECT_TRUE(mock_gles->GetProcTable().GetDescription()->IsES());
26
29}
30
31TEST(ProcTableGLES, ResolvesCorrectClearDepthProcOnDesktopGL) {
32 auto mock_gles = MockGLES::Init(std::nullopt, "OpenGL 4.0");
33 EXPECT_FALSE(mock_gles->GetProcTable().GetDescription()->IsES());
34
37}
38
39TEST(ProcTableGLES, CheckFrameBufferStatusDebugOnly) {
40 auto mock_gles_impl = std::make_unique<MockGLESImpl>();
41#ifdef IMPELLER_DEBUG
42 EXPECT_CALL(*mock_gles_impl, CheckFramebufferStatus(_)).Times(1);
43#else
44 EXPECT_CALL(*mock_gles_impl, CheckFramebufferStatus(_)).Times(0);
45#endif
46 auto mock_gles = MockGLES::Init(std::move(mock_gles_impl));
47 mock_gles->GetProcTable().CheckFramebufferStatusDebug(0);
48}
49
50TEST(GLErrorToString, ReturnsCorrectStringForKnownErrors) {
51 EXPECT_EQ(GLErrorToString(GL_NO_ERROR), "GL_NO_ERROR");
52 EXPECT_EQ(GLErrorToString(GL_INVALID_ENUM), "GL_INVALID_ENUM");
53 EXPECT_EQ(GLErrorToString(GL_INVALID_VALUE), "GL_INVALID_VALUE");
54 EXPECT_EQ(GLErrorToString(GL_INVALID_OPERATION), "GL_INVALID_OPERATION");
55 EXPECT_EQ(GLErrorToString(GL_INVALID_FRAMEBUFFER_OPERATION),
56 "GL_INVALID_FRAMEBUFFER_OPERATION");
57 EXPECT_EQ(GLErrorToString(GL_FRAMEBUFFER_COMPLETE),
58 "GL_FRAMEBUFFER_COMPLETE");
59 EXPECT_EQ(GLErrorToString(GL_OUT_OF_MEMORY), "GL_OUT_OF_MEMORY");
60}
61
62TEST(GLErrorToString, ReturnsUnknownForInvalidError) {
63 // Test with an invalid error code
64 GLenum invalid_error = 0x9999;
65 EXPECT_EQ(GLErrorToString(invalid_error), "Unknown.");
66}
67
68TEST(GLErrorToString, ReturnValueIsValidStringView) {
69 // Test that the returned string_view is valid and non-empty
70 auto result = GLErrorToString(GL_NO_ERROR);
71 EXPECT_FALSE(result.empty());
72 EXPECT_NE(result.data(), nullptr);
73
74 // Test that we can compare with string literals
75 EXPECT_TRUE(result == "GL_NO_ERROR");
76}
77
78TEST(GLProc, NameFieldWorksWithStringView) {
79 GLProc<void()> proc;
80
81 // Test setting name with string literal
82 const char* literal = "glTestFunction";
83 proc.name = literal;
84
85 EXPECT_EQ(proc.name, "glTestFunction");
86 EXPECT_FALSE(proc.name.empty());
87
88 // Test that the string_view properly references the original data
89 EXPECT_EQ(proc.name.data(), literal);
90}
91
92} // namespace testing
93} // namespace impeller
TEST(AsciiTableTest, Simple)
std::string_view GLErrorToString(GLenum value)
#define FOR_EACH_IMPELLER_DESKTOP_ONLY_PROC(PROC)
#define FOR_EACH_IMPELLER_ES_ONLY_PROC(PROC)
#define EXPECT_AVAILABLE(proc_ivar)
#define EXPECT_UNAVAILABLE(proc_ivar)

◆ EXPECT_UNAVAILABLE

#define EXPECT_UNAVAILABLE (   proc_ivar)     EXPECT_FALSE(mock_gles->GetProcTable().proc_ivar.IsAvailable());

Definition at line 20 of file proc_table_gles_unittests.cc.