in winrt/test.internal/graphics/CanvasImageBrushUnitTests.cpp [128:245]
void VerifyCommonBrushProperties(
ComPtr<CanvasImageBrush> const& brush,
ComPtr<BackingBrushType> const& backingBrush,
ICanvasDevice* expectedDevice)
{
{
bool getExtendXCalled = false;
backingBrush->MockGetExtendModeX =
[&]
{
Assert::IsFalse(getExtendXCalled);
getExtendXCalled = true;
return D2D1_EXTEND_MODE_MIRROR;
};
CanvasEdgeBehavior edgeBehavior;
ThrowIfFailed(brush->get_ExtendX(&edgeBehavior));
Assert::IsTrue(getExtendXCalled);
Assert::AreEqual(CanvasEdgeBehavior::Mirror, edgeBehavior);
}
{
bool setExtendXCalled = false;
backingBrush->MockSetExtendModeX =
[&](D2D1_EXTEND_MODE extendMode)
{
Assert::IsFalse(setExtendXCalled);
setExtendXCalled = true;
Assert::AreEqual(D2D1_EXTEND_MODE_MIRROR, extendMode);
};
ThrowIfFailed(brush->put_ExtendX(CanvasEdgeBehavior::Mirror));
Assert::IsTrue(setExtendXCalled);
}
{
bool getExtendYCalled = false;
backingBrush->MockGetExtendModeY =
[&]
{
Assert::IsFalse(getExtendYCalled);
getExtendYCalled = true;
return D2D1_EXTEND_MODE_WRAP;
};
CanvasEdgeBehavior edgeBehavior;
ThrowIfFailed(brush->get_ExtendY(&edgeBehavior));
Assert::IsTrue(getExtendYCalled);
Assert::AreEqual(CanvasEdgeBehavior::Wrap, edgeBehavior);
}
{
bool setExtendYCalled = false;
backingBrush->MockSetExtendModeY =
[&](D2D1_EXTEND_MODE extendMode)
{
Assert::IsFalse(setExtendYCalled);
setExtendYCalled = true;
Assert::AreEqual(D2D1_EXTEND_MODE_WRAP, extendMode);
};
ThrowIfFailed(brush->put_ExtendY(CanvasEdgeBehavior::Wrap));
Assert::IsTrue(setExtendYCalled);
}
{
bool getOpacityCalled = false;
backingBrush->MockGetOpacity =
[&]
{
Assert::IsFalse(getOpacityCalled);
getOpacityCalled = true;
return 0.6f;
};
float opacity;
ThrowIfFailed(brush->get_Opacity(&opacity));
Assert::IsTrue(getOpacityCalled);
Assert::AreEqual(0.6f, opacity);
}
{
bool setOpacityCalled = false;
backingBrush->MockSetOpacity =
[&](float opacity)
{
Assert::IsFalse(setOpacityCalled);
setOpacityCalled = true;
// No sanitization done is supposed to occur.
Assert::AreEqual(500.0f, opacity);
};
ThrowIfFailed(brush->put_Opacity(500));
Assert::IsTrue(setOpacityCalled);
}
{
bool getTransformCalled = false;
D2D1_MATRIX_3X2_F d2dTransform = D2D1::Matrix3x2F(1, 2, 3, 4, 5, 6);
backingBrush->MockGetTransform =
[&](D2D1_MATRIX_3X2_F* transform)
{
Assert::IsFalse(getTransformCalled);
getTransformCalled = true;
*transform = d2dTransform;
};
Numerics::Matrix3x2 transform;
ThrowIfFailed(brush->get_Transform(&transform));
Assert::IsTrue(getTransformCalled);
Assert::AreEqual(*(reinterpret_cast<Numerics::Matrix3x2*>(&d2dTransform)), transform);
}
{
bool setTransformCalled = false;
D2D1_MATRIX_3X2_F d2dTransform = D2D1::Matrix3x2F(1, 2, 3, 4, 5, 6);
backingBrush->MockSetTransform =
[&](const D2D1_MATRIX_3X2_F* transform)
{
Assert::IsFalse(setTransformCalled);
setTransformCalled = true;
Assert::AreEqual(d2dTransform, *transform);
};
Numerics::Matrix3x2 transform = *(reinterpret_cast<Numerics::Matrix3x2*>(&d2dTransform));
ThrowIfFailed(brush->put_Transform(transform));
Assert::IsTrue(setTransformCalled);
}
ComPtr<ICanvasDevice> actualDevice;
brush->get_Device(&actualDevice);
Assert::AreEqual(expectedDevice, actualDevice.Get());
}