javamanager/javainstaller/installer/tsrc/javasrc/com/nokia/mj/impl/installer/utils/SysUtilTest.java
author Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com>
Wed, 23 Jun 2010 18:07:10 +0300
changeset 47 f40128debb5d
parent 35 85266cc22c7f
child 56 abc41079b313
permissions -rw-r--r--
Revision: v2.2.2 Kit: 2010125

/*
* Copyright (c) 2008-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:
*
*/


package com.nokia.mj.impl.installer.utils;

import com.nokia.mj.impl.installer.utils.InstallerException;
import com.nokia.mj.impl.installer.utils.InstallerMain;
import com.nokia.mj.impl.installer.utils.PlatformUid;
import com.nokia.mj.impl.utils.Uid;

import j2meunit.framework.Test;
import j2meunit.framework.TestCase;
import j2meunit.framework.TestMethod;
import j2meunit.framework.TestSuite;

/**
 * SysUtil unit tests.
 */
public class SysUtilTest extends TestCase implements InstallerMain
{
    // Begin j2meunit test framework setup

    public void installerMain(String[] args)
    {
        TestSuite suite = new TestSuite(this.getClass().getName());

        suite.addTest(new SysUtilTest("testGetPropertyValue", new TestMethod()
        {
            public void run(TestCase tc)
            {
                ((SysUtilTest)tc).testGetPropertyValue();
            }
        }));

        suite.addTest(new SysUtilTest("testGetUndefinedPropertyValue", new TestMethod()
        {
            public void run(TestCase tc)
            {
                ((SysUtilTest)tc).testGetUndefinedPropertyValue();
            }
        }));

        suite.addTest(new SysUtilTest("testSetPropertyValue", new TestMethod()
        {
            public void run(TestCase tc)
            {
                ((SysUtilTest)tc).testSetPropertyValue();
            }
        }));

        suite.addTest(new SysUtilTest("testSetUndefinedPropertyValue", new TestMethod()
        {
            public void run(TestCase tc)
            {
                ((SysUtilTest)tc).testSetUndefinedPropertyValue();
            }
        }));

        suite.addTest(new SysUtilTest("testDefineProperty", new TestMethod()
        {
            public void run(TestCase tc)
            {
                ((SysUtilTest)tc).testDefineProperty();
            }
        }));

        suite.addTest(new SysUtilTest("testGetRepositoryValue", new TestMethod()
        {
            public void run(TestCase tc)
            {
                ((SysUtilTest)tc).testGetRepositoryValue();
            }
        }));

        suite.addTest(new SysUtilTest("testGetUndefinedRepositoryValue", new TestMethod()
        {
            public void run(TestCase tc)
            {
                ((SysUtilTest)tc).testGetUndefinedRepositoryValue();
            }
        }));

        suite.addTest(new SysUtilTest("testGetRepositoryStringValue", new TestMethod()
        {
            public void run(TestCase tc)
            {
                ((SysUtilTest)tc).testGetRepositoryStringValue();
            }
        }));

        suite.addTest(new SysUtilTest("testGetUndefinedRepositoryStringValue", new TestMethod()
        {
            public void run(TestCase tc)
            {
                ((SysUtilTest)tc).testGetUndefinedRepositoryStringValue();
            }
        }));

        suite.addTest(new SysUtilTest("testSetRepositoryValue", new TestMethod()
        {
            public void run(TestCase tc)
            {
                ((SysUtilTest)tc).testSetRepositoryValue();
            }
        }));

        suite.addTest(new SysUtilTest("testSetUndefinedRepositoryValue", new TestMethod()
        {
            public void run(TestCase tc)
            {
                ((SysUtilTest)tc).testSetUndefinedRepositoryValue();
            }
        }));

        suite.addTest(new SysUtilTest("testSetRepositoryStringValue", new TestMethod()
        {
            public void run(TestCase tc)
            {
                ((SysUtilTest)tc).testSetRepositoryStringValue();
            }
        }));

        suite.addTest(new SysUtilTest("testSetUndefinedRepositoryStringValue", new TestMethod()
        {
            public void run(TestCase tc)
            {
                ((SysUtilTest)tc).testSetUndefinedRepositoryStringValue();
            }
        }));

        suite.addTest(new SysUtilTest("testGetDriveUniqId", new TestMethod()
        {
            public void run(TestCase tc)
            {
                ((SysUtilTest)tc).testGetDriveUniqId();
            }
        }));

        suite.addTest(new SysUtilTest("testIsDrivePresent", new TestMethod()
        {
            public void run(TestCase tc)
            {
                ((SysUtilTest)tc).testIsDrivePresent();
            }
        }));

        suite.addTest(new SysUtilTest("testIsDiskSpaceBelowCriticalLevel", new TestMethod()
        {
            public void run(TestCase tc)
            {
                ((SysUtilTest)tc).testIsDiskSpaceBelowCriticalLevel();
            }
        }));

        if (Platform.isS60())
        {
        suite.addTest(new SysUtilTest("testGetProcessState", new TestMethod()
        {
            public void run(TestCase tc)
            {
                ((SysUtilTest)tc).testGetProcessState();
            }
        }));

        suite.addTest(new SysUtilTest("testDriveGetters", new TestMethod()
        {
            public void run(TestCase tc)
            {
                ((SysUtilTest)tc).testDriveGetters();
            }
        }));

        suite.addTest(new SysUtilTest("testGetScreenSize", new TestMethod()
        {
            public void run(TestCase tc)
            {
                ((SysUtilTest)tc).testGetScreenSize();
            }
        }));

        suite.addTest(new SysUtilTest("testIsoToLang", new TestMethod()
        {
            public void run(TestCase tc)
            {
                ((SysUtilTest)tc).testIsoToLang();
            }
        }));
        }

        com.nokia.mj.impl.utils.OmjTestRunner.run(suite);
    }

