1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
7 #include "CCSolidColorLayerImpl.h"
9 #include "CCAppendQuadsData.h"
10 #include "CCLayerTestCommon.h"
11 #include "CCSingleThreadProxy.h"
12 #include "CCSolidColorDrawQuad.h"
13 #include "MockCCQuadCuller.h"
14 #include <gmock/gmock.h>
15 #include <gtest/gtest.h>
18 using namespace CCLayerTestCommon
;
22 TEST(CCSolidColorLayerImplTest
, verifyTilingCompleteAndNoOverlap
)
24 DebugScopedSetImplThread scopedImplThread
;
26 MockCCQuadCuller quadCuller
;
27 IntSize layerSize
= IntSize(800, 600);
28 IntRect visibleContentRect
= IntRect(IntPoint(), layerSize
);
30 OwnPtr
<CCSolidColorLayerImpl
> layer
= CCSolidColorLayerImpl::create(1);
31 layer
->setVisibleContentRect(visibleContentRect
);
32 layer
->setBounds(layerSize
);
33 layer
->setContentBounds(layerSize
);
34 layer
->createRenderSurface();
35 layer
->setRenderTarget(layer
.get());
37 CCAppendQuadsData data
;
38 layer
->appendQuads(quadCuller
, data
);
40 verifyQuadsExactlyCoverRect(quadCuller
.quadList(), visibleContentRect
);
43 TEST(CCSolidColorLayerImplTest
, verifyCorrectBackgroundColorInQuad
)
45 DebugScopedSetImplThread scopedImplThread
;
47 SkColor testColor
= 0xFFA55AFF;
49 MockCCQuadCuller quadCuller
;
50 IntSize layerSize
= IntSize(100, 100);
51 IntRect visibleContentRect
= IntRect(IntPoint(), layerSize
);
53 OwnPtr
<CCSolidColorLayerImpl
> layer
= CCSolidColorLayerImpl::create(1);
54 layer
->setVisibleContentRect(visibleContentRect
);
55 layer
->setBounds(layerSize
);
56 layer
->setContentBounds(layerSize
);
57 layer
->setBackgroundColor(testColor
);
58 layer
->createRenderSurface();
59 layer
->setRenderTarget(layer
.get());
61 CCAppendQuadsData data
;
62 layer
->appendQuads(quadCuller
, data
);
64 ASSERT_EQ(quadCuller
.quadList().size(), 1U);
65 EXPECT_EQ(CCSolidColorDrawQuad::materialCast(quadCuller
.quadList()[0].get())->color(), testColor
);
68 TEST(CCSolidColorLayerImplTest
, verifyCorrectOpacityInQuad
)
70 DebugScopedSetImplThread scopedImplThread
;
72 const float opacity
= 0.5f
;
74 MockCCQuadCuller quadCuller
;
75 IntSize layerSize
= IntSize(100, 100);
76 IntRect visibleContentRect
= IntRect(IntPoint(), layerSize
);
78 OwnPtr
<CCSolidColorLayerImpl
> layer
= CCSolidColorLayerImpl::create(1);
79 layer
->setVisibleContentRect(visibleContentRect
);
80 layer
->setBounds(layerSize
);
81 layer
->setContentBounds(layerSize
);
82 layer
->setDrawOpacity(opacity
);
83 layer
->createRenderSurface();
84 layer
->setRenderTarget(layer
.get());
86 CCAppendQuadsData data
;
87 layer
->appendQuads(quadCuller
, data
);
89 ASSERT_EQ(quadCuller
.quadList().size(), 1U);
90 EXPECT_EQ(opacity
, CCSolidColorDrawQuad::materialCast(quadCuller
.quadList()[0].get())->opacity());