ObbFile_test.cpp revision 87315aa1f0b64efcef416628215be89851cc4736
17cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root/* 27cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root * Copyright (C) 2010 The Android Open Source Project 37cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root * 47cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root * Licensed under the Apache License, Version 2.0 (the "License"); 57cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root * you may not use this file except in compliance with the License. 67cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root * You may obtain a copy of the License at 77cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root * 87cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root * http://www.apache.org/licenses/LICENSE-2.0 97cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root * 107cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root * Unless required by applicable law or agreed to in writing, software 117cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root * distributed under the License is distributed on an "AS IS" BASIS, 127cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 137cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root * See the License for the specific language governing permissions and 147cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root * limitations under the License. 157cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root */ 167cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root 177cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root#define LOG_TAG "ObbFile_test" 187cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root#include <utils/Log.h> 197cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root#include <utils/ObbFile.h> 207cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root#include <utils/RefBase.h> 217cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root#include <utils/String8.h> 227cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root 237cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root#include <gtest/gtest.h> 247cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root 2587315aa1f0b64efcef416628215be89851cc4736Kenny Root#include <fcntl.h> 2687315aa1f0b64efcef416628215be89851cc4736Kenny Root 277cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Rootnamespace android { 287cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root 297cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root#define TEST_FILENAME "/test.obb" 307cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root 317cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Rootclass ObbFileTest : public testing::Test { 327cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Rootprotected: 337cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root sp<ObbFile> mObbFile; 347cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root char* mExternalStorage; 357cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root char* mFileName; 367cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root 377cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root virtual void SetUp() { 387cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root mObbFile = new ObbFile(); 397cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root mExternalStorage = getenv("EXTERNAL_STORAGE"); 407cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root 417cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root const int totalLen = strlen(mExternalStorage) + strlen(TEST_FILENAME) + 1; 427cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root mFileName = new char[totalLen]; 437cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root snprintf(mFileName, totalLen, "%s%s", mExternalStorage, TEST_FILENAME); 4487315aa1f0b64efcef416628215be89851cc4736Kenny Root 4587315aa1f0b64efcef416628215be89851cc4736Kenny Root int fd = ::open(mFileName, O_CREAT | O_TRUNC); 4687315aa1f0b64efcef416628215be89851cc4736Kenny Root if (fd < 0) { 4787315aa1f0b64efcef416628215be89851cc4736Kenny Root FAIL() << "Couldn't create " << mFileName << " for tests"; 4887315aa1f0b64efcef416628215be89851cc4736Kenny Root } 497cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root } 507cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root 517cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root virtual void TearDown() { 527cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root } 537cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root}; 547cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root 557cee34a051eb0087322c8b965e498f88b1aa52d3Kenny RootTEST_F(ObbFileTest, ReadFailure) { 5687315aa1f0b64efcef416628215be89851cc4736Kenny Root EXPECT_FALSE(mObbFile->readFrom(-1)) 5787315aa1f0b64efcef416628215be89851cc4736Kenny Root << "No failure on invalid file descriptor"; 587cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root} 597cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root 607cee34a051eb0087322c8b965e498f88b1aa52d3Kenny RootTEST_F(ObbFileTest, WriteThenRead) { 617cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root const char* packageName = "com.example.obbfile"; 627cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root const int32_t versionNum = 1; 637cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root 647cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root mObbFile->setPackageName(String8(packageName)); 657cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root mObbFile->setVersion(versionNum); 667cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root 677cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root EXPECT_TRUE(mObbFile->writeTo(mFileName)) 687cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root << "couldn't write to fake .obb file"; 697cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root 707cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root mObbFile = new ObbFile(); 717cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root 727cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root EXPECT_TRUE(mObbFile->readFrom(mFileName)) 737cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root << "couldn't read from fake .obb file"; 747cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root 757cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root EXPECT_EQ(versionNum, mObbFile->getVersion()) 7687315aa1f0b64efcef416628215be89851cc4736Kenny Root << "version didn't come out the same as it went in"; 777cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root const char* currentPackageName = mObbFile->getPackageName().string(); 787cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root EXPECT_STREQ(packageName, currentPackageName) 7987315aa1f0b64efcef416628215be89851cc4736Kenny Root << "package name didn't come out the same as it went in"; 807cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root} 817cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root 827cee34a051eb0087322c8b965e498f88b1aa52d3Kenny Root} 83