    public SysUtilTest()
    {
    }

    public SysUtilTest(String aTestName, TestMethod aTestMethod)
    {
        super(aTestName, aTestMethod);
    }

    public void assertFalse(String aMsg, boolean aCondition)
    {
        assertTrue(aMsg, !aCondition);
    }

    // End j2meunit test framework setup

    protected void setUp()
    {
    }

    protected void tearDown()
    {
    }

    public void testGetPropertyValue()
    {
        try
        {
            // Test PS keys defined in hwrmpowerstatesdkpskey.h
            Uid uid = PlatformUid.createUid("0x10205041");  // KPSUidHWRMPowerState
            int key = 0x00000003; // KHWRMChargingStatus
            int value = SysUtil.getPropertyValue(uid, key);
            assertTrue("KHWRMChargingStatus(!=0): " + value, value == 0);
        }
        catch (InstallerException ie)
        {
            ie.printStackTrace();
            assertTrue("Unexpected exception: " + ie, false);
        }
    }

    public void testGetUndefinedPropertyValue()
    {
        try
        {
            // Test PS keys defined in hwrmpowerstatesdkpskey.h
            Uid uid = PlatformUid.createUid("0x10205041");  // KPSUidHWRMPowerState
            int key = 0x00000010; // Undefined key
            int value = SysUtil.getPropertyValue(uid, key);
            assertTrue("Getting undefined property value did not fail", false);
        }
        catch (InstallerException ie)
        {
            // OK, expected exception.
        }
    }

    public void testSetPropertyValue()
    {
        try
        {
            // Test PS keys defined in ScreensaverInternalPSKeys.h
            Uid uid = PlatformUid.createUid("0x101F8771");  // KPSUidScreenSaver
            int key = 0x00000001; // KScreenSaverPreviewMode
            // Set screensaver preview mode on (stays on for 10 secs).
            SysUtil.setPropertyValue(uid, key, 1);
            int value = SysUtil.getPropertyValue(uid, key);
            assertTrue("KScreenSaverPreviewMode(!=1): " + value, value == 1);
        }
        catch (InstallerException ie)
        {
            ie.printStackTrace();
            assertTrue("Unexpected exception: " + ie, false);
        }
    }

