diff -r 773449708c84 -r 4ad59aaee882 javauis/coreui/tsrc/src/testcoreui.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/javauis/coreui/tsrc/src/testcoreui.cpp Fri Sep 17 08:28:21 2010 +0300 @@ -0,0 +1,285 @@ +/* +* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Tests for JvmStarter class +* +*/ + +#include +#include +#include + +#include "coreuitestimpl.h" +#include "dynamiclibloader.h" + +#include "TestHarness.h" +#include "testutils.h" +#include "javaoslayer.h" +#include "logger.h" + +using namespace java::util; +using namespace java::ui; + + +class CoreUiTestHandlerImpl : public CoreUiTestHandler +{ +public: + CoreUiTestHandlerImpl() : mUiParams(0) + { + reset(); + } + ~CoreUiTestHandlerImpl() + { + delete mUiParams; + mUiParams = 0; + } + + virtual void startCalled(const Uid& midletUid, CoreUiParams* uiParams) + { + mMidletUid = midletUid; + if (mUiParams) + { + delete mUiParams; + mUiParams = 0; + } + if (uiParams) + { + mUiParams = new CoreUiParams(); + *mUiParams = *uiParams; + } + mStartCalledCount++; + } + virtual void releaseCalled() + { + mReleaseCalledCount++; + } + virtual void error(const std::string& info) + { + CHECKWITHNOTE(false, info) + } + + void reset() + { + mStartCalledCount = 0; + mReleaseCalledCount = 0; + } + int mStartCalledCount; + int mReleaseCalledCount; + CoreUiParams* mUiParams; + Uid mMidletUid; +}; + +#define UIPARAMSCHECK(check1, check2, fname, info) \ + CHECKWITHNOTE(check1 == check2, info << ": " << fname << " failed: 1=" << check1 << " 2=" << check2); + + +void compare(const CoreUiParams* uiParams1, const CoreUiParams* uiParams2, const std::string& info) +{ + bool pass = false; + if ((uiParams1 == 0 && uiParams2 != 0) || (uiParams1 != 0 && uiParams2 == 0)) + { + CHECKWITHNOTE(false, info << ": pointer mismatch 1=" << std::hex << uiParams1 << ", 2=" << std::hex << uiParams2); + return; + } + + if (uiParams1 == 0 && uiParams2 == 0) + { + return; + } + else if (uiParams1 != uiParams2) + { + pass = true; + } + CHECKWITHNOTE(pass, info << ": pointer mismatch 1=" << std::hex << uiParams1 << ", 2=" << std::hex << uiParams2); + UIPARAMSCHECK(uiParams1->getOrientation(), uiParams2->getOrientation(), "getOrientation", info); + UIPARAMSCHECK(uiParams1->getScreenMode(), uiParams2->getScreenMode(), "getScreenMode", info); + UIPARAMSCHECK(uiParams1->getImagePath(), uiParams2->getImagePath(), "getImagePath", info); + UIPARAMSCHECK(uiParams1->isBackgroundStart(), uiParams2->isBackgroundStart(), "isBackgroundStart", info); + +} + +void checkCallCounts(const CoreUiTestHandlerImpl& testHandler, int start, int release, const std::string& info) +{ + CHECKWITHNOTE(testHandler.mStartCalledCount == start, info <<". Start call count incorrect: " << testHandler.mStartCalledCount + <<", expecting: "< basicCoreUiLoader; + TEST_SETUP() + { + basicCoreUiLoader.reset(new java::util::DynamicLibLoader(COREUI_LIB_NAME)); + SetTestHandler setTestHandler = + reinterpret_cast(basicCoreUiLoader->getFunction("setTestHandler", + true)); + setTestHandler(&testHandler); + } + + TEST_TEARDOWN() + { + } +}; + + +// Run these tests with tst2.bat. These tests require that the javacoreui.dll +// doesn't exist at all. +TEST_GROUP(NoDllCoreUiTest) +{ + Uid uid; + TEST_SETUP() + { + } + + TEST_TEARDOWN() + { + } +}; + +TEST(TestCoreUi, testBasic) +{ + std::auto_ptr coreUiLoader; + // __BREAKPOINT(); + CHECKWITHNOTE(CoreUi::start(coreUiLoader, uid, &uiParams), "testBasic, start"); + checkCallCounts(testHandler, 1, 0, "Before release"); + CHECKWITHNOTE(CoreUi::releaseUi(coreUiLoader), "testBasic release"); + checkCallCounts(testHandler, 1, 1, "After release"); + compare(testHandler.mUiParams, &uiParams, "Final check basic"); +} + +TEST(TestCoreUi, testNullUiParams) +{ + std::auto_ptr coreUiLoader; + CHECKWITHNOTE(CoreUi::start(coreUiLoader, uid), "testNullUiParams, start"); + checkCallCounts(testHandler, 1, 0, "Before release"); + CHECKWITHNOTE(CoreUi::releaseUi(coreUiLoader), "testNullUiParams release"); + checkCallCounts(testHandler, 1, 1, "After release"); + compare(testHandler.mUiParams, 0, "Final check Null ui"); +} + +TEST(TestCoreUi, testModifiedOrientationArgs) +{ + std::auto_ptr coreUiLoader; + + uiParams.setOrientation(UNDEFINED); + CHECKWITHNOTE(CoreUi::start(coreUiLoader, uid, &uiParams), "testModifiedOrientationArgs, start1"); + checkCallCounts(testHandler, 1, 0, "Before release"); + compare(testHandler.mUiParams, &uiParams, "OrientationArgs UNDEFINED"); + + uiParams.setOrientation(LANDSCAPE); + CHECKWITHNOTE(CoreUi::start(coreUiLoader, uid, &uiParams), "testModifiedOrientationArgs, start2"); + checkCallCounts(testHandler, 2, 0, "Before release"); + compare(testHandler.mUiParams, &uiParams, "OrientationArgs LANDSCAPE"); + + uiParams.setOrientation(PORTRAIT); + CHECKWITHNOTE(CoreUi::start(coreUiLoader, uid, &uiParams), "testModifiedOrientationArgs, start3"); + checkCallCounts(testHandler, 3, 0, "Before release"); + compare(testHandler.mUiParams, &uiParams, "OrientationArgs PORTRAIT"); + + CHECKWITHNOTE(CoreUi::releaseUi(coreUiLoader), "testModifiedOrientationArgs release"); + checkCallCounts(testHandler, 3, 1, "After release"); +} + +TEST(TestCoreUi, testModifiedScreenModeArgs) +{ + std::auto_ptr coreUiLoader; + + uiParams.setScreenMode(NO_START_SCREEN); + CHECKWITHNOTE(CoreUi::start(coreUiLoader, uid, &uiParams), "testModifiedScreenModeArgs, start1"); + checkCallCounts(testHandler, 1, 0, "Before release"); + compare(testHandler.mUiParams, &uiParams, "ScreenModeArgs NO_START_SCREEN"); + + uiParams.setScreenMode(DEFAULT_START_SCREEN); + CHECKWITHNOTE(CoreUi::start(coreUiLoader, uid, &uiParams), "testModifiedScreenModeArgs, start2"); + checkCallCounts(testHandler, 2, 0, "Before release"); + compare(testHandler.mUiParams, &uiParams, "ScreenModeArgs DEFAULT_START_SCREEN"); + + uiParams.setScreenMode(MIDLET_DEFINED_SCREEN); + CHECKWITHNOTE(CoreUi::start(coreUiLoader, uid, &uiParams), "testModifiedScreenModeArgs, start3"); + checkCallCounts(testHandler, 3, 0, "Before release"); + compare(testHandler.mUiParams, &uiParams, "ScreenModeArgs MIDLET_DEFINED_SCREEN"); + + uiParams.setScreenMode(USER_DEFINED_SCREEN); + CHECKWITHNOTE(CoreUi::start(coreUiLoader, uid, &uiParams), "testModifiedScreenModeArgs, start4"); + checkCallCounts(testHandler, 4, 0, "Before release"); + compare(testHandler.mUiParams, &uiParams, "ScreenModeArgs USER_DEFINED_SCREEN"); + + CHECKWITHNOTE(CoreUi::releaseUi(coreUiLoader), "testModifiedScreenModeArgs release"); + checkCallCounts(testHandler, 4, 1, "After release"); +} + +TEST(TestCoreUi, testModifiedImagePathArgs) +{ + std::auto_ptr coreUiLoader; + + uiParams.setImagePath(L"c:\\logs\\java\\"); + CHECKWITHNOTE(CoreUi::start(coreUiLoader, uid, &uiParams), "testModifiedImagePathArgs start"); + checkCallCounts(testHandler, 1, 0, "Before release"); + compare(testHandler.mUiParams, &uiParams, "ImagePathArgs"); + + CHECKWITHNOTE(CoreUi::releaseUi(coreUiLoader), "testModifiedImagePathArgs release"); + checkCallCounts(testHandler, 1, 1, "After release"); +} + +TEST(TestCoreUi, testModifiedForeGroundArgs) +{ + std::auto_ptr coreUiLoader; + + uiParams.setBackgroundStart(true); + CHECKWITHNOTE(CoreUi::start(coreUiLoader, uid, &uiParams), "testModifiedForeGroundArgs start1"); + checkCallCounts(testHandler, 1, 0, "Before release"); + compare(testHandler.mUiParams, &uiParams, "ForeGround"); + + uiParams.setBackgroundStart(false); + CHECKWITHNOTE(CoreUi::start(coreUiLoader, uid, &uiParams), "testModifiedForeGroundArgs start2"); + checkCallCounts(testHandler, 2, 0, "Before release"); + compare(testHandler.mUiParams, &uiParams, "ForeGround"); + + CHECKWITHNOTE(CoreUi::releaseUi(coreUiLoader), "testModifiedForeGroundArgs release"); + checkCallCounts(testHandler, 2, 1, "After release"); +} + +TEST(TestCoreUi, testNoStartCall) +{ + std::auto_ptr coreUiLoader; + CHECKWITHNOTE(CoreUi::releaseUi(coreUiLoader), "testNoStartCall release"); + checkCallCounts(testHandler, 0, 1, "After release"); +} + +TEST(NoDllCoreUiTest, testBasic) +{ + std::auto_ptr coreUiLoader; + CHECKWITHNOTE(!CoreUi::start(coreUiLoader, uid), "testBasic NO_DLL start"); + CHECKWITHNOTE(!CoreUi::releaseUi(coreUiLoader), "testBasic NO_DLL release"); +} + +TEST(NoDllCoreUiTest, testOnlyStart) +{ + std::auto_ptr coreUiLoader; + CHECKWITHNOTE(!CoreUi::start(coreUiLoader, uid), "testOnlyStart NO_DLL start"); +} + +TEST(NoDllCoreUiTest, testOnlyRelease) +{ + std::auto_ptr coreUiLoader; + CHECKWITHNOTE(!CoreUi::releaseUi(coreUiLoader), "testOnlyRelease NO_DLL release"); +}