blob: b6297686cdc58fff49432bbfd208f1007eaaf25a [file] [log] [blame]
/*
* Copyright 2013 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include "include/core/SkStream.h"
#include "include/core/SkTypeface.h"
#include "include/ports/SkTypeface_fontations.h"
#include "tests/Test.h"
#include "tools/Resources.h"
#include <memory>
namespace {
const char kFontResource[] = "fonts/ahem.ttf";
const char kTtcResource[] = "fonts/test.ttc";
} // namespace
DEF_TEST(Fontations_DoNotMakeFromNull, reporter) {
std::unique_ptr<SkStreamAsset> nullStream = SkMemoryStream::MakeDirect(nullptr, 0);
sk_sp<SkTypeface> probeTypeface(
SkTypeface_Make_Fontations(std::move(nullStream), SkFontArguments()));
REPORTER_ASSERT(reporter, !probeTypeface);
}
DEF_TEST(Fontations_DoNotMakeFromNonSfnt, reporter) {
char notAnSfnt[] = "I_AM_NOT_AN_SFNT";
std::unique_ptr<SkStreamAsset> notSfntStream =
SkMemoryStream::MakeDirect(notAnSfnt, std::size(notAnSfnt));
sk_sp<SkTypeface> probeTypeface(
SkTypeface_Make_Fontations(std::move(notSfntStream), SkFontArguments()));
REPORTER_ASSERT(reporter, !probeTypeface);
}
DEF_TEST(Fontations_MakeFromFont, reporter) {
sk_sp<SkTypeface> probeTypeface(
SkTypeface_Make_Fontations(GetResourceAsStream(kFontResource), SkFontArguments()));
REPORTER_ASSERT(reporter, probeTypeface);
}
DEF_TEST(Fontations_MakeFromCollection, reporter) {
sk_sp<SkTypeface> probeTypeface(
SkTypeface_Make_Fontations(GetResourceAsStream(kTtcResource), SkFontArguments()));
REPORTER_ASSERT(reporter, probeTypeface);
}
DEF_TEST(Fontations_MakeFromCollectionNonNullIndex, reporter) {
SkFontArguments args;
args.setCollectionIndex(1);
sk_sp<SkTypeface> probeTypeface(
SkTypeface_Make_Fontations(GetResourceAsStream(kTtcResource), args));
REPORTER_ASSERT(reporter, probeTypeface);
}
DEF_TEST(Fontations_DoNotMakeFromCollection_Invalid_Index, reporter) {
SkFontArguments args;
args.setCollectionIndex(1000);
sk_sp<SkTypeface> probeTypeface(
SkTypeface_Make_Fontations(GetResourceAsStream(kTtcResource), args));
REPORTER_ASSERT(reporter, !probeTypeface);
}