xref: /aosp_15_r20/external/angle/src/tests/gl_tests/gles1/CurrentColorTest.cpp (revision 8975f5c5ed3d1c378011245431ada316dfb6f244)
1 //
2 // Copyright 2018 The ANGLE Project Authors. All rights reserved.
3 // Use of this source code is governed by a BSD-style license that can be
4 // found in the LICENSE file.
5 //
6 
7 // CurrentColorTest.cpp: Tests basic usage of glColor4(f|ub|x).
8 
9 #include "test_utils/ANGLETest.h"
10 #include "test_utils/gl_raii.h"
11 
12 #include "util/random_utils.h"
13 
14 #include <stdint.h>
15 
16 using namespace angle;
17 
18 class CurrentColorTest : public ANGLETest<>
19 {
20   protected:
CurrentColorTest()21     CurrentColorTest()
22     {
23         setWindowWidth(32);
24         setWindowHeight(32);
25         setConfigRedBits(8);
26         setConfigGreenBits(8);
27         setConfigBlueBits(8);
28         setConfigAlphaBits(8);
29         setConfigDepthBits(24);
30     }
31 };
32 
33 // State query: Checks the initial state is correct.
TEST_P(CurrentColorTest,InitialState)34 TEST_P(CurrentColorTest, InitialState)
35 {
36     const GLColor32F kFloatWhite(1.0f, 1.0f, 1.0f, 1.0f);
37     GLColor32F actualColor;
38     glGetFloatv(GL_CURRENT_COLOR, &actualColor.R);
39     EXPECT_GL_NO_ERROR();
40     EXPECT_EQ(kFloatWhite, actualColor);
41 }
42 
43 // Set test: Checks that the current color is properly set and retrieved.
TEST_P(CurrentColorTest,Set)44 TEST_P(CurrentColorTest, Set)
45 {
46     float epsilon = 0.00001f;
47 
48     glColor4f(0.1f, 0.2f, 0.3f, 0.4f);
49     EXPECT_GL_NO_ERROR();
50 
51     GLColor32F floatColor;
52     glGetFloatv(GL_CURRENT_COLOR, &floatColor.R);
53     EXPECT_GL_NO_ERROR();
54 
55     EXPECT_EQ(GLColor32F(0.1f, 0.2f, 0.3f, 0.4f), floatColor);
56 
57     glColor4ub(0xff, 0x0, 0x55, 0x33);
58 
59     glGetFloatv(GL_CURRENT_COLOR, &floatColor.R);
60     EXPECT_GL_NO_ERROR();
61 
62     EXPECT_NEAR(1.0f, floatColor.R, epsilon);
63     EXPECT_NEAR(0.0f, floatColor.G, epsilon);
64     EXPECT_NEAR(1.0f / 3.0f, floatColor.B, epsilon);
65     EXPECT_NEAR(0.2f, floatColor.A, epsilon);
66 
67     glColor4x(0x10000, 0x0, 0x3333, 0x5555);
68 
69     glGetFloatv(GL_CURRENT_COLOR, &floatColor.R);
70     EXPECT_GL_NO_ERROR();
71 
72     EXPECT_NEAR(1.0f, floatColor.R, epsilon);
73     EXPECT_NEAR(0.0f, floatColor.G, epsilon);
74     EXPECT_NEAR(0.2f, floatColor.B, epsilon);
75     EXPECT_NEAR(1.0f / 3.0f, floatColor.A, epsilon);
76 }
77 
78 ANGLE_INSTANTIATE_TEST_ES1(CurrentColorTest);
79