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