198c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis/* 298c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis * Copyright (C) 2011 The Android Open Source Project 398c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis * 498c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis * Licensed under the Apache License, Version 2.0 (the "License"); 598c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis * you may not use this file except in compliance with the License. 698c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis * You may obtain a copy of the License at 798c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis * 898c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis * http://www.apache.org/licenses/LICENSE-2.0 998c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis * 1098c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis * Unless required by applicable law or agreed to in writing, software 1198c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis * distributed under the License is distributed on an "AS IS" BASIS, 1298c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1398c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis * See the License for the specific language governing permissions and 1498c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis * limitations under the License. 1598c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis */ 1698c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis 1798c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis#define LOG_TAG "EGL_test" 1898c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis//#define LOG_NDEBUG 0 1998c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis 2098c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis#include <gtest/gtest.h> 2198c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis 2298c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis#include <utils/Log.h> 2398c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis 2498c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis#include "egl_cache.h" 2598c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis#include "egl_display.h" 2698c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis 2798c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennisnamespace android { 2898c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis 2998c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennisclass EGLCacheTest : public ::testing::Test { 3098c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennisprotected: 3198c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis virtual void SetUp() { 3298c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis mCache = egl_cache_t::get(); 3398c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis } 3498c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis 3598c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis virtual void TearDown() { 3698c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis mCache->setCacheFilename(""); 3798c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis mCache->terminate(); 3898c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis } 3998c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis 4098c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis egl_cache_t* mCache; 4198c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis}; 4298c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis 4398c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie GennisTEST_F(EGLCacheTest, UninitializedCacheAlwaysMisses) { 4498c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis char buf[4] = { 0xee, 0xee, 0xee, 0xee }; 4598c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis mCache->setBlob("abcd", 4, "efgh", 4); 4698c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis ASSERT_EQ(0, mCache->getBlob("abcd", 4, buf, 4)); 4798c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis ASSERT_EQ(0xee, buf[0]); 4898c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis ASSERT_EQ(0xee, buf[1]); 4998c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis ASSERT_EQ(0xee, buf[2]); 5098c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis ASSERT_EQ(0xee, buf[3]); 5198c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis} 5298c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis 5398c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie GennisTEST_F(EGLCacheTest, InitializedCacheAlwaysHits) { 5498c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis char buf[4] = { 0xee, 0xee, 0xee, 0xee }; 5598c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis mCache->initialize(egl_display_t::get(EGL_DEFAULT_DISPLAY)); 5698c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis mCache->setBlob("abcd", 4, "efgh", 4); 5798c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis ASSERT_EQ(4, mCache->getBlob("abcd", 4, buf, 4)); 5898c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis ASSERT_EQ('e', buf[0]); 5998c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis ASSERT_EQ('f', buf[1]); 6098c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis ASSERT_EQ('g', buf[2]); 6198c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis ASSERT_EQ('h', buf[3]); 6298c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis} 6398c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis 6498c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie GennisTEST_F(EGLCacheTest, TerminatedCacheAlwaysMisses) { 6598c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis char buf[4] = { 0xee, 0xee, 0xee, 0xee }; 6698c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis mCache->initialize(egl_display_t::get(EGL_DEFAULT_DISPLAY)); 6798c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis mCache->setBlob("abcd", 4, "efgh", 4); 6898c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis mCache->terminate(); 6998c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis ASSERT_EQ(0, mCache->getBlob("abcd", 4, buf, 4)); 7098c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis ASSERT_EQ(0xee, buf[0]); 7198c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis ASSERT_EQ(0xee, buf[1]); 7298c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis ASSERT_EQ(0xee, buf[2]); 7398c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis ASSERT_EQ(0xee, buf[3]); 7498c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis} 7598c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis 7698c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennisclass EGLCacheSerializationTest : public EGLCacheTest { 7798c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis 7898c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennisprotected: 7998c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis 8098c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis virtual void SetUp() { 8198c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis EGLCacheTest::SetUp(); 8298c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis 8398c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis char* tn = tempnam("/sdcard", "EGL_test-cache-"); 8498c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis mFilename = tn; 8598c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis free(tn); 8698c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis } 8798c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis 8898c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis virtual void TearDown() { 8998c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis unlink(mFilename.string()); 9098c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis EGLCacheTest::TearDown(); 9198c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis } 9298c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis 9398c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis String8 mFilename; 9498c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis}; 9598c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis 9698c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie GennisTEST_F(EGLCacheSerializationTest, ReinitializedCacheContainsValues) { 9798c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis char buf[4] = { 0xee, 0xee, 0xee, 0xee }; 9898c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis mCache->setCacheFilename(mFilename); 9998c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis mCache->initialize(egl_display_t::get(EGL_DEFAULT_DISPLAY)); 10098c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis mCache->setBlob("abcd", 4, "efgh", 4); 10198c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis mCache->terminate(); 10298c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis mCache->initialize(egl_display_t::get(EGL_DEFAULT_DISPLAY)); 10398c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis ASSERT_EQ(4, mCache->getBlob("abcd", 4, buf, 4)); 10498c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis ASSERT_EQ('e', buf[0]); 10598c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis ASSERT_EQ('f', buf[1]); 10698c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis ASSERT_EQ('g', buf[2]); 10798c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis ASSERT_EQ('h', buf[3]); 10898c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis} 10998c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis 11098c6383580f94bb7ff9cc9a7cc24d8b8519e484aJamie Gennis} 111