    public void testSetUndefinedPropertyValue()
    {
        try
        {
            // Test PS keys defined in ScreensaverInternalPSKeys.h
            Uid uid = PlatformUid.createUid("0x101F8771");  // KPSUidScreenSaver
            int key = 0x00000010; // Undefined key
            SysUtil.setPropertyValue(uid, key, 1);
            assertTrue("Setting undefined property value did not fail", false);
        }
        catch (InstallerException ie)
        {
            // OK, expected exception.
        }
    }

    public void testDefineProperty()
    {
        Uid uid = SysUtil.PROP_CATEGORY_SYSTEM;
        long key = SysUtil.PROP_KEY_JAVA_LATEST_INSTALLATION;

        // Delete property.
        try
        {
            SysUtil.deleteProperty(uid, key);
        }
        catch (InstallerException ie)
        {
            ie.printStackTrace();
            assertTrue("Unexpected exception from deleteProperty: " + ie, false);
        }

        // Try to get undefined property.
        try
        {
            int value = SysUtil.getPropertyValue(uid, key);
            assertTrue("Getting undefined property value did not fail", false);
        }
        catch (InstallerException ie)
        {
            // OK, expected exception.
        }

        // Try to set undefined property.
        try
        {
            SysUtil.setPropertyValue(uid, key, 1);
            assertTrue("Setting undefined property value did not fail", false);
        }
        catch (InstallerException ie)
        {
            // OK, expected exception.
        }

        // Define the property.
        try
        {
            SysUtil.defineProperty(uid, key);
        }
        catch (InstallerException ie)
        {
            ie.printStackTrace();
            assertTrue("Unexpected exception from defineProperty: " + ie, false);
        }

        // Set property after it is defined.
        try
        {
            SysUtil.setPropertyValue(uid, key, 1);
        }
        catch (InstallerException ie)
        {
            ie.printStackTrace();
            assertTrue("Unexpected exception from setPropertyValue: " + ie, false);
        }

        // Get property after it is defined.
        try
        {
            int value = SysUtil.getPropertyValue(uid, key);
        }
        catch (InstallerException ie)
        {
            ie.printStackTrace();
            assertTrue("Unexpected exception from getPropertyValue: " + ie, false);
        }

    }

    public void testGetRepositoryValue()
    {
        try
        {
            // Test CenRep keys defined in ScreensaverInternalCRKeys.h
            Uid uid = PlatformUid.createUid("0x101F8770"); // KCRUidScreenSaver
            long key = 0x00000004; // KScreenSaverInvertedColors
            int value = SysUtil.getRepositoryValue(uid, key);
            assertTrue("KScreenSaverInvertedColors(!=0): " + value, value == 0);
        }
        catch (InstallerException ie)
        {
            ie.printStackTrace();
            assertTrue("Unexpected exception: " + ie, false);
        }
    }

    public void testGetUndefinedRepositoryValue()
    {
        try
        {
            // P&S keys are not valid CenRep keys, test with them.
            Uid uid = SysUtil.PROP_CATEGORY_SYSTEM;
            long key = SysUtil.PROP_KEY_JAVA_LATEST_INSTALLATION;
            int value = SysUtil.getRepositoryValue(uid, key);
            assertTrue("Getting undefined repository value did not fail", false);
        }
        catch (InstallerException ie)
        {
            // OK, expected exception.
        }
    }

    public void testGetRepositoryStringValue()
    {
        try
        {
            Uid uid = SysUtil.REPO_ID_JAVA_INST_VARIATION;
            long key = SysUtil.REPO_KEY_JAVA_INST_SHELL_FOLDER_VALUE;
            String value = SysUtil.getRepositoryStringValue(uid, key);
            assertTrue("Unexpected value: " + value, "Games,Applications".equals(value));
            //assertTrue("Unexpected value: " + value, "".equals(value));
        }
        catch (InstallerException ie)
        {
            ie.printStackTrace();
            assertTrue("Unexpected exception: " + ie, false);
        }
    }

