Home | History | Annotate | Download | only in test
      1 /*
      2  * Copyright (C) 2012 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License"); you may not
      5  * use this file except in compliance with the License. You may obtain a copy of
      6  * the License at
      7  *
      8  * http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
     12  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
     13  * License for the specific language governing permissions and limitations under
     14  * the License.
     15  */
     16 
     17 #include <gtest/gtest.h>
     18 #include "task/TaskAll.h"
     19 
     20 static const android::String8 AAA("aaa");
     21 static const android::String8 BBB("bbb");
     22 
     23 class TaskTest : public testing::Test {
     24 public:
     25     TaskCase* mTestCase;
     26     // should not delete
     27     TaskGeneric* mTaskSetup;
     28     TaskGeneric* mTaskAction;
     29     TaskGeneric* mTaskSequential;
     30     TaskGeneric* mTaskProcess;
     31     TaskGeneric* mTaskInput;
     32     TaskGeneric* mTaskOutput;
     33     TaskGeneric* mTaskSound;
     34 
     35     class TestTaskDummy: public TaskGeneric {
     36     public:
     37         static int mRunCounter;
     38         static int mLiveInstanceCounter;
     39 
     40         TestTaskDummy(TaskGeneric::TaskType type)
     41             : TaskGeneric(type) {
     42             mLiveInstanceCounter++;
     43 
     44 
     45             const android::String8* list[] = {&AAA, &BBB, NULL};
     46             registerSupportedStringAttributes(list);
     47         };
     48         virtual ~TestTaskDummy(){
     49             mLiveInstanceCounter--;
     50         };
     51 
     52         virtual TaskGeneric::ExecutionResult run()
     53         {
     54             mRunCounter++;
     55             return TaskGeneric::run();
     56         };
     57         bool addStringAttributePublic(const android::String8& key, android::String8& value){
     58             return addStringAttribute(key, value);
     59         }
     60         bool findStringAttributePublic(const android::String8& key, android::String8& value){
     61             return findStringAttribute(key, value);
     62         }
     63     };
     64 
     65     virtual void SetUp() {
     66         TestTaskDummy::mRunCounter = 0;
     67         TestTaskDummy::mLiveInstanceCounter = 0;
     68         mTestCase = new TaskCase();
     69         mTaskSetup = new TestTaskDummy(TaskGeneric::ETaskSetup);
     70         mTaskAction = new TestTaskDummy(TaskGeneric::ETaskAction);
     71         ASSERT_TRUE(mTestCase->addChild(mTaskSetup));
     72         ASSERT_TRUE(mTestCase->addChild(mTaskAction));
     73         mTaskSequential = new TestTaskDummy(TaskGeneric::ETaskSequential);
     74         ASSERT_TRUE(mTaskAction->addChild(mTaskSequential));
     75         mTaskProcess = new TestTaskDummy(TaskGeneric::ETaskProcess);
     76         mTaskInput = new TestTaskDummy(TaskGeneric::ETaskInput);
     77         mTaskOutput = new TestTaskDummy(TaskGeneric::ETaskOutput);
     78         ASSERT_TRUE(mTaskSequential->addChild(mTaskOutput));
     79         ASSERT_TRUE(mTaskSequential->addChild(mTaskInput));
     80         ASSERT_TRUE(mTaskSequential->addChild(mTaskProcess));
     81         mTaskSound = new TestTaskDummy(TaskGeneric::ETaskSound);
     82         ASSERT_TRUE(mTaskSetup->addChild(mTaskSound));
     83         ASSERT_TRUE(TestTaskDummy::mLiveInstanceCounter == 7);
     84     }
     85 
     86     virtual void TearDown() {
     87         if(mTestCase != NULL) {
     88             delete mTestCase;
     89         }
     90         ASSERT_TRUE(TestTaskDummy::mLiveInstanceCounter == 0);
     91     }
     92 };
     93 
     94 int TaskTest::TestTaskDummy::mRunCounter = 0;
     95 int TaskTest::TestTaskDummy::mLiveInstanceCounter = 0;
     96 
     97 TEST_F(TaskTest, HierarchyTest) {
     98     // verify hierarchy
     99     ASSERT_TRUE(mTaskSetup->getTestCase() == mTestCase);
    100     ASSERT_TRUE(mTaskAction->getTestCase() == mTestCase);
    101     ASSERT_TRUE(mTaskSequential->getTestCase() == mTestCase);
    102     ASSERT_TRUE(mTaskProcess->getTestCase() == mTestCase);
    103     ASSERT_TRUE(mTaskInput->getTestCase() == mTestCase);
    104     ASSERT_TRUE(mTaskOutput->getTestCase() == mTestCase);
    105     ASSERT_TRUE(mTaskSound->getTestCase() == mTestCase);
    106 }
    107 
    108 TEST_F(TaskTest, RunTest) {
    109     ASSERT_TRUE(mTestCase->run() == TaskGeneric::EResultOK);
    110     ASSERT_TRUE(TestTaskDummy::mRunCounter == 7);
    111 }
    112 
    113 TEST_F(TaskTest, StringAttributeTest) {
    114     android::String8 aaaVal("aaa_val");
    115     android::String8 bbbVal("bbb_val");
    116     android::String8 read;
    117     TestTaskDummy* task = reinterpret_cast<TestTaskDummy*>(mTaskSetup);
    118     ASSERT_TRUE(task->addStringAttributePublic(AAA, aaaVal));
    119     ASSERT_TRUE(task->addStringAttributePublic(BBB, bbbVal));
    120     const android::String8 CCC("ccc");
    121     ASSERT_TRUE(!task->addStringAttributePublic(CCC, bbbVal));
    122     ASSERT_TRUE(task->findStringAttributePublic(AAA, read));
    123     ASSERT_TRUE(read == aaaVal);
    124     ASSERT_TRUE(task->findStringAttributePublic(BBB, read));
    125     ASSERT_TRUE(read == bbbVal);
    126     const android::String8 VERSION("version");
    127     const android::String8 NAME("name");
    128     ASSERT_TRUE(!task->findStringAttributePublic(VERSION, read));
    129     ASSERT_TRUE(!task->findStringAttributePublic(NAME, read));
    130 }
    131 
    132 
    133