1d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)/*
2d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * Copyright (C) 2014 Google Inc. All rights reserved.
3d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) *
4d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * Redistribution and use in source and binary forms, with or without
5d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * modification, are permitted provided that the following conditions
6d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * are met:
7d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) *
8d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * 1.  Redistributions of source code must retain the above copyright
9d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) *     notice, this list of conditions and the following disclaimer.
10d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * 2.  Redistributions in binary form must reproduce the above copyright
11d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) *     notice, this list of conditions and the following disclaimer in the
12d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) *     documentation and/or other materials provided with the distribution.
13d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) *
14d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
15d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
16d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
17d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
18d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
19d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
20d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
21d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
23d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) */
25d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
26d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "config.h"
27d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
28d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "platform/fonts/FontDescription.h"
29d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
30d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include <gtest/gtest.h>
31d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
32c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink {
33d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
34d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
35197021e6b966cfb06891637935ef33fff06433d1Ben Murdochstatic inline void assertDescriptionMatchesMask(FontDescription& source, FontTraitsBitfield bitfield)
36d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){
37d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    FontDescription target;
38197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    target.setTraits(FontTraits(bitfield));
39d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_EQ(source.style(), target.style());
40d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_EQ(source.variant(), target.variant());
41d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_EQ(source.weight(), target.weight());
42d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    EXPECT_EQ(source.stretch(), target.stretch());
43d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)}
44d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
45d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)TEST(FontDescriptionTest, TestFontTraits)
46d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){
47d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    FontDescription source;
48d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setStyle(FontStyleNormal);
49d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setVariant(FontVariantNormal);
50d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setWeight(FontWeightNormal);
51d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setStretch(FontStretchNormal);
52197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    assertDescriptionMatchesMask(source, source.traits().bitfield());
53d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
54d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setStyle(FontStyleNormal);
55d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setVariant(FontVariantNormal);
56d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setWeight(FontWeightNormal);
57d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setStretch(FontStretchExtraCondensed);
58197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    assertDescriptionMatchesMask(source, source.traits().bitfield());
59d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
60d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setStyle(FontStyleItalic);
61d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setVariant(FontVariantNormal);
62d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setWeight(FontWeight900);
63d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setStretch(FontStretchUltraExpanded);
64197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    assertDescriptionMatchesMask(source, source.traits().bitfield());
65d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
66d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setStyle(FontStyleItalic);
67d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setVariant(FontVariantSmallCaps);
68d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setWeight(FontWeight100);
69d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setStretch(FontStretchExtraExpanded);
70197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    assertDescriptionMatchesMask(source, source.traits().bitfield());
71d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
72d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setStyle(FontStyleItalic);
73d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setVariant(FontVariantNormal);
74d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setWeight(FontWeight900);
75d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setStretch(FontStretchNormal);
76197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    assertDescriptionMatchesMask(source, source.traits().bitfield());
77d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
78d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setStyle(FontStyleItalic);
79d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setVariant(FontVariantNormal);
80d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setWeight(FontWeight800);
81d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setStretch(FontStretchNormal);
82197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    assertDescriptionMatchesMask(source, source.traits().bitfield());
83d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
84d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setStyle(FontStyleItalic);
85d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setVariant(FontVariantNormal);
86d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setWeight(FontWeight700);
87d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setStretch(FontStretchNormal);
88197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    assertDescriptionMatchesMask(source, source.traits().bitfield());
89d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
90d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setStyle(FontStyleItalic);
91d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setVariant(FontVariantNormal);
92d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setWeight(FontWeight600);
93d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setStretch(FontStretchNormal);
94197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    assertDescriptionMatchesMask(source, source.traits().bitfield());
95d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
96d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setStyle(FontStyleItalic);
97d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setVariant(FontVariantNormal);
98d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setWeight(FontWeight500);
99d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setStretch(FontStretchNormal);
100197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    assertDescriptionMatchesMask(source, source.traits().bitfield());
101d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
102d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setStyle(FontStyleItalic);
103d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setVariant(FontVariantNormal);
104d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setWeight(FontWeight400);
105d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setStretch(FontStretchNormal);
106197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    assertDescriptionMatchesMask(source, source.traits().bitfield());
107d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
108d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setStyle(FontStyleItalic);
109d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setVariant(FontVariantNormal);
110d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setWeight(FontWeight300);
111d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setStretch(FontStretchUltraExpanded);
112197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    assertDescriptionMatchesMask(source, source.traits().bitfield());
113d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
114d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setStyle(FontStyleItalic);
115d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setVariant(FontVariantNormal);
116d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setWeight(FontWeight200);
117d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)    source.setStretch(FontStretchNormal);
118197021e6b966cfb06891637935ef33fff06433d1Ben Murdoch    assertDescriptionMatchesMask(source, source.traits().bitfield());
119d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)}
120d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)
121c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink
122