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