1464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com/* 2464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * Copyright 2011 Google Inc. All Rights Reserved. 3464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * 4464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * Licensed under the Apache License, Version 2.0 (the "License"); 5464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * you may not use this file except in compliance with the License. 6464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * You may obtain a copy of the License at 7464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * 8464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * http://www.apache.org/licenses/LICENSE-2.0 9464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * 10464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * Unless required by applicable law or agreed to in writing, software 11464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * distributed under the License is distributed on an "AS IS" BASIS, 12464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * See the License for the specific language governing permissions and 14464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com * limitations under the License. 15464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com */ 16464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 17464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com#include "gtest/gtest.h" 18464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com#include "sfntly/data/writable_font_data.h" 19464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com#include "sfntly/data/memory_byte_array.h" 20464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 21464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comnamespace sfntly { 22464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 23464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.comconst byte_t TEST_OTF_DATA[] = 24464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com {0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01}; 25464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 26246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.combool TestOTFRead() { 27464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com ByteVector bytes; 28464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com for (size_t i = 0; i < sizeof(TEST_OTF_DATA) / sizeof(byte_t); ++i) { 29464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com bytes.push_back(TEST_OTF_DATA[i]); 30464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com } 31464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com ByteArrayPtr array = new MemoryByteArray(&(bytes[0]), bytes.size()); 32464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com ReadableFontDataPtr data = new ReadableFontData(array); 33464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 34246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com EXPECT_EQ(-1, data->ReadByte(0)); 35246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com EXPECT_EQ(0xff, data->ReadUByte(0)); 36246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com EXPECT_EQ(0x01, data->ReadByte(1)); 37246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com EXPECT_EQ(65281, data->ReadUShort(0)); 38246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com EXPECT_EQ(-255, data->ReadShort(0)); 39246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com EXPECT_EQ(16711937, data->ReadUInt24(0)); 40246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com EXPECT_EQ(4278255873LL, data->ReadULong(0)); 41246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com EXPECT_EQ(-16711423, data->ReadLong(0)); 42464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com return true; 43464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 44464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 45246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.combool TestOTFCopy() { 46464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com ByteVector source_bytes(1024); 47464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com for (size_t i = 0; i < source_bytes.size(); ++i) { 48464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com source_bytes[i] = (byte_t)(i & 0xff); 49464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com } 50464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com ByteArrayPtr source_array = new MemoryByteArray(&(source_bytes[0]), 1024); 51464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com ReadableFontDataPtr source = new ReadableFontData(source_array); 52464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 53464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com ByteVector destination_bytes(1024); 54464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com ByteArrayPtr destination_array = 55464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com new MemoryByteArray(&(destination_bytes[0]), 1024); 56464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com WritableFontDataPtr destination = new WritableFontData(destination_array); 57464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 58246300f7fab1f2539c3207ce5ec28cc355465be8arthurhsu@google.com int32_t length = source->CopyTo(destination); 59464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com EXPECT_EQ(1024, length); 60464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com EXPECT_TRUE(std::equal(source_bytes.begin(), source_bytes.end(), 61464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com destination_bytes.begin())); 62464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com return true; 63464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} 64464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com 65464987db923362e596195f9eebd34fc508c9a41arthurhsu@google.com} // namespace sfntly 666a22b959c06e66a039c630e6ac514234114b46cbarthurhsu@google.com 676a22b959c06e66a039c630e6ac514234114b46cbarthurhsu@google.comTEST(OpenTypeData, All) { 686a22b959c06e66a039c630e6ac514234114b46cbarthurhsu@google.com ASSERT_TRUE(sfntly::TestOTFRead()); 696a22b959c06e66a039c630e6ac514234114b46cbarthurhsu@google.com ASSERT_TRUE(sfntly::TestOTFCopy()); 706a22b959c06e66a039c630e6ac514234114b46cbarthurhsu@google.com} 71