    public void testGetUndefinedRepositoryStringValue()
    {
        try
        {
            // P&S keys are not valid CenRep keys, test with them.
            Uid uid = SysUtil.PROP_CATEGORY_SYSTEM;
            long key = SysUtil.PROP_KEY_JAVA_LATEST_INSTALLATION;
            String value = SysUtil.getRepositoryStringValue(uid, key);
            assertTrue("Getting undefined repository string value did not fail", false);
        }
        catch (InstallerException ie)
        {
            // OK, expected exception.
        }
    }

    public void testSetRepositoryValue()
    {
        try
        {
            // Test CenRep keys defined in ScreensaverInternalCRKeys.h
            Uid uid = PlatformUid.createUid("0x101F8770"); // KCRUidScreenSaver
            long key = 0x00000004; // KScreenSaverInvertedColors
            int value = 0;
            SysUtil.setRepositoryValue(uid, key, value);
        }
        catch (InstallerException ie)
        {
            // Setting KScreenSaverInvertedColors throws exception.
        }
        catch (Throwable t)
        {
            t.printStackTrace();
            assertTrue("Unexpected exception: " + t, false);
        }
    }

    public void testSetUndefinedRepositoryValue()
    {
        try
        {
            Uid uid = SysUtil.REPO_ID_JAVA_INST_VARIATION;
            long key = 100; // Undefined key.
            int value = 0;
            SysUtil.setRepositoryValue(uid, key, value);
        }
        catch (InstallerException ie)
        {
            // Expected exception.
        }
        catch (Throwable t)
        {
            t.printStackTrace();
            assertTrue("Unexpected exception: " + t, false);
        }
    }

    public void testSetRepositoryStringValue()
    {
        try
        {
            Uid uid = SysUtil.REPO_ID_JAVA_INST_VARIATION;
            long key = SysUtil.REPO_KEY_JAVA_INST_DEF_INST_DRIVE;
            String valueIn = "C";
            SysUtil.setRepositoryStringValue(uid, key, valueIn);
            String valueOut = SysUtil.getRepositoryStringValue(uid, key);
            assertTrue("Unexpected value: " + valueOut, valueIn.equals(valueOut));
        }
        catch (Throwable t)
        {
            t.printStackTrace();
            assertTrue("Unexpected exception: " + t, false);
        }
    }

    public void testSetUndefinedRepositoryStringValue()
    {
        try
        {
            Uid uid = SysUtil.REPO_ID_JAVA_INST_VARIATION;
            long key = 100; // Undefined key.
            String value = "foo";
            SysUtil.setRepositoryStringValue(uid, key, value);
        }
        catch (InstallerException ie)
        {
            // Expected exception.
        }
        catch (Throwable t)
        {
            t.printStackTrace();
            assertTrue("Unexpected exception: " + t, false);
        }
    }

    public void testGetDriveUniqId()
    {
        try
        {
            int uniqId = SysUtil.getDriveUniqId(2);
            assertTrue("Expected 2(C)-drive uniq id to be not zero", uniqId != 0);
        }
        catch (InstallerException ie)
        {
            ie.printStackTrace();
            assertTrue("Unexpected exception: " + ie, false);
        }

        try
        {
            int uniqId = SysUtil.getDriveUniqId(10);
            System.out.println("\n10(K)-drive unique id: " + uniqId + "\n");
            assertTrue("Getting uniq id for nonexistent drive 10 did not fail", false);
        }
        catch (InstallerException ie)
        {
            // OK, expected exception.
        }

        try
        {
            int uniqId = SysUtil.getDriveUniqId(30);
            System.out.println("\n30-drive unique id: " + uniqId + "\n");
            assertTrue("Getting uniq id for nonexistent drive 30 did not fail", false);
        }
        catch (InstallerException ie)
        {
            // OK, expected exception.
        }
    }

