|  | /* | 
|  | * Copyright (C) 2012 The Android Open Source Project | 
|  | * | 
|  | * Licensed under the Apache License, Version 2.0 (the "License"); you may not | 
|  | * use this file except in compliance with the License. You may obtain a copy of | 
|  | * the License at | 
|  | * | 
|  | * http://www.apache.org/licenses/LICENSE-2.0 | 
|  | * | 
|  | * Unless required by applicable law or agreed to in writing, software | 
|  | * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | 
|  | * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | 
|  | * License for the specific language governing permissions and limitations under | 
|  | * the License. | 
|  | */ | 
|  |  | 
|  | #include <stdint.h> | 
|  | #include <gtest/gtest.h> | 
|  |  | 
|  | #include "Log.h" | 
|  | #include "StringUtil.h" | 
|  | #include "task/TaskAll.h" | 
|  |  | 
|  |  | 
|  | class TaskCaseTest : public testing::Test { | 
|  | public: | 
|  | TaskCase* mTaskCase; | 
|  | virtual void SetUp() { | 
|  | mTaskCase = new TaskCase(); | 
|  | ASSERT_TRUE(mTaskCase != NULL); | 
|  | } | 
|  |  | 
|  | virtual void TearDown() { | 
|  | delete mTaskCase; | 
|  | } | 
|  | }; | 
|  |  | 
|  |  | 
|  | TEST_F(TaskCaseTest, DataMapTest) { | 
|  | android::sp<Buffer> buffer1(new Buffer(4, 4, true)); | 
|  | android::sp<Buffer> buffer2(new Buffer(4, 4, true)); | 
|  | android::sp<Buffer> buffer3(new Buffer(4, 4, true)); | 
|  | android::sp<Buffer> buffer4(new Buffer(4, 4, true)); | 
|  |  | 
|  | const android::String8 BUFFER1("buffer1"); | 
|  | const android::String8 BUFFER2("buffer2"); | 
|  | const android::String8 BUFFER3("buffer3"); | 
|  | const android::String8 BUFFER4("buffer4"); | 
|  | ASSERT_TRUE(mTaskCase->registerBuffer(BUFFER1, buffer1)); | 
|  | ASSERT_TRUE(mTaskCase->registerBuffer(BUFFER2, buffer2)); | 
|  | ASSERT_TRUE(mTaskCase->registerBuffer(BUFFER3, buffer3)); | 
|  | ASSERT_TRUE(mTaskCase->registerBuffer(BUFFER4, buffer4)); | 
|  |  | 
|  | android::sp<Buffer> buffer1f = mTaskCase->findBuffer(BUFFER1); | 
|  | //LOGI("buffer1 %x, buffer1f %x", &buffer1, buffer1f); | 
|  | ASSERT_TRUE(buffer1.get() == buffer1f.get()); | 
|  | const android::String8 NO_SUCH_BUFFER("no_such_buffer"); | 
|  | buffer1f = mTaskCase->findBuffer(NO_SUCH_BUFFER); | 
|  | ASSERT_TRUE(buffer1f.get() == NULL); | 
|  | const android::String8 RE("buffer[1-2]"); | 
|  | std::list<TaskCase::BufferPair>* list = mTaskCase->findAllBuffers(RE); | 
|  | ASSERT_TRUE(list != NULL); | 
|  | ASSERT_TRUE(((list->front().second.get() == buffer1.get()) && | 
|  | (list->back().second.get() == buffer2.get())) || | 
|  | ((list->front().second.get() == buffer2.get()) && | 
|  | (list->back().second.get() == buffer1.get()))); | 
|  | delete list; | 
|  | } | 
|  |  | 
|  | TEST_F(TaskCaseTest, ValueMapTest) { | 
|  | TaskCase::Value val1(1.0f); | 
|  | TaskCase::Value val2(2.0f); | 
|  | TaskCase::Value val3((int64_t)1); | 
|  | TaskCase::Value val4((int64_t)2); | 
|  | TaskCase::Value val2_copy(2.0f); | 
|  | ASSERT_TRUE(!(val1 == val2)); | 
|  | ASSERT_TRUE(!(val2 == val3)); | 
|  | ASSERT_TRUE(val2 == val2_copy); | 
|  | ASSERT_TRUE(val1.getDouble() == 1.0f); | 
|  | ASSERT_TRUE(val3.getInt64() == 1); | 
|  | const android::String8 V1("v1"); | 
|  | const android::String8 V2("v2"); | 
|  | const android::String8 V3("v3"); | 
|  | const android::String8 V4("v4"); | 
|  | const android::String8 V5("v5"); | 
|  | ASSERT_TRUE(mTaskCase->registerValue(V1, val1)); | 
|  | ASSERT_TRUE(mTaskCase->registerValue(V2, val2)); | 
|  | ASSERT_TRUE(mTaskCase->registerValue(V3, val3)); | 
|  | ASSERT_TRUE(mTaskCase->registerValue(V4, val4)); | 
|  |  | 
|  | TaskCase::Value valRead; | 
|  | ASSERT_TRUE(mTaskCase->findValue(V4, valRead)); | 
|  | ASSERT_TRUE(valRead.getInt64() == 2); | 
|  | TaskCase::Value val4_2((int64_t)3); | 
|  | ASSERT_TRUE(mTaskCase->updateValue(V4, val4_2)); | 
|  | ASSERT_TRUE(mTaskCase->findValue(V4, valRead)); | 
|  | ASSERT_TRUE(valRead.getInt64() == 3); | 
|  | ASSERT_TRUE(!mTaskCase->updateValue(V5, val4)); | 
|  | ASSERT_TRUE(!mTaskCase->findValue(V5, valRead)); | 
|  |  | 
|  | const android::String8 RE("v[2-3]"); | 
|  | std::list<TaskCase::ValuePair>* list = mTaskCase->findAllValues(RE); | 
|  | ASSERT_TRUE(list != NULL); | 
|  | ASSERT_TRUE(((list->front().second == val2) && (list->back().second == val3)) || | 
|  | ((list->front().second == val3) && (list->back().second == val4))); | 
|  | delete list; | 
|  | } | 
|  |  | 
|  | TEST_F(TaskCaseTest, IndexMapTest) { | 
|  | Buffer buffer1(4, 4, true); | 
|  | Buffer buffer2(4, 4, true); | 
|  | Buffer buffer3(4, 4, true); | 
|  | Buffer buffer4(4, 4, true); | 
|  |  | 
|  | int i = 0; | 
|  | int j = 1; | 
|  | const android::String8 I("i"); | 
|  | const android::String8 J("j"); | 
|  | const android::String8 K("k"); | 
|  | ASSERT_TRUE(mTaskCase->registerIndex(I)); | 
|  | ASSERT_TRUE(mTaskCase->registerIndex(J)); | 
|  | ASSERT_TRUE(mTaskCase->updateIndex(I, i)); | 
|  | ASSERT_TRUE(mTaskCase->updateIndex(J, j)); | 
|  | int i_read, j_read, k_read; | 
|  | ASSERT_TRUE(mTaskCase->findIndex(I, i_read)); | 
|  | ASSERT_TRUE(mTaskCase->findIndex(J, j_read)); | 
|  | ASSERT_TRUE(!mTaskCase->findIndex(K, k_read)); | 
|  | ASSERT_TRUE(i == i_read); | 
|  | ASSERT_TRUE(j == j_read); | 
|  | //TODO add findAll test | 
|  | } | 
|  |  | 
|  | TEST_F(TaskCaseTest, VarTranslateTest) { | 
|  | const android::String8 I("i"); | 
|  | const android::String8 J("j"); | 
|  | const android::String8 K("k"); | 
|  | ASSERT_TRUE(mTaskCase->registerIndex(I, 1)); | 
|  | ASSERT_TRUE(mTaskCase->registerIndex(J, 2)); | 
|  | ASSERT_TRUE(mTaskCase->registerIndex(K, 3)); | 
|  |  | 
|  | android::String8 orig1("hello_$i_$j"); | 
|  | android::String8 result1; | 
|  | ASSERT_TRUE(mTaskCase->translateVarName(orig1, result1)); | 
|  | ASSERT_TRUE(StringUtil::compare(result1, "hello_1_2") == 0); | 
|  |  | 
|  | android::String8 orig2("hello_$i_$j_$k_there"); | 
|  | android::String8 result2; | 
|  | ASSERT_TRUE(mTaskCase->translateVarName(orig2, result2)); | 
|  | ASSERT_TRUE(StringUtil::compare(result2, "hello_1_2_3_there") == 0); | 
|  |  | 
|  | // should fail as there is no such var | 
|  | android::String8 orig3("$n"); | 
|  | android::String8 result3; | 
|  | ASSERT_TRUE(!mTaskCase->translateVarName(orig3, result3)); | 
|  |  | 
|  | android::String8 orig4("hello_there"); | 
|  | android::String8 result4; | 
|  | ASSERT_TRUE(mTaskCase->translateVarName(orig4, result4)); | 
|  | ASSERT_TRUE(StringUtil::compare(result4, "hello_there") == 0); | 
|  | } |