Commit c42c4650 authored by balaskoa's avatar balaskoa
Browse files

Visibility test added to Regression_Test_java


Signed-off-by: default avatarbalaskoa <Jeno.Balasko@ericsson.com>
parent b1fbef5d
......@@ -260,8 +260,6 @@ TsetOper
#if yes, there are comments
#only in parallel, see there
TunionOper.control
####### Template ######
TtemplateAnytype.control
TtemplateBitstr.control
......@@ -278,9 +276,7 @@ TtemplateFloat.control
TtemplateInt.control
#templateIstemplatekind
IsTemplateKind #pass, fixed compilation error
TtemplateOctetstr #TODO: 3 decmatch testcase commented out!!!
#templateRec:
TtemplateRec #Project config spec dependent, which version will run: legacy flag for omit in value list is OFF or ON.
#TODO: map back to titan.core!
......@@ -320,6 +316,15 @@ Compat.control
#ucharstrOper #pass, see in [ORDERED_INCLUDE] "src/ucharstrOper/config.cfg"
#uidChars
#UIDCharsTest.control # 3 pass, see in [ORDERED_INCLUDE] "src/uidChars/config.cfg"
#unionOper
TunionOper.control #44 pass
#visibility
Visibility.control #mainly compile test; TODO: write more details, tests!
#XML: TODO: XER encoder/decoder
[LOGGING]
# In this section you can specify the name of the log file and the classes of events
# you want to log into the file or display on console (standard error).
......
/******************************************************************************
* Copyright (c) 2000-2019 Ericsson Telecom AB
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
*
* Contributors:
* Balasko, Jeno
* Czerman, Oliver
* Raduly, Csaba
* Szabados, Kristof
*
******************************************************************************/
module Visibility {
friend module module1;
friend module nonExi;
//************* Components ***************
type component MyMtcType {
const charstring c_Scope:=__SCOPE__;
timer T_MyTimer:=0.001;
}
testcase tc_visibility() runs on MyMtcType{
log("Testing of public/private/friend");
setverdict(pass);
}
control {
execute(tc_visibility());
}
}
###############################################################################
# Copyright (c) 2000-2019 Ericsson Telecom AB
# All rights reserved. This program and the accompanying materials
# are made available under the terms of the Eclipse Public License v2.0
# which accompanies this distribution, and is available at
# https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
#
# Contributors:
# Balasko, Jeno
# Czerman, Oliver
#
###############################################################################
[MODULE_PARAMETERS]
[LOGGING]
Logfile := "Visibility.log"
FileMask := LOG_ALL
ConsoleMask := TTCN_WARNING | TTCN_ERROR | TTCN_TESTCASE | TTCN_STATISTICS
[EXECUTE]
Visibility.control
/******************************************************************************
* Copyright (c) 2000-2019 Ericsson Telecom AB
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
*
* Contributors:
* Balasko, Jeno
* Czerman, Oliver
* Szabados, Kristof
*
******************************************************************************/
module module1
{
public modulepar charstring ts_m1:="public";
private modulepar charstring ts_m2:="private";
friend modulepar charstring ts_m3:="friend";
friend module Visibility, module2;
private import from module2 all;//OK
private import from module3 all;//OK
private import from module4 all;//OK
//public import from module2 all;//NOK
//friend import from module2 all;//NOK
const module2Type akarmi1 := 1; //OK, type is implicitly public
const module2TypePublic akarmi2 := 2; //OK, type is explicitly public
const module2TypeFriend akarmi3 := 3; //OK, module1 is friend of module2
//const module2TypePrivate akarmi4 := 4; //NOK, module2TypePrivate is private to module2
group g_MyGroup{
const module3Type akarmi5 := 5; //OK, type is implicitly public
const module3TypePublic akarmi6 := 6; //OK, type is explicitly public
//const module3TypeFriend akarmi7 := 7; //NOK, module1 is NOT a friend of module3
//const module3TypePrivate akarmi8 := 8; //NOK, module2TypePrivate is private to module2
}
function MyFunc1() runs on Lib4_CT {} //OK
function MyFunc2() runs on Lib4Friend_CT {} //OK, module1 is friend for module4
//function MyFunc3() runs on Lib4Private_CT {} //NOK, the *name* Lib4Private_CT is not
//visible for module1, thus fails at checking the runs on clause, whatever is the content!
function f_set2_Lib4_1() runs on Lib4_CT { v_Lib4_1 := 0 } //OK
function f_set2_Lib4_2() runs on Lib4_CT { v_Lib4_2 := 0 } //OK
function f_set2_Lib4_3() runs on Lib4_CT { v_Lib4_3 := 0 } //OK
function f_set2_Lib4Friend_1() runs on Lib4Friend_CT { v_Lib4Friend_1 := 0 } //OK
function f_set2_Lib4Friend_2() runs on Lib4Friend_CT { v_Lib4Friend_2 := 0 } //OK
function f_set2_Lib4Friend_3() runs on Lib4Friend_CT { v_Lib4Friend_3 := 0 } //OK
type component User_CT extends Lib4_CT {};
function f_set3_Lib4_1() runs on User_CT { v_Lib4_1 := 0 } //OK
function f_set3_Lib4_2() runs on User_CT { v_Lib4_2 := 0 } //OK
//function f_set3_Lib4_3() runs on User_CT { v_Lib4_3 := 0 } //NOK, v_Lib4_3 is private, can be used
//in functions with "Lib4_CT" in their runs on (but not in children)
//in short: visibility of the component type definition (name) and allowed use of the component
//type definitions are two different things. Component type visibility is checked when checking
//the runs on clause. Component definition visibility is checked (after a successful runs on
//check), when the definition is used within the body of the function
//All setter functions of module4 are public, hence can be called from any function
//with a compatible runs on clause
function f_MyFunc_1() runs on User_CT { f_set_Lib4_1() } //OK
function f_MyFunc_2() runs on User_CT { f_set_Lib4_2() } //OK
function f_MyFunc_3() runs on User_CT { f_set_Lib4_3() } //OK
type component UserFriend_CT extends Lib4Friend_CT {}; //OK
function f_MyFuncFriend_1() runs on UserFriend_CT { f_set_Lib4Friend_1() } //OK
function f_MyFuncFriend_2() runs on UserFriend_CT { f_set_Lib4Friend_2() } //OK
function f_MyFuncFriend_3() runs on UserFriend_CT { f_set_Lib4Friend_3() } //OK
//type component UserPrivate_CT extends Lib4Private_CT {}; //NOK, the name Lib4Private_CT is not
//visible in module1
//function MyFunc() {
//var Lib4Private_CT v_Lib4Private := Lib4Private_CT.create; //NOK, the name Lib4Private_CT is not
//visible in module1
//}
//function f_MyFuncPrivate_1() runs on UserPrivate_CT { f_set_Lib4Private_1() } //NOK, UserPrivate_CT has an error
//function f_MyFuncPrivate_2() runs on UserPrivate_CT { f_set_Lib4Private_2() } //NOK, UserPrivate_CT has an error
//function f_MyFuncPrivate_3() runs on UserPrivate_CT { f_set_Lib4Private_3() } //NOK, UserPrivate_CT has an error
control{}
} // end of module1
/******************************************************************************
* Copyright (c) 2000-2019 Ericsson Telecom AB
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
*
* Contributors:
* Balasko, Jeno
* Czerman, Oliver
*
******************************************************************************/
module module2
{
friend module module1;
public group g_Group1{
type integer module2Type;
public type integer module2TypePublic;
friend type integer module2TypeFriend;
private type integer module2TypePrivate;
}
/*private group g_Group2{
type integer module2Type2;
public type integer module2TypePublic2;
friend type integer module2TypeFriend2;
private type integer module2TypePrivate2;
}
*/ //NOK
/*friend group g_Group3{
type integer module2Type3;
public type integer module2TypePublic3;
friend type integer module2TypeFriend3;
private type integer module2TypePrivate3;
}
*/ //NOK
} // end of module2
/******************************************************************************
* Copyright (c) 2000-2019 Ericsson Telecom AB
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
*
* Contributors:
* Balasko, Jeno
* Czerman, Oliver
*
******************************************************************************/
module module3
{
type integer module3Type;
public type integer module3TypePublic;
friend type integer module3TypeFriend;
private type integer module3TypePrivate;
public type port pPublic message { inout charstring; } with {extension "internal"}
private type port pPrivate message { inout charstring; } with {extension "internal"}
friend type port pFriend message { inout charstring; } with {extension "internal"}
} // end of module3
/******************************************************************************
* Copyright (c) 2000-2019 Ericsson Telecom AB
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
*
* Contributors:
* Balasko, Jeno
* Czerman, Oliver
*
******************************************************************************/
module module4 {
friend module module1;
type component Lib4_CT {
var integer v_Lib4_1;
public var integer v_Lib4_2;
private var integer v_Lib4_3;
}
friend type component Lib4Friend_CT {
var integer v_Lib4Friend_1;
public var integer v_Lib4Friend_2;
private var integer v_Lib4Friend_3;
}
private type component Lib4Private_CT {
var integer v_Lib4Private_1;
public var integer v_Lib4Private_2;
private var integer v_Lib4Private_3;
}
function f_set_Lib4_1() runs on Lib4_CT { v_Lib4_1 := 0 } //OK
function f_set_Lib4_2() runs on Lib4_CT { v_Lib4_2 := 0 } //OK
function f_set_Lib4_3() runs on Lib4_CT { v_Lib4_3 := 0 } //OK
function f_set_Lib4Friend_1() runs on Lib4Friend_CT { v_Lib4Friend_1 := 0 } //OK
function f_set_Lib4Friend_2() runs on Lib4Friend_CT { v_Lib4Friend_2 := 0 } //OK
function f_set_Lib4Friend_3() runs on Lib4Friend_CT { v_Lib4Friend_3 := 0 } //OK
//These functions cannot be called or started outside module4, though they are public!
//See module1
function f_set_Lib4Private_1() runs on Lib4Private_CT { v_Lib4Private_1 := 0 } //OK
function f_set_Lib4Private_2() runs on Lib4Private_CT { v_Lib4Private_2 := 0 } //OK
function f_set_Lib4Private_3() runs on Lib4Private_CT { v_Lib4Private_3 := 0 } //OK
}//end module4
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment