| // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <gtest/gtest.h> |
| |
| #include "gsub.h" |
| #include "ots.h" |
| #include "ots-memory-stream.h" |
| #include "vhea.h" |
| #include "vmtx.h" |
| |
| #define SET_TABLE(name, capname) \ |
| do { file.name = new ots::OpenType##capname; } while (0) |
| #define SET_LAYOUT_TABLE(name, capname) \ |
| do { \ |
| if (!file.name) { \ |
| SET_TABLE(name, capname); \ |
| } \ |
| file.name->data = reinterpret_cast<const uint8_t*>(1); \ |
| file.name->length = 1; \ |
| } while (0) |
| #define DROP_TABLE(name) \ |
| do { delete file.name; file.name = NULL; } while (0) |
| #define DROP_LAYOUT_TABLE(name) \ |
| do { file.name->data = NULL; file.name->length = 0; } while (0) |
| |
| namespace { |
| |
| class TableDependenciesTest : public ::testing::Test { |
| protected: |
| virtual void SetUp() { |
| SET_LAYOUT_TABLE(gsub, GSUB); |
| SET_TABLE(vhea, VHEA); |
| SET_TABLE(vmtx, VMTX); |
| } |
| |
| virtual void TearDown() { |
| DROP_TABLE(gsub); |
| DROP_TABLE(vhea); |
| DROP_TABLE(vmtx); |
| } |
| ots::OpenTypeFile file; |
| }; |
| } // namespace |
| |
| TEST_F(TableDependenciesTest, TestVhea) { |
| EXPECT_TRUE(ots::ots_vhea_should_serialise(&file)); |
| } |
| |
| TEST_F(TableDependenciesTest, TestVmtx) { |
| EXPECT_TRUE(ots::ots_vmtx_should_serialise(&file)); |
| } |
| |
| TEST_F(TableDependenciesTest, TestVheaVmtx) { |
| DROP_TABLE(vmtx); |
| EXPECT_FALSE(ots::ots_vhea_should_serialise(&file)); |
| } |
| |
| TEST_F(TableDependenciesTest, TestVmtxVhea) { |
| DROP_TABLE(vhea); |
| EXPECT_FALSE(ots::ots_vmtx_should_serialise(&file)); |
| } |
| |
| TEST_F(TableDependenciesTest, TestVheaGsub) { |
| DROP_LAYOUT_TABLE(gsub); |
| EXPECT_FALSE(ots::ots_vhea_should_serialise(&file)); |
| DROP_TABLE(gsub); |
| EXPECT_FALSE(ots::ots_vhea_should_serialise(&file)); |
| } |
| |
| TEST_F(TableDependenciesTest, TestVmtxGsub) { |
| DROP_LAYOUT_TABLE(gsub); |
| EXPECT_FALSE(ots::ots_vmtx_should_serialise(&file)); |
| DROP_TABLE(gsub); |
| EXPECT_FALSE(ots::ots_vmtx_should_serialise(&file)); |
| } |
| |