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