    public void testIsDrivePresent()
    {
        try
        {
            boolean present = SysUtil.isDrivePresent(2);
            assertTrue("Expected 2(C)-drive to be present", present);
            present = SysUtil.isDrivePresent(10);
            assertTrue("Expected 10(K)-drive not to be present", !present);
            present = SysUtil.isDrivePresent(30);
            assertTrue("Expected 30-drive not to be present", !present);
            present = SysUtil.isDrivePresent(-1);
            assertTrue("Expected -1-drive not to be present", !present);
        }
        catch (InstallerException ie)
        {
            ie.printStackTrace();
            assertTrue("Unexpected exception: " + ie, false);
        }
    }

    public void testIsDiskSpaceBelowCriticalLevel()
    {
        try
        {
            boolean belowCriticalLevel =
                SysUtil.isDiskSpaceBelowCriticalLevel(0, 2);
            assertTrue("Expected 2(C)-drive to have free disk space",
                       !belowCriticalLevel);
        }
        catch (InstallerException ie)
        {
            ie.printStackTrace();
            assertTrue("Unexpected exception: " + ie, false);
        }

        try
        {
            boolean belowCriticalLevel =
                SysUtil.isDiskSpaceBelowCriticalLevel(0, 10);
            assertTrue("Checking disk space for nonexistent drive 10 did not fail", false);
        }
        catch (InstallerException ie)
        {
            // OK, expected exception.
        }

        try
        {
            boolean belowCriticalLevel =
                SysUtil.isDiskSpaceBelowCriticalLevel(0, 30);
            assertTrue("Checking disk space for nonexistent drive 30 did not fail", false);
        }
        catch (InstallerException ie)
        {
            // OK, expected exception.
        }
    }

    public void testGetProcessState()
    {
        int state = SysUtil.getProcessState(PlatformUid.createUid("[102033e6]"));
        assertTrue("installer process state is " + state +
                   ", not " + SysUtil.PROC_STATE_ALIVE,
                   SysUtil.PROC_STATE_ALIVE == state);
        state = SysUtil.getProcessState(PlatformUid.createUid("[e0001001]"));
        assertTrue("nonexisting process state is " + state + ", not 0",
                   0 == state);
    }

    public void testDriveGetters()
    {
        int defMem = SysUtil.getDefaultPhoneMemory();
        int defMassStorage = SysUtil.getDefaultMassStorage();
        Log.log("testDriveGetter: defaultPhoneMemory = " + defMem);
        Log.log("testDriveGetter: defaultMassStorage = " + defMassStorage);
    }

    public void testGetScreenSize()
    {
        int screenWidth = SysUtil.getScreenWidth();
        int screenHeight = SysUtil.getScreenHeight();
        Log.log("testGetScreenSize: screenWidth = " + screenWidth);
        Log.log("testGetScreenSize: screenHeight = " + screenHeight);
        assertTrue("screenWidth <= 0", screenWidth > 0);
        assertTrue("screenHeight <= 0", screenHeight > 0);
    }

    public void testIsoToLang()
    {
        testIsoToLang("unknown", -1); // unknown locale is indicated with -1
        testIsoToLang("fi", 9); // ELangFinnish, Finnish
        testIsoToLang("fi_FI", 9); // ELangFinnish, Finnish
        testIsoToLang("sv", 6); // ELangSwedish, Swedish
        testIsoToLang("sv_FI", 85); // ELangFinlandSwedish, Finland Swedish
        testIsoToLang("en", 1); // ELangEnglish, UK English
        testIsoToLang("en_US", 10); // ELangAmerican, American
        testIsoToLang("en_AU", 20); // ELangAustralian, Australian English
    }

    private void testIsoToLang(String aLocale, int aLang)
    {
        assertTrue("SysUtil.isoToLang " + aLocale + " != " + aLang,
                   SysUtil.isoToLang(aLocale) == aLang);
    }
}