javacommons/utils/functionserver/tsrc/src/testfunctionserver.cpp
branchRCL_3
changeset 24 0fd27995241b
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/javacommons/utils/functionserver/tsrc/src/testfunctionserver.cpp	Tue May 11 16:07:20 2010 +0300
@@ -0,0 +1,2186 @@
+/*
+* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:  Tests for function server
+*
+*/
+
+#include "functionserver.h"
+#include "fs_methodcall.h"
+
+#include "TestHarness.h"
+#include "exceptionbase.h"
+#include "logger.h"
+using namespace java::util;
+
+int sIvokedMethod = -1;
+int sA = -1;
+int sB = -1;
+int sC = -1;
+int sD = -1;
+int sE = -1;
+int sF = -1;
+int sG = -1;
+int sH = -1;
+int sI = -1;
+int sIndex = 0;
+int sServerSideInitCalled = false;
+int sServerSideCleanCalled = false;
+int sStartServerCalled = false;
+
+void localMethod()
+{sIvokedMethod = 1;}
+void localMethod1(int a)
+    {sIvokedMethod = 2; sA = a;} 
+void localMethod2(int a, int b)
+    {sIvokedMethod = 3; sA = a; sB = b;} 
+void localMethod3(int a, int b, int c)
+    {sIvokedMethod = 4; sA = a; sB = b; sC = c;} 
+void localMethod4(int a, int b, int c, int d)
+    {sIvokedMethod = 5; sA = a; sB = b; sC = c; sD = d;} 
+void localMethod5(int a, int b, int c, int d, int e)
+    {sIvokedMethod = 6; sA = a; sB = b; sC = c; sD = d; sE = e;} 
+void localMethod6(int a, int b, int c, int d, int e, int f)
+    {sIvokedMethod = 7; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f;} 
+void localMethod7(int a, int b, int c, int d, int e, int f, int g)
+    {sIvokedMethod = 8; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f; sG = g;}
+void localMethod8(int a, int b, int c, int d, int e, int f, int g, int h)
+    {sIvokedMethod = 9; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f; sG = g; sH = h;}
+void localMethod9(int a, int b, int c, int d, int e, int f, int g, int h, int i)
+    {sIvokedMethod = 10; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f; sG = g; sH = h; sI = i;}
+
+int localMethodR()
+    {sIvokedMethod = 11;return sIvokedMethod;}
+int localMethodR1(int a)
+    {sIvokedMethod = 12; sA = a;return sIvokedMethod;}
+int localMethodR2(int a, int b)
+    {sIvokedMethod = 13; sA = a; sB = b;return sIvokedMethod;}
+int localMethodR3(int a, int b, int c)
+    {sIvokedMethod = 14; sA = a; sB = b; sC = c;return sIvokedMethod;}
+int localMethodR4(int a, int b, int c, int d)
+    {sIvokedMethod = 15; sA = a; sB = b; sC = c; sD = d;return sIvokedMethod;}
+int localMethodR5(int a, int b, int c, int d, int e)
+    {sIvokedMethod = 16; sA = a; sB = b; sC = c; sD = d; sE = e;return sIvokedMethod;}
+int localMethodR6(int a, int b, int c, int d, int e, int f)
+    {sIvokedMethod = 17; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f;return sIvokedMethod;}
+int localMethodR7(int a, int b, int c, int d, int e, int f, int g)
+    {sIvokedMethod = 18; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f; sG = g;return sIvokedMethod;}
+int localMethodR8(int a, int b, int c, int d, int e, int f, int g, int h)
+    {sIvokedMethod = 19; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f; sG = g; sH = h;return sIvokedMethod;}
+int localMethodR9(int a, int b, int c, int d, int e, int f, int g, int h, int i) 
+    {sIvokedMethod = 20; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f; sG = g; sH = h; sI = i;return sIvokedMethod;}
+
+void localMethodTL()
+    {sIvokedMethod = 21; }
+void localMethodT1L(int a)
+    {sIvokedMethod = 22; sA = a;}
+void localMethodT2L(int a, int b)
+    {sIvokedMethod = 23; sA = a; sB = b;}
+void localMethodT3L(int a, int b, int c)
+    {sIvokedMethod = 24; sA = a; sB = b; sC = c;}
+void localMethodT4L(int a, int b, int c, int d)
+    {sIvokedMethod = 25; sA = a; sB = b; sC = c; sD = d;}
+void localMethodT5L(int a, int b, int c, int d, int e)
+    {sIvokedMethod = 26; sA = a; sB = b; sC = c; sD = d; sE = e;}
+void localMethodT6L(int a, int b, int c, int d, int e, int f)
+    {sIvokedMethod = 27; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f;}
+void localMethodT7L(int a, int b, int c, int d, int e, int f, int g)
+    {sIvokedMethod = 28; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f; sG = g;}
+void localMethodT8L(int a, int b, int c, int d, int e, int f, int g, int h)
+    {sIvokedMethod = 29; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f; sG = g; sH = h;}
+void localMethodT9L(int a, int b, int c, int d, int e, int f, int g, int h, int i)
+    {sIvokedMethod = 30; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f; sG = g; sH = h; sI = i;}
+
+void localLeavingMethodTL()
+    {sIvokedMethod = 31; User::Leave(-sIvokedMethod);}
+void localLeavingMethodT1L(int a)
+    {sIvokedMethod = 32; sA = a;User::Leave(-sIvokedMethod);}
+void localLeavingMethodT2L(int a, int b)
+    {sIvokedMethod = 33; sA = a; sB = b;User::Leave(-sIvokedMethod);}
+void localLeavingMethodT3L(int a, int b, int c)
+    {sIvokedMethod = 34; sA = a; sB = b; sC = c;User::Leave(-sIvokedMethod);}
+void localLeavingMethodT4L(int a, int b, int c, int d)
+    {sIvokedMethod = 35; sA = a; sB = b; sC = c; sD = d;User::Leave(-sIvokedMethod);}
+void localLeavingMethodT5L(int a, int b, int c, int d, int e)
+    {sIvokedMethod = 36; sA = a; sB = b; sC = c; sD = d; sE = e;User::Leave(-sIvokedMethod);}
+void localLeavingMethodT6L(int a, int b, int c, int d, int e, int f)
+    {sIvokedMethod = 37; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f;User::Leave(-sIvokedMethod);}
+void localLeavingMethodT7L(int a, int b, int c, int d, int e, int f, int g)
+    {sIvokedMethod = 38; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f; sG = g;User::Leave(-sIvokedMethod);}
+void localLeavingMethodT8L(int a, int b, int c, int d, int e, int f, int g, int h)
+    {sIvokedMethod = 39; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f; sG = g; sH = h;User::Leave(-sIvokedMethod);}
+void localLeavingMethodT9L(int a, int b, int c, int d, int e, int f, int g, int h, int i)
+    {sIvokedMethod = 40; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f; sG = g; sH = h; sI = i;User::Leave(-sIvokedMethod);}
+
+
+class TestClass
+{
+public:
+    void classMethod()
+        {sIvokedMethod = 41;}
+    void classMethod1(int a)
+        {sIvokedMethod = 42; sA = a;}
+    void classMethod2(int a, int b)
+        {sIvokedMethod = 43; sA = a; sB = b;}
+    void classMethod3(int a, int b, int c)
+        {sIvokedMethod = 44; sA = a; sB = b; sC = c;}
+    void classMethod4(int a, int b, int c, int d)
+        {sIvokedMethod = 45; sA = a; sB = b; sC = c; sD = d;}
+    void classMethod5(int a, int b, int c, int d, int e)
+        {sIvokedMethod = 46; sA = a; sB = b; sC = c; sD = d; sE = e;}
+    void classMethod6(int a, int b, int c, int d, int e, int f)
+        {sIvokedMethod = 47; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f;}
+    void classMethod7(int a, int b, int c, int d, int e, int f, int g)
+        {sIvokedMethod = 48; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f; sG = g;}
+
+    int classMethodR()
+        {sIvokedMethod = 51;return sIvokedMethod;}
+    int classMethodR1(int a)
+        {sIvokedMethod = 52; sA = a;return sIvokedMethod;}
+    int classMethodR2(int a, int b)
+        {sIvokedMethod = 53; sA = a; sB = b;return sIvokedMethod;}
+    int classMethodR3(int a, int b, int c)
+        {sIvokedMethod = 54; sA = a; sB = b; sC = c;return sIvokedMethod;}
+    int classMethodR4(int a, int b, int c, int d)
+        {sIvokedMethod = 55; sA = a; sB = b; sC = c; sD = d;return sIvokedMethod;}
+    int classMethodR5(int a, int b, int c, int d, int e)
+        {sIvokedMethod = 56; sA = a; sB = b; sC = c; sD = d; sE = e;return sIvokedMethod;}
+    int classMethodR6(int a, int b, int c, int d, int e, int f)
+        {sIvokedMethod = 57; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f;return sIvokedMethod;}
+    int classMethodR7(int a, int b, int c, int d, int e, int f, int g)
+        {sIvokedMethod = 58; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f; sG = g;return sIvokedMethod;}
+
+    void classMethodL()
+        {sIvokedMethod = 61;}
+    void classMethodL1(int a)
+        {sIvokedMethod = 62; sA = a;}
+    void classMethodL2(int a, int b)
+        {sIvokedMethod = 63; sA = a; sB = b;}
+    void classMethodL3(int a, int b, int c)
+        {sIvokedMethod = 64; sA = a; sB = b; sC = c;}
+    void classMethodL4(int a, int b, int c, int d)
+        {sIvokedMethod = 65; sA = a; sB = b; sC = c; sD = d;}
+    void classMethodL5(int a, int b, int c, int d, int e)
+        {sIvokedMethod = 66; sA = a; sB = b; sC = c; sD = d; sE = e;}
+    void classMethodL6(int a, int b, int c, int d, int e, int f)
+        {sIvokedMethod = 67; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f;}
+    void classMethodL7(int a, int b, int c, int d, int e, int f, int g)
+        {sIvokedMethod = 68; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f; sG = g;}
+
+    void classMethodWithLeaveL()
+        {sIvokedMethod = 71;User::Leave(-sIvokedMethod);}
+    void classMethodWithLeave1L(int a)
+        {sIvokedMethod = 72; sA = a;User::Leave(-sIvokedMethod);}
+    void classMethodWithLeave2L(int a, int b)
+        {sIvokedMethod = 73; sA = a; sB = b;User::Leave(-sIvokedMethod);}
+    void classMethodWithLeave3L(int a, int b, int c)
+        {sIvokedMethod = 74; sA = a; sB = b; sC = c;User::Leave(-sIvokedMethod);}
+    void classMethodWithLeave4L(int a, int b, int c, int d)
+        {sIvokedMethod = 75; sA = a; sB = b; sC = c; sD = d;User::Leave(-sIvokedMethod);}
+    void classMethodWithLeave5L(int a, int b, int c, int d, int e)
+        {sIvokedMethod = 76; sA = a; sB = b; sC = c; sD = d; sE = e;User::Leave(-sIvokedMethod);}
+    void classMethodWithLeave6L(int a, int b, int c, int d, int e, int f)
+        {sIvokedMethod = 77; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f;User::Leave(-sIvokedMethod);}
+    void classMethodWithLeave7L(int a, int b, int c, int d, int e, int f, int g)
+        {sIvokedMethod = 78; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f; sG = g;User::Leave(-sIvokedMethod);}
+
+    int classMethodRL()
+        {sIvokedMethod = 81;return sIvokedMethod;}
+    int classMethodR1L(int a)
+        {sIvokedMethod = 82; sA = a;return sIvokedMethod;}
+    int classMethodR2L(int a, int b)
+        {sIvokedMethod = 83; sA = a; sB = b;return sIvokedMethod;}
+    int classMethodR3L(int a, int b, int c)
+        {sIvokedMethod = 84; sA = a; sB = b; sC = c;return sIvokedMethod;}
+    int classMethodR4L(int a, int b, int c, int d)
+        {sIvokedMethod = 85; sA = a; sB = b; sC = c; sD = d;return sIvokedMethod;}
+    int classMethodR5L(int a, int b, int c, int d, int e)
+        {sIvokedMethod = 86; sA = a; sB = b; sC = c; sD = d; sE = e;return sIvokedMethod;}
+    int classMethodR6L(int a, int b, int c, int d, int e, int f)
+        {sIvokedMethod = 87; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f;return sIvokedMethod;}
+    int classMethodR7L(int a, int b, int c, int d, int e, int f, int g)
+        {sIvokedMethod = 88; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f; sG = g;return sIvokedMethod;}
+
+    int classMethodWithLeaveRL()
+        {sIvokedMethod = 91;User::Leave(-sIvokedMethod);return 0;}
+    int classMethodWithLeaveR1L(int a)
+        {sIvokedMethod = 92; sA = a;User::Leave(-sIvokedMethod);return 0;}
+    int classMethodWithLeaveR2L(int a, int b)
+        {sIvokedMethod = 93; sA = a; sB = b;User::Leave(-sIvokedMethod);return 0;}
+    int classMethodWithLeaveR3L(int a, int b, int c)
+        {sIvokedMethod = 94; sA = a; sB = b; sC = c;User::Leave(-sIvokedMethod);return 0;}
+    int classMethodWithLeaveR4L(int a, int b, int c, int d)
+        {sIvokedMethod = 95; sA = a; sB = b; sC = c; sD = d;User::Leave(-sIvokedMethod);return 0;}
+    int classMethodWithLeaveR5L(int a, int b, int c, int d, int e)
+        {sIvokedMethod = 96; sA = a; sB = b; sC = c; sD = d; sE = e;User::Leave(-sIvokedMethod);return 0;}
+    int classMethodWithLeaveR6L(int a, int b, int c, int d, int e, int f)
+        {sIvokedMethod = 97; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f;User::Leave(-sIvokedMethod);return 0;}
+    int classMethodWithLeaveR7L(int a, int b, int c, int d, int e, int f, int g)
+        {sIvokedMethod = 98; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f; sG = g;User::Leave(-sIvokedMethod);return 0;}
+
+
+
+    void classMethodC() const
+        {sIvokedMethod = 101;}
+    void classMethodC1(int a) const
+        {sIvokedMethod = 102; sA = a;}
+    void classMethodC2(int a, int b) const
+        {sIvokedMethod = 103; sA = a; sB = b;}
+    void classMethodC3(int a, int b, int c) const
+        {sIvokedMethod = 104; sA = a; sB = b; sC = c;}
+    void classMethodC4(int a, int b, int c, int d) const
+        {sIvokedMethod = 105; sA = a; sB = b; sC = c; sD = d;}
+    void classMethodC5(int a, int b, int c, int d, int e) const
+        {sIvokedMethod = 106; sA = a; sB = b; sC = c; sD = d; sE = e;}
+    void classMethodC6(int a, int b, int c, int d, int e, int f) const
+        {sIvokedMethod = 107; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f;}
+    void classMethodC7(int a, int b, int c, int d, int e, int f, int g) const
+        {sIvokedMethod = 108; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f; sG = g;}
+
+    int classMethodRC() const
+        {sIvokedMethod = 111;return sIvokedMethod;}
+    int classMethodRC1(int a) const
+        {sIvokedMethod = 112; sA = a;return sIvokedMethod;}
+    int classMethodRC2(int a, int b) const
+        {sIvokedMethod = 113; sA = a; sB = b;return sIvokedMethod;}
+    int classMethodRC3(int a, int b, int c) const
+        {sIvokedMethod = 114; sA = a; sB = b; sC = c;return sIvokedMethod;}
+    int classMethodRC4(int a, int b, int c, int d) const
+        {sIvokedMethod = 115; sA = a; sB = b; sC = c; sD = d;return sIvokedMethod;}
+    int classMethodRC5(int a, int b, int c, int d, int e) const
+        {sIvokedMethod = 116; sA = a; sB = b; sC = c; sD = d; sE = e;return sIvokedMethod;}
+    int classMethodRC6(int a, int b, int c, int d, int e, int f) const
+        {sIvokedMethod = 117; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f;return sIvokedMethod;}
+    int classMethodRC7(int a, int b, int c, int d, int e, int f, int g) const
+        {sIvokedMethod = 118; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f; sG = g;return sIvokedMethod;}
+
+    void classMethodCL() const
+        {sIvokedMethod = 121;}
+    void classMethodC1L(int a) const
+        {sIvokedMethod = 122; sA = a;}
+    void classMethodC2L(int a, int b) const
+        {sIvokedMethod = 123; sA = a; sB = b;}
+    void classMethodC3L(int a, int b, int c) const
+        {sIvokedMethod = 124; sA = a; sB = b; sC = c;}
+    void classMethodC4L(int a, int b, int c, int d) const
+        {sIvokedMethod = 125; sA = a; sB = b; sC = c; sD = d;}
+    void classMethodC5L(int a, int b, int c, int d, int e) const
+        {sIvokedMethod = 126; sA = a; sB = b; sC = c; sD = d; sE = e;}
+    void classMethodC6L(int a, int b, int c, int d, int e, int f) const
+        {sIvokedMethod = 127; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f;}
+    void classMethodC7L(int a, int b, int c, int d, int e, int f, int g) const
+        {sIvokedMethod = 128; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f; sG = g;}
+
+    void classMethodWithLeaveCL() const
+        {sIvokedMethod = 131;User::Leave(-sIvokedMethod);}
+    void classMethodWithLeaveC1L(int a) const
+        {sIvokedMethod = 132; sA = a;User::Leave(-sIvokedMethod);}
+    void classMethodWithLeaveC2L(int a, int b) const
+        {sIvokedMethod = 133; sA = a; sB = b;User::Leave(-sIvokedMethod);}
+    void classMethodWithLeaveC3L(int a, int b, int c) const
+        {sIvokedMethod = 134; sA = a; sB = b; sC = c;User::Leave(-sIvokedMethod);}
+    void classMethodWithLeaveC4L(int a, int b, int c, int d) const
+        {sIvokedMethod = 135; sA = a; sB = b; sC = c; sD = d;User::Leave(-sIvokedMethod);}
+    void classMethodWithLeaveC5L(int a, int b, int c, int d, int e) const
+        {sIvokedMethod = 136; sA = a; sB = b; sC = c; sD = d; sE = e;User::Leave(-sIvokedMethod);}
+    void classMethodWithLeaveC6L(int a, int b, int c, int d, int e, int f) const
+        {sIvokedMethod = 137; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f;User::Leave(-sIvokedMethod);}
+    void classMethodWithLeaveC7L(int a, int b, int c, int d, int e, int f, int g) const
+        {sIvokedMethod = 138; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f; sG = g;User::Leave(-sIvokedMethod);}
+
+    int classMethodRCL() const
+        {sIvokedMethod = 141;return sIvokedMethod;}
+    int classMethodRC1L(int a) const
+        {sIvokedMethod = 142; sA = a;return sIvokedMethod;}
+    int classMethodRC2L(int a, int b) const
+        {sIvokedMethod = 143; sA = a; sB = b;return sIvokedMethod;}
+    int classMethodRC3L(int a, int b, int c) const
+        {sIvokedMethod = 144; sA = a; sB = b; sC = c;return sIvokedMethod;}
+    int classMethodRC4L(int a, int b, int c, int d) const
+        {sIvokedMethod = 145; sA = a; sB = b; sC = c; sD = d;return sIvokedMethod;}
+    int classMethodRC5L(int a, int b, int c, int d, int e) const
+        {sIvokedMethod = 146; sA = a; sB = b; sC = c; sD = d; sE = e;return sIvokedMethod;}
+    int classMethodRC6L(int a, int b, int c, int d, int e, int f) const
+        {sIvokedMethod = 147; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f;return sIvokedMethod;}
+    int classMethodRC7L(int a, int b, int c, int d, int e, int f, int g) const
+        {sIvokedMethod = 148; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f; sG = g;return sIvokedMethod;}
+
+    int classMethodWithLeaveRCL() const
+        {sIvokedMethod = 151;User::Leave(-sIvokedMethod); return 0;}
+    int classMethodWithLeaveRC1L(int a) const
+        {sIvokedMethod = 152; sA = a;User::Leave(-sIvokedMethod);return 0;}
+    int classMethodWithLeaveRC2L(int a, int b) const
+        {sIvokedMethod = 153; sA = a; sB = b;User::Leave(-sIvokedMethod);return 0;}
+    int classMethodWithLeaveRC3L(int a, int b, int c) const
+        {sIvokedMethod = 154; sA = a; sB = b; sC = c;User::Leave(-sIvokedMethod);return 0;}
+    int classMethodWithLeaveRC4L(int a, int b, int c, int d) const
+        {sIvokedMethod = 155; sA = a; sB = b; sC = c; sD = d;User::Leave(-sIvokedMethod);return 0;}
+    int classMethodWithLeaveRC5L(int a, int b, int c, int d, int e) const
+        {sIvokedMethod = 156; sA = a; sB = b; sC = c; sD = d; sE = e;User::Leave(-sIvokedMethod);return 0;}
+    int classMethodWithLeaveRC6L(int a, int b, int c, int d, int e, int f) const
+        {sIvokedMethod = 157; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f;User::Leave(-sIvokedMethod);return 0;}
+    int classMethodWithLeaveRC7L(int a, int b, int c, int d, int e, int f, int g) const
+        {sIvokedMethod = 158; sA = a; sB = b; sC = c; sD = d; sE = e; sF = f; sG = g;User::Leave(-sIvokedMethod);return 0;}
+};
+
+
+class MyFunctionServer: public java::util::FunctionServer
+{
+public:
+
+    MyFunctionServer() :
+        java::util::FunctionServer("JavaTestFunctionServer")
+    {
+    }
+
+    virtual void doServerSideInit()
+    {
+        java::util::FunctionServer::doServerSideInit();
+        sServerSideInitCalled = ++sIndex;
+    }
+    virtual void doServerSideClean()
+    {
+        sServerSideCleanCalled = ++sIndex;
+    }
+    virtual void startServer()
+    {
+        sStartServerCalled = ++sIndex;
+        java::util::FunctionServer::startServer();
+    }
+};
+class MyFunctionServer2
+{
+    int a;
+};
+
+TEST_GROUP(TestFuncServerInit)
+{
+    TEST_SETUP()
+    {
+        sIvokedMethod = -1;
+        sA = -1;
+        sB = -1;
+        sC = -1;
+        sD = -1;
+        sE = -1;
+        sF = -1;
+        sG = -1;
+        sH = -1;
+        sI = -1;
+        sServerSideInitCalled = 0;
+        sServerSideCleanCalled = 0;
+        sStartServerCalled = 0;
+        sIndex = 0;
+    }
+
+    TEST_TEARDOWN()
+    {
+    }
+};
+
+
+TEST(TestFuncServerInit, startAndStop)
+{
+    MyFunctionServer* fserver = new MyFunctionServer();
+    try
+    {
+        fserver->createServerToNewThread();
+        fserver->stopServer();
+        delete fserver;
+        fserver = 0;
+    }
+    catch(...)
+    {
+        FAIL("Unexpected exp in startAndStop\n");
+    }
+
+    CHECK(sServerSideInitCalled == 1);
+    CHECK(sStartServerCalled == 2);
+    CHECK(sServerSideCleanCalled == 3);
+}
+
+
+
+
+
+
+
+TEST_GROUP(TestFuncServerNotOpened)
+{
+    MyFunctionServer* fserver;
+    TestClass* clazz;
+    int a;
+    int b;
+    int c;
+    int d;
+    int e;
+    int f;
+    int g;
+    int h;
+    int i;
+
+    TEST_SETUP()
+    {
+        fserver = new MyFunctionServer();
+
+        sServerSideInitCalled = 0;
+        sServerSideCleanCalled = 0;
+        sStartServerCalled = 0;
+        sIndex = 0;
+        sIvokedMethod = -1;
+        sA = -1;
+        sB = -1;
+        sC = -1;
+        sD = -1;
+        sE = -1;
+        sF = -1;
+        sG = -1;
+        sH = -1;
+        sI = -1;
+        a = -1;
+        b = -1;
+        c = -1;
+        d = -1;
+        e = -1;
+        f = -1;
+        g = -1;
+        h = -1;
+        i = -1;
+    }
+
+    TEST_TEARDOWN()
+    {
+        CHECK(sA == a);
+        CHECK(sB == b);
+        CHECK(sC == c);
+        CHECK(sD == d);
+        CHECK(sE == e);
+        CHECK(sF == f);
+        CHECK(sG == g);
+        CHECK(sH == h);
+        CHECK(sI == i);
+        delete fserver;
+        fserver = 0;
+    }
+};
+
+
+TEST(TestFuncServerNotOpened, closeWithoutOpen)
+{
+    try
+    {
+        fserver->stopServer();
+        
+    }
+    catch(...)
+    {
+        FAIL("UNexpected exp in closeWithoutOpen\n");
+    }
+    CHECK(sServerSideInitCalled == 0);
+    CHECK(sStartServerCalled == 0);
+    CHECK(sServerSideCleanCalled == 0);
+}
+
+
+TEST(TestFuncServerNotOpened, sendWithoutOpen)
+{
+    try
+    {
+        CallMethod(localMethod, fserver);
+    }
+    catch (ExceptionBase& e)
+    {
+        CHECK(e.toString().find("Trying to execute code in non-existing FS: ") != std::string::npos)
+        CHECK(e.toString().find(" server not created.") != std::string::npos)
+    }
+    catch(...)
+    {
+        FAIL("UNexpected exp in closeWithoutOpen\n");
+    }
+    CHECK(sIvokedMethod == -1);
+    CHECK(sServerSideInitCalled == 0);
+    CHECK(sStartServerCalled == 0);
+    CHECK(sServerSideCleanCalled == 0);
+}
+
+
+TEST(TestFuncServerNotOpened, sendWithoutOpenL)
+{
+    try
+    {
+        TRAPD(err, CallMethodL(localLeavingMethodTL, fserver));
+        CHECK(err == KErrServerTerminated);
+    }
+    catch(...)
+    {
+        FAIL("UNexpected exp in closeWithoutOpen\n");
+    }
+    CHECK(sIvokedMethod == -1);
+    CHECK(sServerSideInitCalled == 0);
+    CHECK(sStartServerCalled == 0);
+    CHECK(sServerSideCleanCalled == 0);
+}
+
+
+TEST(TestFuncServerNotOpened, sendAfterClose)
+{
+    try
+    {
+        fserver->createServerToNewThread();
+        fserver->stopServer();
+        CallMethod(localMethod, fserver);
+    }
+    catch (ExceptionBase& e)
+    {
+        CHECK(e.toString().find("Trying to execute code in non-existing FS: ") != std::string::npos)
+        CHECK(e.toString().find(" server closing.") != std::string::npos)
+    }
+    catch(...)
+    {
+        FAIL("UNexpected exp in closeWithoutOpen\n");
+    }
+    CHECK(sIvokedMethod == -1);
+}
+
+TEST(TestFuncServerNotOpened, sendAfterCloseL)
+{
+    try
+    {
+        fserver->createServerToNewThread();
+        fserver->stopServer();
+        TRAPD(err, CallMethodL(localLeavingMethodTL, fserver));
+        CHECK(err == KErrServerTerminated);
+    }
+    catch(...)
+    {
+        FAIL("UNexpected exp in closeWithoutOpen\n");
+    }
+    CHECK(sIvokedMethod == -1);
+}
+
+
+
+
+
+
+
+
+
+
+
+TEST_GROUP(TestFuncServer)
+{
+    MyFunctionServer* fserver;
+    TestClass* clazz;
+    int a;
+    int b;
+    int c;
+    int d;
+    int e;
+    int f;
+    int g;
+    int h;
+    int i;
+
+    TEST_SETUP()
+    {
+        fserver = new MyFunctionServer();
+        clazz = new TestClass();
+
+        sServerSideInitCalled = 0;
+        sServerSideCleanCalled = 0;
+        sStartServerCalled = 0;
+        sIndex = 0;
+        fserver->createServerToNewThread();
+        sIvokedMethod = -1;
+        sA = -1;
+        sB = -1;
+        sC = -1;
+        sD = -1;
+        sE = -1;
+        sF = -1;
+        sG = -1;
+        sH = -1;
+        sI = -1;
+        a = -1;
+        b = -1;
+        c = -1;
+        d = -1;
+        e = -1;
+        f = -1;
+        g = -1;
+        h = -1;
+        i = -1;
+    }
+
+    TEST_TEARDOWN()
+    {
+        CHECK(sA == a);
+        CHECK(sB == b);
+        CHECK(sC == c);
+        CHECK(sD == d);
+        CHECK(sE == e);
+        CHECK(sF == f);
+        CHECK(sG == g);
+        CHECK(sH == h);
+        CHECK(sI == i);
+        delete clazz;
+        fserver->stopServer();
+        delete fserver;
+        fserver = 0;
+        CHECK(sServerSideInitCalled == 1);
+        CHECK(sStartServerCalled == 2);
+        CHECK(sServerSideCleanCalled == 3);
+    }
+};
+
+// Calling local void methods.
+TEST(TestFuncServer, localVoid0)
+{
+    CallMethod(localMethod, fserver);
+    CHECK(sIvokedMethod == 1);
+}
+
+TEST(TestFuncServer, localVoid1)
+{
+    a = 1;
+    CallMethod(localMethod1, a, fserver);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localVoid2)
+{
+    a = 2;
+    b = a + 1;
+    CallMethod(localMethod2, a, b, fserver);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localVoid3)
+{
+    a = 3;
+    b = a + 1;
+    c = b + 1;
+    CallMethod(localMethod3, a, b, c, fserver);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localVoid4)
+{
+    a = 4;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    CallMethod(localMethod4, a, b, c, d, fserver);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localVoid5)
+{
+    a = 5;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    CallMethod(localMethod5, a, b, c, d, e, fserver);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localVoid6)
+{
+    a = 6;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    CallMethod(localMethod6, a, b, c, d, e, f, fserver);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localVoid7)
+{
+    a = 7;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    g = f + 1;
+    CallMethod(localMethod7, a, b, c, d, e, f, g, fserver);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localVoid8)
+{
+    a = 8;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    g = f + 1;
+    h = g + 1;
+    CallMethod(localMethod8, a, b, c, d, e, f, g, h, fserver);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localVoid9)
+{
+    a = 9;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    g = f + 1;
+    h = g + 1;
+    i = h + 1;
+    CallMethod(localMethod9, a, b, c, d, e, f, g, h, i, fserver);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+
+// Calling methods that returns something.
+
+TEST(TestFuncServer, localReturn)
+{
+    int res = CallMethod(localMethodR, fserver);
+    CHECK(res == 11);
+    CHECK(sIvokedMethod == 11);
+}
+
+TEST(TestFuncServer, localReturn1)
+{
+    a = 11;
+    int res = CallMethod(localMethodR1, a, fserver);
+    CHECK(res == a + 1);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localReturn2)
+{
+    a = 12;
+    b = a + 1;
+    int res = CallMethod(localMethodR2, a, b, fserver);
+    CHECK(res == a + 1);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localReturn3)
+{
+    a = 13;
+    b = a + 1;
+    c = b + 1;
+    int res = CallMethod(localMethodR3, a, b, c, fserver);
+    CHECK(res == a + 1);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localReturn4)
+{
+    a = 14;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    int res = CallMethod(localMethodR4, a, b, c, d, fserver);
+    CHECK(res == a + 1);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localReturn5)
+{
+    a = 15;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    int res = CallMethod(localMethodR5, a, b, c, d, e, fserver);
+    CHECK(res == a + 1);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localReturn6)
+{
+    a = 16;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    int res = CallMethod(localMethodR6, a, b, c, d, e, f, fserver);
+    CHECK(res == a + 1);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localReturn7)
+{
+    a = 17;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    g = f + 1;
+    int res = CallMethod(localMethodR7, a, b, c, d, e, f, g, fserver);
+    CHECK(res == a + 1);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localReturn8)
+{
+    a = 18;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    g = f + 1;
+    h = g + 1;
+    int res = CallMethod(localMethodR8, a, b, c, d, e, f, g, h, fserver);
+    CHECK(res == a + 1);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localReturn9)
+{
+    a = 19;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    g = f + 1;
+    h = g + 1;
+    i = h + 1;
+    int res = CallMethod(localMethodR9, a, b, c, d, e, f, g, h, i, fserver);
+    CHECK(res == a + 1);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+
+// Calling methods through TRAP.
+
+TEST(TestFuncServer, localTrap0)
+{
+    int res = CallMethodTrap(localMethodTL, fserver);
+    CHECK(res == 0);
+    CHECK(sIvokedMethod == 21);
+}
+
+TEST(TestFuncServer, localTrap1)
+{
+    a = 21;
+    int res = CallMethodTrap(localMethodT1L, a, fserver);
+    CHECK(res == 0);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localTrap2)
+{
+    a = 22;
+    b = a + 1;
+    int res = CallMethodTrap(localMethodT2L, a, b, fserver);
+    CHECK(res == 0);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localTrap3)
+{
+    a = 23;
+    b = a + 1;
+    c = b + 1;
+    int res = CallMethodTrap(localMethodT3L, a, b, c, fserver);
+    CHECK(res == 0);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localTrap4)
+{
+    a = 24;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    int res = CallMethodTrap(localMethodT4L, a, b, c, d, fserver);
+    CHECK(res == 0);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localTrap5)
+{
+    a = 25;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    int res = CallMethodTrap(localMethodT5L, a, b, c, d, e, fserver);
+    CHECK(res == 0);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localTrap6)
+{
+    a = 26;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    int res = CallMethodTrap(localMethodT6L, a, b, c, d, e, f, fserver);
+    CHECK(res == 0);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localTrap7)
+{
+    a = 27;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    g = f + 1;
+    int res = CallMethodTrap(localMethodT7L, a, b, c, d, e, f, g, fserver);
+    CHECK(res == 0);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localTrap8)
+{
+    a = 28;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    g = f + 1;
+    h = g + 1;
+    int res = CallMethodTrap(localMethodT8L, a, b, c, d, e, f, g, h, fserver);
+    CHECK(res == 0);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localTrap9)
+{
+    a = 29;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    g = f + 1;
+    h = g + 1;
+    i = h + 1;
+    int res = CallMethodTrap(localMethodT9L, a, b, c, d, e, f, g, h, i, fserver);
+    CHECK(res == 0);
+    CHECK(sIvokedMethod == a + 1);
+}
+
+// Calling methods through TRAP. The method will leave.
+TEST(TestFuncServer, localTrapWithLeave)
+{
+    int res = CallMethodTrap(localLeavingMethodTL, fserver);
+    CHECK(res == -31);
+    CHECK(sIvokedMethod == 31);
+}
+
+TEST(TestFuncServer, localTrapWithLeave1)
+{
+    a = 31;
+    int res = CallMethodTrap(localLeavingMethodT1L, a, fserver);
+    CHECK(res == -(a + 1));
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localTrapWithLeave2)
+{
+    a = 32;
+    b = a + 1;
+    int res = CallMethodTrap(localLeavingMethodT2L, a, b, fserver);
+    CHECK(res == -(a + 1));
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localTrapWithLeave3)
+{
+    a = 33;
+    b = a + 1;
+    c = b + 1;
+    int res = CallMethodTrap(localLeavingMethodT3L, a, b, c, fserver);
+    CHECK(res == -(a + 1));
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localTrapWithLeave4)
+{
+    a = 34;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    int res = CallMethodTrap(localLeavingMethodT4L, a, b, c, d, fserver);
+    CHECK(res == -(a + 1));
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localTrapWithLeave5)
+{
+    a = 35;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    int res = CallMethodTrap(localLeavingMethodT5L, a, b, c, d, e, fserver);
+    CHECK(res == -(a + 1));
+    CHECK(sIvokedMethod == a + 1);
+}
+
+
+TEST(TestFuncServer, localTrapWithLeave6)
+{
+    a = 36;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    int res = CallMethodTrap(localLeavingMethodT6L, a, b, c, d, e, f, fserver);
+    CHECK(res == -(a + 1));
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localTrapWithLeave7)
+{
+    a = 37;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    g = f + 1;
+    int res = CallMethodTrap(localLeavingMethodT7L, a, b, c, d, e, f, g, fserver);
+    CHECK(res == -(a + 1));
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localTrapWithLeave8)
+{
+    a = 38;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    g = f + 1;
+    h = g + 1;
+    int res = CallMethodTrap(localLeavingMethodT8L, a, b, c, d, e, f, g, h, fserver);
+    CHECK(res == -(a + 1));
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, localTrapWithLeave9)
+{
+    a = 39;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    g = f + 1;
+    h = g + 1;
+    i = h + 1;
+    int res = CallMethodTrap(localLeavingMethodT9L, a, b, c, d, e, f, g, h, i, fserver);
+    CHECK(res == -(a + 1));
+    CHECK(sIvokedMethod == a + 1);
+}
+
+
+// Testing non-const void methods from a class.
+
+TEST(TestFuncServer, classVoid0)
+{
+    CallMethod( clazz, TestClass::classMethod, fserver );
+    CHECK(sIvokedMethod == 41);
+}
+
+TEST(TestFuncServer, classVoid1)
+{
+    a = 41;
+    CallMethod( clazz, TestClass::classMethod1, a, fserver );
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, classVoid2)
+{
+    a = 42;
+    b = a + 1;
+    CallMethod( clazz, TestClass::classMethod2, a, b, fserver );
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, classVoid3)
+{
+    a = 43;
+    b = a + 1;
+    c = b + 1;
+    CallMethod( clazz, TestClass::classMethod3, a, b, c, fserver );
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, classVoid4)
+{
+    a = 44;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    CallMethod( clazz, TestClass::classMethod4, a, b, c, d, fserver );
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, classVoid5)
+{
+    a = 45;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    CallMethod( clazz, TestClass::classMethod5, a, b, c, d, e, fserver );
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, classVoid6)
+{
+    a = 46;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    CallMethod( clazz, TestClass::classMethod6, a, b, c, d, e, f, fserver );
+    CHECK(sIvokedMethod == a + 1);
+}
+
+TEST(TestFuncServer, classVoid7)
+{
+    a = 47;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    g = f + 1;
+    CallMethod( clazz, TestClass::classMethod7, a, b, c, d, e, f, g, fserver );
+    CHECK(sIvokedMethod == a + 1);
+}
+
+// Testing non-const methods from a class that returns a value.
+
+TEST(TestFuncServer, classReturn0)
+{
+    int res;
+    CallMethod(res, clazz, TestClass::classMethodR, fserver );
+    CHECK(sIvokedMethod == 51);
+    CHECK(res == 51);
+
+}
+TEST(TestFuncServer, classReturn1)
+{
+    a = 51;
+    int res;
+    CallMethod(res, clazz, TestClass::classMethodR1, a, fserver );
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+
+}
+TEST(TestFuncServer, classReturn2)
+{
+    a = 52;
+    b = a + 1;
+    int res;
+    CallMethod(res, clazz, TestClass::classMethodR2, a, b, fserver );
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+
+}
+TEST(TestFuncServer, classReturn3)
+{
+    a = 53;
+    b = a + 1;
+    c = b + 1;
+    int res;
+    CallMethod(res, clazz, TestClass::classMethodR3, a, b, c, fserver );
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+
+}
+TEST(TestFuncServer, classReturn4)
+{
+    a = 54;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    int res;
+    CallMethod(res, clazz, TestClass::classMethodR4, a, b, c, d, fserver );
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+
+}
+TEST(TestFuncServer, classReturn5)
+{
+    a = 55;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    int res;
+    CallMethod(res, clazz, TestClass::classMethodR5, a, b, c, d, e, fserver );
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+
+}
+TEST(TestFuncServer, classReturn6)
+{
+    a = 56;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    int res;
+    CallMethod(res, clazz, TestClass::classMethodR6, a, b, c, d, e, f, fserver );
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+
+}
+TEST(TestFuncServer, classReturn7)
+{
+    a = 57;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    g = f + 1;
+    int res;
+    CallMethod(res, clazz, TestClass::classMethodR7, a, b, c, d, e, f, g, fserver );
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+
+}
+
+// Testing non-const void leaving methods from a class. Leave is not happening.
+
+TEST(TestFuncServer, classVoidL0)
+{
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodL, fserver ));
+    CHECK(sIvokedMethod == 61);
+    CHECK(res == 0);
+
+}
+TEST(TestFuncServer, classVoidL1)
+{
+    a = 61;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodL1, a, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == 0);
+
+}
+TEST(TestFuncServer, classVoidL2)
+{
+    a = 62;
+    b = a + 1;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodL2, a, b, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == 0);
+
+}
+TEST(TestFuncServer, classVoidL3)
+{
+    a = 63;
+    b = a + 1;
+    c = b + 1;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodL3, a, b, c, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == 0);
+
+}
+TEST(TestFuncServer, classVoidL4)
+{
+    a = 64;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodL4, a, b, c, d, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == 0);
+
+}
+TEST(TestFuncServer, classVoidL5)
+{
+    a = 65;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodL5, a, b, c, d, e, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == 0);
+
+}
+TEST(TestFuncServer, classVoidL6)
+{
+    a = 66;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodL6, a, b, c, d, e, f, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == 0);
+
+}
+TEST(TestFuncServer, classVoidL7)
+{
+    a = 67;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    g = f + 1;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodL7, a, b, c, d, e, f, g, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == 0);
+
+}
+
+// Testing non-const void leaving methods from a class. Leave is happening.
+TEST(TestFuncServer, classVoidLeavingL0)
+{
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodWithLeaveL, fserver ));
+    CHECK(sIvokedMethod == 71);
+    CHECK(res == -71);
+
+}
+TEST(TestFuncServer, classVoidLeavingL1)
+{
+    a = 71;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodWithLeave1L, a, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == -(a + 1));
+
+}
+TEST(TestFuncServer, classVoidLeavingL2)
+{
+    a = 72;
+    b = a + 1;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodWithLeave2L, a, b, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == -(a + 1));
+
+}
+TEST(TestFuncServer, classVoidLeavingL3)
+{
+    a = 73;
+    b = a + 1;
+    c = b + 1;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodWithLeave3L, a, b, c, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == -(a + 1));
+
+}
+TEST(TestFuncServer, classVoidLeavingL4)
+{
+    a = 74;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodWithLeave4L, a, b, c, d, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == -(a + 1));
+
+}
+TEST(TestFuncServer, classVoidLeavingL5)
+{
+    a = 75;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodWithLeave5L, a, b, c, d, e, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == -(a + 1));
+
+}
+TEST(TestFuncServer, classVoidLeavingL6)
+{
+    a = 76;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodWithLeave6L, a, b, c, d, e, f, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == -(a + 1));
+
+}
+TEST(TestFuncServer, classVoidLeavingL7)
+{
+    a = 77;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    g = f + 1;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodWithLeave7L, a, b, c, d, e, f, g, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == -(a + 1));
+
+}
+
+// Testing non-const value returning leaving methods from a class. Leave is not happening.
+
+TEST(TestFuncServer, classReturnL0)
+{
+    int res;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodRL, fserver ));
+    CHECK(sIvokedMethod == 81);
+    CHECK(res == 81);
+    CHECK(leaveRes == 0);
+}
+TEST(TestFuncServer, classReturnL1)
+{
+    a = 81;
+    int res;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodR1L, a, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+    CHECK(leaveRes == 0);
+}
+TEST(TestFuncServer, classReturnL2)
+{
+    a = 82;
+    b = a + 1;
+    int res;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodR2L, a, b, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+    CHECK(leaveRes == 0);
+}
+TEST(TestFuncServer, classReturnL3)
+{
+    a = 83;
+    b = a + 1;
+    c = b + 1;
+    int res;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodR3L, a, b, c, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+    CHECK(leaveRes == 0);
+}
+TEST(TestFuncServer, classReturnL4)
+{
+    a = 84;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    int res;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodR4L, a, b, c, d, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+    CHECK(leaveRes == 0);
+}
+TEST(TestFuncServer, classReturnL5)
+{
+    a = 85;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    int res;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodR5L, a, b, c, d, e, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+    CHECK(leaveRes == 0);
+}
+TEST(TestFuncServer, classReturnL6)
+{
+    a = 86;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    int res;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodR6L, a, b, c, d, e, f, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+    CHECK(leaveRes == 0);
+}
+TEST(TestFuncServer, classReturnL7)
+{
+    a = 87;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    g = f + 1;
+    int res;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodR7L, a, b, c, d, e, f, g, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+    CHECK(leaveRes == 0);
+}
+
+// Testing non-const value returning leaving methods from a class. Leave is happening.
+
+
+TEST(TestFuncServer, classReturnLeaveL0)
+{
+    int res=123;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodWithLeaveRL, fserver ));
+    CHECK(sIvokedMethod == 91);
+    CHECK(leaveRes == -91);
+    CHECK(res == 123);
+}
+TEST(TestFuncServer, classReturnLeaveL1)
+{
+    a = 91;
+    int res=123;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodWithLeaveR1L, a, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(leaveRes == -(a + 1));
+    CHECK(res == 123);
+}
+TEST(TestFuncServer, classReturnLeaveL2)
+{
+    a = 92;
+    b = a + 1;
+    int res=123;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodWithLeaveR2L, a, b, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(leaveRes == -(a + 1));
+    CHECK(res == 123);
+}
+TEST(TestFuncServer, classReturnLeaveL3)
+{
+    a = 93;
+    b = a + 1;
+    c = b + 1;
+    int res=123;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodWithLeaveR3L, a, b, c, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(leaveRes == -(a + 1));
+    CHECK(res == 123);
+}
+TEST(TestFuncServer, classReturnLeaveL4)
+{
+    a = 94;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    int res=123;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodWithLeaveR4L, a, b, c, d, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(leaveRes == -(a + 1));
+    CHECK(res == 123);
+}
+TEST(TestFuncServer, classReturnLeaveL5)
+{
+    a = 95;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    int res=123;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodWithLeaveR5L, a, b, c, d, e, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(leaveRes == -(a + 1));
+    CHECK(res == 123);
+}
+TEST(TestFuncServer, classReturnLeaveL6)
+{
+    a = 96;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    int res=123;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodWithLeaveR6L, a, b, c, d, e, f, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(leaveRes == -(a + 1));
+    CHECK(res == 123);
+}
+TEST(TestFuncServer, classReturnLeaveL7)
+{
+    a = 97;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    g = f + 1;
+    int res=123;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodWithLeaveR7L, a, b, c, d, e, f, g, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(leaveRes == -(a + 1));
+    CHECK(res == 123);
+}
+
+// Testing const void methods from a class.
+
+TEST(TestFuncServer, classVoidC0)
+{
+    CallMethod( clazz, TestClass::classMethodC, fserver );
+    CHECK(sIvokedMethod == 101);
+
+}
+TEST(TestFuncServer, classVoidC1)
+{
+    a = 101;
+    CallMethod( clazz, TestClass::classMethodC1, a, fserver );
+    CHECK(sIvokedMethod == a + 1);
+
+}
+TEST(TestFuncServer, classVoidC2)
+{
+    a = 102;
+    b = a + 1;
+    CallMethod( clazz, TestClass::classMethodC2, a, b, fserver );
+    CHECK(sIvokedMethod == a + 1);
+
+}
+TEST(TestFuncServer, classVoidC3)
+{
+    a = 103;
+    b = a + 1;
+    c = b + 1;
+    CallMethod( clazz, TestClass::classMethodC3, a, b, c, fserver );
+    CHECK(sIvokedMethod == a + 1);
+
+}
+TEST(TestFuncServer, classVoidC4)
+{
+    a = 104;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    CallMethod( clazz, TestClass::classMethodC4, a, b, c, d, fserver );
+    CHECK(sIvokedMethod == a + 1);
+
+}
+TEST(TestFuncServer, classVoidC5)
+{
+    a = 105;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    CallMethod( clazz, TestClass::classMethodC5, a, b, c, d, e, fserver );
+    CHECK(sIvokedMethod == a + 1);
+
+}
+TEST(TestFuncServer, classVoidC6)
+{
+    a = 106;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    CallMethod( clazz, TestClass::classMethodC6, a, b, c, d, e, f, fserver );
+    CHECK(sIvokedMethod == a + 1);
+
+}
+TEST(TestFuncServer, classVoidC7)
+{
+    a = 107;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    g = f + 1;
+    CallMethod( clazz, TestClass::classMethodC7, a, b, c, d, e, f, g, fserver );
+    CHECK(sIvokedMethod == a + 1);
+
+}
+
+// Testing const methods from a class retruning a value.
+
+TEST(TestFuncServer, classReturnC0)
+{
+    int res;
+    CallMethod(res, clazz, TestClass::classMethodRC, fserver );
+    CHECK(sIvokedMethod == 111);
+    CHECK(res == 111);
+
+}
+TEST(TestFuncServer, classReturnC1)
+{
+    a = 111;
+    int res;
+    CallMethod(res, clazz, TestClass::classMethodRC1, a, fserver );
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+
+}
+TEST(TestFuncServer, classReturnC2)
+{
+    a = 112;
+    b = a + 1;
+    int res;
+    CallMethod(res, clazz, TestClass::classMethodRC2, a, b, fserver );
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+
+}
+TEST(TestFuncServer, classReturnC3)
+{
+    a = 113;
+    b = a + 1;
+    c = b + 1;
+    int res;
+    CallMethod(res, clazz, TestClass::classMethodRC3, a, b, c, fserver );
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+
+}
+TEST(TestFuncServer, classReturnC4)
+{
+    a = 114;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    int res;
+    CallMethod(res, clazz, TestClass::classMethodRC4, a, b, c, d, fserver );
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+
+}
+TEST(TestFuncServer, classReturnC5)
+{
+    a = 115;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    int res;
+    CallMethod(res, clazz, TestClass::classMethodRC5, a, b, c, d, e, fserver );
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+
+}
+TEST(TestFuncServer, classReturnC6)
+{
+    a = 116;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    int res;
+    CallMethod(res, clazz, TestClass::classMethodRC6, a, b, c, d, e, f, fserver );
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+
+}
+TEST(TestFuncServer, classReturnC7)
+{
+    a = 117;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    g = f + 1;
+    int res;
+    CallMethod(res, clazz, TestClass::classMethodRC7, a, b, c, d, e, f, g, fserver );
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+
+}
+
+// Testing const leaving void methods from a class. No leave.
+
+
+TEST(TestFuncServer, classVoidCL0)
+{
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodCL, fserver ));
+    CHECK(sIvokedMethod == 121);
+    CHECK(res == 0);
+
+}
+TEST(TestFuncServer, classVoidCL1)
+{
+    a = 121;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodC1L, a, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == 0);
+
+}
+TEST(TestFuncServer, classVoidCL2)
+{
+    a = 122;
+    b = a + 1;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodC2L, a, b, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == 0);
+
+}
+TEST(TestFuncServer, classVoidCL3)
+{
+    a = 123;
+    b = a + 1;
+    c = b + 1;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodC3L, a, b, c, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == 0);
+
+}
+TEST(TestFuncServer, classVoidCL4)
+{
+    a = 124;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodC4L, a, b, c, d, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == 0);
+
+}
+TEST(TestFuncServer, classVoidCL5)
+{
+    a = 125;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodC5L, a, b, c, d, e, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == 0);
+
+}
+TEST(TestFuncServer, classVoidCL6)
+{
+    a = 126;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodC6L, a, b, c, d, e, f, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == 0);
+
+}
+TEST(TestFuncServer, classVoidCL7)
+{
+    a = 127;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    g = f + 1;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodC7L, a, b, c, d, e, f, g, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == 0);
+
+}
+
+
+
+// Testing const leaving void methods from a class. Leaving.
+
+
+TEST(TestFuncServer, classVoidLeavingCL0)
+{
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodWithLeaveCL, fserver ));
+    CHECK(sIvokedMethod == 131);
+    CHECK(res == -131);
+
+}
+TEST(TestFuncServer, classVoidLeavingCL1)
+{
+    a = 131;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodWithLeaveC1L, a, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == -(a + 1));
+
+}
+TEST(TestFuncServer, classVoidLeavingCL2)
+{
+    a = 132;
+    b = a + 1;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodWithLeaveC2L, a, b, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == -(a + 1));
+
+}
+TEST(TestFuncServer, classVoidLeavingCL3)
+{
+    a = 133;
+    b = a + 1;
+    c = b + 1;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodWithLeaveC3L, a, b, c, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == -(a + 1));
+
+}
+TEST(TestFuncServer, classVoidLeavingCL4)
+{
+    a = 134;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodWithLeaveC4L, a, b, c, d, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == -(a + 1));
+
+}
+TEST(TestFuncServer, classVoidLeavingCL5)
+{
+    a = 135;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodWithLeaveC5L, a, b, c, d, e, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == -(a + 1));
+
+}
+TEST(TestFuncServer, classVoidLeavingCL6)
+{
+    a = 136;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodWithLeaveC6L, a, b, c, d, e, f, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == -(a + 1));
+
+}
+TEST(TestFuncServer, classVoidLeavingCL7)
+{
+    a = 137;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    g = f + 1;
+    TRAPD(res, CallMethodL(clazz, TestClass::classMethodWithLeaveC7L, a, b, c, d, e, f, g, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == -(a + 1));
+
+}
+
+
+
+// Testing const leaving value returning methods from a class. Not leaving.
+TEST(TestFuncServer, classReturnLC0)
+{
+    int res;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodRCL, fserver ));
+    CHECK(sIvokedMethod == 141);
+    CHECK(res == 141);
+    CHECK(leaveRes == 0);
+}
+TEST(TestFuncServer, classReturnLC1)
+{
+    a = 141;
+    int res;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodRC1L, a, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+    CHECK(leaveRes == 0);
+}
+TEST(TestFuncServer, classReturnLC2)
+{
+    a = 142;
+    b = a + 1;
+    int res;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodRC2L, a, b, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+    CHECK(leaveRes == 0);
+}
+TEST(TestFuncServer, classReturnLC3)
+{
+    a = 143;
+    b = a + 1;
+    c = b + 1;
+    int res;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodRC3L, a, b, c, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+    CHECK(leaveRes == 0);
+}
+TEST(TestFuncServer, classReturnLC4)
+{
+    a = 144;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    int res;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodRC4L, a, b, c, d, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+    CHECK(leaveRes == 0);
+}
+TEST(TestFuncServer, classReturnLC5)
+{
+    a = 145;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    int res;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodRC5L, a, b, c, d, e, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+    CHECK(leaveRes == 0);
+}
+TEST(TestFuncServer, classReturnLC6)
+{
+    a = 146;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    int res;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodRC6L, a, b, c, d, e, f, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+    CHECK(leaveRes == 0);
+}
+TEST(TestFuncServer, classReturnLC7)
+{
+    a = 147;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    g = f + 1;
+    int res;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodRC7L, a, b, c, d, e, f, g, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(res == a + 1);
+    CHECK(leaveRes == 0);
+}
+
+// Testing const leaving value returning methods from a class. Leaving.
+
+TEST(TestFuncServer, classReturnLeaveCL0)
+{
+    int res=456;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodWithLeaveRCL, fserver ));
+    CHECK(sIvokedMethod == 151);
+    CHECK(leaveRes == -151);
+    CHECK(res == 456);
+}
+TEST(TestFuncServer, classReturnLeaveCL1)
+{
+    a = 151;
+    int res=456;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodWithLeaveRC1L, a, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(leaveRes == -(a + 1));
+    CHECK(res == 456);
+}
+TEST(TestFuncServer, classReturnLeaveCL2)
+{
+    a = 152;
+    b = a + 1;
+    int res=456;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodWithLeaveRC2L, a, b, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(leaveRes == -(a + 1));
+    CHECK(res == 456);
+}
+TEST(TestFuncServer, classReturnLeaveCL3)
+{
+    a = 153;
+    b = a + 1;
+    c = b + 1;
+    int res=456;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodWithLeaveRC3L, a, b, c, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(leaveRes == -(a + 1));
+    CHECK(res == 456);
+}
+TEST(TestFuncServer, classReturnLeaveCL4)
+{
+    a = 154;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    int res=456;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodWithLeaveRC4L, a, b, c, d, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(leaveRes == -(a + 1));
+    CHECK(res == 456);
+}
+TEST(TestFuncServer, classReturnLeaveCL5)
+{
+    a = 155;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    int res=456;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodWithLeaveRC5L, a, b, c, d, e, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(leaveRes == -(a + 1));
+    CHECK(res == 456);
+}
+TEST(TestFuncServer, classReturnLeaveCL6)
+{
+    a = 156;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    int res=456;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodWithLeaveRC6L, a, b, c, d, e, f, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(leaveRes == -(a + 1));
+    CHECK(res == 456);
+}
+TEST(TestFuncServer, classReturnLeaveCL7)
+{
+    a = 157;
+    b = a + 1;
+    c = b + 1;
+    d = c + 1;
+    e = d + 1;
+    f = e + 1;
+    g = f + 1;
+    int res=456;
+    TRAPD(leaveRes, CallMethodL(res, clazz, TestClass::classMethodWithLeaveRC7L, a, b, c, d, e, f, g, fserver ));
+    CHECK(sIvokedMethod == a + 1);
+    CHECK(leaveRes == -(a + 1));
+    CHECK(res == 456);
+}
+