kerneltest/e32test/buffer/t_versio.cpp
changeset 9 96e5fb8b040d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/kerneltest/e32test/buffer/t_versio.cpp	Thu Dec 17 09:24:54 2009 +0200
@@ -0,0 +1,178 @@
+// Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
+// All rights reserved.
+// This component and the accompanying materials are made available
+// under the terms of the License "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:
+// e32test\buffer\t_versio.cpp
+// Overview:
+// Test the version information class.
+// API Information:
+// TVersion.
+// Details:
+// - Test the version name for different versions as expected.
+// - Compare the major, minor, build version number of current version and 
+// specified version and verify that error message is popped when version
+// is not supported.
+// Platforms/Drives/Compatibility:
+// All 
+// Assumptions/Requirement/Pre-requisites:
+// Failures and causes:
+// Base Port information:
+// 
+//
+
+#include <e32test.h>
+
+const TInt KNumTVersions=1+3*3*3;
+
+class RTvTest : public RTest
+    {
+public:
+    RTvTest();
+    void TestName();
+    void TestQVS();
+    void Start(const TDesC &aHeading) {Printf(aHeading);Push();}
+private:
+    TBool QVS(TInt i,TInt j);
+private:
+    TVersion* iTV[KNumTVersions];
+    TVersion iDefTV;     // tests default constructor
+    };
+
+LOCAL_D const TText* Names[]=
+    {
+    _S("0.00(0)"),
+    _S("0.00(0)"),
+    _S("0.00(1)"),
+    _S("0.00(999)"),
+    _S("0.01(0)"),
+    _S("0.01(1)"),
+    _S("0.01(999)"),
+    _S("0.99(0)"),
+    _S("0.99(1)"),
+    _S("0.99(999)"),
+    _S("1.00(0)"),
+    _S("1.00(1)"),
+    _S("1.00(999)"),
+    _S("1.01(0)"),
+    _S("1.01(1)"),
+    _S("1.01(999)"),
+    _S("1.99(0)"),
+    _S("1.99(1)"),
+    _S("1.99(999)"),
+    _S("99.00(0)"),
+    _S("99.00(1)"),
+    _S("99.00(999)"),
+    _S("99.01(0)"),
+    _S("99.01(1)"),
+    _S("99.01(999)"),
+    _S("99.99(0)"),
+    _S("99.99(1)"),
+    _S("99.99(999)")
+    };
+
+RTvTest::RTvTest()
+//
+// Constructor
+//
+    : RTest(_L("T_VERSIO"))
+    {
+
+    iTV[0]=&iDefTV;
+    TInt i=1;
+    TInt major=0;
+    FOREVER
+        {
+        TInt minor=0;
+        FOREVER
+            {
+            TInt build=0;
+            FOREVER
+                {
+                iTV[i++]=new TVersion(major,minor,build);
+                if (build==999)
+                    break;
+                build=(build==1? 999: 1);
+                }
+            if (minor==99)
+                break;
+            minor=(minor==1? 99: 1);
+            }
+        if (major==99)
+            break;
+        major=(major==1? 99: 1);
+        }
+    }
+
+void RTvTest::TestName()
+//
+// Test the version name
+//
+    {
+ 
+	Next(_L("Testing TVersion::Name()"));
+    for (TInt i=0; i<KNumTVersions; i++)
+        {
+        TPtrC Name=(TPtrC)Names[i];
+        if (iTV[i]->Name().Compare(Name))
+            Panic(Name);
+        }
+    }
+
+TBool RTvTest::QVS(TInt aCurrent,TInt aRequested)
+//
+// An independent calculation of what QueryVersionSupported should return
+//
+    {
+
+    if (aCurrent)
+        aCurrent--;
+    if (aRequested)
+        aRequested--;
+    aCurrent/=3;
+    aRequested/=3;
+    return(aCurrent>=aRequested);
+    }
+
+void RTvTest::TestQVS()
+//
+// Check QueryVersionSupported()
+//
+    {
+ 
+   Next(_L("Testing User::QueryVersionSupported()"));
+    for (TInt i=0; i<KNumTVersions; i++)
+        {
+        for (TInt j=0; j<KNumTVersions; j++)
+            {
+            if (User::QueryVersionSupported(*iTV[i],*iTV[j])!=QVS(i,j))
+                Panic(_L("Query version supported failed"));
+            }
+        }
+    }
+
+GLDEF_C TInt E32Main()
+//
+// Test TVersion class.
+//
+    {
+
+    RTvTest test;
+	test.Title();
+	test.Start(_L("Testing TVersion\n"));
+    test.TestName();
+    test.TestQVS();
+    test.Printf(_L("TVersion passed testing\n"));
+	test.End();
+	return(0);
+    }
+
+