javacommons/jvms/nativeportlayer/tsrc/src/testjvmnativeport.cpp
author hgs
Fri, 15 Oct 2010 12:29:39 +0300
changeset 80 d6dafc5d983f
permissions -rw-r--r--
v2.2.19_1
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
80
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     1
/*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     2
* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     3
* All rights reserved.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     8
*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
     9
* Initial Contributors:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    11
*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    12
* Contributors:
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    13
*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    14
* Description:  Tests for function server
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    15
*
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    16
*/
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    17
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    18
#include <e32base.h>
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    19
#include "TestHarness.h"
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    20
#include "testutils.h"
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    21
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    22
#include "mjvmnativeportlayer.h"
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    23
#include "mjavafile.h"
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    24
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    25
TEST_GROUP(TestJvmPortPriority)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    26
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    27
    TEST_SETUP()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    28
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    29
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    30
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    31
    TEST_TEARDOWN()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    32
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    33
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    34
};
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    35
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    36
TEST_GROUP(TestJvmPort)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    37
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    38
    TEST_SETUP()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    39
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    40
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    41
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    42
    TEST_TEARDOWN()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    43
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    44
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    45
};
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    46
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    47
_LIT(KTestFileName, "c:\\javaFileTest.txt");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    48
_LIT(KTestReplaceFileName, "c:\\javaFileReplaceTest.txt");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    49
_LIT(KTestDrmFileName1, "c:\\test.dm");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    50
_LIT(KTestDrmFileName2, "c:\\test.dcf");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    51
_LIT(KTestJarFileName, "c:\\test.jar");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    52
_LIT(KTestDrmEncryptedFileName, "c:\\testDrm.dcf");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    53
_LIT(KTestDrmEncryptedInstallerFileName, "c:\\testDrm.jar");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    54
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    55
_LIT8(KTestText, "Testing..");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    56
_LIT8(KTestText2, "Testing2..");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    57
_LIT8(KJarText, "This is a jar file.");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    58
_LIT8(KDrmText, "This is a drm protected file.");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    59
_LIT8(KDM_CONTENT, "This is a dm file.");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    60
_LIT8(KDCF_CONTENT, "This is a dcf file.");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    61
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    62
TEST_GROUP(TestJavaFile)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    63
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    64
    RFs fs;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    65
    javaruntime::MJvmNativePortLayer* port;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    66
    javaruntime::MJavaFile* file;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    67
    TEST_SETUP()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    68
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    69
        port = 0;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    70
        fs.Connect();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    71
        fs.Delete(KTestFileName);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    72
        fs.Delete(KTestReplaceFileName);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    73
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    74
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    75
    TEST_TEARDOWN()
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    76
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    77
        delete port;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    78
        delete file;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    79
        fs.Close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    80
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    81
};
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    82
// #undef CHECKWITHNOTE
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    83
// #define CHECKWITHNOTE(x, y) CHECK(x)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    84
void checkPriority(const TThreadPriority& expected,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    85
                   const TThreadPriority& recieved)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    86
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    87
    CHECKWITHNOTE(expected == recieved, "Priority check failed. Expecting: "<<expected<<", received: "<<recieved);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    88
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    89
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    90
// Testing priority table.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    91
TEST(TestJvmPortPriority, priorityTest)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    92
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    93
    int i = 0;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    94
    checkPriority(EPriorityMuchLess, javaruntime::GetSingleThreadPriority(i++));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    95
    checkPriority(EPriorityMuchLess, javaruntime::GetSingleThreadPriority(i++));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    96
    checkPriority(EPriorityMuchLess, javaruntime::GetSingleThreadPriority(i++));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    97
    checkPriority(EPriorityMuchLess, javaruntime::GetSingleThreadPriority(i++));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    98
    checkPriority(EPriorityMuchLess, javaruntime::GetSingleThreadPriority(i++));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
    99
    checkPriority(EPriorityLess, javaruntime::GetSingleThreadPriority(i++));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   100
    checkPriority(EPriorityLess, javaruntime::GetSingleThreadPriority(i++));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   101
    checkPriority(EPriorityLess, javaruntime::GetSingleThreadPriority(i++));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   102
    checkPriority(EPriorityLess, javaruntime::GetSingleThreadPriority(i++));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   103
    checkPriority(EPriorityNormal, javaruntime::GetSingleThreadPriority(i++));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   104
    checkPriority(EPriorityNormal, javaruntime::GetSingleThreadPriority(i++));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   105
    checkPriority(EPriorityMore, javaruntime::GetSingleThreadPriority(i++));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   106
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   107
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   108
void getPort(javaruntime::MJvmNativePortLayer*& port)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   109
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   110
    TRAPD(err, port = javaruntime::GetPortLayerL());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   111
    CHECKWITHNOTE(err == KErrNone, "Error in getting MJvmNativePortLayer: "<<err);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   112
    CHECKWITHNOTE(port, "Got null pointer when getting port layer");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   113
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   114
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   115
void getFileAndPort(javaruntime::MJvmNativePortLayer*& port, javaruntime::MJavaFile*& file)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   116
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   117
    if (port == 0)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   118
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   119
        getPort(port);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   120
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   121
    TRAPD(err, file = port->GetJavaFileL());
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   122
    CHECKWITHNOTE(err == KErrNone, "Error in getting MJavaFile: "<<err);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   123
    CHECKWITHNOTE(file, "Got null pointer when getting Java file");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   124
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   125
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   126
_LIT(KOutpuFullDir,"c:\\logs\\java\\");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   127
_LIT(KOutpuFullDir2,"c:\\logs\\java2\\");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   128
_LIT(KConsole,"c:\\logs\\java\\vmconsole.txt");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   129
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   130
// Testing log writings works.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   131
TEST(TestJvmPort, logWritingTest)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   132
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   133
    RFs fs;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   134
    fs.Connect();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   135
    TUint dummy;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   136
    TBool dirExists = fs.Att(KOutpuFullDir, dummy) == KErrNone;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   137
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   138
    TInt res;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   139
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   140
    // If the c:\logs\java directory exixts rename it to java2
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   141
    if (dirExists)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   142
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   143
        res = fs.Rename(KOutpuFullDir, KOutpuFullDir2);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   144
        CHECKWITHNOTE(res == KErrNone, "Rename failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   145
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   146
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   147
    // Testing that writing to nonexisting dir works.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   148
    javaruntime::MJvmNativePortLayer* port;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   149
    getPort(port);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   150
    TRAP(res, port->WriteToStdoutL(_L8("StdOutTestNonExisting\n")));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   151
    CHECKWITHNOTE(res == KErrNone, "Error in writing to std.out: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   152
    TRAP(res, port->WriteToStderrL(_L8("StdErrTestNonExisting\n")));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   153
    CHECKWITHNOTE(res == KErrNone, "Error in writing to std.err: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   154
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   155
    CHECKWITHNOTE(fs.Att(KOutpuFullDir, dummy) != KErrNone, "The logs\\java dir should not be present: ");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   156
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   157
    delete port;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   158
    port = 0;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   159
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   160
    // Create c:\logs\java directory.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   161
    res = fs.MkDir(KOutpuFullDir);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   162
    CHECKWITHNOTE(res == KErrNone, "MkDir failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   163
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   164
    // Needs to reinit the port, because the logs dir exists now.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   165
    getPort(port);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   166
    TRAP(res, port->WriteToStdoutL(_L8("StdOutTest\n")));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   167
    CHECKWITHNOTE(res == KErrNone, "Error in writing to std.out: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   168
    TRAP(res, port->WriteToStderrL(_L8("StdErrTest\n")));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   169
    CHECKWITHNOTE(res == KErrNone, "Error in writing to std.err: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   170
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   171
    // Check that the vmconsole.txt contains correct content.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   172
    RFile file;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   173
    res = file.Open(fs, KConsole, EFileShareReadersOrWriters);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   174
    CHECKWITHNOTE(res == KErrNone, "file open failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   175
    TBuf8<30> bufR;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   176
    res = file.Read(bufR);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   177
    CHECKWITHNOTE(res == KErrNone, "file read failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   178
    file.Close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   179
    res = bufR.Compare(_L8("StdOutTest\nStdErrTest\n"));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   180
    CHECKWITHNOTE(res == 0, "Compare failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   181
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   182
    // Delete the vmconsole.txt. RFileLogger seems to keep the file open for
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   183
    // a while.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   184
    int tryCount = 0;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   185
    do
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   186
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   187
        res = fs.Delete(KConsole);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   188
        if (res == KErrInUse)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   189
        {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   190
            tryCount++;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   191
            User::After(500 * 1000);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   192
        }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   193
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   194
    while (res == KErrInUse && tryCount < 200);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   195
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   196
    CHECKWITHNOTE(res == 0, "Delete failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   197
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   198
    // Delete c:\logs\java directory.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   199
    res = fs.RmDir(KOutpuFullDir);;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   200
    CHECKWITHNOTE(res == 0, "RmDir failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   201
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   202
    // If the c:\logs\java directory exixted before the tests, return it back.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   203
    if (dirExists)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   204
    {
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   205
        res = fs.Rename(KOutpuFullDir2, KOutpuFullDir);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   206
        CHECKWITHNOTE(res == 0, "Rename2 failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   207
    }
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   208
    fs.Close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   209
    delete port;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   210
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   211
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   212
// Testing that opening a file works ok and when trying to re-open KErrInUse
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   213
// is returned.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   214
TEST(TestJavaFile, fileOpen)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   215
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   216
    getFileAndPort(port, file);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   217
    int res = file->Open(fs, KTestJarFileName, EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   218
    CHECKWITHNOTE(res == KErrNone, "Failed to open file: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   219
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   220
    res = file->Open(fs, KTestJarFileName, EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   221
    CHECKWITHNOTE(res == KErrInUse, "Open, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   222
    file->Close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   223
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   224
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   225
// Testing that opening unexisting files.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   226
TEST(TestJavaFile, fileOpenUnexisting)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   227
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   228
    getFileAndPort(port, file);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   229
    int res = file->Open(fs, _L("c:\\nonexisting.txt"), EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   230
    CHECKWITHNOTE(res == KErrNotFound, "Open, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   231
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   232
    res = file->Open(fs, _L("c:\\nonexisting.dcf"), EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   233
    CHECKWITHNOTE(res == KErrNotFound, "Open2, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   234
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   235
    res = file->Open(fs, _L("c:\\nonexisting.txt"), EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   236
    CHECKWITHNOTE(res == KErrNotFound, "Open3, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   237
    file->Close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   238
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   239
    res = file->Open(fs, _L("c:\\nonexisting.dcf"), EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   240
    CHECKWITHNOTE(res == KErrNotFound, "Open4, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   241
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   242
    file->Close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   243
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   244
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   245
// Testing that creation of file to unaccessable location fails.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   246
TEST(TestJavaFile, fileCreateUnAccessible)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   247
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   248
    getFileAndPort(port, file);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   249
    int res = file->Create(fs, _L("z:\\nonexisting.txt"), EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   250
    CHECKWITHNOTE(res == KErrAccessDenied, "Create, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   251
    file->Close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   252
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   253
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   254
// Testing that Replacing of file to unaccessable location fails.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   255
TEST(TestJavaFile, fileReplaceUnAccessible)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   256
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   257
    getFileAndPort(port, file);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   258
    int res = file->Replace(fs, _L("z:\\nonexisting.txt"), EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   259
    CHECKWITHNOTE(res == KErrAccessDenied, "Replace, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   260
    file->Close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   261
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   262
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   263
// Testing that file creation succceeds. As a side test testing that Open,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   264
// Create and replace will fail when using file object that is in use.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   265
TEST(TestJavaFile, fileCreate1)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   266
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   267
    getFileAndPort(port, file);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   268
    int res = file->Create(fs, KTestFileName, EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   269
    CHECKWITHNOTE(res == KErrNone, "Failed to create file: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   270
    TUint dummy;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   271
    CHECKWITHNOTE(fs.Att(KTestFileName, dummy) == KErrNone, "File does't exist");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   272
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   273
    res = file->Open(fs, KTestFileName, EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   274
    CHECKWITHNOTE(res == KErrInUse, "ReOpen, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   275
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   276
    res = file->Replace(fs, KTestFileName, EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   277
    CHECKWITHNOTE(res == KErrInUse, "ReReplace, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   278
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   279
    res = file->Create(fs, KTestFileName, EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   280
    CHECKWITHNOTE(res == KErrInUse, "ReCreate, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   281
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   282
    file->Close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   283
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   284
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   285
// Testing read, write flush and seek for normal files.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   286
TEST(TestJavaFile, fileCreateWriteReads)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   287
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   288
    getFileAndPort(port, file);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   289
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   290
    // Create the test file.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   291
    int res = file->Create(fs, KTestFileName, EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   292
    CHECKWITHNOTE(res == KErrNone, "Failed to create file: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   293
    TUint dummy;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   294
    CHECKWITHNOTE(fs.Att(KTestFileName, dummy) == KErrNone, "File does't exist");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   295
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   296
    TBuf8<15> bufR;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   297
    TBuf8<15> bufW;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   298
    bufW.Append(KTestText);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   299
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   300
    // Write content to buffer.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   301
    res = file->Write(bufW);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   302
    CHECKWITHNOTE(res == KErrNone, "Write failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   303
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   304
    // Flush content to buffer.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   305
    res = file->Flush();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   306
    CHECKWITHNOTE(res == KErrNone, "Flush failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   307
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   308
    // Set current position to the start of the file.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   309
    TInt pos = 0;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   310
    res = file->Seek(ESeekStart, pos);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   311
    CHECKWITHNOTE(res == KErrNone, "Seek failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   312
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   313
    // Read the whole content of the file.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   314
    res = file->Read(bufR);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   315
    CHECKWITHNOTE(res == KErrNone, "Read failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   316
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   317
    // Compare the the read and written are the same.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   318
    res = bufW.Compare(bufR);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   319
    CHECKWITHNOTE(res == 0, "Compare failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   320
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   321
    // Read a portion of the content from the file.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   322
    bufR.Zero();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   323
    pos = 2;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   324
    res = file->Seek(ESeekStart, pos);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   325
    CHECKWITHNOTE(res == KErrNone, "Seek2 failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   326
    res = file->Read(bufR, 5);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   327
    CHECKWITHNOTE(res == KErrNone, "Read2 failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   328
    res = bufW.Mid(2,5).Compare(bufR);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   329
    CHECKWITHNOTE(res == 0, "Compare2 failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   330
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   331
    // Read a portion of the content from the file. Testing
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   332
    // ESeekEnd.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   333
    bufR.Zero();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   334
    pos = -6;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   335
    res = file->Seek(ESeekEnd, pos);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   336
    CHECKWITHNOTE(res == KErrNone, "Seek3 failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   337
    res = file->Read(bufR, 4);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   338
    CHECKWITHNOTE(res == KErrNone, "Read3 failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   339
    res = bufW.Mid(3,4).Compare(bufR);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   340
    CHECKWITHNOTE(res == 0, "Compare2 failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   341
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   342
    file->Close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   343
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   344
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   345
// Testing all variants of Write methods, Size, and SetSize. As a side test
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   346
// testing that Open, Create and replace will fail when using file object
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   347
// that is in use.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   348
TEST(TestJavaFile, fileCreateWritesRead)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   349
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   350
    getFileAndPort(port, file);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   351
    int res = file->Create(fs, KTestFileName, EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   352
    CHECKWITHNOTE(res == KErrNone, "Failed to create file: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   353
    TUint dummy;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   354
    CHECKWITHNOTE(fs.Att(KTestFileName, dummy) == KErrNone, "File does't exist");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   355
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   356
    res = file->Open(fs, KTestFileName, EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   357
    CHECKWITHNOTE(res == KErrInUse, "ReOpen, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   358
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   359
    res = file->Replace(fs, KTestFileName, EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   360
    CHECKWITHNOTE(res == KErrInUse, "ReReplace, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   361
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   362
    res = file->Create(fs, KTestFileName, EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   363
    CHECKWITHNOTE(res == KErrInUse, "ReCreate, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   364
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   365
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   366
    // Write some content to file.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   367
    TBuf8<45> bufR;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   368
    TBuf8<15> bufW;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   369
    bufW.Append(KTestText);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   370
    res = file->Write(bufW);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   371
    CHECKWITHNOTE(res == KErrNone, "Write failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   372
    res = file->Write(bufW, 8);  // Testing..Testing.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   373
    CHECKWITHNOTE(res == KErrNone, "Write failed2: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   374
    res = file->Write(2, bufW);  // TeTesting..sting.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   375
    CHECKWITHNOTE(res == KErrNone, "Write failed3: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   376
    res = file->Write(8, bufW, 2); // TeTestinTe.sting.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   377
    CHECKWITHNOTE(res == KErrNone, "Write failed4: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   378
    TInt pos = 0;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   379
    res = file->Seek(ESeekEnd, pos);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   380
    CHECKWITHNOTE(res == KErrNone, "Seek failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   381
    res = file->Write(bufW, 4);  // TeTestinTe.sting.Test
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   382
    CHECKWITHNOTE(res == KErrNone, "Write failed5: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   383
    file->Flush();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   384
    CHECKWITHNOTE(res == KErrNone, "Flush failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   385
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   386
    // Set current position to the start of the file.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   387
    pos = 0;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   388
    res = file->Seek(ESeekStart, pos);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   389
    CHECKWITHNOTE(res == KErrNone, "Seek failed2: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   390
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   391
    // Read the whole content of the file.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   392
    res = file->Read(bufR);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   393
    CHECKWITHNOTE(res == KErrNone, "Read failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   394
    _LIT8(KTestRes, "TeTestinTe.sting.Test");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   395
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   396
    // Compare that the file content is correct.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   397
    res = bufR.Compare(KTestRes);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   398
    CHECKWITHNOTE(res == 0, "Compare failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   399
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   400
    // Testing that Size works ok.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   401
    TInt size;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   402
    res = file->Size(size);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   403
    CHECKWITHNOTE(res == 0, "Size call failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   404
    CHECKWITHNOTE(size == 21, "Size failed: "<<size);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   405
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   406
    // Testing that SetSize works ok.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   407
    res = file->SetSize(10);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   408
    CHECKWITHNOTE(size == 21, "SetSize failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   409
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   410
    // Read the content ater size change.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   411
    bufR.Zero();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   412
    res = file->Seek(ESeekStart, pos);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   413
    res = file->Read(bufR);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   414
    CHECKWITHNOTE(res == KErrNone, "Read failed2: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   415
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   416
    // The new size should be smaller that before SetSize.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   417
    pos = 0;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   418
    res = file->Size(size);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   419
    CHECKWITHNOTE(res == 0, "Size call failed2: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   420
    CHECKWITHNOTE(size == 10, "Size failed2: "<<size);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   421
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   422
    // Compare that the file content is correct.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   423
    res = bufR.Compare(KTestRes().Left(10));
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   424
    CHECKWITHNOTE(res == 0, "Compare failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   425
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   426
    file->Close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   427
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   428
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   429
// Testing Replace method. As a side test testing that Open, Create and
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   430
// replace will fail when using file object that is in use.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   431
TEST(TestJavaFile, fileReplace)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   432
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   433
    getFileAndPort(port, file);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   434
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   435
    // Checking that file that we are about to create doesn't exist.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   436
    TUint dummy;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   437
    CHECKWITHNOTE(fs.Att(KTestReplaceFileName, dummy) != KErrNone, "File exists before");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   438
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   439
    // Using Replace to create the file.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   440
    int res = file->Replace(fs, KTestReplaceFileName, EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   441
    CHECKWITHNOTE(res == KErrNone, "Failed to Replace file: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   442
    CHECKWITHNOTE(fs.Att(KTestReplaceFileName, dummy) == KErrNone, "File does't exist");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   443
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   444
    res = file->Open(fs, KTestReplaceFileName, EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   445
    CHECKWITHNOTE(res == KErrInUse, "ReOpen, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   446
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   447
    res = file->Replace(fs, KTestReplaceFileName, EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   448
    CHECKWITHNOTE(res == KErrInUse, "ReReplace, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   449
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   450
    res = file->Create(fs, KTestReplaceFileName, EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   451
    CHECKWITHNOTE(res == KErrInUse, "ReCreate, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   452
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   453
    // Write content to created file.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   454
    TBuf8<45> bufR;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   455
    TBuf8<15> bufW;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   456
    bufW.Append(KTestText);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   457
    res = file->Write(bufW);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   458
    CHECKWITHNOTE(res == KErrNone, "Write failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   459
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   460
    // Read the content and compare that the content is correct.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   461
    TInt pos = 0;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   462
    res = file->Seek(ESeekStart, pos);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   463
    CHECKWITHNOTE(res == KErrNone, "Seek failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   464
    res = file->Read(bufR);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   465
    CHECKWITHNOTE(res == KErrNone, "Read failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   466
    res = bufR.Compare(KTestText);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   467
    CHECKWITHNOTE(res == 0, "Compare failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   468
    file->Close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   469
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   470
    // Replace the existing file.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   471
    res = file->Replace(fs, KTestReplaceFileName, EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   472
    CHECKWITHNOTE(res == KErrNone, "Failed to Replace file2: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   473
    CHECKWITHNOTE(fs.Att(KTestReplaceFileName, dummy) == KErrNone, "File does't exist2");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   474
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   475
    // Check that the file size is zero i.e. a new file.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   476
    TInt size;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   477
    res = file->Size(size);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   478
    CHECKWITHNOTE(res == 0, "Size call failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   479
    CHECKWITHNOTE(size == 0, "Size failed: "<<size);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   480
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   481
    // Write content to recreated file.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   482
    bufW.Zero();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   483
    bufR.Zero();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   484
    bufW.Append(KTestText2);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   485
    res = file->Write(bufW);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   486
    CHECKWITHNOTE(res == KErrNone, "Write failed2: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   487
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   488
    // Read the content and compare that the content is correct.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   489
    res = file->Seek(ESeekStart, pos);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   490
    CHECKWITHNOTE(res == KErrNone, "Seek failed2: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   491
    res = file->Read(bufR);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   492
    CHECKWITHNOTE(res == KErrNone, "Read failed2: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   493
    res = bufR.Compare(KTestText2);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   494
    CHECKWITHNOTE(res == 0, "Compare failed2: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   495
    file->Close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   496
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   497
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   498
// Testing Lock and Unlock methods.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   499
TEST(TestJavaFile, fileLock)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   500
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   501
    getFileAndPort(port, file);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   502
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   503
    // Creating two files objects pointing to same directory.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   504
    int res = file->Create(fs, KTestFileName, EFileWrite | EFileShareAny);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   505
    CHECKWITHNOTE(res == KErrNone, "Failed to Create file: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   506
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   507
    javaruntime::MJavaFile* file2;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   508
    getFileAndPort(port, file2);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   509
    res = file2->Open(fs, KTestFileName, EFileRead | EFileShareAny);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   510
    CHECKWITHNOTE(res == KErrNone, "Failed to Open file: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   511
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   512
    // Write some content.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   513
    res = file->Write(KTestText);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   514
    CHECKWITHNOTE(res == KErrNone, "Failed to write to file: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   515
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   516
    // Write some content.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   517
    res = file->Lock(3, 4);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   518
    CHECKWITHNOTE(res == KErrNone, "Failed to lock the file: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   519
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   520
    // Lock the area
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   521
    TInt pos = 4;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   522
    res = file2->Seek(ESeekStart, pos);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   523
    CHECKWITHNOTE(res == KErrNone, "Seek failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   524
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   525
    // Check that locked the area is unaccessable.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   526
    TBuf8<45> bufR;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   527
    res = file2->Read(bufR, 2);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   528
    CHECKWITHNOTE(res == KErrLocked, "Expecting locked when reading: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   529
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   530
    // Unlock the area
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   531
    res = file->UnLock(3, 4);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   532
    CHECKWITHNOTE(res == KErrNone, "Failed to unlock the file: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   533
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   534
    // Check that unlocked the area is now accessable.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   535
    res = file2->Read(bufR, 2);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   536
    CHECKWITHNOTE(res == KErrNone, "Read failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   537
    res = KTestText().Mid(4,2).Compare(bufR);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   538
    CHECKWITHNOTE(res == 0, "Compare failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   539
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   540
    file->Close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   541
    file2->Close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   542
    delete file2;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   543
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   544
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   545
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   546
// Testing that jar file can be opened. This test is for checking a branch in
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   547
// IsDrm() method.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   548
TEST(TestJavaFile, openJar)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   549
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   550
    getFileAndPort(port, file);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   551
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   552
    // Open the jar file.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   553
    TInt res = file->Open(fs, KTestJarFileName, EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   554
    CHECKWITHNOTE(res == KErrNone, "Open, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   555
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   556
    // Read and compare content.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   557
    TBuf8<45> bufR;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   558
    res = file->Read(bufR);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   559
    CHECKWITHNOTE(res == KErrNone, "Read failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   560
    res = bufR.Compare(KJarText);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   561
    CHECKWITHNOTE(res == 0, "Compare failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   562
    file->Close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   563
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   564
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   565
// Testing the file open through CAF with files that are not DRM protected.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   566
void testOpenCafFile(RFs& fs,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   567
                     javaruntime::MJavaFile* file,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   568
                     const TDesC& fileName,
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   569
                     const TDesC8& compareString)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   570
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   571
    // Open file using CAF.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   572
    TInt res = file->Open(fs, fileName, EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   573
    CHECKWITHNOTE(res == KErrNone, "Failed to open file: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   574
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   575
    // Read the content and compare.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   576
    TBuf8<45> bufR;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   577
    res = file->Read(bufR);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   578
    CHECKWITHNOTE(res == KErrNone, "Read failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   579
    res = bufR.Compare(compareString);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   580
    CHECKWITHNOTE(res == 0, "Compare failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   581
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   582
    // Read the partial content and compare. Using ESeekStart.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   583
    bufR.Zero();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   584
    TInt pos = 2;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   585
    res = file->Seek(ESeekStart, pos);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   586
    CHECKWITHNOTE(res == KErrNone, "Seek failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   587
    res = file->Read(bufR, 5);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   588
    CHECKWITHNOTE(res == KErrNone, "Read2 failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   589
    res = compareString.Mid(2,5).Compare(bufR);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   590
    CHECKWITHNOTE(res == 0, "Compare2 failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   591
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   592
    // Read the partial content and compare. Using ESeekEnd.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   593
    bufR.Zero();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   594
    pos = -6;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   595
    res = file->Seek(ESeekEnd, pos);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   596
    CHECKWITHNOTE(res == KErrNone, "Seek3 failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   597
    res = file->Read(bufR, 4);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   598
    CHECKWITHNOTE(res == KErrNone, "Read3 failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   599
    res = compareString.Mid(compareString.Length() - 6, 4).Compare(bufR);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   600
    CHECKWITHNOTE(res == 0, "Compare2 failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   601
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   602
    // Check that Size method works also in case of CAF.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   603
    TInt size;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   604
    res = file->Size(size);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   605
    CHECKWITHNOTE(res == 0, "Size call failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   606
    CHECKWITHNOTE(size == compareString.Length(), "Size failed: "<<size);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   607
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   608
    file->Close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   609
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   610
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   611
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   612
// Testing CAF with .dm file extension.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   613
TEST(TestJavaFile, readDrmDmFile)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   614
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   615
    getFileAndPort(port, file);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   616
    testOpenCafFile(fs, file, KTestDrmFileName1, KDM_CONTENT);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   617
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   618
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   619
// Testing CAF with .dcf file extension.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   620
TEST(TestJavaFile, readDrmDcfFile)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   621
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   622
    getFileAndPort(port, file);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   623
    testOpenCafFile(fs, file, KTestDrmFileName2, KDCF_CONTENT);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   624
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   625
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   626
// Testing methods that are not supported by CAF. Expecting correct error codes.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   627
TEST(TestJavaFile, readDrmNotSupportedMethods)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   628
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   629
    // Open file using CAF.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   630
    getFileAndPort(port, file);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   631
    TInt res = file->Open(fs, KTestDrmFileName1, EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   632
    CHECKWITHNOTE(res == KErrNone, "Failed to open file: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   633
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   634
    // Trying to re-open the file - this should fail.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   635
    res = file->Open(fs, KTestDrmFileName1, EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   636
    CHECKWITHNOTE(res == KErrInUse, "Open, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   637
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   638
    res = file->SetSize(10);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   639
    CHECKWITHNOTE(res == KErrNotSupported, "SetSize, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   640
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   641
    _LIT8(KDummy, "dummy");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   642
    res = file->Write(KDummy);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   643
    CHECKWITHNOTE(res == KErrNotSupported, "Write, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   644
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   645
    res = file->Write(KDummy, 1);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   646
    CHECKWITHNOTE(res == KErrNotSupported, "Write2, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   647
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   648
    res = file->Write(1, KDummy);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   649
    CHECKWITHNOTE(res == KErrNotSupported, "Write3, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   650
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   651
    res = file->Write(1, KDummy, 1);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   652
    CHECKWITHNOTE(res == KErrNotSupported, "Write4, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   653
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   654
    res = file->Lock(1, 1);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   655
    CHECKWITHNOTE(res == KErrNotSupported, "Lock, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   656
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   657
    res = file->UnLock(1, 1);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   658
    CHECKWITHNOTE(res == KErrNotSupported, "UnLock, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   659
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   660
    res = file->Flush();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   661
    CHECKWITHNOTE(res == KErrNotSupported, "Flush, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   662
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   663
    file->Close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   664
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   665
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   666
// Testing file reading that is DRM protected. Reading through CAF. This test
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   667
// requires that rights object is added to key store. See readme.txt for
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   668
// instructions.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   669
TEST(TestJavaFile, readDrmProtectedFile)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   670
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   671
    // Open the DRM protected jar file.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   672
    getFileAndPort(port, file);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   673
    TInt res = file->Open(fs, KTestDrmEncryptedFileName, EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   674
    CHECKWITHNOTE(res == KErrNone, "Failed to open file: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   675
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   676
    // Read the content and compare.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   677
    TBuf8<45> bufR;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   678
    res = file->Read(bufR);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   679
    CHECKWITHNOTE(res == KErrNone, "Read failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   680
    res = bufR.Compare(KDrmText);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   681
    CHECKWITHNOTE(res == 0, "Compare failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   682
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   683
    file->Close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   684
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   685
    // Open the DRM protected file having .jar extension. This will not be
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   686
    // opened through CAF and therefore the content should not be in decrypted
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   687
    // format.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   688
    res = file->Open(fs, KTestDrmEncryptedInstallerFileName, EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   689
    CHECKWITHNOTE(res == KErrNone, "Failed to open file2: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   690
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   691
    // Read the content.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   692
    bufR.Zero();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   693
    res = file->Read(bufR);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   694
    CHECKWITHNOTE(res == KErrNone, "Read failed2: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   695
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   696
    // Check that we were not able to read the content as decrypted format.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   697
    res = bufR.Compare(KDrmText);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   698
    CHECKWITHNOTE(res != 0, "Compare failed2: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   699
    file->Close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   700
}
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   701
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   702
// This test tests that the jar file that is DRM protected can be opended in
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   703
// decrypted format when the process name is JavaInstaller.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   704
TEST(TestJavaFile, readDrmProtectedInstaller)
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   705
{
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   706
    // OpenC uses statics and those will cause a memory allocations that will
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   707
    // be interpreted as a leak.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   708
    EXPECT_N_LEAKS(33);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   709
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   710
    // Faking the process name to be JavaInstaller.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   711
    _LIT(KJavaInstallerProcessName, "JavaInstaller");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   712
    _LIT(KOrigProcessName, "testjvmport");
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   713
    // Rename installer process and main thread.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   714
    TInt res = User::RenameProcess(KJavaInstallerProcessName);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   715
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   716
    // Open the DRM protected jar file.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   717
    getFileAndPort(port, file);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   718
    res = file->Open(fs, KTestDrmEncryptedInstallerFileName, EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   719
    CHECKWITHNOTE(res == KErrNone, "Failed to open file: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   720
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   721
    // Read the content and check that it was in decrypted format.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   722
    TBuf8<45> bufR;
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   723
    res = file->Read(bufR);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   724
    CHECKWITHNOTE(res == KErrNone, "Read failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   725
    res = bufR.Compare(KDrmText);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   726
    CHECKWITHNOTE(res == 0, "Compare failed: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   727
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   728
    file->Close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   729
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   730
    // Testing that opening of jar file that is not DRM protected succeeds.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   731
    res = file->Open(fs, KTestJarFileName, EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   732
    CHECKWITHNOTE(res == KErrNone, "Failed to open file2: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   733
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   734
    // Read the content and compare.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   735
    bufR.Zero();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   736
    res = file->Read(bufR);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   737
    CHECKWITHNOTE(res == KErrNone, "Read failed2: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   738
    res = bufR.Compare(KJarText);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   739
    CHECKWITHNOTE(res == 0, "Compare failed2: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   740
    file->Close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   741
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   742
    // Testing that opening nonexisting file leads to error.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   743
    res = file->Open(fs, _L("c:\\nonexisting.jar"), EFileRead);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   744
    CHECKWITHNOTE(res == KErrNotFound, "Open, unexpected result: "<<res);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   745
    file->Close();
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   746
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   747
    // Rename the process name to original.
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   748
    User::RenameProcess(KOrigProcessName);
d6dafc5d983f v2.2.19_1
hgs
parents:
diff changeset
   749
}