diff --git a/Regression_Test_java/.TITAN_properties b/Regression_Test_java/.TITAN_properties index c192ec018d56921f4a892c49a67349c827173c22..4f279b43a4870b5b852239b39984c8611bfdcce9 100644 --- a/Regression_Test_java/.TITAN_properties +++ b/Regression_Test_java/.TITAN_properties @@ -7,7 +7,6 @@ <incrementalDependencyRefresh>true</incrementalDependencyRefresh> <targetExecutable>bin/regressionTestSmall</targetExecutable> <addSourceLineInfo>true</addSourceLineInfo> - <omitInValueList>true</omitInValueList> </MakefileSettings> <LocalBuildSettings> <MakefileScript/> @@ -27,6 +26,18 @@ <ExcludeFromBuild>true</ExcludeFromBuild> </FileProperties> </FileResource> + <FileResource> + <FilePath>src/TrecofOper.ttcn</FilePath> + <FileProperties> + <ExcludeFromBuild>true</ExcludeFromBuild> + </FileProperties> + </FileResource> + <FileResource> + <FilePath>src/TtemplateRec.ttcn</FilePath> + <FileProperties> + <ExcludeFromBuild>true</ExcludeFromBuild> + </FileProperties> + </FileResource> <FileResource> <FilePath>src/TverdictOper.ttcn</FilePath> <FileProperties> @@ -110,5 +121,145 @@ <ExcludeFromBuild>true</ExcludeFromBuild> </FolderProperties> </FolderResource> + <FolderResource> + <FolderPath>src/text2ttcn</FolderPath> + <FolderProperties> + <CentralStorage>false</CentralStorage> + <ExcludeFromBuild>true</ExcludeFromBuild> + </FolderProperties> + </FolderResource> </FolderProperties> + <Configurations> + <Configuration name="legacy"> + <ProjectProperties> + <MakefileSettings> + <GNUMake>true</GNUMake> + <incrementalDependencyRefresh>true</incrementalDependencyRefresh> + <targetExecutable>bin/regressionTestSmall</targetExecutable> + <addSourceLineInfo>true</addSourceLineInfo> + <omitInValueList>true</omitInValueList> + </MakefileSettings> + <LocalBuildSettings> + <MakefileScript/> + <workingDirectory>java_src</workingDirectory> + </LocalBuildSettings> + </ProjectProperties> + <FolderProperties> + <FolderResource> + <FolderPath>src/ASN1/Test330</FolderPath> + <FolderProperties> + <CentralStorage>false</CentralStorage> + <ExcludeFromBuild>true</ExcludeFromBuild> + </FolderProperties> + </FolderResource> + <FolderResource> + <FolderPath>src/ASN1/Test332</FolderPath> + <FolderProperties> + <CentralStorage>false</CentralStorage> + <ExcludeFromBuild>true</ExcludeFromBuild> + </FolderProperties> + </FolderResource> + <FolderResource> + <FolderPath>src/ASN1/errorMessages</FolderPath> + <FolderProperties> + <CentralStorage>false</CentralStorage> + <ExcludeFromBuild>true</ExcludeFromBuild> + </FolderProperties> + </FolderResource> + <FolderResource> + <FolderPath>src/ASN1/errorMessages2</FolderPath> + <FolderProperties> + <CentralStorage>false</CentralStorage> + <ExcludeFromBuild>true</ExcludeFromBuild> + </FolderProperties> + </FolderResource> + <FolderResource> + <FolderPath>src/ASN1/parse</FolderPath> + <FolderProperties> + <CentralStorage>false</CentralStorage> + <ExcludeFromBuild>true</ExcludeFromBuild> + </FolderProperties> + </FolderResource> + <FolderResource> + <FolderPath>src/cfgFile/testport_parameters</FolderPath> + <FolderProperties> + <CentralStorage>false</CentralStorage> + <ExcludeFromBuild>true</ExcludeFromBuild> + </FolderProperties> + </FolderResource> + <FolderResource> + <FolderPath>src/cfg_list_concat</FolderPath> + <FolderProperties> + <CentralStorage>false</CentralStorage> + <ExcludeFromBuild>true</ExcludeFromBuild> + </FolderProperties> + </FolderResource> + <FolderResource> + <FolderPath>src/done</FolderPath> + <FolderProperties> + <CentralStorage>false</CentralStorage> + <ExcludeFromBuild>true</ExcludeFromBuild> + </FolderProperties> + </FolderResource> + <FolderResource> + <FolderPath>src/json</FolderPath> + <FolderProperties> + <CentralStorage>false</CentralStorage> + <ExcludeFromBuild>true</ExcludeFromBuild> + </FolderProperties> + </FolderResource> + <FolderResource> + <FolderPath>src/text2ttcn_nolegacy</FolderPath> + <FolderProperties> + <CentralStorage>false</CentralStorage> + <ExcludeFromBuild>true</ExcludeFromBuild> + </FolderProperties> + </FolderResource> + </FolderProperties> + <FileProperties> + <FileResource> + <FilePath>src/ASN1/enum1/enum1</FilePath> + <FileProperties> + <ExcludeFromBuild>true</ExcludeFromBuild> + </FileProperties> + </FileResource> + <FileResource> + <FilePath>src/ASN1/enum2/enum2</FilePath> + <FileProperties> + <ExcludeFromBuild>true</ExcludeFromBuild> + </FileProperties> + </FileResource> + <FileResource> + <FilePath>src/TrecofOper.ttcn</FilePath> + <FileProperties> + <ExcludeFromBuild>true</ExcludeFromBuild> + </FileProperties> + </FileResource> + <FileResource> + <FilePath>src/TtemplateRec.ttcn</FilePath> + <FileProperties> + <ExcludeFromBuild>true</ExcludeFromBuild> + </FileProperties> + </FileResource> + <FileResource> + <FilePath>src/TverdictOper.ttcn</FilePath> + <FileProperties> + <ExcludeFromBuild>true</ExcludeFromBuild> + </FileProperties> + </FileResource> + <FileResource> + <FilePath>src/commProcedure/AdvancedRedirects.ttcn</FilePath> + <FileProperties> + <ExcludeFromBuild>true</ExcludeFromBuild> + </FileProperties> + </FileResource> + <FileResource> + <FilePath>src/functionSubref/TvalueofSubref.ttcn</FilePath> + <FileProperties> + <ExcludeFromBuild>true</ExcludeFromBuild> + </FileProperties> + </FileResource> + </FileProperties> + </Configuration> + </Configurations> </TITAN_Designer_Properties> \ No newline at end of file diff --git a/Regression_Test_java/parallel_main.cfg b/Regression_Test_java/parallel_main.cfg old mode 100755 new mode 100644 index 8ac0102c03ec40ed029e0a23f1374e6adc54330a..ee94f71874d3315765b00c114e3bf90ac707c0a8 --- a/Regression_Test_java/parallel_main.cfg +++ b/Regression_Test_java/parallel_main.cfg @@ -11,7 +11,7 @@ [ORDERED_INCLUDE] "src/ERC/config.cfg" #fails in single mode, cfg file parse problems, 4 pass in parallel mode - +#"src/text2ttcn_nolegacy/text2ttcn_2.cfg" #not necessary, see in single mode [EXECUTE] #==acceptance_test: #testerlanc # exec time: 40sec @@ -34,7 +34,8 @@ ConnectMapOperNegTest #parallel ok 3 pass TdefaultOper #ok, #ispresent: IsPresent_Test.control #ok, 84 pass - +#text2ttcn +component_test.control #the same in legacy mode and nolegacy mode [MAIN_CONTROLLER] # The options herein control the behavior of MC. TCPPort := 7339 diff --git a/Regression_Test_java/single_bugs.cfg b/Regression_Test_java/single_bugs.cfg old mode 100755 new mode 100644 index 7cc9be27483257c2afa929905b5b2bbcb1adf9c1..26035f1d99f26e4aab1a4047f62d2658fd5735e5 --- a/Regression_Test_java/single_bugs.cfg +++ b/Regression_Test_java/single_bugs.cfg @@ -24,7 +24,7 @@ #HACK: escaped double quote added, ass. not. nok Error message: # Error while setting parameter field 'tsp_editor' to 'vim': Referenced module parameter cannot be found. Module `vim' does not exist, and no parameter with name `vim' exists in any module. "src/ERC/config.cfg" #fails in single mode, cfg file parse problems, 4 pass in parallel mode TODO: cfg parser bug fix - +"src/recofOper/config.cfg" #only for init! (58 pass) [EXECUTE] #all_from_with_functions #TODO: JSON enc-dec function handling, #encdec_OK #TODO: JSON, BER encoder @@ -42,7 +42,9 @@ #json (There are testcases commented out in it!! In preinit of JsonTypes it stops with exception) #AttributeTestcases.control #JsonTestcases.control - +TrecofOper.tc_empty_record_element #DTE, unrecoverable (config file is necessary!) +TrecofOper.tc_empty_record_element2 #DTE, unrecoverable +record_test.tc_REC_string2ttcn_empty #fail, setting: nolegacy!!! [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). diff --git a/Regression_Test_java/single_config.cfg b/Regression_Test_java/single_config.cfg index feefdfe2089f13249b567775aca8170adc5d9131..e51476e8784e53e366f0c13308a4118344bce5ff 100644 --- a/Regression_Test_java/single_config.cfg +++ b/Regression_Test_java/single_config.cfg @@ -18,6 +18,9 @@ "src/ucharstrOper/config.cfg" "src/hexstrOper/config.cfg" #TODO: one testase is commented out (send()) "src/implicitOmit/config.cfg" #ok, 18 pass +"src/text2ttcn_nolegacy/text2ttcn_1.cfg" +#"src/text2ttcn/text2ttcn_1.cfg" #legacy mode +"src/recofOper/config.cfg" #62 pass + 2 tc moved to single_bugs.cfg [EXECUTE] #==acceptance_test== #chinese @@ -128,6 +131,7 @@ EnumDefBitHexOct #functionSubref: TfunctionSubref #22 pass, 1 error (see in single_bugs.cfg) #TpardTemplateSubref #1 pass, 6 error (see in single_bugs.cfg) + #fuzzy: FuzzyTestcases.control #hexstrOper: @@ -157,6 +161,22 @@ IsChosen_Test #4pass #AttributeTestcases.control #JsonTestcases.control +#lazyEval: +lazy_main.control #130 pass + +#logFiles ? +# TODO: not checked +#logger +#logger_control #special test +#logcontrol +#lostTimer: +TlostTimer.control +#TnonMandatory # excluded +#macros +Macros # 2pass +# modifiedTemplate +TmodifiedTemplate # 5 pass + #predefFunctions bit_to_OK.control bit_to_SW.control @@ -197,6 +217,10 @@ predefFunctTest.control #predefFunctTest.tc_predef_oct2char_good2 //fail, TODO: bugfix #predefFunctTest.tc_predef_oct2char_octetstr_elem //fail, TODO: bugfix +#omitdef + +#pattern_quadruples + ### RAW ### Annex_E_variants.control Bug521125.control @@ -228,6 +252,13 @@ RAW_integer_test ustr.control RAWCodingAttributes.control +### recofOper ### +# see in [ORDERED_INCLUDE] +#TrecofParamRef.control #2 pass, 10 fail, 1 error = DO NOT HANDLE THIS, jump it over ! TODO: fix it +#TrecofParamRefEncDec.control + +#text2ttcn_legacy: see [ORDERED_INCLUDE] +#text2ttcn: not ready, that is the legacy code #cont here .... #ucharstrOper #pass, see in [ORDERED_INCLUDE] "src/ucharstrOper/config.cfg" @@ -242,10 +273,9 @@ TbasicStatem.control TtemplateChar.control #tryCatch_Functions.control TtemplateBool.control -TrecofOper.control SelectUnion.control TtemplateEnum.control -TtemplateRec.control +TtemplateRec.control # 1 fail!! IsTemplateKind.control ExclusiveRangeTemplate.control TtemplateBitstr.control @@ -267,12 +297,10 @@ TtemplateUnion.control TarrayOper.control #everything.control #types.control -TlostTimer.control #TtemplateRecAsn.control TtemplateSet.control TtemplateRecof.control #ASN_Definitions.control -TanytypeWrapOper.control #ImportedTemplates.control TsetofOper.control diff --git a/Regression_Test_java/src/recofOper/BerType.asn b/Regression_Test_java/src/recofOper/BerType.asn new file mode 100644 index 0000000000000000000000000000000000000000..33eda40f9b9923e0f7785ee2a1b0894bacf85c9a --- /dev/null +++ b/Regression_Test_java/src/recofOper/BerType.asn @@ -0,0 +1,26 @@ +--///////////////////////////////////////////////////////////////////////////// +-- 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 +-- Baranyi, Botond +-- +--///////////////////////////////////////////////////////////////////////////// +BerType +DEFINITIONS + +AUTOMATIC TAGS + +::= + +BEGIN + +IMPORTS ; + +RoI-ber ::= SEQUENCE OF INTEGER + +END diff --git a/Regression_Test_java/src/recofOper/Circular1.ttcn b/Regression_Test_java/src/recofOper/Circular1.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..713f242a7c46b20cbcf8bdd96cdbf8e1f0a5d46b --- /dev/null +++ b/Regression_Test_java/src/recofOper/Circular1.ttcn @@ -0,0 +1,27 @@ +/****************************************************************************** + * 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 + * Baranyi, Botond + * + ******************************************************************************/ + +module Circular1 { + +// testing pre-generated record of/set of types with circular import (HT95344) +// modules Circular1 and Circular2 import each other +// type CharstringList is defined in Circular2 and used here +// (only compilation and the C++ build are tested) +import from Circular2 all; + +function f_dummy(CharstringList p_param) +{ + log(p_param); +} + +} diff --git a/Regression_Test_java/src/recofOper/Circular2.ttcn b/Regression_Test_java/src/recofOper/Circular2.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..45adfac1c58a31d7ce160c2f36da6a11517f6caf --- /dev/null +++ b/Regression_Test_java/src/recofOper/Circular2.ttcn @@ -0,0 +1,22 @@ +/****************************************************************************** + * 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 + * Baranyi, Botond + * + ******************************************************************************/ + +module Circular2 { + +// nothing is actually used from module Circular1, this is only here to test +// pre-generated record of/set of types in circularly imported modules +import from Circular1 all; + +type record of charstring CharstringList; + +} diff --git a/Regression_Test_java/src/recofOper/TrecofCompat.ttcn b/Regression_Test_java/src/recofOper/TrecofCompat.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..566f6a7f71898af8a0432f2e1dea762ea4162298 --- /dev/null +++ b/Regression_Test_java/src/recofOper/TrecofCompat.ttcn @@ -0,0 +1,267 @@ +/****************************************************************************** + * 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 + * Baranyi, Botond + * + ******************************************************************************/ + +// This module tests the compatibility between record-ofs and set-ofs of base +// element types +module TrecofCompat { + +type component CT_Empty {} + +// record of +type record of integer RoI1; +type record of integer RoI2; + +type record of boolean RoB1; +type record of boolean RoB2; + +type record of float RoF1; +type record of float RoF2; + +type record of bitstring RoBS1; +type record of bitstring RoBS2; + +type record of hexstring RoHS1; +type record of hexstring RoHS2; + +type record of octetstring RoOS1; +type record of octetstring RoOS2; + +type record of charstring RoCS1; +type record of charstring RoCS2; + +type record of universal charstring RoUS1; +type record of universal charstring RoUS2; + +type record of integer RoI1_opt with { extension "optimize:memalloc" }; +type record of integer RoI2_opt with { extension "optimize:memalloc" }; + +testcase tc_record_of_compat() runs on CT_Empty +{ + var RoI1 v_roi1 := { 1, 2 }; + var RoI2 v_roi2 := v_roi1; + if (not match( { 1, 2 }, v_roi2) or v_roi1 != v_roi2) { setverdict(fail, "record of integer incompatibility"); } + + var RoB1 v_rob1 := { true, false }; + var RoB2 v_rob2 := v_rob1; + if (not match( { true, false }, v_rob2) or v_rob1 != v_rob2) { setverdict(fail, "record of boolean incompatibility"); } + + var RoF1 v_rof1 := { 0.4, 9.6 }; + var RoF2 v_rof2 := v_rof1; + if (not match( { 0.4, 9.6 }, v_rof2) or v_rof1 != v_rof2) { setverdict(fail, "record of float incompatibility"); } + + var RoBS1 v_robs1 := { '1101'B, '10101'B }; + var RoBS2 v_robs2 := v_robs1; + if (not match( { '1101'B, '10101'B }, v_robs2) or v_robs1 != v_robs2) { setverdict(fail, "record of bitstring incompatibility"); } + + var RoHS1 v_rohs1 := { '1AF74'H, 'D000D'H }; + var RoHS2 v_rohs2 := v_rohs1; + if (not match( { '1AF74'H, 'D000D'H }, v_rohs2) or v_rohs1 != v_rohs2) { setverdict(fail, "record of hexstring incompatibility"); } + + var RoOS1 v_roos1 := { 'DEAD'O, '1BC5'O }; + var RoOS2 v_roos2 := v_roos1; + if (not match( { 'DEAD'O, '1BC5'O }, v_roos2) or v_roos1 != v_roos2) { setverdict(fail, "record of octetstring incompatibility"); } + + var RoCS1 v_rocs1 := { "red", "blue" }; + var RoCS2 v_rocs2 := v_rocs1; + if (not match( { "red", "blue" }, v_rocs2) or v_rocs1 != v_rocs2) { setverdict(fail, "record of charstring incompatibility"); } + + var RoUS1 v_rous1 := { "yellow", "green" }; + var RoUS2 v_rous2 := v_rous1; + if (not match( { "yellow", "green" }, v_rous2) or v_rous1 != v_rous2) { setverdict(fail, "record of universal charstring incompatibility"); } + + var RoI1_opt v_roi1_opt := { 1, 2 }; + var RoI2_opt v_roi2_opt := v_roi1_opt; + if (not match( { 1, 2 }, v_roi2_opt) or v_roi1_opt != v_roi2_opt) { setverdict(fail, "record of integer (optimized) incompatibility"); } + + setverdict(pass); +} + +// record of template +testcase tc_record_of_template_compat() runs on CT_Empty +{ + var template RoI1 vt_roi1 := { 1, 2 }; + var template RoI2 vt_roi2 := vt_roi1; + if (not match( { 1, 2 }, vt_roi2) or not match(valueof(vt_roi1), vt_roi2)) + { setverdict(fail, "record of integer template incompatibility"); } + + var template RoB1 vt_rob1 := { true, false }; + var template RoB2 vt_rob2 := vt_rob1; + if (not match( { true, false }, vt_rob2) or not match(valueof(vt_rob1), vt_rob2)) + { setverdict(fail, "record of boolean template incompatibility"); } + + var template RoF1 vt_rof1 := { 0.4, 9.6 }; + var template RoF2 vt_rof2 := vt_rof1; + if (not match( { 0.4, 9.6 }, vt_rof2) or not match(valueof(vt_rof1), vt_rof2)) + { setverdict(fail, "record of float template incompatibility"); } + + var template RoBS1 vt_robs1 := { '1101'B, '10101'B }; + var template RoBS2 vt_robs2 := vt_robs1; + if (not match( { '1101'B, '10101'B }, vt_robs2) or not match(valueof(vt_robs1), vt_robs2)) + { setverdict(fail, "record of bitstring template incompatibility"); } + + var template RoHS1 vt_rohs1 := { '1AF74'H, 'D000D'H }; + var template RoHS2 vt_rohs2 := vt_rohs1; + if (not match( { '1AF74'H, 'D000D'H }, vt_rohs2) or not match(valueof(vt_rohs1), vt_rohs2)) + { setverdict(fail, "record of hexstring template incompatibility"); } + + var template RoOS1 vt_roos1 := { 'DEAD'O, '1BC5'O }; + var template RoOS2 vt_roos2 := vt_roos1; + if (not match( { 'DEAD'O, '1BC5'O }, vt_roos2) or not match(valueof(vt_roos1), vt_roos2)) + { setverdict(fail, "record of octetstring template incompatibility"); } + + var template RoCS1 vt_rocs1 := { "red", "blue" }; + var template RoCS2 vt_rocs2 := vt_rocs1; + if (not match( { "red", "blue" }, vt_rocs2) or not match(valueof(vt_rocs1), vt_rocs2)) + { setverdict(fail, "record of charstring template incompatibility"); } + + var template RoUS1 vt_rous1 := { "yellow", "green" }; + var template RoUS2 vt_rous2 := vt_rous1; + if (not match( { "yellow", "green" }, vt_rous2) or not match(valueof(vt_rous1), vt_rous2)) + { setverdict(fail, "record of universal charstring template incompatibility"); } + + var template RoI1_opt vt_roi1_opt := { 1, 2 }; + var template RoI2_opt vt_roi2_opt := vt_roi1_opt; + if (not match( { 1, 2 }, vt_roi2_opt) or not match(valueof(vt_roi1_opt), vt_roi2_opt)) + { setverdict(fail, "record of integer template (optimized) incompatibility"); } + + setverdict(pass); +} + +// set of +type set of integer SoI1; +type set of integer SoI2; + +type set of boolean SoB1; +type set of boolean SoB2; + +type set of float SoF1; +type set of float SoF2; + +type set of bitstring SoBS1; +type set of bitstring SoBS2; + +type set of hexstring SoHS1; +type set of hexstring SoHS2; + +type set of octetstring SoOS1; +type set of octetstring SoOS2; + +type set of charstring SoCS1; +type set of charstring SoCS2; + +type set of universal charstring SoUS1; +type set of universal charstring SoUS2; + +type set of integer SoI1_opt with { extension "optimize:memalloc" }; +type set of integer SoI2_opt with { extension "optimize:memalloc" }; + +testcase tc_set_of_compat() runs on CT_Empty +{ + var SoI1 v_soi1 := { 1, 2 }; + var SoI2 v_soi2 := v_soi1; + if (not match( { 1, 2 }, v_soi2) or v_soi1 != v_soi2) { setverdict(fail, "set of integer incompatibility"); } + + var SoB1 v_sob1 := { true, false }; + var SoB2 v_sob2 := v_sob1; + if (not match( { true, false }, v_sob2) or v_sob1 != v_sob2) { setverdict(fail, "set of boolean incompatibility"); } + + var SoF1 v_sof1 := { 0.4, 9.6 }; + var SoF2 v_sof2 := v_sof1; + if (not match( { 0.4, 9.6 }, v_sof2) or v_sof1 != v_sof2) { setverdict(fail, "set of float incompatibility"); } + + var SoBS1 v_sobs1 := { '1101'B, '10101'B }; + var SoBS2 v_sobs2 := v_sobs1; + if (not match( { '1101'B, '10101'B }, v_sobs2) or v_sobs1 != v_sobs2) { setverdict(fail, "set of bitstring incompatibility"); } + + var SoHS1 v_sohs1 := { '1AF74'H, 'D000D'H }; + var SoHS2 v_sohs2 := v_sohs1; + if (not match( { '1AF74'H, 'D000D'H }, v_sohs2) or v_sohs1 != v_sohs2) { setverdict(fail, "set of hexstring incompatibility"); } + + var SoOS1 v_soos1 := { 'DEAD'O, '1BC5'O }; + var SoOS2 v_soos2 := v_soos1; + if (not match( { 'DEAD'O, '1BC5'O }, v_soos2) or v_soos1 != v_soos2) { setverdict(fail, "set of octetstring incompatibility"); } + + var SoCS1 v_socs1 := { "red", "blue" }; + var SoCS2 v_socs2 := v_socs1; + if (not match( { "red", "blue" }, v_socs2) or v_socs1 != v_socs2) { setverdict(fail, "set of charstring incompatibility"); } + + var SoUS1 v_sous1 := { "yellow", "green" }; + var SoUS2 v_sous2 := v_sous1; + if (not match( { "yellow", "green" }, v_sous2) or v_sous1 != v_sous2) { setverdict(fail, "set of universal charstring incompatibility"); } + + var SoI1_opt v_soi1_opt := { 1, 2 }; + var SoI2_opt v_soi2_opt := v_soi1_opt; + if (not match( { 1, 2 }, v_soi2_opt) or v_soi1_opt != v_soi2_opt) { setverdict(fail, "set of integer (optimized) incompatibility"); } + + setverdict(pass); +} + +// set of template +testcase tc_set_of_template_compat() runs on CT_Empty +{ + var template SoI1 vt_soi1 := { 1, 2 }; + var template SoI2 vt_soi2 := vt_soi1; + if (not match( { 1, 2 }, vt_soi2) or not match(valueof(vt_soi1), vt_soi2)) + { setverdict(fail, "set of integer template incompatibility"); } + + var template SoB1 vt_sob1 := { true, false }; + var template SoB2 vt_sob2 := vt_sob1; + if (not match( { true, false }, vt_sob2) or not match(valueof(vt_sob1), vt_sob2)) + { setverdict(fail, "set of boolean template incompatibility"); } + + var template SoF1 vt_sof1 := { 0.4, 9.6 }; + var template SoF2 vt_sof2 := vt_sof1; + if (not match( { 0.4, 9.6 }, vt_sof2) or not match(valueof(vt_sof1), vt_sof2)) + { setverdict(fail, "set of float template incompatibility"); } + + var template SoBS1 vt_sobs1 := { '1101'B, '10101'B }; + var template SoBS2 vt_sobs2 := vt_sobs1; + if (not match( { '1101'B, '10101'B }, vt_sobs2) or not match(valueof(vt_sobs1), vt_sobs2)) + { setverdict(fail, "set of bitstring template incompatibility"); } + + var template SoHS1 vt_sohs1 := { '1AF74'H, 'D000D'H }; + var template SoHS2 vt_sohs2 := vt_sohs1; + if (not match( { '1AF74'H, 'D000D'H }, vt_sohs2) or not match(valueof(vt_sohs1), vt_sohs2)) + { setverdict(fail, "set of hexstring template incompatibility"); } + + var template SoOS1 vt_soos1 := { 'DEAD'O, '1BC5'O }; + var template SoOS2 vt_soos2 := vt_soos1; + if (not match( { 'DEAD'O, '1BC5'O }, vt_soos2) or not match(valueof(vt_soos1), vt_soos2)) + { setverdict(fail, "set of octetstring template incompatibility"); } + + var template SoCS1 vt_socs1 := { "red", "blue" }; + var template SoCS2 vt_socs2 := vt_socs1; + if (not match( { "red", "blue" }, vt_socs2) or not match(valueof(vt_socs1), vt_socs2)) + { setverdict(fail, "set of charstring template incompatibility"); } + + var template SoUS1 vt_sous1 := { "yellow", "green" }; + var template SoUS2 vt_sous2 := vt_sous1; + if (not match( { "yellow", "green" }, vt_sous2) or not match(valueof(vt_sous1), vt_sous2)) + { setverdict(fail, "set of universal charstring template incompatibility"); } + + var template SoI1_opt vt_soi1_opt := { 1, 2 }; + var template SoI2_opt vt_soi2_opt := vt_soi1_opt; + if (not match( { 1, 2 }, vt_soi2_opt) or not match(valueof(vt_soi1_opt), vt_soi2_opt)) + { setverdict(fail, "set of integer template (optimized) incompatibility"); } + + setverdict(pass); +} + +control { + execute(tc_record_of_template_compat()); + execute(tc_record_of_compat()); + execute(tc_set_of_template_compat()); + execute(tc_set_of_compat()); +} + +} diff --git a/Regression_Test_java/src/recofOper/TrecofOper.ttcn b/Regression_Test_java/src/recofOper/TrecofOper.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..46012c76a5616e0b801095205744957ca9a34abd --- /dev/null +++ b/Regression_Test_java/src/recofOper/TrecofOper.ttcn @@ -0,0 +1,1425 @@ +/****************************************************************************** + * 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 + * Baranyi, Botond + * Beres, Szabolcs + * Godar, Marton + * Kovacs, Ferenc + * Raduly, Csaba + * Szabados, Kristof + * Szabo, Janos Zoltan – initial implementation + * + ******************************************************************************/ +module TrecofOper { +// ********** Type definitions ********************* +type component recofOper_mycomp {}; +type enumerated recofOper_myenum {xx1,xx2,xx3}; +type record recofOper_trecord { + integer x1 optional, + float x2 }; +type record of octetstring recofOper_trecof; +type set recofOper_tset { + integer x1, + float x2 optional }; +type set of charstring recofOper_tsetof; +type union recofOper_tunion { + integer x1, + float x2 }; +type record of integer recofOper_myrecof1; // record of basic types +type record of recofOper_myenum recofOper_myrecof2; // record of enum +type record of recofOper_trecord recofOper_myrecof3; // record of record +type record of recofOper_trecof recofOper_myrecof4; // record of record of +type record of recofOper_tset recofOper_myrecof5; // record of set +type record of recofOper_tsetof recofOper_myrecof6; // record of set of +type record of recofOper_tunion recofOper_myrecof7; // record of union +type record length (3) + of record length (3) + of record length (3) of integer threeD; +// *************** Constanst *********************** +const recofOper_trecord recofOper_temp1:={ x1:=omit, x2:=3.4 }; +const recofOper_trecof recofOper_temp2:={ 'AF12'O }; +const recofOper_tset recofOper_temp3:={ x1:=234, x2:=1.9}; +const recofOper_tsetof recofOper_temp4:={"f","8"}; +const recofOper_tunion recofOper_temp5:={ x2:=1.3 }; +const recofOper_myrecof1 recofOper_const1:={ 1,2 } //record of basic types +const recofOper_myrecof2 recofOper_const2:={ xx2, xx1 } +const recofOper_myrecof3 recofOper_const4:={ //record of record + { x1:=1, x2:=1.2 },recofOper_temp1 }; +const recofOper_myrecof4 recofOper_const6:={ //record of record of + { '12AB'O, 'CD12'O }, recofOper_temp2 }; +const recofOper_myrecof5 recofOper_const8:={ //record of set + { x1:=2, x2:=1.3}, recofOper_temp3 }; +const recofOper_myrecof6 recofOper_const10:={ //record of set of + {"a","b"}, recofOper_temp4 }; //{"f","8"}, +const recofOper_myrecof7 recofOper_const12:={ //record of union + { x1 :=3 }, recofOper_temp5 }; //{ x2:=1.3 } + +testcase recofAssign() runs on recofOper_mycomp{ +var recofOper_myrecof1 x1:={ 12,34} //record of basic types +var recofOper_myrecof1 x2,x3,x4; +x2:={ 32, 12 }; +x3:={12}; +x3:={23,21}; +x4:={}; +if (x1[0]==12) {setverdict(pass);} //at declaration + else {setverdict(fail);} +if (x1[1]==34) {setverdict(pass);} + else {setverdict(fail);} +if (x2[0]==32) {setverdict(pass);} //later + else {setverdict(fail);} +if (x2[1]==12) {setverdict(pass);} + else {setverdict(fail);} +if (x3[0]==23) {setverdict(pass);} //later, change size + else {setverdict(fail);} +if (x3[1]==21) {setverdict(pass);} + else {setverdict(fail);} +//if (x4=={}) {setverdict(pass);} //empty record of +// else {setverdict(fail);} +} + +testcase recofReAssign() runs on recofOper_mycomp +{ + var recofOper_myrecof1 x := { 1, 2, 3, 4 }; + // assigning a new value that is shorter than the previous + x := { -, 5, - }; + if (sizeof(x) == 3) { setverdict(pass); } + else { setverdict(fail); } + if (x[0] == 1) { setverdict(pass); } + else { setverdict(fail); } + if (x[1] == 5) { setverdict(pass); } + else { setverdict(fail); } + if (x[2] == 3) { setverdict(pass); } + else { setverdict(fail); } + x := { 6 }; + if (sizeof(x) == 1) { setverdict(pass); } + else { setverdict(fail); } + if (x[0] == 6) { setverdict(pass); } + x := { }; + if (sizeof(x) == 0) { setverdict(pass); } + else { setverdict(fail); } +} + +testcase recofAssignEnum() runs on recofOper_mycomp{ +var recofOper_myrecof2 x1:={ xx2 } //record of enum +var recofOper_myrecof2 x2; +x2:={xx2,xx1}; +//at declaration +if (x1[0]==xx2) {setverdict(pass);} + else {setverdict(fail);} +//later +if (x2[0]==xx2) {setverdict(pass);} + else {setverdict(fail);} +if (x2[1]==xx1) {setverdict(pass);} + else {setverdict(fail);} +} + +testcase recofAssignRec() runs on recofOper_mycomp{ +var recofOper_trecord temp1:={ x1:=omit, x2:=3.4 }; +var recofOper_myrecof3 x1:={ //record of record + { x1:=1, x2:=1.2 }, temp1 }; +var recofOper_myrecof3 x2; +x2:={ { x1:=1, x2:=1.2 }, temp1 }; +if (x1[0].x1==1) {setverdict(pass);} //at declaration + else {setverdict(fail);} +if (x1[0].x2==1.2) {setverdict(pass);} + else {setverdict(fail);} +if (x1[1]==temp1) {setverdict(pass);} + else {setverdict(fail);} +if (x2[0].x1==1) {setverdict(pass);} //later + else {setverdict(fail);} +if (x2[0].x2==1.2) {setverdict(pass);} + else {setverdict(fail);} +if (not(ispresent(x2[1].x1))) {setverdict(pass);} + else {setverdict(fail);} +if (x2[1].x2==3.4) {setverdict(pass);} + else {setverdict(fail);} +} + +testcase recofAssignRecof() runs on recofOper_mycomp{ +var recofOper_trecof temp2:={'AF12'O}; +var recofOper_myrecof4 x1:={ //record of record of + { '12AB'O, 'CD12'O }, temp2 }; +var recofOper_myrecof4 x2; +x2:={ { '12AB'O, 'CD12'O }, temp2 }; +if (x1[0][0]=='12AB'O) {setverdict(pass);} //at declaration + else {setverdict(fail);} +if (x1[0][1]=='CD12'O) {setverdict(pass);} + else {setverdict(fail);} +if (x1[1]==temp2) {setverdict(pass);} + else {setverdict(fail);} +if (x2[0][0]=='12AB'O) {setverdict(pass);} //later + else {setverdict(fail);} +if (x2[0][1]=='CD12'O) {setverdict(pass);} + else {setverdict(fail);} +if (x2[1][0]=='AF12'O) {setverdict(pass);} + else {setverdict(fail);} +} + +testcase recofAssignSet() runs on recofOper_mycomp{ +var recofOper_tset temp1:={ x1:=2, x2:=omit }; +var recofOper_myrecof5 x1:={ //record of set + { x1:=1, x2:=1.2 }, temp1 }; +var recofOper_myrecof5 x2; +x2:={ { x1:=1, x2:=1.2 }, temp1 }; +if (x1[0].x1==1) {setverdict(pass);} //at declaration + else {setverdict(fail);} +if (x1[0].x2==1.2) {setverdict(pass);} + else {setverdict(fail);} +if (x1[1]==temp1) {setverdict(pass);} + else {setverdict(fail);} +if (x2[0].x1==1) {setverdict(pass);} //later + else {setverdict(fail);} +if (x2[0].x2==1.2) {setverdict(pass);} + else {setverdict(fail);} +if (x2[1].x1==2) {setverdict(pass);} + else {setverdict(fail);} +if (not(ispresent(x2[1].x2))) {setverdict(pass);} + else {setverdict(fail);} +} + +testcase recofAssignSetof() runs on recofOper_mycomp{ +var recofOper_tsetof temp2:={"a","7"}; +var recofOper_myrecof6 x1:={ //record of set of + { "1", "a" }, temp2 }; +var recofOper_myrecof6 x2; +x2:={ { "1", "a" }, temp2 }; +if (x1[0][0]=="1") {setverdict(pass);} //at declaration + else {setverdict(fail);} +if (x1[0][1]=="a") {setverdict(pass);} + else {setverdict(fail);} +if (x1[1]==temp2) {setverdict(pass);} + else {setverdict(fail);} +if (x2[0][0]=="1") {setverdict(pass);} //later + else {setverdict(fail);} +if (x2[0][1]=="a") {setverdict(pass);} + else {setverdict(fail);} +if (x2[1][0]=="a") {setverdict(pass);} + else {setverdict(fail);} +if (x2[1][1]=="7") {setverdict(pass);} + else {setverdict(fail);} +} + +testcase recofAssignUnion() runs on recofOper_mycomp{ +var recofOper_tunion temp5 := {x2:=1.3} +var recofOper_myrecof7 x1:={ //record of union + { x1 :=3 }, temp5 }; //{ x2:=1.3 +var recofOper_myrecof7 x2; +x2:={ { x1 :=3 }, temp5 }; //{ x2:=1.3 } +if (x1[0].x1==3) {setverdict(pass);} //at declaration + else {setverdict(fail);} +if (ischosen(x1[0].x1)) {setverdict(pass);} + else {setverdict(fail);} +if (not(ischosen(x1[0].x2))) {setverdict(pass);} + else {setverdict(fail);} +if (x1[1]==temp5) {setverdict(pass);} + else {setverdict(fail);} +if (x2[0].x1==3) {setverdict(pass);} //later + else {setverdict(fail);} +if (ischosen(x2[0].x1)) {setverdict(pass);} + else {setverdict(fail);} +if (not(ischosen(x2[0].x2))) {setverdict(pass);} + else {setverdict(fail);} +if (x2[1].x2==1.3) {setverdict(pass);} + else {setverdict(fail);} +if (ischosen(x2[1].x2)) {setverdict(pass);} + else {setverdict(fail);} +if (not(ischosen(x2[1].x1))) {setverdict(pass);} + else {setverdict(fail);} +} + +testcase recofAssignElem() runs on recofOper_mycomp{ +var recofOper_myrecof1 x1,x2,x3,x4,x5; //record of basic types +x1:={ 3, 2 }; +x2:={ 1, 2 }; +x3:=x2; +x4:=x2; +x5:={2}; +x2[0]:=3; //change element to value +x3[0]:=x1[0]; //change element to element +x4[2]:=2; // add element +x5[2]:=3; // out of order +if (x1[1]==2) {setverdict(pass);} //accessing individual element + else {setverdict(fail);} +if (x2[0]==3) {setverdict(pass);} // change element to value + else {setverdict(fail);} +if (x2[1]==2) {setverdict(pass);} + else {setverdict(fail);} +if (x3[0]==3) {setverdict(pass);} // change element to element + else {setverdict(fail);} +if (x3[1]==2) {setverdict(pass);} + else {setverdict(fail);} +if (x4[0]==1) {setverdict(pass);} // add element + else {setverdict(fail);} +if (x4[1]==2) {setverdict(pass);} + else {setverdict(fail);} +if (x4[2]==2) {setverdict(pass);} + else {setverdict(fail);} +if (x5[2]==3) {setverdict(pass);} // out of order + else {setverdict(fail);} +} + +testcase recofAssignElemEnum() runs on recofOper_mycomp{ +var recofOper_myrecof2 x1, x2,x3; //record of enumerated +x1:={ xx1, xx2 }; +x2:={xx1, xx2}; +x3:={}; +x1[0]:=xx3; //change element +x2[2]:=xx3; // add element +x3[2]:=xx3; // out of order +if (x1[0]==xx3) {setverdict(pass);} // change element + else {setverdict(fail);} +if (x1[1]==xx2) {setverdict(pass);} + else {setverdict(fail);} +if (x2[0]==xx1) {setverdict(pass);} // add element + else {setverdict(fail);} +if (x2[1]==xx2) {setverdict(pass);} + else {setverdict(fail);} +if (x2[2]==xx3) {setverdict(pass);} + else {setverdict(fail);} +if (x3[2]==xx3) {setverdict(pass);} // out of order + else {setverdict(fail);} +} + +testcase recofAssignElemRec() runs on recofOper_mycomp{ +//var recofOper_trecord temp1:={ x1:=omit, x2:=3.4 }; +var recofOper_myrecof3 x1,x2,x3; //record of record +x1:={ { x1:=1, x2:=1.2 }, { x1:=omit, x2:=3.4 } }; +x2:=x1; +x1[0].x1:=2; +//temp1.x1:=3; +x1[1].x1:=3; +x2[2]:= {x1:=2, x2:=1.3}; // add element +x3[1]:= {x1:=2, x2:=1.3}; //out of order +if (x1[0].x1==2) {setverdict(pass);} // change element + else {setverdict(fail);} +if (x1[0].x2==1.2) {setverdict(pass);} + else {setverdict(fail);} +if (x1[1].x1==3) {setverdict(pass);} + else {setverdict(fail);} +if (x1[1].x2==3.4) {setverdict(pass);} + else {setverdict(fail);} +if (x2[0].x1==1) {setverdict(pass);} //add element + else {setverdict(fail);} +if (x2[0].x2==1.2) {setverdict(pass);} + else {setverdict(fail);} +if (not(ispresent(x2[1].x1))) {setverdict(pass);} + else {setverdict(fail);} +if (x2[1].x2==3.4) {setverdict(pass);} + else {setverdict(fail);} +if (x2[2].x1==2) {setverdict(pass);} + else {setverdict(fail);} +if (x2[2].x2==1.3) {setverdict(pass);} + else {setverdict(fail);} +if (x3[1].x1==2) {setverdict(pass);} // out of order + else {setverdict(fail);} +if (x3[1].x2==1.3) {setverdict(pass);} + else {setverdict(fail);} +} + + +testcase recofAssignElemRecof() runs on recofOper_mycomp{ +var recofOper_myrecof4 x1,x2,x3; //record of record of +x1:={ { '12AB'O, 'CD12'O }, { 'ABCD'O } }; +x2:=x1; +x1[0][1]:='34AB'O; //change element +x2[2]:={ '1234'O}; //add element +x3[2]:={'12CD'O}; //out of order +if (x1[0][0]=='12AB'O) {setverdict(pass);} // change element + else {setverdict(fail);} +if (x1[0][1]=='34AB'O) {setverdict(pass);} + else {setverdict(fail);} +if (x1[1][0]=='ABCD'O) {setverdict(pass);} + else {setverdict(fail);} +if (x2[0][0]=='12AB'O) {setverdict(pass);} // add element + else {setverdict(fail);} +if (x2[0][1]=='CD12'O) {setverdict(pass);} + else {setverdict(fail);} +if (x2[1][0]=='ABCD'O) {setverdict(pass);} + else {setverdict(fail);} +if (x2[2][0]=='1234'O) {setverdict(pass);} + else {setverdict(fail);} +if (x3[2][0]=='12CD'O) {setverdict(pass);} //out of order + else {setverdict(fail);}} + +testcase recofAssignElemSet() runs on recofOper_mycomp{ +var recofOper_myrecof5 x1,x2,x3 //record of set +x1:={ { x1:=1, x2:=1.2 }, { x1:=2, x2:=omit }}; +x2:={ { x1:=1, x2:=1.2 }, { x1:=2, x2:=omit }}; +x1[0].x2:=3.4; //change element +x2[2]:={ x1:=2, x2:=1.3 }; // add element +x3[2]:={ x1:=2, x2:=1.3 }; // out of order +if (x1[0].x1==1) {setverdict(pass);} //change element + else {setverdict(fail);} +if (x1[0].x2==3.4) {setverdict(pass);} + else {setverdict(fail);} +if (x1[1].x1==2) {setverdict(pass);} + else {setverdict(fail);} +if (not(ispresent(x1[1].x2))) {setverdict(pass);} + else {setverdict(fail);} +if (x2[0].x1==1) {setverdict(pass);} //add element + else {setverdict(fail);} +if (x2[0].x2==1.2) {setverdict(pass);} + else {setverdict(fail);} +if (x2[1].x1==2) {setverdict(pass);} + else {setverdict(fail);} +if (not(ispresent(x2[1].x2))) {setverdict(pass);} + else {setverdict(fail);} +if (x2[2].x1==2) {setverdict(pass);} + else {setverdict(fail);} +if (x2[2].x2==1.3) {setverdict(pass);} + else {setverdict(fail);} +if (x3[2].x1==2) {setverdict(pass);} //out of order + else {setverdict(fail);} +if (x3[2].x2==1.3) {setverdict(pass);} + else {setverdict(fail);} +} + +testcase recofAssignElemSetof() runs on recofOper_mycomp{ +var recofOper_tsetof temp2:={"a","7"}; +var recofOper_myrecof6 x1,x2,x3; //record of set of +x1:={ { "1" }, {"a","7"}}; +x2:={ { "1" }, {"a","7"}}; +x1[0][0]:="h"; // change element +x2[2]:={"2"}; //add element +x3[2]:={"2"}; //out of order +if (x1[0][0]=="h") {setverdict(pass);} //change element + else {setverdict(fail);} +if (x1[1][0]=="a") {setverdict(pass);} + else {setverdict(fail);} +if (x1[1][1]=="7") {setverdict(pass);} + else {setverdict(fail);} +if (x2[0][0]=="1") {setverdict(pass);} //add element + else {setverdict(fail);} +if (x2[1][0]=="a") {setverdict(pass);} + else {setverdict(fail);} +if (x2[1][1]=="7") {setverdict(pass);} + else {setverdict(fail);} +if (x2[2][0]=="2") {setverdict(pass);} + else {setverdict(fail);} +if (x3[2][0]=="2") {setverdict(pass);} // out of order + else {setverdict(fail);} +} + +testcase recofAssignElemUnion() runs on recofOper_mycomp{ +var recofOper_tunion temp5 := {x2:=1.3} +var recofOper_myrecof7 x1,x2,x3; //record of union +x1:={ {x1 :=3 }, {x2:=1.3} }; +x2:={ {x1 :=3 }, {x2:=1.3} }; +x1[0].x2:=3.4; //change element +x2[2]:={ x2:=1.4}; // add element +x3[2]:={ x2:=1.4}; // out of order +if (x1[0].x2==3.4) {setverdict(pass);} //change element + else {setverdict(fail);} +if (ischosen(x1[0].x2)) {setverdict(pass);} + else {setverdict(fail);} +if (not(ischosen(x1[0].x1))) {setverdict(pass);} + else {setverdict(fail);} +if (x1[1].x2==1.3) {setverdict(pass);} + else {setverdict(fail);} +if (ischosen(x1[1].x2)) {setverdict(pass);} + else {setverdict(fail);} +if (not(ischosen(x1[1].x1))) {setverdict(pass);} + else {setverdict(fail);} +if (x2[0].x1==3) {setverdict(pass);} //add element + else {setverdict(fail);} +if (ischosen(x2[0].x1)) {setverdict(pass);} + else {setverdict(fail);} +if (not(ischosen(x2[0].x2))) {setverdict(pass);} + else {setverdict(fail);} +if (x2[1].x2==1.3) {setverdict(pass);} + else {setverdict(fail);} +if (ischosen(x2[1].x2)) {setverdict(pass);} + else {setverdict(fail);} +if (not(ischosen(x2[1].x1))) {setverdict(pass);} + else {setverdict(fail);} +if (x2[2].x2==1.4) {setverdict(pass);} + else {setverdict(fail);} +if (ischosen(x2[2].x2)) {setverdict(pass);} + else {setverdict(fail);} +if (not(ischosen(x2[2].x1))) {setverdict(pass);} + else {setverdict(fail);} +if (x3[2].x2==1.4) {setverdict(pass);} //out of order + else {setverdict(fail);} +if (ischosen(x3[2].x2)) {setverdict(pass);} + else {setverdict(fail);} +if (not(ischosen(x3[2].x1))) {setverdict(pass);} + else {setverdict(fail);} +} + +testcase recofConst() runs on recofOper_mycomp{ +const recofOper_myrecof1 const1:={1,2,3} //record of basic types +if (recofOper_const1[0]==1) {setverdict(pass);} //definition part + else {setverdict(fail);} +if (recofOper_const1[1]==2) {setverdict(pass);} + else {setverdict(fail);} +if (const1[0]==1) {setverdict(pass);} //testcase + else {setverdict(fail);} +if (const1[1]==2) {setverdict(pass);} + else {setverdict(fail);} +if (const1[2]==3) {setverdict(pass);} + else {setverdict(fail);} +} + +testcase recofConstEnum() runs on recofOper_mycomp{ +const recofOper_myrecof2 const1:={xx1,xx2,xx3} //record of enumerated +if (recofOper_const2[0]==xx2) {setverdict(pass);} //definition part + else {setverdict(fail);} +if (recofOper_const2[1]==xx1) {setverdict(pass);} + else {setverdict(fail);} +if (const1[0]==xx1) {setverdict(pass);} //testcase + else {setverdict(fail);} +if (const1[1]==xx2) {setverdict(pass);} + else {setverdict(fail);} +if (const1[2]==xx3) {setverdict(pass);} + else {setverdict(fail);} +} + +testcase recofConstRec() runs on recofOper_mycomp{ +const recofOper_myrecof3 const4:={ //record of record + { x1:=1, x2:=1.2 }, recofOper_temp1 }; +if (recofOper_const4[0].x1==1) {setverdict(pass);} //definition part + else {setverdict(fail);} +if (recofOper_const4[0].x2==1.2) {setverdict(pass);} + else {setverdict(fail);} +if (recofOper_const4[1]==recofOper_temp1) {setverdict(pass);} + else {setverdict(fail);} +if (const4[0].x1==1) {setverdict(pass);} //testcase + else {setverdict(fail);} +if (const4[0].x2==1.2) {setverdict(pass);} + else {setverdict(fail);} +if (const4[1]==recofOper_temp1) {setverdict(pass);} + else {setverdict(fail);} +} + +testcase recofConstRecof() runs on recofOper_mycomp{ +const recofOper_myrecof4 const6:={ //record of record of + { '12AB'O, 'CD12'O }, recofOper_temp2 }; +if (recofOper_const6[0][0]=='12AB'O) {setverdict(pass);} //definition part + else {setverdict(fail);} +if (recofOper_const6[0][1]=='CD12'O) {setverdict(pass);} + else {setverdict(fail);} +if (recofOper_const6[1]==recofOper_temp2) {setverdict(pass);} + else {setverdict(fail);} +if (const6[0][0]=='12AB'O) {setverdict(pass);} //testcase + else {setverdict(fail);} +if (const6[0][1]=='CD12'O) {setverdict(pass);} + else {setverdict(fail);} +if (const6[1]==recofOper_temp2) {setverdict(pass);} + else {setverdict(fail);} +} + +testcase recofConstSet() runs on recofOper_mycomp{ +const recofOper_myrecof5 const8:={ //record of set + { x1:=2, x2:=1.3}, recofOper_temp3 }; +if (recofOper_const8[0].x1==2) {setverdict(pass);} //definition part + else {setverdict(fail);} +if (recofOper_const8[0].x2==1.3) {setverdict(pass);} + else {setverdict(fail);} +if (recofOper_const8[1]==recofOper_temp3) {setverdict(pass);} + else {setverdict(fail);} +if (const8[0].x1==2) {setverdict(pass);} //testcase + else {setverdict(fail);} +if (const8[0].x2==1.3) {setverdict(pass);} + else {setverdict(fail);} +if (const8[1]==recofOper_temp3) {setverdict(pass);} + else {setverdict(fail);} +} + +testcase recofConstSetof() runs on recofOper_mycomp{ +const recofOper_myrecof6 const10:={ //record of set of + {"a","b"}, {"f","8"} }; +if (recofOper_const10[0][0]=="a") {setverdict(pass);} //definition part + else {setverdict(fail);} +if (recofOper_const10[0][1]=="b") {setverdict(pass);} + else {setverdict(fail);} +if (recofOper_const10[1]==recofOper_temp4) {setverdict(pass);} + else {setverdict(fail);} +if (const10[0][0]=="a") {setverdict(pass);} //testcase + else {setverdict(fail);} +if (const10[0][1]=="b") {setverdict(pass);} + else {setverdict(fail);} +if (const10[1][0]=="f") {setverdict(pass);} + else {setverdict(fail);} +if (const10[1][1]=="8") {setverdict(pass);} + else {setverdict(fail);} +} + +testcase recofConstUnion() runs on recofOper_mycomp{ +const recofOper_myrecof7 const12:={ //record of union + { x1 :=3 }, { x2:=1.3 } }; +if (recofOper_const12[0].x1==3) {setverdict(pass);} //definition part + else {setverdict(fail);} +if (ischosen(recofOper_const12[0].x1)) {setverdict(pass);} + else {setverdict(fail);} +if (not(ischosen(recofOper_const12[0].x2))) {setverdict(pass);} + else {setverdict(fail);} +if (recofOper_const12[1]==recofOper_temp5) {setverdict(pass);} + else {setverdict(fail);} +if (const12[0].x1==3) {setverdict(pass);} //testcase + else {setverdict(fail);} +if (ischosen(const12[0].x1)) {setverdict(pass);} + else {setverdict(fail);} +if (not(ischosen(const12[0].x2))) {setverdict(pass);} + else {setverdict(fail);} +if (const12[1].x2==1.3) {setverdict(pass);} + else {setverdict(fail);} +if (ischosen(const12[1].x2)) {setverdict(pass);} + else {setverdict(fail);} +if (not(ischosen(const12[1].x1))) {setverdict(pass);} + else {setverdict(fail);} +} + + +testcase recofComp() runs on recofOper_mycomp{ +var recofOper_myrecof1 x1,x2,x3,x4; //record of basic type +x1:={ 1,2,3 }; +x2:={ 1,2,3 }; +x3:={ 1,2 }; +x4:={3,1,2}; +if (x1==x2) {setverdict(pass);} + else {setverdict(fail);} +if (not(x1==x3)) {setverdict(pass);} + else {setverdict(fail);} +if (not(x1==x4)) {setverdict(pass);} // out of order + else {setverdict(fail);} +if (x1!=x3) {setverdict(pass);} + else {setverdict(fail);} +if (not(x1!=x2)) {setverdict(pass);} + else {setverdict(fail);} +if (x1!=x4) {setverdict(pass);} // out of order + else {setverdict(fail);} +} + +testcase recofCompEnum() runs on recofOper_mycomp{ +var recofOper_myrecof2 x1,x2,x3; // record of enumerated +x1:={ xx1,xx2,xx3 }; +x2:={ xx1,xx2,xx3 }; +x3:={ xx1,xx2 }; +if (x1==x2) {setverdict(pass);} + else {setverdict(fail);} +if (not(x1==x3)) {setverdict(pass);} + else {setverdict(fail);} +if (x1!=x3) {setverdict(pass);} + else {setverdict(fail);} +if (not(x1!=x2)) {setverdict(pass);} + else {setverdict(fail);} +} + +testcase recofCompRec() runs on recofOper_mycomp{ +var recofOper_myrecof3 x1,x2,x3; // record of record +x1 :={ { x1:=1, x2:=1.2 }, { x1:=omit, x2:=3.4 } }; +x2 :={ { x1:=1, x2:=1.2 }, { x1:=omit, x2:=3.4 } }; +x3 :={ { x1:=2, x2:=1.2 }, { x1:=omit, x2:=3.4 } }; +if (x1==x2) {setverdict(pass);} + else {setverdict(fail);} +if (not(x1==x3)) {setverdict(pass);} + else {setverdict(fail);} +if (x1!=x3) {setverdict(pass);} + else {setverdict(fail);} +if (not(x1!=x2)) {setverdict(pass);} + else {setverdict(fail);} +} + + +testcase recofCompRecof() runs on recofOper_mycomp{ +var recofOper_myrecof4 x1,x2,x3; //record of record of +x1:={ { '12AB'O, 'CD12'O }, {'AF12'O} }; +x2:={ { '12AB'O, 'CD12'O }, {'AF12'O} }; +x3:={ { '12AB'O }, {'AF12'O} }; +if (x1==x2) {setverdict(pass);} + else {setverdict(fail);} +if (not(x1==x3)) {setverdict(pass);} + else {setverdict(fail);} +if (x2!=x3) {setverdict(pass);} + else {setverdict(fail);} +if (not(x1!=x2)) {setverdict(pass);} + else {setverdict(fail);} +} + +testcase recofCompSet() runs on recofOper_mycomp{ +var recofOper_tset temp1:={ x1:=2, x2:=omit }; +var recofOper_myrecof5 x1,x2,x3; //record of set +x1:={ { x1:=1, x2:=1.2 }, temp1 }; +x2:={ { x2:=1.2, x1:=1 }, { x1:=2, x2:=omit }}; +x3:={ { x1:=1, x2:=1.2 } }; +if (x1==x2) {setverdict(pass);} + else {setverdict(fail);} +if (not(x2==x3)) {setverdict(pass);} + else {setverdict(fail);} +if (x1!=x3) {setverdict(pass);} + else {setverdict(fail);} +if (not(x1!=x2)) {setverdict(pass);} + else {setverdict(fail);} +} + +testcase recofCompSetof() runs on recofOper_mycomp{ +var recofOper_tsetof temp2:={"a","7"}; +var recofOper_myrecof6 x1,x2,x3; //record of set of +x1:={ { "1", "a" }, temp2 }; +x2:={ { "1", "a" }, {"a","7"} }; +x3:={ { "1", "a" } }; +if (x1==x2) {setverdict(pass);} + else {setverdict(fail);} +if (not(x2==x3)) {setverdict(pass);} + else {setverdict(fail);} +if (x1!=x3) {setverdict(pass);} + else {setverdict(fail);} +if (not(x1!=x2)) {setverdict(pass);} + else {setverdict(fail);} +} + +testcase recofCompUnion() runs on recofOper_mycomp{ +var recofOper_tunion temp5 := {x2:=1.3} +var recofOper_myrecof7 x1,x2,x3; //record of union +x1:={ { x1 :=3 }, { x2:=1.3 } }; +x2:={ { x1 :=3 }, temp5 }; //{ x2:=1.3 } +x3:={ { x2 :=3.9 },temp5 }; //{ x2:=1.3 } +if (x1==x2) {setverdict(pass);} + else {setverdict(fail);} +if (not(x1==x3)) {setverdict(pass);} + else {setverdict(fail);} +if (x2!=x3) {setverdict(pass);} + else {setverdict(fail);} +if (not(x1!=x2)) {setverdict(pass);} + else {setverdict(fail);} +} + +testcase recofEmpty() runs on recofOper_mycomp{ + var recofOper_myrecof1 vl_list := {} + if (vl_list == {}) {setverdict(pass)} + else {setverdict(fail)} + if ({} == vl_list) {setverdict(pass)} + else {setverdict(fail)} +} + +testcase recofListOperator() runs on recofOper_mycomp{ + var recofOper_myrecof1 x1; + var recofOper_myrecof1 x2,x3,x4,x5,x6; + var recofOper_myrecof1 res1, res2, res3, res4, res5; + x1:={1,2}; + x2:={1,2}; + x3:={1}; + x4:={1}; + x4[1]:=3; + x5:={}; + x6[2]:=1; + res1 := x1 & x2; + res2 := x2 & x3; + res3 := x2 & x3 & x5; + res4 := x3 & x4; + res5 := x1 & {}; + if (res1 == {1,2,1,2}) {setverdict(pass);} + else {setverdict(fail);} + if (res2 == {1,2,1}) {setverdict(pass);} + else {setverdict(fail);} + if (res3 == {1,2,1}) {setverdict(pass);} + else {setverdict(fail);} + if (res4 == {1,1,3}) {setverdict(pass);} + else {setverdict(fail);} + if (res5 == {1,2}) {setverdict(pass);} + else {setverdict(fail);} +} + +testcase recofRotateOperators() runs on recofOper_mycomp{ + var recofOper_myrecof1 x1:={1,2,3,4,5}; + var recofOper_myrecof1 x2,x3,x4,x5,x6,x7; //set of basic types + x2 := x1 <@ 1; + x3 := x1 <@ 10; + x4 := x1 <@ 3 <@ 2; + x5 := x1 @> 1; + x6 := x1 @> 10; + x7 := x1 @> 3 @> 2; + if (x2 == {2,3,4,5,1}) {setverdict(pass);} + else {setverdict(fail);} + if (x3 == x1) {setverdict(pass);} + else {setverdict(fail);} + if (x4 == x1) {setverdict(pass);} + else {setverdict(fail);} + if (x5 == {5,1,2,3,4}) {setverdict(pass);} + else {setverdict(fail);} + if (x6 == x1) {setverdict(pass);} + else {setverdict(fail);} + if (x7 == x1) {setverdict(pass);} + else {setverdict(fail);} +} + +testcase recofLengthof() runs on recofOper_mycomp{ + var recofOper_myrecof1 x1:={1,2}; + var recofOper_myrecof1 x2,x3,x4,x5,x6; //record of basic types + x2:={ 1, 2 }; + x3:={1}; + x4:={1}; + x3:={1,2}; //change size by assignment + x4[1]:=3; //change size by adding element + x5:={}; //empty record of + x6[2]:=1; //out of order + if (lengthof(x1)==2) {setverdict(pass);} //assignment at declaration + else {setverdict(fail);} + if (lengthof(x2)==2) {setverdict(pass);} //assignment later + else {setverdict(fail);} + if (lengthof(x3)==2) {setverdict(pass);} //change size by assignment + else {setverdict(fail);} + if (lengthof(x4)==2) {setverdict(pass);} //change size by adding element + else {setverdict(fail);} + if (lengthof(x5)==0) {setverdict(pass);} //empty record of + else {setverdict(fail);} + if (lengthof(x6)==3) {setverdict(pass);} //out of order + else {setverdict(fail);} +} + +testcase recofSizeof() runs on recofOper_mycomp{ + var recofOper_myrecof1 x1:={1,2}; + var recofOper_myrecof1 x2,x3,x4,x5,x6; //record of basic types + x2:={ 1, 2 }; + x3:={1}; + x4:={1}; + x3:={1,2}; //change size by assignment + x4[1]:=3; //change size by adding element + x5:={}; //empty record of + x6[2]:=1; //out of order + if (sizeof(x1)==2) {setverdict(pass);} //assignment at declaration + else {setverdict(fail);} + if (sizeof(x2)==2) {setverdict(pass);} //assignment later + else {setverdict(fail);} + if (sizeof(x3)==2) {setverdict(pass);} //change size by assignment + else {setverdict(fail);} + if (sizeof(x4)==2) {setverdict(pass);} //change size by adding element + else {setverdict(fail);} + if (sizeof(x5)==0) {setverdict(pass);} //empty record of + else {setverdict(fail);} + if (sizeof(x6)==3) {setverdict(pass);} //out of order + else {setverdict(fail);} +} + +testcase recofReplace() runs on recofOper_mycomp{ + var recofOper_myrecof1 x1:={1,2,3,4,5}; + var recofOper_myrecof1 a:={8,8,8}; + var recofOper_myrecof1 x2; + x2 := replace(x1,2,3,a); + if (x2 == {1,2,8,8,8}) {setverdict(pass);} + else {setverdict(fail);} +} + +// TR: HS22809 - A null value is generated for empty constant arrays by the compiler, +// this can make calling 'replace' ambiguous (since there's a 'replace' function generated for both the +// array and its template. +testcase recofReplaceEmpty() runs on recofOper_mycomp { + var recofOper_myrecof1 x1 := { 1, 2, 3 }; + const recofOper_myrecof1 a := {}; + var recofOper_myrecof1 x2; + x2 := replace(x1, 0, 1, a); + if (x2 == { 2, 3 }) { setverdict(pass); } + else { setverdict(fail); } +} + +testcase recofSubstr() runs on recofOper_mycomp{ + var recofOper_myrecof1 x1:={1,2,3,4,5}; + var recofOper_myrecof1 x2; + x2 := substr(x1,2,3); + if (x2 == {3,4,5}) {setverdict(pass);} + else {setverdict(fail);} +} + +type record intrec { recofOper_myrecof1 a } +type record of intrec intreclist + +testcase recofIsvalue() runs on recofOper_mycomp{ + var recofOper_myrecof1 v_def; + var recofOper_myrecof1 v_empty := {-,-,-,-,-,-,-,-,-,-}; + var recofOper_myrecof1 v_full := {1,2,3,4,5,6,7,8,9,10} + + if ( isvalue(v_def) ) { setverdict(fail); }else { setverdict(pass); }; + if ( isvalue(v_empty) ) { setverdict(fail); } else { setverdict(pass); }; + if ( isvalue(v_empty[1]) ) { setverdict(fail); } else { setverdict(pass); }; + if ( isvalue(v_empty[0]) ) { setverdict(fail); } else { setverdict(pass); }; + if ( isvalue(v_full[1]) ) { setverdict(pass); } else { setverdict(fail); }; + + v_def[1] := 3; + if ( isvalue(v_def) ) { setverdict(fail); } else { setverdict(pass); }; + if ( isvalue(v_def[1]) ) { setverdict(pass); } else { setverdict(fail); }; + if ( isvalue(v_def[0]) ) { setverdict(fail); } else { setverdict(pass); }; + + v_empty[0] := 17; // not empty anymore + if ( isvalue(v_empty[0]) ) { setverdict(pass); } else { setverdict(fail); }; + if ( isvalue(v_empty) ) { setverdict(fail); } else { setverdict(pass); }; + + template intreclist it1 := { { a := { 1, 2, 3 } } }; + template intreclist it2 modifies it1 := { { a := { 1, 2, -, -, -, 100 } } }; + template intrec itt1 := { a := { 1, 2, 3 } }; + template intrec itt2 modifies itt1 := { a := { 1, 2, -, -, -, 100 } }; + if (isvalue (it1)) {setverdict (pass);} + else {setverdict (fail);} + + if (isvalue (it2)) { setverdict (fail);} + else { setverdict (pass);} + + if (isvalue (itt1)) {setverdict (pass);} + else {setverdict ( fail );} + + if (isvalue (itt2)) { setverdict (fail);} + else {setverdict (pass);} + + const threeD d3 := { + { + { 1,2,3 }, + { 1,2,3 }, + { 1,2,3 } + }, + { + { 1,2,3 }, + { 1,2,3 }, + { 1,2,3 } + }, + { + { 1,2,3 }, + { 1,2,3 }, + { 1,2,3 } + } + } + var threeD nowhere := { + { {-,1,-},{-,1,-},{-,1,-} }, + { {-,1,-},{-,-,-},{-,1,-} }, + { {-,1,-},{-,1,-},{-,1,-} } + + } + if ( isvalue(nowhere) ) { setverdict(fail, 1); } else { setverdict(pass); }; + if ( isvalue(nowhere[1]) ) { setverdict(fail, 2); } else { setverdict(pass); }; + if ( isvalue(nowhere[1][1]) ) { setverdict(fail, 3); } else { setverdict(pass); }; + if ( isvalue(nowhere[1][1][1]) ) { setverdict(fail, 4); } else { setverdict(pass); }; + if ( isvalue(d3) ) { setverdict(pass); } else { setverdict(fail, 5); }; + if ( isvalue(d3[0]) ) { setverdict(pass); } else { setverdict(fail, 6); }; + if ( isvalue(d3[0][1]) ) { setverdict(pass); } else { setverdict(fail, 7); }; + if ( isvalue(d3[0][1][2]) ) { setverdict(pass); } else { setverdict(fail, 8); }; +} + +testcase recofIsvalue2() runs on recofOper_mycomp{ + var recofOper_myrecof1 v; + if ( isvalue(v) ) { setverdict(fail); } else { setverdict(pass); }; + + v[3] := 3; + if ( isvalue(v) ) { setverdict(fail); } else { setverdict(pass); }; + + v[2] := 2; + if ( isvalue(v) ) { setverdict(fail); } else { setverdict(pass); }; + + v[1] := 1; + if ( isvalue(v) ) { setverdict(fail); } else { setverdict(pass); }; + + v[0] := 0; + if ( isvalue(v) ) { setverdict(pass); } else { setverdict(fail); }; + + v[4] := 4; + if ( isvalue(v) ) { setverdict(pass); } else { setverdict(fail); }; + + v[6] := 6; // there is now a hole at 5 + if ( isvalue(v) ) { setverdict(fail); } else { setverdict(pass); }; +} + +testcase recofIsbound() runs on recofOper_mycomp{ + var recofOper_myrecof1 v_def; + var recofOper_myrecof1 v_empty := {-,-,-,-,-,-,-,-,-,-}; + var recofOper_myrecof1 v_full := {1,2,3,4,5,6,7,8,9,10} + + if ( isbound(v_def) ) { setverdict(fail); }else { setverdict(pass); }; + if ( isbound(v_empty) ) { setverdict(pass); } else { setverdict(fail); }; + if ( isbound(v_empty[1]) ) { setverdict(fail); } else { setverdict(pass); }; + if ( isbound(v_empty[0]) ) { setverdict(fail); } else { setverdict(pass); }; + if ( isbound(v_full[1]) ) { setverdict(pass); } else { setverdict(fail); }; + + v_def[1] := 3; + if ( isbound(v_def) ) { setverdict(pass); } else { setverdict(fail); }; + if ( isbound(v_def[1]) ) { setverdict(pass); } else { setverdict(fail); }; + if ( isbound(v_def[0]) ) { setverdict(fail); } else { setverdict(pass); }; + + v_empty[0] := 17; // not empty anymore + if ( isbound(v_empty[0]) ) { setverdict(pass); } else { setverdict(fail); }; + + template intreclist it1 := { { a := { 1, 2, 3 } } }; + template intreclist it2 modifies it1 := { { a := { 1, 2, -, -, -, 100 } } }; + template intrec itt1 := { a := { 1, 2, 3 } }; + template intrec itt2 modifies itt1 := { a := { 1, 2, -, -, -, 100 } }; + if (isbound (it1)) { setverdict(pass); } else { setverdict(fail); }; + if (isbound (it2)) { setverdict(pass); } else { setverdict(fail); }; + if (isbound (itt1)) { setverdict(pass); } else { setverdict(fail); }; + if (isbound (itt2)) { setverdict(pass); } else { setverdict(fail); }; + + var threeD d3_emtpy; + const threeD d3 := { + { + { 1,2,3 }, + { 1,2,3 }, + { 1,2,3 } + }, + { + { 1,2,3 }, + { 1,2,3 }, + { 1,2,3 } + }, + { + { 1,2,3 }, + { 1,2,3 }, + { 1,2,3 } + } + } + var threeD nowhere := { + { {-,1,-},{-,1,-},{-,1,-} }, + { {-,1,-},{-,-,-},{-,1,-} }, + { {-,1,-},{-,1,-},{-,1,-} } + } + + if ( isbound(d3_emtpy) ) { setverdict(fail); } else { setverdict(pass); }; + if ( isbound(d3_emtpy[0]) ) { setverdict(fail); } else { setverdict(pass); }; + if ( isbound(d3_emtpy[0][1]) ) { setverdict(fail); } else { setverdict(pass); }; + if ( isbound(d3_emtpy[0][1][2]) ) { setverdict(fail); } else { setverdict(pass); }; + + if ( isbound(nowhere) ) { setverdict(pass); } else { setverdict(fail); }; + if ( isbound(nowhere[1]) ) { setverdict(pass); } else { setverdict(fail); }; + if ( isbound(nowhere[1][1]) ) { setverdict(pass); } else { setverdict(fail); }; + if ( isbound(nowhere[1][1][1]) ) { setverdict(fail); } else { setverdict(pass); }; + if ( isbound(d3) ) { setverdict(pass); } else { setverdict(fail); }; + if ( isbound(d3[0]) ) { setverdict(pass); } else { setverdict(fail); }; + if ( isbound(d3[0][1]) ) { setverdict(pass); } else { setverdict(fail); }; + if ( isbound(d3[0][1][2]) ) { setverdict(pass); } else { setverdict(fail); }; +} + +testcase recofCompConst() runs on recofOper_mycomp{ + const recofOper_myrecof1 c_r1 := { 1,2,3,4}; + const recofOper_myrecof1 c_r2 := { 1,2,3,4}; + const recofOper_myrecof1 c_r3 := { 4,3,2,1}; + const recofOper_myrecof1 c_r4_ind := { [0] := 1, [1] := 2, [2] := 3, [3] := 4}; + const recofOper_myrecof1 c_r5_ind := { [3] := 1, [1] := 2, [2] := 3, [0] := 4}; + const recofOper_myrecof1 c_r6_ind := { [3] := 4, [1] := 2, [2] := 3, [0] := 1}; + const recofOper_myrecof1 c_r8_ind := { [0] := 1, [1] := 2, [2] := 3, [3] := 4}; + + + var recofOper_myrecof1 vl_r7_ind := { [3] := 4, [1] := 2}; + + var recofOper_myrecof1 vl_r10 := { 1,2,3,4}; + var recofOper_myrecof1 vl_r11 := { 1,2,3,4}; + + if(c_r1 == c_r1) {setverdict(pass);} + else {setverdict(fail);} + + if(c_r1 == c_r2) {setverdict(pass);} + else {setverdict(fail);} + + if(c_r1 == c_r4_ind) {setverdict(pass);} + else {setverdict(fail);} + + if(c_r4_ind == c_r4_ind) {setverdict(pass);} + else {setverdict(fail);} + + if(c_r1 == c_r6_ind) {setverdict(pass);} + else {setverdict(fail);} + + + if(c_r1 != vl_r7_ind) {setverdict(pass);} + else { setverdict(fail);} + + if(c_r4_ind == c_r8_ind) {setverdict(pass); } + else {setverdict(fail);} + + if(vl_r10 == vl_r11) {setverdict(pass);} + else {setverdict(fail);} +} + +type record length(10) of integer MyRecordOfType10 +type record length(0..10) of integer MyRecordOfType0_10 +type record length(10..infinity) of integer MyRecordOfType10up +type record length(0..10) of charstring StringArray length(12) +type record of record of charstring StringArrayTwo length(12) +type record of charstring MyRecof2 ("a", "aa", "aaa", "aaaa") length(2) +type record length(2) of charstring MyRecof3 ("a", "aa", "aaa", "aaaa") +type record length(2) of charstring MyRecof4 ("a", "aa", "aaa", "aaaa") length(2) +// TODO: Add additional subtypes here. +type MyRecof2 MyRecof5 +type MyRecof3 MyRecof6 +type MyRecof4 MyRecof7 +type MyRecof2 MyRecof8 ({"aa"}) +type record of integer MyRecof9 (1..10, 100) + +const MyRecof2 c_myrecof1 := {} +const MyRecof2 c_myrecof2 := {"aa", "aa"} +const MyRecof2 c_myrecof3 := {c_myrecof2[0], c_myrecof2[1]} +const MyRecof3 c_myrecof4 := {"a", "aa"} +const MyRecof3 c_myrecof5 := {c_myrecof4[0], c_myrecof4[1]} +const MyRecof4 c_myrecof6 := {"aa", "aa"} +const MyRecof4 c_myrecof7 := {c_myrecof6[0], c_myrecof6[1]} +const MyRecof8 c_myrecof8 := {"aa"} +const MyRecof9 c_myrecof9 := {1, 100} + +template MyRecof2 t_myrecof1 := {} +template MyRecof2 t_myrecof2 := {"aa", "aa"} +template MyRecof2 t_myrecof3 := c_myrecof2 +template MyRecof3 t_myrecof4 := {"a", "aa"} +template MyRecof3 t_myrecof5 := c_myrecof5 +template MyRecof4 t_myrecof6 := {"aa", "aa"} +template MyRecof4 t_myrecof7 := c_myrecof7 +template MyRecof8 t_myrecof8 := {"aa"} +template MyRecof9 t_myrecof9 := {1, 100} length(2) + +testcase recofSubtype() runs on recofOper_mycomp { + var template MyRecordOfType10 vt_myrecof1 := { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 } + var MyRecordOfType10 v_myrecof1 := { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 } + if (substr(v_myrecof1, 0, 2) == substr(vt_myrecof1, 1, 2)) { setverdict(pass) } + else { setverdict(fail) } +} + +type record of charstring ROC; +type record of integer ROI; +type record MyRecord1 { + integer i optional, + float x optional, + charstring c +} + +type record of ROI ROROI; + +type union MyUnion1 { + ROC roc, + integer i, + ROI roi, + MyRecord1 r +} + +type record MyRec2 { + ROC roc optional, + ROI roi optional, + MyUnion1 u optional, + MyRecord1 r optional +} + +type record of MyRec2 MyRecOf + +type record MyRec3 { + ROROI roroi optional, + MyRec2 r optional +} + +const MyRec2 c_myrec2_1:={ + roc:=omit, + roi:={}, + u:={r:={ i:=1, x:=1.0, c:="one"}}, + r:={ i:=1, x:=1.0, c:="one"} +} + +const MyRec3 c_myrec3_1 := { + roroi:= { {1,2,3,4,5,6,7,8,9},{10} }, + r:= omit +} + +const MyRec3 c_myrec3_2 := { + roroi:= { {1,2,3,4,5,6,7,8,9},{10} }, + r:= { + roc:={}, + roi:={}, + u:={i:=5}, + r:=omit + } +} + +const MyRec3 c_myrec3_innerOmits := { + roroi:= { {1,2,3,4,5,6,7,8,9},{10} }, + r:= { + roc:=omit, + roi:=omit, + u:=omit, + r:=omit + } +} + +testcase tc_recordOf_omit1() runs on recofOper_mycomp { + var MyRec2 vl_r1:=c_myrec2_1; + if(isbound(vl_r1.roc)){setverdict(pass)}else {setverdict(fail)}; + var MyRec2 vl_r2:=c_myrec2_1; + if(isbound(vl_r2.roc[0])){setverdict(fail)}else {setverdict(pass)}; + var MyRec2 vl_r3:=c_myrec2_1; + if(isbound(vl_r3.roi)){setverdict(pass)}else {setverdict(fail)}; + var MyRec2 vl_r4:=c_myrec2_1; + if(isbound(vl_r4.roi[0])){setverdict(fail)}else {setverdict(pass)}; + var MyRec2 vl_r5:=c_myrec2_1; + if(isbound(vl_r5.roi[90])){setverdict(fail)}else {setverdict(pass)}; +} + +testcase tc_recordOf_union() runs on recofOper_mycomp { + var MyRec2 vl_r:=c_myrec2_1; + if(isbound(vl_r.u)){setverdict(pass)}else {setverdict(fail)}; + if(isbound(vl_r.u.r)){setverdict(pass)}else {setverdict(fail)}; + if(isbound(vl_r.u.r.i)){setverdict(pass)}else {setverdict(fail)}; + if(isbound(vl_r.u.r.x)){setverdict(pass)}else {setverdict(fail)}; + if(isbound(vl_r.u.r.c)){setverdict(pass)}else {setverdict(fail)}; + if(isbound(vl_r.u.roi)){setverdict(fail)}else {setverdict(pass)}; + if(isbound(vl_r.u.roi[3])){setverdict(fail)}else {setverdict(pass)}; + if(isbound(vl_r.u.i)){setverdict(fail)}else {setverdict(pass)}; + if(isbound(vl_r.u.roc)){setverdict(fail)}else {setverdict(pass)}; + if(isbound(vl_r.u.roc[0])){setverdict(fail)}else {setverdict(pass)}; +} + +testcase tc_recordOf_recordOfRecordOfInt() runs on recofOper_mycomp { + var MyRec3 vl_r:=c_myrec3_1; + if(isbound(vl_r.roroi)){setverdict(pass)}else {setverdict(fail)}; + if(isbound(vl_r.roroi[0])){setverdict(pass)}else {setverdict(fail)}; + if(isbound(vl_r.roroi[1])){setverdict(pass)}else {setverdict(fail)}; + if(isbound(vl_r.roroi[2])){setverdict(fail)}else {setverdict(pass)}; + if(isbound(vl_r.roroi[200])){setverdict(fail)}else {setverdict(pass)}; + if(isbound(vl_r.roroi[0][0])){setverdict(pass)}else {setverdict(fail)}; + if(isbound(vl_r.roroi[0][8])){setverdict(pass)}else {setverdict(fail)}; + if(isbound(vl_r.roroi[0][9])){setverdict(fail)}else {setverdict(pass)}; + if(isbound(vl_r.roroi[1][0])){setverdict(pass)}else {setverdict(fail)}; + if(isbound(vl_r.roroi[1][1])){setverdict(fail)}else {setverdict(pass)}; + if(isbound(vl_r.roroi[2][0])){setverdict(fail)}else {setverdict(pass)}; +} + +testcase tc_recordOf_recordInRecord() runs on recofOper_mycomp { + var MyRec3 vl_r:=c_myrec3_2; + if(isbound(vl_r.r)) {setverdict(pass)}else {setverdict(fail)}; + if(isbound(vl_r.r.roc)) {setverdict(pass)}else {setverdict(fail)}; + if(isbound(vl_r.r.roi)) {setverdict(pass)}else {setverdict(fail)}; + if(isbound(vl_r.r.u)) {setverdict(pass)}else {setverdict(fail)}; + if(isbound(vl_r.r.u)) {setverdict(pass)}else {setverdict(fail)}; + if(isbound(vl_r.r.u.i)) {setverdict(pass)}else {setverdict(fail)}; + if(isbound(vl_r.r.r)) {setverdict(pass)}else {setverdict(fail)}; //fails! +} + +testcase tc_recordOf_recordInRecord_innerOmits() runs on recofOper_mycomp { + var MyRec3 vl_r:=c_myrec3_innerOmits; + if(isbound(vl_r.roroi)) {setverdict(pass)}else {setverdict(fail)}; + if(isbound(vl_r.r)) {setverdict(pass)}else {setverdict(fail)}; + if(isbound(vl_r.r.roc)) {setverdict(pass)}else {setverdict(fail)}; + if(isbound(vl_r.r.roi)) {setverdict(pass)}else {setverdict(fail)}; + if(isbound(vl_r.r.u)) {setverdict(pass)}else {setverdict(fail)}; + if(isbound(vl_r.r.r)){setverdict(pass)}else {setverdict(fail)}; +} + + testcase tc_recordOf_union_ispresent() runs on recofOper_mycomp { + var MyRec2 vl_r:=c_myrec2_1; + if(ispresent(vl_r.u)){setverdict(pass)}else {setverdict(fail)}; + if(ispresent(vl_r.u.r)){setverdict(pass)}else {setverdict(fail)}; + if(ispresent(vl_r.u.r.i)){setverdict(pass)}else {setverdict(fail)}; + if(ispresent(vl_r.u.r.x)){setverdict(pass)}else {setverdict(fail)}; + if(ispresent(vl_r.u.r.c)){setverdict(pass)}else {setverdict(fail)}; + if(ispresent(vl_r.u.roi)){setverdict(fail)}else {setverdict(pass)}; + if(ispresent(vl_r.u.roi[3])){setverdict(fail)}else {setverdict(pass)}; + if(ispresent(vl_r.u.i)){setverdict(fail)}else {setverdict(pass)}; + if(ispresent(vl_r.u.roc)){setverdict(fail)}else {setverdict(pass)}; + if(ispresent(vl_r.u.roc[0])){setverdict(fail)}else {setverdict(pass)}; + } + + testcase tc_recordOf_recordOfRecordOfInt_ispresent() runs on recofOper_mycomp { + var MyRec3 vl_r:=c_myrec3_1; + if(ispresent(vl_r.roroi)){setverdict(pass)}else {setverdict(fail)}; + if(ispresent(vl_r.roroi[0])){setverdict(pass)}else {setverdict(fail)}; + if(ispresent(vl_r.roroi[1])){setverdict(pass)}else {setverdict(fail)}; + if(ispresent(vl_r.roroi[2])){setverdict(fail)}else {setverdict(pass)}; + if(ispresent(vl_r.roroi[200])){setverdict(fail)}else {setverdict(pass)}; + if(ispresent(vl_r.roroi[0][0])){setverdict(pass)}else {setverdict(fail)}; + } + + testcase tc_recordOf_recordOfRecordOfInt2() runs on recofOper_mycomp { + var MyRec3 vl_r:=c_myrec3_1; + if(ispresent(vl_r.roroi[0][8])){setverdict(pass)}else {setverdict(fail)}; + if(ispresent(vl_r.roroi[0][9])){setverdict(fail)}else {setverdict(pass)}; + if(ispresent(vl_r.roroi[1][0])){setverdict(pass)}else {setverdict(fail)}; + if(ispresent(vl_r.roroi[1][1])){setverdict(fail)}else {setverdict(pass)}; + if(ispresent(vl_r.roroi[2][0])){setverdict(fail)}else {setverdict(pass)}; + } + + testcase tc_recordOf_recordInRecord_ispresent() runs on recofOper_mycomp { + var MyRec3 vl_r:=c_myrec3_2; + if(ispresent(vl_r.r)) {setverdict(pass)}else {setverdict(fail)}; + if(ispresent(vl_r.r.roc)) {setverdict(pass)}else {setverdict(fail)}; + if(ispresent(vl_r.r.roi)) {setverdict(pass)}else {setverdict(fail)}; + if(ispresent(vl_r.r.u)) {setverdict(pass)}else {setverdict(fail)}; + if(ispresent(vl_r.r.u)) {setverdict(pass)}else {setverdict(fail)}; + if(ispresent(vl_r.r.u.i)) {setverdict(pass)}else {setverdict(fail)}; + } + + testcase tc_recordOf_recordInRecord2() runs on recofOper_mycomp { + var MyRec3 vl_r:=c_myrec3_2; + if(ispresent(vl_r.r.r)) {setverdict(fail)}else {setverdict(pass)}; + } + + testcase tc_recordOf_recordInRecord_innerOmits_ispresent() runs on recofOper_mycomp { + var MyRec3 vl_r:=c_myrec3_innerOmits; + if(ispresent(vl_r.roroi)) {setverdict(pass)}else {setverdict(fail)}; + if(ispresent(vl_r.r)) {setverdict(pass)}else {setverdict(fail)}; + if(ispresent(vl_r.r.roc)) {setverdict(fail)}else {setverdict(pass)}; + if(ispresent(vl_r.r.roi)) {setverdict(fail)}else {setverdict(pass)}; + if(ispresent(vl_r.r.u)) {setverdict(fail)}else {setverdict(pass)}; + if(ispresent(vl_r.r.r)){setverdict(fail)}else {setverdict(pass)}; + } + +type record length(6) of integer MyArray6; + +//TR: HO84027 +testcase tc_sizeof_lengthof_roi_bugs() runs on recofOper_mycomp { + var template ROI vlt_roi :={} + var integer vl_array[6]; + var MyArray6 vl_array6; + var template MyArray6 vlt_array6; + + vlt_roi[0]:=0; + vlt_roi[5]:=0; + + vl_array[0]:=0; + vl_array[4]:=0; + + vl_array6[0]:=0; + vl_array6[4]:=0; + + vlt_array6[0]:=0; + vlt_array6[4]:=0; + + if(sizeof(vlt_roi)==6) { setverdict(pass) } else { setverdict(fail) }; + if(lengthof(vlt_roi)==6) { setverdict(pass) } else { setverdict(fail) }; + + if(sizeof(vl_array)==6) { setverdict(pass) } else { setverdict(fail) }; + if(lengthof(vl_array)==5) { setverdict(pass) } else { setverdict(fail) }; + + if(sizeof(vl_array6)==5) { setverdict(pass) } else { setverdict(fail) }; + if(lengthof(vl_array6)==5) { setverdict(pass) } else { setverdict(fail) }; + + if(sizeof(vlt_array6)==5) { setverdict(pass) } else { setverdict(fail) }; + if(lengthof(vlt_array6)==5){ setverdict(pass) } else { setverdict(fail) }; +} + +testcase tc_sizeof_lengthof_standard1() runs on recofOper_mycomp { + if(lengthof(bitstring : '010'B) == 3) { setverdict(pass)} else { setverdict(fail) }; + if(lengthof(hexstring : 'F3'H) == 2) { setverdict(pass)} else { setverdict(fail) }; + if(lengthof(octetstring : 'F2'O) == 1) { setverdict(pass)} else { setverdict(fail) }; + if(lengthof (universal charstring : "Length_of_Example")==17) { setverdict(pass)}else { setverdict(fail) }; + if(lengthof(charstring : "HELLO") == 5) { setverdict(pass)}else { setverdict(fail) }; + if(lengthof(octetstring : ('12'O, '34'O))==1){ setverdict(pass)}else { setverdict(fail) }; + if(lengthof('1??1'B)==4){ setverdict(pass)}else { setverdict(fail) }; + if(lengthof(universal charstring : ? length(8))==8 ) { setverdict(pass)}else { setverdict(fail) }; //DTE + if(lengthof('1*F'H length (8)) ==8){ setverdict(pass)}else { setverdict(fail) }; + if(lengthof('00*FF'O length(1..2))==2) { setverdict(pass)}else { setverdict(fail) }; +} + +type record length(0..10) of integer MyList; + +testcase tc_sizeof_lengthof_standard2() runs on recofOper_mycomp { + var MyList vl_MyListVar := { 0, 1, -, 2, - }; + log("vl_MyListVar: ",vl_MyListVar); + if(lengthof(vl_MyListVar)==4) { setverdict(pass)}else { setverdict(fail) }; +} + +testcase tc_sizeof_lengthof_standard4() runs on recofOper_mycomp { + template ROI tr_roI3 := { 1, *, 10 } length(5) + if(lengthof(tr_roI3)==5){ setverdict(pass)}else { setverdict(fail) }; +} + +testcase tc_sizeof_lengthof_standard6() runs on recofOper_mycomp { + template ROI tr_roI5 := { 1, 2, 3, * } length(1..3) + if(lengthof(tr_roI5)==3) { setverdict(pass)}else { setverdict(fail) }; +} + +// test cases for bug 494614: +// when initializing a record-of-record element with an empty value ('{}') through module parameters, +// an actual unbound record element was created, instead of the usual null pointer used for unbound elements; +// copying this empty record caused a dynamic test case error + +modulepar recofOper_myrecof3 recofOper_mymodulepar; // initialized with value list notation +modulepar recofOper_myrecof3 recofOper_mymodulepar2; // initialized with assignment notation + +testcase tc_empty_record_element() runs on recofOper_mycomp { + var recofOper_myrecof3 copy := recofOper_mymodulepar; + copy[0].x1 := omit; // this is where the record-of is actually copied, and where the DTE occured + copy[0].x2 := 1.0; + if (copy == { { omit, 1.0 } }) { setverdict(pass); } + else { setverdict(fail); } +} + +testcase tc_empty_record_element2() runs on recofOper_mycomp { + var recofOper_myrecof3 copy := recofOper_mymodulepar2; + copy[0].x1 := omit; // this is where the record-of is actually copied, and where the DTE occured + copy[0].x2 := 1.0; + if (copy == { { omit, 1.0 } }) { setverdict(pass); } + else { setverdict(fail); } +} + +control { + const recofOper_trecord cl_temp1:={ x1:=omit, x2:=3.4 }; // constants in the control part + const recofOper_trecof cl_temp2:={ 'AF12'O }; + const recofOper_tset cl_temp3:={ x1:=234, x2:=1.9}; + const recofOper_tsetof cl_temp4:={"f","8"}; + const recofOper_tunion cl_temp5:={ x2:=1.3 }; + const recofOper_trecord vl_temp1:={ x1:=omit, x2:=3.4 }; // variables in the control part + const recofOper_trecof vl_temp2:={ 'AF12'O }; + const recofOper_tset vl_temp3:={ x1:=234, x2:=1.9}; + const recofOper_tsetof vl_temp4:={"f","8"}; + const recofOper_tunion vl_temp5:={ x2:=1.3 }; + + execute(recofAssign()); + execute(recofReAssign()); + execute(recofAssignEnum()); + execute(recofAssignRec()); + execute(recofAssignRecof()); + execute(recofAssignSet()); + execute(recofAssignSetof()); + execute(recofAssignUnion()); + execute(recofAssignElem()); + execute(recofAssignElemEnum()); + execute(recofAssignElemRec()); + execute(recofAssignElemRecof()); + execute(recofAssignElemSet()); + execute(recofAssignElemSetof()); + execute(recofAssignElemUnion()); + execute(recofConst()); + execute(recofConstEnum()); + execute(recofConstRec()); + execute(recofConstRecof()); + execute(recofConstSet()); + execute(recofConstSetof()); + execute(recofConstUnion()); + execute(recofComp()); + execute(recofCompConst()); + execute(recofCompEnum()); + execute(recofCompRec()); + execute(recofCompRecof()); + execute(recofCompSet()); + execute(recofCompSetof()); + execute(recofCompUnion()); + execute(recofEmpty()); + + execute(recofListOperator()); + execute(recofRotateOperators()); + execute(recofLengthof()); + execute(recofSizeof()); + execute(recofReplace()); + execute(recofReplaceEmpty()); + execute(recofSubstr()); + execute(recofIsvalue()); + execute(recofIsvalue2()); + execute(recofIsbound()); + + execute(recofSubtype()); + + execute(tc_recordOf_omit1()); + execute(tc_recordOf_union()); + execute(tc_recordOf_recordOfRecordOfInt()); + execute(tc_recordOf_recordInRecord()); + execute(tc_recordOf_recordInRecord_innerOmits()); + execute(tc_recordOf_union_ispresent()); + execute(tc_recordOf_recordOfRecordOfInt_ispresent()); + execute(tc_recordOf_recordOfRecordOfInt2()); + execute(tc_recordOf_recordInRecord_ispresent()); + execute(tc_recordOf_recordInRecord2()); + execute(tc_recordOf_recordInRecord_innerOmits_ispresent()); + execute(tc_sizeof_lengthof_roi_bugs()); + execute(tc_sizeof_lengthof_standard1()); + execute(tc_sizeof_lengthof_standard2()); + execute(tc_sizeof_lengthof_standard4()); + execute(tc_sizeof_lengthof_standard6()); + + // execute(tc_empty_record_element()); //DTE + // execute(tc_empty_record_element2()); //DTE +} + +} diff --git a/Regression_Test_java/src/recofOper/TrecofParamRef.ttcn b/Regression_Test_java/src/recofOper/TrecofParamRef.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..4f454bc7e7516aea729fd8fae3f5874a6324fb85 --- /dev/null +++ b/Regression_Test_java/src/recofOper/TrecofParamRef.ttcn @@ -0,0 +1,762 @@ +/****************************************************************************** + * 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 + * Baranyi, Botond + * + ******************************************************************************/ +module TrecofParamRef { + +import from BerType language "ASN.1:1997" all with { encode "DER:1997" }; + +// This module contains test cases, where a record of/set of and one of its elements are passed +// as inout parameters to a function. Inside this function modifications to the element will also modify +// the record of, while modifications to the record of may (in our case WILL) modify the element. + +type component CT_Empty {}; + +// 1. Assignment +type record of integer RoI; + +function f_param_ref_assign(inout RoI p_roi, inout integer p_elem) runs on CT_Empty +{ + p_roi := { 10 }; + + if (p_roi == { 10 }) { setverdict(pass); } + else { setverdict(fail, "@1 got: ", p_roi, ", expected: { 10 }"); } + + if (log2str(p_elem) == "<unbound>") { setverdict(pass); } + else { setverdict(fail, "@2 got: ", p_elem, ", expected: <unbound>"); } + + p_elem := 20; + + if (log2str(p_roi) == "{ 10, <unbound>, <unbound>, <unbound>, <unbound>, 20 }") { setverdict(pass); } + else { setverdict(fail, "@3 got: ", p_roi, ", expected: { 10, <unbound>, <unbound>, <unbound>, <unbound>, 20 }"); } +} + +testcase tc_param_ref_assign() runs on CT_Empty +{ + var RoI v_roi := { 0, 1, 2, 3, 4, 5 }; + f_param_ref_assign(v_roi, v_roi[5]); + + if (log2str(v_roi) == "{ 10, <unbound>, <unbound>, <unbound>, <unbound>, 20 }") { setverdict(pass); } + else { setverdict(fail, "@4 got: ", v_roi, ", expected: { 10, <unbound>, <unbound>, <unbound>, <unbound>, 20 }"); } +} + +// 2. Concatenation +function f_param_ref_concat(inout RoI p_roi, inout integer p_elem) runs on CT_Empty +{ + const RoI c := { 9, 8, 7 }; + + p_roi := c & { 4, 5 }; + + if (p_roi == { 9, 8, 7, 4, 5 }) { setverdict(pass); } + else { setverdict(fail, "@1 got: ", p_roi, ", expected: { 9, 8, 7, 4, 5 }"); } + + if (log2str(p_elem) == "<unbound>") { setverdict(pass); } + else { setverdict(fail, "@2 got: ", p_elem, ", expected: <unbound>"); } + + p_elem := 20; + + if (log2str(p_roi) == "{ 9, 8, 7, 4, 5, 20 }") { setverdict(pass); } + else { setverdict(fail, "@3 got: ", p_roi, ", expected: { 9, 8, 7, 4, 5, 20 }"); } + + p_roi := p_roi & { 6, 7 }; + + if (p_roi == { 9, 8, 7, 4, 5, 20, 6, 7 }) { setverdict(pass); } + else { setverdict(fail, "@4 got: ", p_roi, ", expected: { 9, 8, 7, 4, 5, 20, 6, 7 }"); } +} + +testcase tc_param_ref_concat() runs on CT_Empty +{ + var RoI v_roi := { 0, 1, 2, 3, 4, 5 }; + f_param_ref_concat(v_roi, v_roi[5]); + + if (log2str(v_roi) == "{ 9, 8, 7, 4, 5, 20, 6, 7 }") { setverdict(pass); } + else { setverdict(fail, "@5 got: ", v_roi, ", expected: { 9, 8, 7, 4, 5, 20, 6, 7 }"); } +} + +// 3. Replacing +function f_param_ref_replace(inout RoI p_roi, inout integer p_elem) runs on CT_Empty +{ + const RoI c1 := { 7, 6 }; + const RoI c2 := { 5, 4, 3 }; + + p_roi := replace(p_roi, 2, 4, c1); + + if (p_roi == { 0, 1, 7, 6 }) { setverdict(pass); } + else { setverdict(fail, "@1 got: ", p_roi, ", expected: { 0, 1, 7, 6 }"); } + + if (log2str(p_elem) == "<unbound>") { setverdict(pass); } + else { setverdict(fail, "@2 got: ", p_elem, ", expected: <unbound>"); } + + p_elem := 20; + + if (log2str(p_roi) == "{ 0, 1, 7, 6, <unbound>, 20 }") { setverdict(pass); } + else { setverdict(fail, "@3 got: ", p_roi, ", expected: { 0, 1, 7, 6, <unbound>, 20 }"); } + + p_roi := replace(p_roi, 4, 2, c2); + + if (p_roi == { 0, 1, 7, 6, 5, 4, 3 }) { setverdict(pass); } + else { setverdict(fail, "@4 got: ", p_roi, ", expected: { 0, 1, 7, 6, 5, 4, 3 }"); } + + if (p_elem == 4) { setverdict(pass); } + else { setverdict(fail, "@5 got: ", p_elem, ", expected: 4"); } +} + +testcase tc_param_ref_replace() runs on CT_Empty +{ + var RoI v_roi := { 0, 1, 2, 3, 4, 5 }; + f_param_ref_replace(v_roi, v_roi[5]); + + if (log2str(v_roi) == "{ 0, 1, 7, 6, 5, 4, 3 }") { setverdict(pass); } + else { setverdict(fail, "@6 got: ", v_roi, ", expected: { 0, 1, 7, 6, 5, 4, 3 }"); } +} + +// 3.B Simplified replacing +//======== Simplified case, deterministic behavior expected: ===== + +function f_param_ref_replace_1arg(inout RoI p_roi) runs on CT_Empty +{ + const RoI c1 := { 7, 6 }; + const RoI c2 := { 5, 4, 3 }; + + p_roi := replace(p_roi, 2, 4, c1); + + if (p_roi == { 0, 1, 7, 6 }) { setverdict(pass); } //ok + else { setverdict(fail, "@1 got: ", p_roi, ", expected: { 0, 1, 7, 6 }"); } +// +// if (log2str(p_roi[5]) == "<unbound>") { setverdict(pass); } +// else { setverdict(fail, "@2 got: ", p_roi[5], ", expected: <unbound>"); } //nok!!! + + p_roi[5] := 20; + + if (log2str(p_roi) == "{ 0, 1, 7, 6, <unbound>, 20 }") { setverdict(pass); } + else { setverdict(fail, "@3 got: ", p_roi, ", expected: { 0, 1, 7, 6, <unbound>, 20 }"); } + + p_roi := replace(p_roi, 4, 2, c2); + + if (p_roi == { 0, 1, 7, 6, 5, 4, 3 }) { setverdict(pass); } + else { setverdict(fail, "@4 got: ", p_roi, ", expected: { 0, 1, 7, 6, 5, 4, 3 }"); } + + if (p_roi[5] == 4) { setverdict(pass); } + else { setverdict(fail, "@5 got: ", p_roi[5], ", expected: 4"); } +} + +//There is no expected sideeffect +testcase tc_param_ref_replace_1arg() runs on CT_Empty +{ + var RoI v_roi := { 0, 1, 2, 3, 4, 5 }; + f_param_ref_replace_1arg(v_roi); + + if (log2str(v_roi) == "{ 0, 1, 7, 6, 5, 4, 3 }") { setverdict(pass); } + else { setverdict(fail, "@6 got: ", v_roi, ", expected: { 0, 1, 7, 6, 5, 4, 3 }"); } +} +// 4. JSON decoding +type record of integer RoI_json with { encode "JSON" }; + +external function f_enc_json(in RoI_json x) return octetstring + with { extension "prototype(convert) encode(JSON)" } + +external function f_dec_json(in octetstring os, out RoI_json x) + with { extension "prototype(fast) decode(JSON)" } + +function f_param_ref_json(inout RoI_json p_roi, inout integer p_elem) runs on CT_Empty +{ + var RoI_json enc_val := { 10, 16 }; + var octetstring os := f_enc_json(enc_val); + f_dec_json(os, p_roi); + + if (p_roi == enc_val) { setverdict(pass); } + else { setverdict(fail, "@1 got: ", p_roi, ", expected: ", enc_val); } + + if (log2str(p_elem) == "<unbound>") { setverdict(pass); } + else { setverdict(fail, "@2 got: ", p_elem, ", expected: <unbound>"); } + + p_elem := 20; + + if (log2str(p_roi) == "{ 10, 16, <unbound>, <unbound>, <unbound>, 20 }") { setverdict(pass); } + else { setverdict(fail, "@3 got: ", p_roi, ", expected: { 10, 16, <unbound>, <unbound>, <unbound>, 20 }"); } + + enc_val := { 3, 2, 1, 9, 8, 7, 6 }; + os := f_enc_json(enc_val); + f_dec_json(os, p_roi); + + if (p_roi == enc_val) { setverdict(pass); } + else { setverdict(fail, "@4 got: ", p_roi, ", expected: ", enc_val); } + + if (p_elem == 7) { setverdict(pass); } + else { setverdict(fail, "@5 got: ", p_elem, ", expected: 7"); } +} + +testcase tc_param_ref_json() runs on CT_Empty +{ + var RoI_json v_roi := { 0, 1, 2, 3, 4, 5 }; + f_param_ref_json(v_roi, v_roi[5]); + + if (log2str(v_roi) == "{ 3, 2, 1, 9, 8, 7, 6 }") { setverdict(pass); } + else { setverdict(fail, "@6 got: ", v_roi, ", expected: { 3, 2, 1, 9, 8, 7, 6 }"); } +} + +// 5. XER decoding +type record of integer RoI_xer with { encode "XML" }; + +external function f_enc_xer(in RoI_xer x) return octetstring + with { extension "prototype(convert) encode(XER:XER_EXTENDED)" } + +external function f_dec_xer(in octetstring os, out RoI_xer x) + with { extension "prototype(fast) decode(XER:XER_EXTENDED)" } + +function f_param_ref_xer(inout RoI_xer p_roi, inout integer p_elem) runs on CT_Empty +{ + var RoI_xer enc_val := { 10, 16 }; + var octetstring os := f_enc_xer(enc_val); + f_dec_xer(os, p_roi); + + if (p_roi == enc_val) { setverdict(pass); } + else { setverdict(fail, "@1 got: ", p_roi, ", expected: ", enc_val); } + + if (log2str(p_elem) == "<unbound>") { setverdict(pass); } + else { setverdict(fail, "@2 got: ", p_elem, ", expected: <unbound>"); } + + p_elem := 20; + + if (log2str(p_roi) == "{ 10, 16, <unbound>, <unbound>, <unbound>, 20 }") { setverdict(pass); } + else { setverdict(fail, "@3 got: ", p_roi, ", expected: { 10, 16, <unbound>, <unbound>, <unbound>, 20 }"); } + + enc_val := { 3, 2, 1, 9, 8, 7, 6 }; + os := f_enc_xer(enc_val); + f_dec_xer(os, p_roi); + + if (p_roi == enc_val) { setverdict(pass); } + else { setverdict(fail, "@4 got: ", p_roi, ", expected: ", enc_val); } + + if (p_elem == 7) { setverdict(pass); } + else { setverdict(fail, "@5 got: ", p_elem, ", expected: 7"); } +} + +testcase tc_param_ref_xer() runs on CT_Empty +{ + var RoI_xer v_roi := { 0, 1, 2, 3, 4, 5 }; + f_param_ref_xer(v_roi, v_roi[5]); + + if (log2str(v_roi) == "{ 3, 2, 1, 9, 8, 7, 6 }") { setverdict(pass); } + else { setverdict(fail, "@6 got: ", v_roi, ", expected: { 3, 2, 1, 9, 8, 7, 6 }"); } +} + +// 6. TEXT decoding +type record of integer RoI_text with { encode "TEXT"; variant "BEGIN('numbrz:'),END(';'),SEPARATOR(' ')"; }; + +external function f_enc_text(in RoI_text x) return charstring + with { extension "prototype(convert) encode(TEXT)" } + +external function f_dec_text(in charstring cs, out RoI_text x) + with { extension "prototype(fast) decode(TEXT)" } + +function f_param_ref_text(inout RoI_text p_roi, inout integer p_elem) runs on CT_Empty +{ + var RoI_text enc_val := { 10, 16 }; + var charstring cs := f_enc_text(enc_val); + f_dec_text(cs, p_roi); + + if (p_roi == enc_val) { setverdict(pass); } + else { setverdict(fail, "@1 got: ", p_roi, ", expected: ", enc_val); } + + if (log2str(p_elem) == "<unbound>") { setverdict(pass); } + else { setverdict(fail, "@2 got: ", p_elem, ", expected: <unbound>"); } + + p_elem := 20; + + if (log2str(p_roi) == "{ 10, 16, <unbound>, <unbound>, <unbound>, 20 }") { setverdict(pass); } + else { setverdict(fail, "@3 got: ", p_roi, ", expected: { 10, 16, <unbound>, <unbound>, <unbound>, 20 }"); } + + enc_val := { 3, 2, 1, 9, 8, 7, 6 }; + cs := f_enc_text(enc_val); + f_dec_text(cs, p_roi); + + if (p_roi == enc_val) { setverdict(pass); } + else { setverdict(fail, "@4 got: ", p_roi, ", expected: ", enc_val); } + + if (p_elem == 7) { setverdict(pass); } + else { setverdict(fail, "@5 got: ", p_elem, ", expected: 7"); } +} + +testcase tc_param_ref_text() runs on CT_Empty +{ + var RoI_text v_roi := { 0, 1, 2, 3, 4, 5 }; + f_param_ref_text(v_roi, v_roi[5]); + + if (log2str(v_roi) == "{ 3, 2, 1, 9, 8, 7, 6 }") { setverdict(pass); } + else { setverdict(fail, "@6 got: ", v_roi, ", expected: { 3, 2, 1, 9, 8, 7, 6 }"); } +} + +// 7. RAW decoding +type record of integer RoI_raw with { encode "RAW"; variant "" }; + +external function f_enc_raw(in RoI_raw x) return octetstring + with { extension "prototype(convert) encode(RAW)" } + +external function f_dec_raw(in octetstring os, out RoI_raw x) + with { extension "prototype(fast) decode(RAW)" } + +function f_param_ref_raw(inout RoI_raw p_roi, inout integer p_elem) runs on CT_Empty +{ + var RoI_raw enc_val := { 10, 16 }; + var octetstring os := f_enc_raw(enc_val); + f_dec_raw(os, p_roi); + + if (p_roi == enc_val) { setverdict(pass); } + else { setverdict(fail, "@1 got: ", p_roi, ", expected: ", enc_val); } + + if (log2str(p_elem) == "<unbound>") { setverdict(pass); } + else { setverdict(fail, "@2 got: ", p_elem, ", expected: <unbound>"); } + + p_elem := 20; + + if (log2str(p_roi) == "{ 10, 16, <unbound>, <unbound>, <unbound>, 20 }") { setverdict(pass); } + else { setverdict(fail, "@3 got: ", p_roi, ", expected: { 10, 16, <unbound>, <unbound>, <unbound>, 20 }"); } + + enc_val := { 3, 2, 1, 9, 8, 7, 6 }; + os := f_enc_raw(enc_val); + f_dec_raw(os, p_roi); + + if (p_roi == enc_val) { setverdict(pass); } + else { setverdict(fail, "@4 got: ", p_roi, ", expected: ", enc_val); } + + if (p_elem == 7) { setverdict(pass); } + else { setverdict(fail, "@5 got: ", p_elem, ", expected: 7"); } +} + +testcase tc_param_ref_raw() runs on CT_Empty +{ + var RoI_raw v_roi := { 0, 1, 2, 3, 4, 5 }; + f_param_ref_raw(v_roi, v_roi[5]); + + if (log2str(v_roi) == "{ 3, 2, 1, 9, 8, 7, 6 }") { setverdict(pass); } + else { setverdict(fail, "@6 got: ", v_roi, ", expected: { 3, 2, 1, 9, 8, 7, 6 }"); } +} + +// 8. BER decoding, using record of integer type defined in BerType.asn + +external function f_enc_ber(in RoI_ber x) return octetstring + with { extension "prototype(convert) encode(BER:BER_ENCODE_DER)" } + +external function f_dec_ber(in octetstring os, out RoI_ber x) + with { extension "prototype(fast) decode(BER:BER_ACCEPT_ALL)" } + +function f_param_ref_ber(inout RoI_ber p_roi, inout integer p_elem) runs on CT_Empty +{ + var RoI_ber enc_val := { 10, 16 }; + var octetstring os := f_enc_ber(enc_val); + f_dec_ber(os, p_roi); + + if (p_roi == enc_val) { setverdict(pass); } + else { setverdict(fail, "@1 got: ", p_roi, ", expected: ", enc_val); } + + if (log2str(p_elem) == "<unbound>") { setverdict(pass); } + else { setverdict(fail, "@2 got: ", p_elem, ", expected: <unbound>"); } + + p_elem := 20; + + if (log2str(p_roi) == "{ 10, 16, <unbound>, <unbound>, <unbound>, 20 }") { setverdict(pass); } + else { setverdict(fail, "@3 got: ", p_roi, ", expected: { 10, 16, <unbound>, <unbound>, <unbound>, 20 }"); } + + enc_val := { 3, 2, 1, 9, 8, 7, 6 }; + os := f_enc_ber(enc_val); + f_dec_ber(os, p_roi); + + if (p_roi == enc_val) { setverdict(pass); } + else { setverdict(fail, "@4 got: ", p_roi, ", expected: ", enc_val); } + + if (p_elem == 7) { setverdict(pass); } + else { setverdict(fail, "@5 got: ", p_elem, ", expected: 7"); } +} + +testcase tc_param_ref_ber() runs on CT_Empty +{ + var RoI_ber v_roi := { 0, 1, 2, 3, 4, 5 }; + f_param_ref_ber(v_roi, v_roi[5]); + + if (log2str(v_roi) == "{ 3, 2, 1, 9, 8, 7, 6 }") { setverdict(pass); } + else { setverdict(fail, "@6 got: ", v_roi, ", expected: { 3, 2, 1, 9, 8, 7, 6 }"); } +} + +// 9. The record of is embedded in another structure +type record EmbRec { + charstring text, + RoI numbers +} + +function f_param_ref_emb_recof(inout EmbRec p_rec, inout integer p_elem) runs on CT_Empty +{ + p_rec := { "second", { 10 } }; + + if (p_rec == { "second", { 10 } }) { setverdict(pass); } + else { setverdict(fail, "@1 got: ", p_rec, ", expected: { text := \"second\", numbers := { 10 } }"); } + + if (log2str(p_elem) == "<unbound>") { setverdict(pass); } + else { setverdict(fail, "@2 got: ", p_elem, ", expected: <unbound>"); } + + p_elem := 20; + + if (log2str(p_rec) == "{ text := \"second\", numbers := { 10, <unbound>, <unbound>, <unbound>, <unbound>, 20 } }") { setverdict(pass); } + else { setverdict(fail, "@3 got: ", p_rec, ", expected: { text := \"second\", numbers := { 10, <unbound>, <unbound>, <unbound>, <unbound>, 20 } }"); } +} + +testcase tc_param_ref_emb_recof() runs on CT_Empty +{ + var EmbRec v_rec := { "first", { 0, 1, 2, 3, 4, 5 } }; + f_param_ref_emb_recof(v_rec, v_rec.numbers[5]); + + if (log2str(v_rec) == "{ text := \"second\", numbers := { 10, <unbound>, <unbound>, <unbound>, <unbound>, 20 } }") { setverdict(pass); } + else { setverdict(fail, "@4 got: ", v_rec, ", expected: { text := \"second\", numbers := { 10, <unbound>, <unbound>, <unbound>, <unbound>, 20 } }"); } +} + +// 10. The second parameter is not the whole element type, just a part of it +type record ElemType { + integer num, + charstring str +} + +type record of ElemType Elems; + +function f_param_ref_emb_elem(inout Elems p_elems, inout integer p_num) runs on CT_Empty +{ + p_elems := { { 10, "ten" } }; + + if (p_elems == { { 10, "ten" } }) { setverdict(pass); } + else { setverdict(fail, "@1 got: ", p_elems, ", expected: { { num := 10, str := \"ten\" } }"); } + + if (log2str(p_num) == "<unbound>") { setverdict(pass); } + else { setverdict(fail, "@2 got: ", p_num, ", expected: <unbound>"); } + + p_num := 20; + + if (log2str(p_elems) == "{ { num := 10, str := \"ten\" }, <unbound>, { num := 20, str := <unbound> } }") { setverdict(pass); } + else { setverdict(fail, "@3 got: ", p_elems, ", expected: { { num := 10, str := \"ten\" }, <unbound>, { num := 20, str := <unbound> } }"); } +} + +testcase tc_param_ref_emb_elem() runs on CT_Empty +{ + var Elems v_elems := { { 1, "one" }, { 2, "two" }, { 3, "three" }, { 4, "four" } }; + f_param_ref_emb_elem(v_elems, v_elems[2].num); + + if (log2str(v_elems) == "{ { num := 10, str := \"ten\" }, <unbound>, { num := 20, str := <unbound> } }") { setverdict(pass); } + else { setverdict(fail, "@4 got: ", v_elems, ", expected: { { num := 10, str := \"ten\" }, <unbound>, { num := 20, str := <unbound> } }"); } +} + +// 11. Two embedded functions, each called with a reference to one of the elements in the record of +function f_param_ref_emb_inner(inout RoI p_roi, inout integer p_elem) runs on CT_Empty +{ + p_roi := { 10 }; + + if (p_roi == { 10 }) { setverdict(pass); } + else { setverdict(fail, "@1 got: ", p_roi, ", expected: { 10 }"); } + + if (log2str(p_elem) == "<unbound>") { setverdict(pass); } + else { setverdict(fail, "@2 got: ", p_elem, ", expected: <unbound>"); } + + p_elem := 20; + + if (log2str(p_roi) == "{ 10, <unbound>, <unbound>, 20 }") { setverdict(pass); } + else { setverdict(fail, "@3 got: ", p_roi, ", expected: { 10, <unbound>, <unbound>, 20 }"); } +} + +function f_param_ref_emb_outer(inout RoI p_roi, inout integer p_elem) runs on CT_Empty +{ + f_param_ref_emb_inner(p_roi, p_roi[3]); + + if (log2str(p_elem) == "<unbound>") { setverdict(pass); } + else { setverdict(fail, "@4 got: ", p_elem, ", expected: <unbound>"); } + + p_elem := 30; + + if (log2str(p_roi) == "{ 10, <unbound>, <unbound>, 20, <unbound>, 30 }") { setverdict(pass); } + else { setverdict(fail, "@5 got: ", p_roi, ", expected: { 10, <unbound>, <unbound>, 20, <unbound>, 30 }"); } +} + +testcase tc_param_ref_emb_func() runs on CT_Empty +{ + var RoI v_roi := { 0, 1, 2, 3, 4, 5 }; + f_param_ref_emb_outer(v_roi, v_roi[5]); + + if (log2str(v_roi) == "{ 10, <unbound>, <unbound>, 20, <unbound>, 30 }") { setverdict(pass); } + else { setverdict(fail, "@6 got: ", v_roi, ", expected: { 10, <unbound>, <unbound>, 20, <unbound>, 30 }"); } +} + +// 12. The element as out parameter instead of inout (it will be set to unbound at the begining of the function) +function f_param_ref_out_par(inout RoI p_roi, out integer p_elem) runs on CT_Empty +{ + if (log2str(p_roi) == "{ 0, 1, 2, 3, <unbound>, 5 }") { setverdict(pass); } + else { setverdict(fail, "@1 got: ", p_roi, ", expected: { 0, 1, 2, 3, <unbound>, 5 }"); } + + p_roi := { 9, 8, 7, 6, 5 }; + + if (p_elem == 5) { setverdict(pass); } + else { setverdict(fail, "@2 got: ", p_elem, ", expected: 5"); } + + p_elem := 20; + + if (log2str(p_roi) == "{ 9, 8, 7, 6, 20 }") { setverdict(pass); } + else { setverdict(fail, "@3 got: ", p_roi, ", expected: { 9, 8, 7, 6, 20 }"); } +} + +testcase tc_param_ref_out_par() runs on CT_Empty +{ + var RoI v_roi := { 0, 1, 2, 3, 4, 5 }; + f_param_ref_out_par(v_roi, v_roi[4]); + + if (log2str(v_roi) == "{ 9, 8, 7, 6, 20 }") { setverdict(pass); } + else { setverdict(fail, "@4 got: ", v_roi, ", expected: { 9, 8, 7, 6, 20 }"); } +} + +// 13. Copying the array +function f_param_ref_copy(inout RoI p_roi, inout integer p_elem) runs on CT_Empty +{ + var RoI v_copy := p_roi; + p_roi := { 10 }; + + if (p_roi == { 10 }) { setverdict(pass); } + else { setverdict(fail, "@1 got: ", p_roi, ", expected: { 10 }"); } + + if (log2str(p_elem) == "<unbound>") { setverdict(pass); } + else { setverdict(fail, "@2 got: ", p_elem, ", expected: <unbound>"); } + + p_elem := 20; + + if (log2str(p_roi) == "{ 10, <unbound>, <unbound>, <unbound>, <unbound>, 20 }") { setverdict(pass); } + else { setverdict(fail, "@3 got: ", p_roi, ", expected: { 10, <unbound>, <unbound>, <unbound>, <unbound>, 20 }"); } + + if (v_copy == { 0, 1, 2, 3, 4, 5 }) { setverdict(pass); } + else { setverdict(fail, "@4 got: ", v_copy, ", expected: { 0, 1, 2, 3, 4, 5 }"); } + + v_copy := p_roi; + v_copy[5] := 11; + v_copy[2] := 3; + + if (log2str(p_roi) == "{ 10, <unbound>, <unbound>, <unbound>, <unbound>, 20 }") { setverdict(pass); } + else { setverdict(fail, "@5 got: ", p_roi, ", expected: { 10, <unbound>, <unbound>, <unbound>, <unbound>, 20 }"); } +} + +testcase tc_param_ref_copy() runs on CT_Empty +{ + var RoI v_roi := { 0, 1, 2, 3, 4, 5 }; + var RoI v_copy := v_roi; + f_param_ref_copy(v_roi, v_roi[5]); + + if (log2str(v_roi) == "{ 10, <unbound>, <unbound>, <unbound>, <unbound>, 20 }") { setverdict(pass); } + else { setverdict(fail, "@6 got: ", v_roi, ", expected: { 10, <unbound>, <unbound>, <unbound>, <unbound>, 20 }"); } + + if (v_copy == { 0, 1, 2, 3, 4, 5 }) { setverdict(pass); } + else { setverdict(fail, "@7 got: ", v_copy, ", expected: { 0, 1, 2, 3, 4, 5 }"); } +} + +// 14. Arrays +type integer Ints[6]; +function f_param_ref_array(inout Ints p_arr, inout integer p_elem) runs on CT_Empty +{ + p_arr := { 10, 12, 14, 16, 18, 20 }; + + if (p_elem == 20) { setverdict(pass); } + else { setverdict(fail, "@1 got: ", p_elem, ", expected: 20"); } + + p_elem := 7; + + if (log2str(p_arr) == "{ 10, 12, 14, 16, 18, 7 }") { setverdict(pass); } + else { setverdict(fail, "@2 got: ", p_arr, ", expected: { 10, 12, 14, 16, 18, 7 }"); } +} + +testcase tc_param_ref_array() runs on CT_Empty +{ + var Ints v_arr := { 0, 1, 2, 3, 4, 5 }; + f_param_ref_array(v_arr, v_arr[5]); + + if (log2str(v_arr) == "{ 10, 12, 14, 16, 18, 7 }") { setverdict(pass); } + else { setverdict(fail, "@3 got: ", v_arr, ", expected: { 10, 12, 14, 16, 18, 7 }"); } +} + +// 15. Multiple array indexes +type record of EmbRec EmbRecs; + +function f_param_ref_multi(inout EmbRecs p_recs, inout integer p_elem) runs on CT_Empty +{ + p_recs := { { "just one", { 10 } } }; + + if (p_recs == { { "just one", { 10 } } }) { setverdict(pass); } + else { setverdict(fail, "@1 got: ", p_recs, ", expected: { { text := \"just one\", numbers := { 10 } } }"); } + + if (log2str(p_elem) == "<unbound>") { setverdict(pass); } + else { setverdict(fail, "@2 got: ", p_elem, ", expected: <unbound>"); } + + p_elem := 20; + + if (log2str(p_recs) == "{ { text := \"just one\", numbers := { 10 } }, <unbound>, { text := <unbound>, numbers := { <unbound>, 20 } } }") { setverdict(pass); } + else { setverdict(fail, "@3 got: ", p_recs, ", expected: { { text := \"just one\", numbers := { 10 } }, <unbound>, { text := <unbound>, numbers := { <unbound>, 20 } } }"); } +} + +testcase tc_param_ref_multi() runs on CT_Empty +{ + var EmbRecs v_recs := { { "first", { 5, 10, 15 } }, { "second", { 7 } }, { "third", { 1, 2, 3 } } }; + f_param_ref_multi(v_recs, v_recs[2].numbers[1]); + + if (log2str(v_recs) == "{ { text := \"just one\", numbers := { 10 } }, <unbound>, { text := <unbound>, numbers := { <unbound>, 20 } } }") { setverdict(pass); } + else { setverdict(fail, "@4 got: ", v_recs, ", expected: { { text := \"just one\", numbers := { 10 } }, <unbound>, { text := <unbound>, numbers := { <unbound>, 20 } } }"); } +} + +// 16. Template parameter +function f_param_ref_templ8(inout template RoI pt_roi, inout template integer pt_elem) runs on CT_Empty +{ + pt_roi := { 10 }; + + if (log2str(pt_roi) == "{ 10 }") { setverdict(pass); } + else { setverdict(fail, "@1 got: ", pt_roi, ", expected: { 10 }"); } + + if (log2str(pt_elem) == "<unbound>") { setverdict(pass); } + else { setverdict(fail, "@2 got: ", pt_elem, ", expected: <unbound>"); } + + pt_elem := 20; + + if (log2str(pt_roi) == "{ 10, <unbound>, <unbound>, <unbound>, <unbound>, 20 }") { setverdict(pass); } + else { setverdict(fail, "@3 got: ", pt_roi, ", expected: { 10, <unbound>, <unbound>, <unbound>, <unbound>, 20 }"); } +} + +testcase tc_param_ref_templ8() runs on CT_Empty +{ + var template RoI vt_roi := { 0, 1, 2, 3, 4, 5 }; + f_param_ref_templ8(vt_roi, vt_roi[5]); + + if (log2str(vt_roi) == "{ 10, <unbound>, <unbound>, <unbound>, <unbound>, 20 }") { setverdict(pass); } + else { setverdict(fail, "@4 got: ", vt_roi, ", expected: { 10, <unbound>, <unbound>, <unbound>, <unbound>, 20 }"); } +} + +// 17. Same as no. 9 (record of embedded in a record) but with the record of field being optional +type record EmbRecOpt { + charstring text, + RoI numbers optional +} + +function f_param_ref_emb_recof_opt(inout EmbRecOpt p_rec, inout integer p_elem) runs on CT_Empty +{ + p_rec := { "second", omit }; + + if (p_rec == { "second", omit }) { setverdict(pass); } + else { setverdict(fail, "@1 got: ", p_rec, ", expected: { text := \"second\", numbers := omit }"); } + + if (log2str(p_elem) == "<unbound>") { setverdict(pass); } + else { setverdict(fail, "@2 got: ", p_elem, ", expected: <unbound>"); } + + p_elem := 20; + + if (log2str(p_rec) == "{ text := \"second\", numbers := { <unbound>, <unbound>, <unbound>, <unbound>, <unbound>, 20 } }") { setverdict(pass); } + else { setverdict(fail, "@3 got: ", p_rec, ", expected: { text := \"second\", numbers := { <unbound>, <unbound>, <unbound>, <unbound>, <unbound>, 20 } }"); } +} + +testcase tc_param_ref_emb_recof_opt() runs on CT_Empty +{ + var EmbRecOpt v_rec := { "first", { 0, 1, 2, 3, 4, 5 } }; + f_param_ref_emb_recof_opt(v_rec, v_rec.numbers[5]); + + if (log2str(v_rec) == "{ text := \"second\", numbers := { <unbound>, <unbound>, <unbound>, <unbound>, <unbound>, 20 } }") { setverdict(pass); } + else { setverdict(fail, "@4 got: ", v_rec, ", expected: { text := \"second\", numbers := { <unbound>, <unbound>, <unbound>, <unbound>, <unbound>, 20 } }"); } +} + +// 18. The function call is part of a lazy parameter expression +function f_param_ref_emb_lazy(inout RoI p_roi, inout integer p_elem) runs on CT_Empty return charstring +{ + p_roi := { 10 }; + + if (p_roi == { 10 }) { setverdict(pass); } + else { setverdict(fail, "@1 got: ", p_roi, ", expected: { 10 }"); } + + if (log2str(p_elem) == "<unbound>") { setverdict(pass); } + else { setverdict(fail, "@2 got: ", p_elem, ", expected: <unbound>"); } + + p_elem := 20; + + if (log2str(p_roi) == "{ 10, <unbound>, <unbound>, <unbound>, <unbound>, 20 }") { setverdict(pass); } + else { setverdict(fail, "@3 got: ", p_roi, ", expected: { 10, <unbound>, <unbound>, <unbound>, <unbound>, 20 }"); } + + return int2str(p_elem); +} + +function f_lazy(in integer p_val, in @lazy charstring p_str) runs on CT_Empty +{ + if (isbound(p_val)) { + log(p_str); + setverdict(pass); + } + else { + setverdict(fail, "lazy expression evaluated too soon"); + } +} + +testcase tc_param_ref_emb_lazy() runs on CT_Empty +{ + var RoI v_roi := { 0, 1, 2, 3, 4, 5 }; + f_lazy(v_roi[1], f_param_ref_emb_lazy(v_roi, v_roi[5])); + + if (log2str(v_roi) == "{ 10, <unbound>, <unbound>, <unbound>, <unbound>, 20 }") { setverdict(pass); } + else { setverdict(fail, "@4 got: ", v_roi, ", expected: { 10, <unbound>, <unbound>, <unbound>, <unbound>, 20 }"); } +} + +// 19. The function call is interrupted by a DTE, the reference to the element should be cleaned up (HT47424) +function f_dte(in RoI p_roi, inout integer p_val) runs on CT_Empty +{ + var integer bad_index := -1; + if (p_val < p_roi[bad_index]) { + setverdict(fail, "expected DTE in if clause"); + } +} + +testcase tc_param_ref_dte() runs on CT_Empty +{ + var RoI v_roi := { 0, 1, 2, 3 }; + @try { + f_dte(v_roi, v_roi[2]); + setverdict(fail, "expected DTE in function call"); + } + @catch (dummy) {} + v_roi := { }; + var RoI v_copy := v_roi; + var charstring log_exp := "{ }"; + if (log2str(v_roi) == log_exp) { setverdict(pass); } + else { setverdict(fail, "@1 got: ", v_roi, ", expected: ", log_exp); } + if (log2str(v_copy) == log_exp) { setverdict(pass); } + else { setverdict(fail, "@2 got: ", v_copy, ", expected: ", log_exp); } +} + +control { + execute(tc_param_ref_assign()); + execute(tc_param_ref_concat()); + execute(tc_param_ref_replace()); + execute(tc_param_ref_replace_1arg()); + + execute(tc_param_ref_json()); + execute(tc_param_ref_xer()); + execute(tc_param_ref_text()); + execute(tc_param_ref_raw()); + execute(tc_param_ref_ber()); + + execute(tc_param_ref_emb_recof()); + execute(tc_param_ref_emb_elem()); + execute(tc_param_ref_emb_func()); + + execute(tc_param_ref_out_par()); + execute(tc_param_ref_copy()); + execute(tc_param_ref_array()); + execute(tc_param_ref_multi()); + + //execute(tc_param_ref_templ8()); Doesn't work for templates + + execute(tc_param_ref_emb_recof_opt()); + execute(tc_param_ref_emb_lazy()); + + execute(tc_param_ref_dte()); +} + +} // end of module diff --git a/Regression_Test_java/src/recofOper/config.cfg b/Regression_Test_java/src/recofOper/config.cfg new file mode 100644 index 0000000000000000000000000000000000000000..998c1b1422bf3ba54c620a93bd9284a4c2f6c283 --- /dev/null +++ b/Regression_Test_java/src/recofOper/config.cfg @@ -0,0 +1,23 @@ +############################################################################### +# 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 +# Baranyi, Botond +# Szabo, Janos Zoltan – initial implementation +# +############################################################################### +[MODULE_PARAMETERS] +recofOper_mymodulepar := { {} } +recofOper_mymodulepar2 := { [0] := {} } +[LOGGING] +Logfile := "recofOper.log" +FileMask := LOG_ALL +ConsoleMask := TTCN_WARNING | TTCN_ERROR | TTCN_TESTCASE | TTCN_STATISTICS +[EXECUTE] +TrecofOper +TrecofCompat diff --git a/Regression_Test_java/src/recofOper/config_rt2.cfg b/Regression_Test_java/src/recofOper/config_rt2.cfg new file mode 100644 index 0000000000000000000000000000000000000000..07df87e37d2bd00d45417d80f698fcdf59b774e6 --- /dev/null +++ b/Regression_Test_java/src/recofOper/config_rt2.cfg @@ -0,0 +1,23 @@ +############################################################################### +# 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 +# Baranyi, Botond +# +############################################################################### +[MODULE_PARAMETERS] +recofOper_mymodulepar := { {} } +recofOper_mymodulepar2 := { [0] := {} } +[LOGGING] +Logfile := "recofOper.log" +FileMask := LOG_ALL +ConsoleMask := TTCN_WARNING | TTCN_ERROR | TTCN_TESTCASE | TTCN_STATISTICS +[EXECUTE] +TrecofOper +TrecofCompat +TrecofParamRef diff --git a/Regression_Test_java/src/text2ttcn/array_test.ttcn b/Regression_Test_java/src/text2ttcn/array_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..4b2e72890f0732e0a3bc4700da322d40e6b9f2b6 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn/array_test.ttcn @@ -0,0 +1,1021 @@ +/****************************************************************************** + * 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 + * Baranyi, Botond + * + ******************************************************************************/ +module array_test +{ +//========================================================================= +// Import Part +//========================================================================= +import from types2 all; +import from functions2 all; +//========================================================================= +// Module Parameters +//========================================================================= +modulepar { + template AI3 tspt_array_i3_a := * + template AI3 tspt_array_i3_q := ? + template AI3 tspt_array_i3_v0 := {-,-,-} //error, length shall be 3 + template AI3 tspt_array_i3_v1:= {1,-,-} + template AI3 tspt_array_i3_v2:= {1,2,-} + template AI3 tspt_array_i3_v3v := {0, 1, 2} + //template AI3 tspt_array_i3_v4 := {0, 1, 2, 3} //error, length shall be 3 + template AI3 tspt_array_i3_v3a := {0, *, 2} + template AI3 tspt_array_i3_v3q := {?, 1, 2} + //template AI3 tspt_array_i3_v3o := {omit, 1, 2} //"error: `omit' value is not allowed in this context" + template AI3 tspt_array_i3_v3vl := {0, 1, (1,2)} //value list + template AI3 tspt_array_i3_vl := ( {0,1,2},{9,10,11}) + template AI3 tspt_array_i3_v3r := {0, 1, (1..3)} //range + template AI3 tspt_array_i3_v3mix := {(0,1), 1, (1..3)} + template AI3 tspt_array_i3_v3c := {(0,1), 1, complement(2,3)} + template AI3 tspt_array_i3_v3p := { permutation(1,2,3) } //TR: HS10539, fixed + template AI3 tspt_array_i3_v3pa := { permutation(1,2,*) } + + template AI3 tspt_array_i3_mod4a := {9,10,11} + template AI3 tspt_array_i3_mod4q := {9,10,11} + template AI3 tspt_array_i3_mod4o := * + template AI3 tspt_array_i3_mod4v0 := {1,2,3} + template AI3 tspt_array_i3_mod4v1:= {-,2,3} + template AI3 tspt_array_i3_mod4v2:= {-,-,3} + template AI3 tspt_array_i3_mod4v3v := {-,-,-} + //template AI3 tspt_array_i3_mod4v4 := {-,-,-} + template AI3 tspt_array_i3_mod4v3a := {9,10,11} + template AI3 tspt_array_i3_mod4v3q := {9,10,11} + //template AI3 tspt_array_i3_mod4v3o := * + template AI3 tspt_array_i3_mod4v3vl := {-,-,-} + template AI3 tspt_array_i3_mod4vl := * + template AI3 tspt_array_i3_mod4v3r := {-,-,-} + template AI3 tspt_array_i3_mod4v3mix := {-,-,-} + template AI3 tspt_array_i3_mod4v3c := {-,-,-} + template AI3 tspt_array_i3_mod4field1 := { (0, 1), 1, (1 .. 3) } + + template AI3 tspt_array_i3_mod4aifp := {9,10,11} + template AI3 tspt_array_i3_mod4qifp := {9,10,11} + template AI3 tspt_array_i3_mod4v0ifp := * + template AI3 tspt_array_i3_mod4v1ifp := * + template AI3 tspt_array_i3_mod4v2ifp := * + template AI3 tspt_array_i3_mod4v3vifp := * + template AI3 tspt_array_i3_mod4v4 := ? + template AI3 tspt_array_i3_mod4v3aifp := {9,10,11} + template AI3 tspt_array_i3_mod4v3qifp := {9,10,11} + //template AI3 tspt_array_i3_mod4v3o ifp := * + template AI3 tspt_array_i3_mod4v3vlifp := {9,10,11} + template AI3 tspt_array_i3_mod4vlifp := * + template AI3 tspt_array_i3_mod4v3rifp := {9,10,11} + template AI3 tspt_array_i3_mod4v3mixifp := ? + template AI3 tspt_array_i3_mod4v3cifp := ?; + // template AI3 tspt_array_i3_mod4v3crifp := *; + // template AI3 tspt_array_i3_mod4v3pifp := *; + template AI3 tspt_array_i3_mod4field1ifp := { (0, 1), 1, (1 .. 3) } ifpresent; +} + +//========================================================================= +// Templates +//========================================================================= +//array +template AI3 t_array_i3_a := * +template AI3 t_array_i3_q := ? +template AI3 t_array_i3_v0 := {-,-,-} //error +template AI3 t_array_i3_v1:= {1,-,-} //error +template AI3 t_array_i3_v2:= {1,2,-} //error +template AI3 t_array_i3_v3v := {0, 1, 2} +//template AI3 t_array_i3_v4 := {0, 1, 2, 3} +template AI3 t_array_i3_v3a := {0, *, 2} +template AI3 t_array_i3_v3q := {?, 1, 2} +//template AI3 t_array_i3_v3o := {omit, 1, 2} //error +template AI3 t_array_i3_v3vl := {0, 1, (1,2)} //value list +template AI3 t_array_i3_vl := ( {0,1,2},{0,1,3}) +template AI3 t_array_i3_v3r := {0, 1, (1..3)} //range +template AI3 t_array_i3_v3mix := {(0,1), 1, (1..3)} +template AI3 t_array_i3_v3c := {(0,1), 1, complement(2,3)} +template AI3 t_array_i3_v3cr := {(0..1), 1, complement(2,4)} +template AI3 t_array_i3_v3p := { permutation(1,2,3) } //TR: HS10539, fixed +template AI3 t_array_i3_v3pa := { permutation(1,2,*) } + +template AI3 tt := { 1,2,* }; +template AI3 tt1x3 := { 1,*,3 }; +template AI3 ttx45 := { *,4,5 }; + + +template REC_BAI3 t_array_bai3( template boolean t_b, template AI3 t_ai3) := { + b:= t_b, + ai3:=t_ai3 +} + +type component MyComp_CT { + var template integer v_AI3literal[3] := { permutation(1,*,3) }; + var template integer v_AI3allfrom[3] := { permutation(all from tt) }; +} + + +//========================================================================= +// Functions +//========================================================================= + +//template string -> template conversion +//expected result: success +function f_string2ttcn_REC_BAI3_t(in charstring pl_cs, in template REC_BAI3 pl_expected_result) { + var template REC_BAI3 vl_result; + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + log(pl_expected_result); + log(vl_result); + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +//template string -> template conversion +//expected result: success, expected result struct in charstring +function f_string2ttcn_REC_BAI3_t_str(in charstring pl_cs, in charstring pl_expected_result) { + var template REC_BAI3 vl_result; + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + log("Expected result: ", pl_expected_result); + log("Result: ", vl_result); + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +//template string -> variable conversion +//expected result: error +function f_string2ttcn_REC_BAI3_v(in charstring pl_cs, in template REC_BAI3 pl_expected_result, in boolean pl_ok_expected) { + var REC_BAI3 vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("str2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ",pl_expected_result ); + log("Result: ", vl_result); +} + +//this function is the same but uses +function f_string2ttcn_REC_BAI3_v_str(in charstring pl_cs, charstring pl_expected_result, in boolean pl_ok_expected) { + var REC_BAI3 vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail, match(pl_expected_result, log2str(vl_result))) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("str2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ", pl_expected_result ); + log("Result: ", vl_result); +} + + + + +//========================================================================= +// Testcases +//========================================================================= + +testcase tc_array_i_NoModulePar() runs on MC { + + if( log2str(t_array_i3_a) != "*" ) {setverdict(fail) } else { setverdict(pass) }; + if( log2str(t_array_i3_q) != "?" ) {setverdict(fail) } else { setverdict(pass) }; + log(t_array_i3_v3v); + if( log2str(t_array_i3_v3v) != "{ 0, 1, 2 }" ) {setverdict(fail) } else { setverdict(pass) }; + log(t_array_i3_v3a); + if( log2str(t_array_i3_v3a) != "{ 0, *, 2 }" ) {setverdict(fail) } else { setverdict(pass) }; + log(t_array_i3_v3q); + if( log2str(t_array_i3_v3q) != "{ ?, 1, 2 }" ) {setverdict(fail) } else { setverdict(pass) }; + log(t_array_i3_v3vl); + if( log2str(t_array_i3_v3vl) != "{ 0, 1, (1, 2) }" ) {setverdict(fail) } else { setverdict(pass) }; + log(t_array_i3_vl); + if( log2str(t_array_i3_vl) != "({ 0, 1, 2 }, { 0, 1, 3 })" ) {setverdict(fail) } else { setverdict(pass) }; + log(t_array_i3_v3r); + if( log2str(t_array_i3_v3r) != "{ 0, 1, (1 .. 3) }" ) {setverdict(fail) } else { setverdict(pass) }; + log(t_array_i3_v3mix); + if( log2str(t_array_i3_v3mix) != "{ (0, 1), 1, (1 .. 3) }" ) {setverdict(fail) } else { setverdict(pass) }; + log(t_array_i3_v3c); + if( log2str(t_array_i3_v3c) != "{ (0, 1), 1, complement(2, 3) }" ) {setverdict(fail) } else { setverdict(pass) }; + log(t_array_i3_v3p); + if( log2str(t_array_i3_v3p) != "{ permutation(1, 2, 3) }" ) {setverdict(fail) } else { setverdict(pass) }; +} + +testcase tc_array_i_ModulePar() runs on MC { + + if( log2str(tspt_array_i3_a) != "*" ) {setverdict(fail) } else { setverdict(pass) }; + if( log2str(tspt_array_i3_q) != "?" ) {setverdict(fail) } else { setverdict(pass) }; + log(tspt_array_i3_v3v); + if( log2str(tspt_array_i3_v3v) != "{ 0, 1, 2 }" ) {setverdict(fail) } else { setverdict(pass) }; + log(tspt_array_i3_v3a); + if( log2str(tspt_array_i3_v3a) != "{ 0, *, 2 }" ) {setverdict(fail) } else { setverdict(pass) }; + log(tspt_array_i3_v3q); + if( log2str(tspt_array_i3_v3q) != "{ ?, 1, 2 }" ) {setverdict(fail) } else { setverdict(pass) }; + log(tspt_array_i3_v3vl); + if( log2str(tspt_array_i3_v3vl) != "{ 0, 1, (1, 2) }" ) {setverdict(fail) } else { setverdict(pass) }; + log(tspt_array_i3_vl); + if( log2str(tspt_array_i3_vl) != "({ 0, 1, 2 }, { 9, 10, 11 })" ) {setverdict(fail) } else { setverdict(pass) }; + log(tspt_array_i3_v3r); + if( log2str(tspt_array_i3_v3r) != "{ 0, 1, (1 .. 3) }" ) {setverdict(fail) } else { setverdict(pass) }; + log(tspt_array_i3_v3mix); + if( log2str(tspt_array_i3_v3mix) != "{ (0, 1), 1, (1 .. 3) }" ) {setverdict(fail) } else { setverdict(pass) }; + log(tspt_array_i3_v3c); + if( log2str(tspt_array_i3_v3c) != "{ (0, 1), 1, complement(2, 3) }" ) {setverdict(fail) } else { setverdict(pass) }; + log(tspt_array_i3_v3p); + if( log2str(tspt_array_i3_v3p) != "{ permutation(1, 2, 3) }" ) {setverdict(fail) } else { setverdict(pass) }; //TR: HS10539, fixed + log(tspt_array_i3_v3pa); + if( log2str(tspt_array_i3_v3pa) != "{ permutation(1, 2, *) }" ) {setverdict(fail) } else { setverdict(pass) }; //TR: HS10539, fixed +} + +testcase tc_array_i_v3p() runs on MC { + var RoAI3 vl_good_values := { {1,2,3}, {1,3,2},{2,1,3},{2,3,1},{3,1,2},{3,2,1} } + var RoAI3 vl_wrong_values := { {1,2,4}, {1,5,6},{20,10,30} } + f_checkMatchingValues_ai3(tspt_array_i3_v3p,vl_good_values,vl_wrong_values); + f_checkMatchingValues_ai3(t_array_i3_v3p,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_v3pa() runs on MC { + var RoAI3 vl_good_values := { {1,2,3}, {1,3,2},{2,1,3},{2,3,1},{3,1,2},{3,2,1}, {1,2,4}, {5,2,1}} + var RoAI3 vl_wrong_values := { {1,5,6},{20,10,30} } + f_checkMatchingValues_ai3(tspt_array_i3_v3pa,vl_good_values,vl_wrong_values); + f_checkMatchingValues_ai3(t_array_i3_v3pa,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_a() runs on MC { + log(tspt_array_i3_a); + var RoAI3 vl_good_values := { {1,1,3}, {1,2,3}, {1,3,3}, {1,4,3}, {1,9999,3} }; + var RoAI3 vl_wrong_values := { }; + f_checkMatchingValues_ai3(tspt_array_i3_a,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_q() runs on MC { + log(tspt_array_i3_q); + var RoAI3 vl_good_values := { {1,1,3}, {1,2,3}, {1,3,3}, {1,4,3}, {1,9999,3} }; + var RoAI3 vl_wrong_values := { }; + f_checkMatchingValues_ai3(tspt_array_i3_q,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_v3v() runs on MC { + log(tspt_array_i3_v3v); + var RoAI3 vl_good_values := { {0,1,2} }; + var RoAI3 vl_wrong_values := {{0,1,3},{0,2,2},{0,3,2},{0,-1,2},{0,-,2},{1,1,3}, {1,2,3}, {1,3,3}, {1,4,3}, {1,9999,3} }; + f_checkMatchingValues_ai3(tspt_array_i3_v3v,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_v3a() runs on MC { + log(tspt_array_i3_v3a); + var RoAI3 vl_good_values := { {0,1,2},{0,2,2},{0,3,2},{0,-1,2},{0,-,2}}; + var RoAI3 vl_wrong_values := {{0,1,3},{1,1,3}, {1,2,3}, {1,3,3}, {1,4,3}, {1,9999,3} }; + f_checkMatchingValues_ai3(tspt_array_i3_v3a,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_v3q() runs on MC { + log(tspt_array_i3_v3q); + var RoAI3 vl_good_values := { {0,1,2},{0,2,2},{0,3,2},{0,-1,2},{0,-,2}}; + var RoAI3 vl_wrong_values := {{0,1,3},{1,1,3}, {0,2,3}, {1,3,3}, {0,4,9}, {1,9999,2} }; + f_checkMatchingValues_ai3(tspt_array_i3_v3a,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_v3vl() runs on MC { + log(tspt_array_i3_v3vl); + var RoAI3 vl_good_values := { {0,1,1},{0,1,2}}; + var RoAI3 vl_wrong_values := {{0,1,3},{1,1,3}, {0,2,3}, {1,3,3} }; + f_checkMatchingValues_ai3(tspt_array_i3_v3vl,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_vl() runs on MC { + log(tspt_array_i3_vl); + var RoAI3 vl_good_values := { {0,1,2},{9,10,11}}; + var RoAI3 vl_wrong_values := {{0,1,3},{1,1,2}, {0,2,2}, {9,10,12},{9,11,11},{4,4,4} }; + f_checkMatchingValues_ai3(tspt_array_i3_vl,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_v3r() runs on MC { + log(tspt_array_i3_v3r); + var RoAI3 vl_good_values := { {0,1,1},{0,1,2},{0,1,3} }; + var RoAI3 vl_wrong_values := {{0,1,4},{0,1,0}, {0,2,2}, {9,10,12},{9,11,11},{4,4,4} }; + f_checkMatchingValues_ai3(tspt_array_i3_v3r,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_v3mix() runs on MC { + log(tspt_array_i3_v3mix); + var RoAI3 vl_good_values := { {0,1,1},{0,1,2},{0,1,3},{1,1,1},{1,1,2},{1,1,3} }; + var RoAI3 vl_wrong_values := {{0,1,4},{0,1,0}, {0,2,2},{1,1,4},{1,1,4},{1,1,0}, {9,10,12},{9,11,11},{4,4,4} }; + f_checkMatchingValues_ai3(tspt_array_i3_v3mix,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_v3c() runs on MC { + log(tspt_array_i3_v3c); + var RoAI3 vl_good_values := { {0,1,1},{0,1,4},{0,1,5},{1,1,1},{1,1,4},{1,1,5}, {1,1,-1} , {1,1,-100}}; + var RoAI3 vl_wrong_values := {{0,1,2},{0,1,3}, {1,1,2},{1,1,3},{1,2,4},{1,2,0}, {9,10,12},{9,11,11},{4,4,4} }; + f_checkMatchingValues_ai3(tspt_array_i3_v3c,vl_good_values,vl_wrong_values); +} +// +testcase tc_array_i_mod4a() runs on MC { + log(tspt_array_i3_mod4a); + var RoAI3 vl_good_values := { {1,1,3}, {1,2,3}, {1,3,3}, {1,4,3}, {1,9999,3} }; + var RoAI3 vl_wrong_values := { }; + f_checkMatchingValues_ai3(tspt_array_i3_mod4a,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4q() runs on MC { + log(tspt_array_i3_mod4q); + var RoAI3 vl_good_values := { {1,1,3}, {1,2,3}, {1,3,3}, {1,4,3}, {1,9999,3} }; + var RoAI3 vl_wrong_values := { }; + f_checkMatchingValues_ai3(tspt_array_i3_mod4q,vl_good_values,vl_wrong_values); +} + + +testcase tc_array_i_mod4v0() runs on MC { + log(tspt_array_i3_mod4v0); + var RoAI3 vl_good_values := {{1,2,3} }; + var RoAI3 vl_wrong_values := { {0,1,2} } // compilation error for {1},{1,2} TODO: put into negative test + f_checkMatchingValues_ai3(tspt_array_i3_mod4v0,vl_good_values,vl_wrong_values,true); +} + +testcase tc_array_i_mod4v1() runs on MC { + log(tspt_array_i3_mod4v1); + var RoAI3 vl_good_values := {{1,2,3}};//TODO: put {{1}} into the negative test + var RoAI3 vl_wrong_values := { {0,1,2} } // compilation error for {1},{1,2} TODO: put into neg test + f_checkMatchingValues_ai3(tspt_array_i3_mod4v1,vl_good_values,vl_wrong_values,true); +} + +testcase tc_array_i_mod4v2() runs on MC { + log(tspt_array_i3_mod4v2); + var RoAI3 vl_good_values := {{1,2,3}};//TODO: put {{1,2}} into the negative test + var RoAI3 vl_wrong_values := { {0,1,2} } // compilation error for {1},{1,2} TODO: put into neg test + f_checkMatchingValues_ai3(tspt_array_i3_mod4v2,vl_good_values,vl_wrong_values,true); +} + + +testcase tc_array_i_mod4v3v() runs on MC { + log(tspt_array_i3_mod4v3v); + var RoAI3 vl_good_values := { {0,1,2} }; + var RoAI3 vl_wrong_values := {{0,1,3},{0,2,2},{0,3,2},{0,-1,2},{0,-,2},{1,1,3}, {1,2,3}, {1,3,3}, {1,4,3}, {1,9999,3} }; + f_checkMatchingValues_ai3(tspt_array_i3_mod4v3v,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v3a() runs on MC { + log(tspt_array_i3_mod4v3a); + var RoAI3 vl_good_values := { {0,1,2},{0,2,2},{0,3,2},{0,-1,2},{0,-,2}}; + var RoAI3 vl_wrong_values := {{0,1,3},{1,1,3}, {1,2,3}, {1,3,3}, {1,4,3}, {1,9999,3} }; + f_checkMatchingValues_ai3(tspt_array_i3_mod4v3a,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v3q() runs on MC { + log(tspt_array_i3_mod4v3q); + var RoAI3 vl_good_values := { {0,1,2},{0,2,2},{0,3,2},{0,-1,2},{0,-,2}}; + var RoAI3 vl_wrong_values := {{0,1,3},{1,1,3}, {0,2,3}, {1,3,3}, {0,4,9}, {1,9999,2} }; + f_checkMatchingValues_ai3(tspt_array_i3_mod4v3a,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v3vl() runs on MC { + log(tspt_array_i3_mod4v3vl); + var RoAI3 vl_good_values := { {0,1,1},{0,1,2}}; + var RoAI3 vl_wrong_values := {{0,1,3},{1,1,3}, {0,2,3}, {1,3,3} }; + f_checkMatchingValues_ai3(tspt_array_i3_mod4v3vl,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4vl() runs on MC { + log(tspt_array_i3_mod4vl); + var RoAI3 vl_good_values := { {0,1,2},{9,10,11}}; + var RoAI3 vl_wrong_values := {{0,1,3},{1,1,2}, {0,2,2}, {9,10,12},{9,11,11},{4,4,4} }; + f_checkMatchingValues_ai3(tspt_array_i3_mod4vl,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v3r() runs on MC { + log(tspt_array_i3_mod4v3r); + var RoAI3 vl_good_values := { {0,1,1},{0,1,2},{0,1,3} }; + var RoAI3 vl_wrong_values := {{0,1,4},{0,1,0}, {0,2,2}, {9,10,12},{9,11,11},{4,4,4} }; + f_checkMatchingValues_ai3(tspt_array_i3_mod4v3r,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v3mix() runs on MC { + log(tspt_array_i3_mod4v3mix); + var RoAI3 vl_good_values := { {0,1,1},{0,1,2},{0,1,3},{1,1,1},{1,1,2},{1,1,3} }; + var RoAI3 vl_wrong_values := {{0,1,4},{0,1,0}, {0,2,2},{1,1,4},{1,1,4},{1,1,0}, {9,10,12},{9,11,11},{4,4,4} }; + f_checkMatchingValues_ai3(tspt_array_i3_mod4v3mix,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v3c() runs on MC { + log(tspt_array_i3_mod4v3c); + var RoAI3 vl_good_values := { {0,1,1},{0,1,4},{0,1,5},{1,1,1},{1,1,4},{1,1,5}, {1,1,-1} , {1,1,-100}}; + var RoAI3 vl_wrong_values := {{0,1,2},{0,1,3}, {1,1,2},{1,1,3},{1,2,4},{1,2,0}, {9,10,12},{9,11,11},{4,4,4} }; + f_checkMatchingValues_ai3(tspt_array_i3_mod4v3c,vl_good_values,vl_wrong_values); +} + +//{ (0, 1), 1, (1 .. 3) } -{0, -, -}--> { 1, 1, (1 .. 3) } +testcase tc_array_i_mod4field1() runs on MC { + log(tspt_array_i3_mod4field1); + var RoAI3 vl_good_values := { {0,1,1},{0,1,2},{0,1,3}}; + var RoAI3 vl_wrong_values := {{0,1,4},{0,1,5}, {1,1,1},{1,1,2},{1,1,3},{1,1,4}, {9,10,12} }; + f_checkMatchingValues_ai3(tspt_array_i3_mod4field1,vl_good_values,vl_wrong_values); +} +//==== + +testcase tc_array_i_mod4aifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4aifp)); + var RoRAI3 vl_good_values := { {omit},{{1,1,3}}, {{1,2,3}}, {{1,3,3}}, {{1,4,3}}, {{1,9999,3}} }; + var RoRAI3 vl_wrong_values := {{}}; + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4aifp),vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4qifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4qifp)); + var RoRAI3 vl_good_values := { {omit},{{1,1,3}}, {{1,2,3}}, {{1,3,3}}, {{1,4,3}}, {{1,9999,3}} }; + var RoRAI3 vl_wrong_values := {{} }; + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4qifp),vl_good_values,vl_wrong_values); +} +testcase tc_array_i_mod4v0ifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4v0ifp)); + var RoRAI3 vl_good_values := {{omit},{}}; //TODO: put {{}} into the negative test + var RoRAI3 vl_wrong_values := { {{0,1,2}} } // compilation error for {1},{1,2} TODO: put into negative test + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4v0ifp),vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v1ifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4v1ifp)); + var RoRAI3 vl_good_values := {{omit},{}};//TODO: put {{1}} into the negative test + var RoRAI3 vl_wrong_values := { {{0,1,2}} } // compilation error for {1},{1,2} TODO: put into neg test + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4v1ifp),vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v2ifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4v2ifp)); + var RoRAI3 vl_good_values := {{omit},{}};//TODO: put {{1,2}} into the negative test + var RoRAI3 vl_wrong_values := { {{0,1,2}} } // compilation error for {1},{1,2} TODO: put into neg test + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4v2ifp),vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v3vifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4v3vifp)); + var RoRAI3 vl_good_values := {{omit}, {{0,1,2}} }; + var RoRAI3 vl_wrong_values := { {{0,1,3}},{{0,2,2}},{{0,3,2}},{{0,-1,2}},{{0,-,2}},{{1,1,3}},{{1,2,3}},{{1,3,3}},{{1,4,3}},{{1,9999,3}} }; + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4v3vifp),vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v3aifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4v3aifp)); + var RoRAI3 vl_good_values := { {omit},{{0,1,2}},{{0,2,2}},{{0,3,2}},{{0,-1,2}},{{0,-,2}}}; + var RoRAI3 vl_wrong_values := { {{0,1,3}},{{1,1,3}},{{1,2,3}}, {{1,3,3}},{{1,4,3}},{{1,9999,3}} }; + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4v3aifp),vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v3qifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4v3qifp)); + var RoRAI3 vl_good_values := { {omit},{{0,1,2}},{{0,2,2}},{{0,3,2}},{{0,-1,2}},{{0,-,2}} }; + var RoRAI3 vl_wrong_values :={ {{0,1,3}},{{1,1,3}},{{0,2,3}},{{1,3,3}},{{0,4,9}},{{1,9999,2}} }; + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4v3aifp),vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v3vlifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4v3vlifp)); + var RoRAI3 vl_good_values := { {omit},{{0,1,1}},{{0,1,2}} }; + var RoRAI3 vl_wrong_values :={ {{0,1,3}},{{1,1,3}},{{0,2,3}},{{1,3,3}} }; + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4v3vlifp),vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4vlifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4vlifp)); + var RoRAI3 vl_good_values := { {omit},{{0,1,2}}, {{9,10,11}} }; + var RoRAI3 vl_wrong_values :={ {{0,1,3}}, {{1,1,2}}, {{0,2,2}}, {{9,10,12}}, {{9,11,11}}, {{4,4,4}} }; + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4vlifp),vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v3rifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4v3rifp)); + var RoRAI3 vl_good_values := { {omit},{{0,1,1}}, {{0,1,2}}, {{0,1,3}} }; + var RoRAI3 vl_wrong_values := { {{0,1,4}}, {{0,1,0}}, {{0,2,2}}, {{9,10,12}}, {{9,11,11}}, {{4,4,4}} }; + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4v3rifp),vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v3mixifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4v3mixifp)); + var RoRAI3 vl_good_values := { {omit},{{0,1,1}},{{0,1,2}},{{0,1,3}},{{1,1,1}},{{1,1,2}},{{1,1,3}} } ; + var RoRAI3 vl_wrong_values :={ {{0,1,4}}, {{0,1,0}}, {{0,2,2}}, {{1,1,4}}, {{1,1,4}}, {{1,1,0}}, {{9,10,12}}, {{9,11,11}}, {{4,4,4}} }; + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4v3mixifp),vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v3cifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4v3cifp)); + var RoRAI3 vl_good_values := { {omit},{{0,1,1}},{{0,1,4}},{{0,1,5}},{{1,1,1}},{{1,1,4}},{{1,1,5}},{{1,1,-1}},{{1,1,-100}} }; + var RoRAI3 vl_wrong_values := { {{0,1,2}},{{0,1,3}},{{1,1,2}},{{1,1,3}},{{1,2,4}},{{1,2,0}},{{9,10,12}},{{9,11,11}},{{4,4,4}} }; + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4v3cifp),vl_good_values,vl_wrong_values); +} + +//{ (0, 1), 1, (1 .. 3) } -{0, -, -}--> { 1, 1, (1 .. 3) } +testcase tc_array_i_mod4field1ifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4field1ifp)); + var RoRAI3 vl_good_values := { {omit},{{0,1,1}}, {{0,1,2}}, {{0,1,3}} }; + var RoRAI3 vl_wrong_values :={ {{0,1,4}}, {{0,1,5}}, {{1,1,1}}, {{1,1,2}}, {{1,1,3}}, {{1,1,4}}, {{9,10,12}} }; + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4field1ifp),vl_good_values,vl_wrong_values); +} + +//===== +testcase tc_array_i_emb() runs on MC { + log(t_array_bai3(true,tspt_array_i3_a)); + if( log2str(t_array_bai3(true,tspt_array_i3_a)) != "{ b := true, ai3 := * }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_q)); + if( log2str(t_array_bai3(true,tspt_array_i3_q)) != "{ b := true, ai3 := ? }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_v3v)); + if( log2str(t_array_bai3(true,tspt_array_i3_v3v)) != "{ b := true, ai3 := { 0, 1, 2 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_v3a)); + if( log2str(t_array_bai3(true,tspt_array_i3_v3a)) != "{ b := true, ai3 := { 0, *, 2 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_v3q)); + if( log2str(t_array_bai3(true,tspt_array_i3_v3q)) != "{ b := true, ai3 := { ?, 1, 2 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_v3vl)); + if( log2str(t_array_bai3(true,tspt_array_i3_v3vl)) != "{ b := true, ai3 := { 0, 1, (1, 2) } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_vl)); + if( log2str(t_array_bai3(true,tspt_array_i3_vl)) != "{ b := true, ai3 := ({ 0, 1, 2 }, { 9, 10, 11 }) }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_v3r)); + if( log2str(t_array_bai3(true,tspt_array_i3_v3r)) != "{ b := true, ai3 := { 0, 1, (1 .. 3) } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_v3mix)); + if( log2str(t_array_bai3(true,tspt_array_i3_v3mix)) != "{ b := true, ai3 := { (0, 1), 1, (1 .. 3) } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_v3c)); + if( log2str(t_array_bai3(true,tspt_array_i3_v3c)) != "{ b := true, ai3 := { (0, 1), 1, complement(2, 3) } }") {setverdict(fail)} else {setverdict(pass)} +} + +//array embedded in record, modified from cfg file +testcase tc_array_i_ModulePar_emb() runs on MC { + log(t_array_bai3(true,tspt_array_i3_mod4a)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4a)) != "{ b := true, ai3 := * }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4q)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4q)) != "{ b := true, ai3 := ? }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4o)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4o)) != "{ b := true, ai3 := omit }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v0)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v0)) != "{ b := true, ai3 := { 1, 2, 3 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v1)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v1)) != "{ b := true, ai3 := { 1, 2, 3 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v2)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v2)) != "{ b := true, ai3 := { 1, 2, 3 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3v)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3v)) != "{ b := true, ai3 := { 0, 1, 2 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3a)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3a)) != "{ b := true, ai3 := { 0, *, 2 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3q)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3q)) != "{ b := true, ai3 := { ?, 1, 2 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3vl)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3vl)) != "{ b := true, ai3 := { 0, 1, (1, 2) } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4vl)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4vl)) != "{ b := true, ai3 := ({ 0, 1, 2 }, { 9, 10, 11 }) }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3r)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3r)) != "{ b := true, ai3 := { 0, 1, (1 .. 3) } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3mix)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3mix)) != "{ b := true, ai3 := { (0, 1), 1, (1 .. 3) } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3c)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3c)) != "{ b := true, ai3 := { (0, 1), 1, complement(2, 3) } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4field1ifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4field1ifp)) != "{ b := true, ai3 := { 0, 1, (1 .. 3) } ifpresent }") {setverdict(fail)} else {setverdict(pass)} +} + +testcase tc_array_iifp_ModulePar_emb() runs on MC { + log(t_array_bai3(true,tspt_array_i3_mod4aifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4aifp)) != "{ b := true, ai3 := * ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4qifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4qifp)) != "{ b := true, ai3 := ? ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v0ifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v0ifp)) != "{ b := true, ai3 := omit ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v1ifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v1ifp)) != "{ b := true, ai3 := { 1 } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v2ifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v2ifp)) != "{ b := true, ai3 := { 1, 2 } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3aifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3aifp)) != "{ b := true, ai3 := { 0, *, 2 } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3qifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3qifp)) != "{ b := true, ai3 := { ?, 1, 2 } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3vlifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3vlifp)) != "{ b := true, ai3 := { 0, 1, (1, 2) } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4vlifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4vlifp)) != "{ b := true, ai3 := ({ 0, 1, 2 }, { 9, 10, 11 }) ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3rifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3rifp)) != "{ b := true, ai3 := { 0, 1, (1 .. 3) } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3mixifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3mixifp)) != "{ b := true, ai3 := { (0, 1), 1, (1 .. 3) } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true, tspt_array_i3_mod4field1ifp)); + if( log2str(t_array_bai3(true, tspt_array_i3_mod4field1ifp)) != "{ b := true, ai3 := { 0, 1, (1 .. 3) } ifpresent }") {setverdict(fail)} else {setverdict(pass)} +} + +//========================= +// ttcn2string testcases: +//========================= +testcase tc_array_i_ModulePar_emb_ttcn2string() runs on MC { + log(t_array_bai3(true,tspt_array_i3_mod4a)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4a)) != "{ b := true, ai3 := * }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4q)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4q)) != "{ b := true, ai3 := ? }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4o)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4o)) != "{ b := true, ai3 := omit }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v1)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4v1)) != "{ b := true, ai3 := { 1, 2, 3 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v2)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4v2)) != "{ b := true, ai3 := { 1, 2, 3 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3v)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4v3v)) != "{ b := true, ai3 := { 0, 1, 2 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3a)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4v3a)) != "{ b := true, ai3 := { 0, *, 2 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3q)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4v3q)) != "{ b := true, ai3 := { ?, 1, 2 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3vl)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4v3vl)) != "{ b := true, ai3 := { 0, 1, (1, 2) } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4vl)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4vl)) != "{ b := true, ai3 := ({ 0, 1, 2 }, { 9, 10, 11 }) }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3r)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4v3r)) != "{ b := true, ai3 := { 0, 1, (1 .. 3) } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3mix)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4v3mix)) != "{ b := true, ai3 := { (0, 1), 1, (1 .. 3) } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3c)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4v3c)) != "{ b := true, ai3 := { (0, 1), 1, complement(2, 3) } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4field1)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4field1)) != "{ b := true, ai3 := { 0, 1, (1 .. 3) } }") {setverdict(fail)} else {setverdict(pass)} +} + +testcase tc_array_iifp_ModulePar_emb_ttcn2string() runs on MC { + log(t_array_bai3(true,tspt_array_i3_mod4aifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4aifp)) != "{ b := true, ai3 := * ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4qifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4qifp)) != "{ b := true, ai3 := ? ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v0ifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v0ifp)) != "{ b := true, ai3 := omit ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v1ifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v1ifp)) != "{ b := true, ai3 := { 1 } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v2ifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v2ifp)) != "{ b := true, ai3 := { 1, 2 } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3aifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3aifp)) != "{ b := true, ai3 := { 0, *, 2 } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3qifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3qifp)) != "{ b := true, ai3 := { ?, 1, 2 } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3vlifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3vlifp)) != "{ b := true, ai3 := { 0, 1, (1, 2) } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4vlifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4vlifp)) != "{ b := true, ai3 := ({ 0, 1, 2 }, { 9, 10, 11 }) ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3rifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3rifp)) != "{ b := true, ai3 := { 0, 1, (1 .. 3) } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3mixifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3mixifp)) != "{ b := true, ai3 := { (0, 1), 1, (1 .. 3) } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true, tspt_array_i3_mod4field1ifp)); + if( log2str(t_array_bai3(true, tspt_array_i3_mod4field1ifp)) != "{ b := true, ai3 := { 0, 1, (1 .. 3) } ifpresent }") {setverdict(fail)} else {setverdict(pass)} +} + + + + +//========================= +// string2ttcn testcases: +//========================= + +//expected result: DTE +testcase tc_array_string2ttcn_DTE_test() runs on MC { + var REC_BAI3 vl_result; + @try { + string2ttcn("{ b := true, ai3 := * }", vl_result); + setverdict(fail) + } @catch(e) { + setverdict(pass, "Expected D T E") + } +} + +//template string-> template, template string-> value +testcase tc_array_string2ttcn_i3_mod4a() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := * }", t_array_bai3(true,tspt_array_i3_mod4a)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := * }", t_array_bai3(true,tspt_array_i3_mod4a),false) +} + +testcase tc_array_string2ttcn_i3_mod4q() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := ? }", t_array_bai3(true,tspt_array_i3_mod4q)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := ? }", t_array_bai3(true,tspt_array_i3_mod4q),false) +} + +testcase tc_array_string2ttcn_i3_mod4v0() runs on MC { + template REC_BAI3 tl_rec := { b:= true, ai3:= {-,-,-} }; + var REC_BAI3 vl_rec := { b:= true, ai3:= {-,-,-} }; + f_string2ttcn_REC_BAI3_t_str("{ b := true, ai3 := { -, -, - } }", "{ b := true, ai3 := { <uninitialized template>, <uninitialized template>, <uninitialized template> } }" ) + //f_string2ttcn_REC_BAI3_v_str("{ b := true, ai3 := { -, -, - } }", "{ b := true, ai3 := { <unbound>, <unbound>, <unbound> } }" , true) + // partial array values are currently deleted if the array is an optional field or a union alternative (see artf708493) + f_string2ttcn_REC_BAI3_v_str("{ b := true, ai3 := { -, -, - } }", "{ b := true, ai3 := <unbound> }" , true); + //TODO: Check if It is ok or not: log2str(tl_rec) gives back: "{ b := true, ai3 := <unbound> }" + log(tl_rec); + log(vl_rec); +} + +testcase tc_array_string2ttcn_i3_mod4v1() runs on MC { + template REC_BAI3 tl_rec := { b:= true, ai3:= {1,-,-} }; + var REC_BAI3 vl_rec := { b:= true, ai3:= {1,-,-} }; + f_string2ttcn_REC_BAI3_t_str("{ b := true, ai3 := { 1, -, - } }", "{ b := true, ai3 := { 1, <uninitialized template>, <uninitialized template> } }") + //f_string2ttcn_REC_BAI3_v_str("{ b := true, ai3 := { 1, -, - } }", log2str(vl_rec),true) + // partial array values are currently deleted if the array is an optional field or a union alternative (see artf708493) + f_string2ttcn_REC_BAI3_v_str("{ b := true, ai3 := { 1, -, - } }", "{ b := true, ai3 := { 1, <unbound>, <unbound> } }" , true); + log(tl_rec); + log(vl_rec); +} + +testcase tc_array_string2ttcn_i3_mod4v2() runs on MC { + template REC_BAI3 tl_rec := { b:= true, ai3:= {1,2,-} }; + var REC_BAI3 vl_rec := { b:= true, ai3:= {1,2,-} }; + f_string2ttcn_REC_BAI3_t_str("{ b := true, ai3 := { 1, 2, - } }", "{ b := true, ai3 := { 1, 2, <uninitialized template> } }") + //f_string2ttcn_REC_BAI3_v_str("{ b := true, ai3 := { 1, 2, - } }", log2str(vl_rec), true); + // partial array values are currently deleted if the array is an optional field or a union alternative (see artf708493) + f_string2ttcn_REC_BAI3_v_str("{ b := true, ai3 := { 1, 2, - } }", "{ b := true, ai3 := { 1, 2, <unbound> } }" , true); + log(tl_rec); + log(vl_rec); +} + +testcase tc_array_string2ttcn_i3_mod4v3v() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { 0, 1, 2 } }", t_array_bai3(true,tspt_array_i3_mod4v3v)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { 0, 1, 2 } }", t_array_bai3(true,tspt_array_i3_mod4v3v),true) +} + +testcase tc_array_string2ttcn_i3_mod4v3a() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { 0, *, 2 } }", t_array_bai3(true,tspt_array_i3_mod4v3a)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { 0, *, 2 } }", t_array_bai3(true,tspt_array_i3_mod4v3a),false) +} + +testcase tc_array_string2ttcn_i3_mod4v3q() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { ?, 1, 2 } }", t_array_bai3(true,tspt_array_i3_mod4v3q)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { ?, 1, 2 } }", t_array_bai3(true,tspt_array_i3_mod4v3q),false) +} + +testcase tc_array_string2ttcn_i3_mod4v3vl() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { 0, 1, (1, 2) } }", t_array_bai3(true,tspt_array_i3_mod4v3vl)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { 0, 1, (1, 2) } }", t_array_bai3(true,tspt_array_i3_mod4v3vl),false) +} + +testcase tc_array_string2ttcn_i3_mod4vl() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := ({ 0, 1, 2 }, { 9, 10, 11 }) }", t_array_bai3(true,tspt_array_i3_mod4vl)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := ({ 0, 1, 2 }, { 9, 10, 11 }) }", t_array_bai3(true,tspt_array_i3_mod4vl),false) +} + +testcase tc_array_string2ttcn_i3_mod4v3r() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { 0, 1, (1 .. 3) } }", t_array_bai3(true,tspt_array_i3_mod4v3r)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { 0, 1, (1 .. 3) } }", t_array_bai3(true,tspt_array_i3_mod4v3r),false) +} + +testcase tc_array_string2ttcn_i3_mod4v3mix() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { (0, 1), 1, (1 .. 3) } }", t_array_bai3(true,tspt_array_i3_mod4v3mix)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { (0, 1), 1, (1 .. 3) } }", t_array_bai3(true,tspt_array_i3_mod4v3mix),false) +} + +testcase tc_array_string2ttcn_i3_mod4v3c() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { (0, 1), 1, complement(2, 3) } }", t_array_bai3(true,tspt_array_i3_mod4v3c)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { (0, 1), 1, complement(2, 3) } }", t_array_bai3(true,tspt_array_i3_mod4v3c),false) +} + +testcase tc_array_string2ttcn_i3_mod4field1() runs on MC { + f_string2ttcn_REC_BAI3_t_str("{ b := true, ai3 := { 0, 1, (1 .. 3) } }", log2str(t_array_bai3(true,tspt_array_i3_mod4field1))); + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { 0, 1, (1 .. 3) } }", t_array_bai3(true,tspt_array_i3_mod4field1),false) +} + +//=== string2ttcn testcases with ifpresent: ===== + +//template string-> template, template string-> value +testcase tc_array_string2ttcn_i3_mod4aifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := * ifpresent }", t_array_bai3(true,tspt_array_i3_mod4aifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := * ifpresent }", t_array_bai3(true,tspt_array_i3_mod4aifp),false) +} + +testcase tc_array_string2ttcn_i3_mod4qifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := ? ifpresent }", t_array_bai3(true,tspt_array_i3_mod4qifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := ? ifpresent }", t_array_bai3(true,tspt_array_i3_mod4qifp),false) +} + +// ???? is it acceptable ????? +testcase tc_array_string2ttcn_i3_mod4v0ifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := omit ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v0ifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := omit ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v0ifp),false) +} + +testcase tc_array_string2ttcn_i3_mod4v1ifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { 1 } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v1ifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { 1 } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v1ifp),false) +} + +testcase tc_array_string2ttcn_i3_mod4v2ifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { 1, 2 } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v2ifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { 1, 2 } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v2ifp),false) +} + +testcase tc_array_string2ttcn_i3_mod4v3vifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { 0, 1, 2 } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3vifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { 0, 1, 2 } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3vifp),false) +} + +testcase tc_array_string2ttcn_i3_mod4v3aifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { 0, *, 2 } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3aifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { 0, *, 2 } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3aifp),false) +} + +testcase tc_array_string2ttcn_i3_mod4v3qifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { ?, 1, 2 } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3qifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { ?, 1, 2 } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3qifp),false) +} + +testcase tc_array_string2ttcn_i3_mod4v3vlifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { 0, 1, (1, 2) } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3vlifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { 0, 1, (1, 2) } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3vlifp),false) +} + +testcase tc_array_string2ttcn_i3_mod4vlifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := ({ 0, 1, 2 }, { 9, 10, 11 }) ifpresent }", t_array_bai3(true,tspt_array_i3_mod4vlifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := ({ 0, 1, 2 }, { 9, 10, 11 }) ifpresent }", t_array_bai3(true,tspt_array_i3_mod4vlifp),false) +} + +testcase tc_array_string2ttcn_i3_mod4v3rifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { 0, 1, (1 .. 3) } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3rifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { 0, 1, (1 .. 3) } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3rifp),false) +} + +testcase tc_array_string2ttcn_i3_mod4v3mixifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { (0, 1), 1, (1 .. 3) } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3mixifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { (0, 1), 1, (1 .. 3) } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3mixifp),false) +} + +testcase tc_array_string2ttcn_i3_mod4v3cifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { (0, 1), 1, complement(2, 3) } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3cifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { (0, 1), 1, complement(2, 3) } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3cifp),false) +} + +testcase tc_array_string2ttcn_i3_mod4field1ifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { 0, 1, (1 .. 3) } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4field1ifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { 0, 1, (1 .. 3) } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4field1ifp),false) +} + +testcase tc_array_allfrom_perm1() runs on MyComp_CT { + var template AI3 vl_tcAI3literal, vl_tcAI3allFrom; + log ("component var v_AI3literal: ", v_AI3literal); + log ("component var v_AI3allfrom: ", v_AI3allfrom); + vl_tcAI3literal := { permutation(1,*,3) }; + log ("TC() local var vl_tcAI3literal: ", vl_tcAI3literal); + + var RoAI3 vl_goodValues := { {1,2,3}, {1,3,2},{2,1,3},{2,3,1},{3,1,2},{3,2,1}, {1,5,3}, {5,3,1}, + {1,5,3}, {0,1,3},{3,1,-99}} + var RoAI3 vl_badValues := { {1,2,4}, {1,5,6},{20,10,30},{3,5,6}, {5,3,6}} + f_checkMatchingValues_ai3(vl_tcAI3literal, vl_goodValues, vl_badValues); + + vl_tcAI3allFrom := { permutation(all from tt) } + log ("TC() local var vl_tcAI3allFrom: ", vl_tcAI3allFrom); + vl_goodValues := { {1,2,3}, {1,3,2},{2,1,3},{2,3,1},{3,1,2},{3,2,1}, {1,5,2}, {5,2,1}, + {1,5,2}, {0,1,2},{2,1,-99}} + vl_badValues := { {1,3,4}, {1,5,6},{20,10,30},{2,5,6}, {5,2,6}} + f_checkMatchingValues_ai3(vl_tcAI3allFrom,vl_goodValues, vl_badValues); +} + +testcase tc_array_allfrom_perm2() runs on MyComp_CT { + var template AI2x3 vl_t24 := { {permutation(all from tt1x3)}, {permutation(all from ttx45) } }; + var RoAI2x3 vl_goodValues := { { {1,2,3},{4,4,5}}, {{1,3,2},{5,4,1}}} + var RoAI2x3 vl_badValues := {{ {1,2,2},{4,4,5}}, {{1,3,2},{5,5,1}} } + f_check_AI2x3( vl_t24, vl_goodValues,vl_badValues); +} +testcase tc_array_perm() runs on MyComp_CT { + var template AI2x3 vl_t24 := { {permutation(1,*,3)}, {permutation(*,4,5) } }; + var RoAI2x3 vl_goodValues := { { {1,2,3},{4,4,5}}, {{1,3,2},{5,4,1}}} + var RoAI2x3 vl_badValues := {{ {1,2,2},{4,4,5}}, {{1,3,2},{5,5,1}} } + f_check_AI2x3( vl_t24, vl_goodValues,vl_badValues); +} + +testcase tc_array_compl() runs on MyComp_CT { + var RoAI3 vl_goodValues := { {0,1,1}, {0,1,3},{0,1,5}, {0,1,-500}, {1,1,1}, {1,1,3},{1,1,5}, {1,1,-500} } + var RoAI3 vl_badValues := { {2,1,1}, {0,2,3},{0,1,2}, {0,1,4}, {2,1,1}, {1,2,3},{1,1,2}, {1,1,4} } + f_checkMatchingValues_ai3( t_array_i3_v3cr, vl_goodValues,vl_badValues); +} + +//========================================================================= +// Control +//========================================================================= + +control { + //array + log("***array tests *******"); + execute(tc_array_string2ttcn_DTE_test()); + execute(tc_array_i_NoModulePar()); + execute(tc_array_i_ModulePar()); + execute(tc_array_i_v3p()); + execute(tc_array_i_v3pa()); + execute(tc_array_i_a()); + execute(tc_array_i_q()); + execute(tc_array_i_v3v()); + execute(tc_array_i_v3a()); + execute(tc_array_i_v3q()); + execute(tc_array_i_v3vl()); + execute(tc_array_i_vl()); + execute(tc_array_i_v3r()); + execute(tc_array_i_v3mix()); + execute(tc_array_i_v3c()); + + execute(tc_array_i_mod4a()); + execute(tc_array_i_mod4q()); + execute(tc_array_i_mod4v0()); + execute(tc_array_i_mod4v1()); + execute(tc_array_i_mod4v2()); + execute(tc_array_i_mod4v3v()); + execute(tc_array_i_mod4v3a()); + execute(tc_array_i_mod4v3q()); + execute(tc_array_i_mod4v3vl()); + execute(tc_array_i_mod4vl()); + execute(tc_array_i_mod4v3r()); + execute(tc_array_i_mod4v3mix()); + execute(tc_array_i_mod4v3c()); + execute(tc_array_i_mod4field1()); + + execute(tc_array_i_mod4aifp_emb()); + execute(tc_array_i_mod4qifp_emb()); + execute(tc_array_i_mod4v0ifp_emb()); + execute(tc_array_i_mod4v1ifp_emb()); + execute(tc_array_i_mod4v2ifp_emb()); + execute(tc_array_i_mod4v3vifp_emb()); + execute(tc_array_i_mod4v3aifp_emb()); + execute(tc_array_i_mod4v3qifp_emb()); + execute(tc_array_i_mod4v3vlifp_emb()); + execute(tc_array_i_mod4vlifp_emb()); + execute(tc_array_i_mod4v3rifp_emb()); + execute(tc_array_i_mod4v3mixifp_emb()); + execute(tc_array_i_mod4v3cifp_emb()); + execute(tc_array_i_mod4field1ifp_emb()); + + execute(tc_array_i_emb()); + execute(tc_array_i_ModulePar_emb()); + execute(tc_array_iifp_ModulePar_emb()); + execute(tc_array_i_ModulePar_emb_ttcn2string()); + execute(tc_array_iifp_ModulePar_emb_ttcn2string()); + + execute(tc_array_string2ttcn_i3_mod4a()); + execute(tc_array_string2ttcn_i3_mod4q()); + execute(tc_array_string2ttcn_i3_mod4v0()); + execute(tc_array_string2ttcn_i3_mod4v1()); + execute(tc_array_string2ttcn_i3_mod4v2()); + execute(tc_array_string2ttcn_i3_mod4v3v()); + execute(tc_array_string2ttcn_i3_mod4v3a()); + execute(tc_array_string2ttcn_i3_mod4v3q()); + execute(tc_array_string2ttcn_i3_mod4v3vl()); + execute(tc_array_string2ttcn_i3_mod4vl()); + execute(tc_array_string2ttcn_i3_mod4v3r()); + execute(tc_array_string2ttcn_i3_mod4v3mix()); + execute(tc_array_string2ttcn_i3_mod4v3c()); + execute(tc_array_string2ttcn_i3_mod4field1()); + + execute(tc_array_string2ttcn_i3_mod4aifp()); + execute(tc_array_string2ttcn_i3_mod4qifp()); + execute(tc_array_string2ttcn_i3_mod4v0ifp()); + execute(tc_array_string2ttcn_i3_mod4v1ifp()); + execute(tc_array_string2ttcn_i3_mod4v2ifp()); + execute(tc_array_string2ttcn_i3_mod4v3vifp()); + execute(tc_array_string2ttcn_i3_mod4v3aifp()); + execute(tc_array_string2ttcn_i3_mod4v3qifp()); + execute(tc_array_string2ttcn_i3_mod4v3vlifp()); + execute(tc_array_string2ttcn_i3_mod4vlifp()); + execute(tc_array_string2ttcn_i3_mod4v3rifp()); + execute(tc_array_string2ttcn_i3_mod4v3mixifp()); + execute(tc_array_string2ttcn_i3_mod4v3cifp()); + execute(tc_array_string2ttcn_i3_mod4field1ifp()); + + execute(tc_array_allfrom_perm1()); + execute(tc_array_allfrom_perm2()); + execute(tc_array_perm()); + execute(tc_array_compl()); +} + +} // end of module diff --git a/Regression_Test_java/src/text2ttcn/bitstring_test.ttcn b/Regression_Test_java/src/text2ttcn/bitstring_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..01bb53f3a4a60b85ba208ccffa630b69cb3ef6d6 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn/bitstring_test.ttcn @@ -0,0 +1,487 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +module bitstring_test { + +//========================================================================= +// Import Part +//========================================================================= +import from types2 all; +//import from functions2 all; +//========================================================================= +// Module Parameters +//========================================================================= +modulepar template boolean tspt_b_t := true; + +modulepar { + //modulepar bitstrings not modified from cfg file + template bitstring tspt_bs_v := '01101'B; + template bitstring tspt_bs_o := omit; + template bitstring tspt_bs_a := *; + template bitstring tspt_bs_q := ?; + template bitstring tspt_bs_al1 := * length(2); //length restriction + template bitstring tspt_bs_al2 := * length(2..4); + template bitstring tspt_bs_ql1 := ? length(2); + template bitstring tspt_bs_ql2 := ? length(2..4); + template bitstring tspt_bs_vl1 := ('01101'B); + template bitstring tspt_bs_vl2 := ('01101'B,'1010'B); + template bitstring tspt_bs_vl3 := ('01101'B,'1010'B,'101'B); + template bitstring tspt_bs_c1 := complement('01101'B) + template bitstring tspt_bs_c2 := complement('01101'B,'1010'B); + template bitstring tspt_bs_c3 := complement('01101'B,'1010'B,'101'B); + //template bitstring tspt_bs_r1 := ('A'B..'B'B); //range not allowed + //template bitstring tspt_bs_r2 := ('a'B..'c'B); + template bitstring tspt_bs_pa := '000*111'B + template bitstring tspt_bs_pq := '000?111'B + + template bitstring tspt_bs_vifp := '01101'B ifpresent; + template bitstring tspt_bs_oifp := omit ifpresent; + template bitstring tspt_bs_aifp := * ifpresent; + template bitstring tspt_bs_qifp := ? ifpresent; + template bitstring tspt_bs_al1ifp := * length(2) ifpresent; //length restriction + template bitstring tspt_bs_al2ifp := * length(2..4) ifpresent; + template bitstring tspt_bs_ql1ifp := ? length(2) ifpresent; + template bitstring tspt_bs_ql2ifp := ? length(2..4) ifpresent; + template bitstring tspt_bs_vl1ifp := ('01101'B) ifpresent; + template bitstring tspt_bs_vl2ifp := ('01101'B,'1010'B) ifpresent; + template bitstring tspt_bs_vl3ifp := ('01101'B,'1010'B,'101'B) ifpresent; + template bitstring tspt_bs_c1ifp := complement('01101'B) ifpresent + template bitstring tspt_bs_c2ifp := complement('01101'B,'1010'B) ifpresent; + template bitstring tspt_bs_c3ifp := complement('01101'B,'1010'B,'101'B) ifpresent; + //template bitstring tspt_bs_r1ifp := ('A'B..'B'B) ifpresent; //range not allowed + //template bitstring tspt_bs_r2ifp := ('a'B..'c'B) ifpresent; //range not allowed + template bitstring tspt_bs_paifp := '000*111'B ifpresent + template bitstring tspt_bs_pqifp := '000?111'B ifpresent + + //modulepar bitstrings modified from cfg file + template bitstring tspt_bs_mod4v := * //after mod:'01101'; + template bitstring tspt_bs_mod4o := * //omit; + template bitstring tspt_bs_mod4a := '0'B //*; + template bitstring tspt_bs_mod4q := ''B //?; + template bitstring tspt_bs_mod4al1 := '1'B //* length(2); //length restriction + template bitstring tspt_bs_mod4al2 := '1010010001'B //mofified for: * length(2..4); + template bitstring tspt_bs_mod4ql1 := '1010010001'B //mofified for:? length(2); + template bitstring tspt_bs_mod4ql2 := '1010010001'B //mofified for:? length(2..4); + template bitstring tspt_bs_mod4vl1 := ('01101'B) //TODO: Adam //It should be mofified for: ('01101'B); + template bitstring tspt_bs_mod4vl2 := '1010010001'B //mofified for:('01101'B,'1010'B); + template bitstring tspt_bs_mod4vl3 := '1010010001'B //mofified for:('01101'B,'1010'B,'B12'B); + template bitstring tspt_bs_mod4c1 := '1010010001'B //mofified for:complement('01101') + template bitstring tspt_bs_mod4c2 := '1010010001'B //mofified for:complement('01101','1010'); + template bitstring tspt_bs_mod4c3 := '1010010001'B //mofified for:complement('01101','1010','101'); + template bitstring tspt_bs_mod4r1 := '1010010001'B //mofified for:('A'..'B'); //range + template bitstring tspt_bs_mod4r2 := '1010010001'B //mofified for:('a'..'c'); + template bitstring tspt_bs_mod4pa := '1010010001'B //mofified for:pattern 'abc*123' + template bitstring tspt_bs_mod4pq := '1010010001'B //mofified for:pattern 'abc?123' + + template bitstring tspt_bs_mod4vifp := '1010010001'B //mofified for:'01101' ifpresent; + template bitstring tspt_bs_mod4oifp := '1010010001'B //mofified for:omit ifpresent; + template bitstring tspt_bs_mod4aifp := '1010010001'B //mofified for:* ifpresent; + template bitstring tspt_bs_mod4qifp := '1010010001'B //mofified for:? ifpresent; + template bitstring tspt_bs_mod4al1ifp := '1010010001'B //mofified for:* length(2) ifpresent; //length restriction + template bitstring tspt_bs_mod4al2ifp := '1010010001'B //mofified for:* length(2..4) ifpresent; + template bitstring tspt_bs_mod4ql1ifp := '1010010001'B //mofified for:? length(2) ifpresent; + template bitstring tspt_bs_mod4ql2ifp := '1010010001'B //mofified for:? length(2..4) ifpresent; + template bitstring tspt_bs_mod4vl1ifp := ('01101'B) ifpresent //TODO: Adam //It should be mofified for: ('01101'B); + template bitstring tspt_bs_mod4vl2ifp := '1010010001'B //mofified for:('01101','1010') ifpresent; + template bitstring tspt_bs_mod4vl3ifp := '1010010001'B //mofified for:('01101','1010','B12') ifpresent; + template bitstring tspt_bs_mod4c1ifp := '1010010001'B //mofified for:complement('01101') ifpresent + template bitstring tspt_bs_mod4c2ifp := '1010010001'B //mofified for:complement('01101','1010') ifpresent; + template bitstring tspt_bs_mod4c3ifp := '1010010001'B //mofified for:complement('01101','1010','101') ifpresent; + //template bitstring tspt_bs_mod4r1ifp := '1010010001'B //mofified for:('0'B..'1'B) ifpresent; //range + //template bitstring tspt_bs_mod4r2ifp := '1010010001'B //mofified for:('0'B..'1'B) ifpresent; + template bitstring tspt_bs_mod4paifp := '1010010001'B //mofified for:pattern 'abc*xyz'B ifpresent + template bitstring tspt_bs_mod4pqifp := '1010010001'B //mofified for:pattern 'abc?xyz'B ifpresent + +} + +//========================================================================= +// Functions +//========================================================================= + +function f_string2ttcn_RBS_t(in charstring pl_rbs, in template RBS pl_expected_result) { + var template RBS vl_result; + @try { + string2ttcn(pl_rbs,vl_result); + setverdict(pass) + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + log(pl_expected_result); + log(vl_result); + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +function f_string2ttcn_RBS_t_str(in charstring pl_rec, in charstring pl_expected_result) { + var template RBS vl_result; + @try { + string2ttcn(pl_rec,vl_result); + setverdict(pass) + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + log("Expected result: ", pl_expected_result); + log("Result: ", vl_result); + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +//template string -> variable conversion +//expected result: error +function f_string2ttcn_RBS_v(in charstring pl_cs, in template RBS pl_expected_result, in boolean pl_ok_expected) { + var RBS vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("string2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ",pl_expected_result ); + log("Result: ", vl_result); +} + +//this function is the same but uses +function f_string2ttcn_RBS_v_str(in charstring pl_cs, charstring pl_expected_result, in boolean pl_ok_expected) { + var RBS vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("str2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ", pl_expected_result ); + log("Result: ", vl_result); +} + +//========================================================================= +// Testcases +//========================================================================= + + +testcase tc_bs_1() runs on MC { + var template BitStrings_1_2 vlt_bs := ?; + log(vlt_bs); +} + +testcase tc_bs_ModulePar_emb() runs on MC { + log(t_rbs(tspt_bs_mod4v)); + if(log2str(t_rbs(tspt_bs_mod4v)) != "{ bs := \'01101\'B }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4o)); + if(log2str(t_rbs(tspt_bs_mod4o)) != "{ bs := omit }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4a)); + if(log2str(t_rbs(tspt_bs_mod4a)) != "{ bs := * }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4q)); + if(log2str(t_rbs(tspt_bs_mod4q)) != "{ bs := ? }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4al1)); + if(log2str(t_rbs(tspt_bs_mod4al1)) != "{ bs := * length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4al2)); + if(log2str(t_rbs(tspt_bs_mod4al2)) != "{ bs := * length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4ql1)); + if(log2str(t_rbs(tspt_bs_mod4ql1)) != "{ bs := ? length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4ql2)); + if(log2str(t_rbs(tspt_bs_mod4ql2)) != "{ bs := ? length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(">",t_rbs(tspt_bs_mod4vl1),"<"); + if(log2str(t_rbs(tspt_bs_mod4vl1)) != "{ bs := \'01101\'B }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4vl2)); + if(log2str(t_rbs(tspt_bs_mod4vl2)) != "{ bs := (\'01101\'B, \'1010\'B) }") {setverdict(fail)} else {setverdict(pass)}; + + log(t_rbs(tspt_bs_mod4vl3)); + if(log2str(t_rbs(tspt_bs_mod4vl3)) != "{ bs := (\'01101\'B, \'1010\'B, \'101\'B) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4c1)); + if(log2str(t_rbs(tspt_bs_mod4c1)) != "{ bs := complement(\'01101\'B) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4c2)); + if(log2str(t_rbs(tspt_bs_mod4c2)) != "{ bs := complement(\'01101\'B, \'1010\'B) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4c3)); + if(log2str(t_rbs(tspt_bs_mod4c3)) != "{ bs := complement(\'01101\'B, \'1010\'B, \'101\'B) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4pa)); + if(log2str(t_rbs(tspt_bs_mod4pa)) != "{ bs := \'000*111\'B }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4pq)); + if(log2str(t_rbs(tspt_bs_mod4pq)) != "{ bs := \'000?111\'B }") {setverdict(fail)} else {setverdict(pass)}; + //== + log(t_rbs(tspt_bs_mod4vifp)); + if(log2str(t_rbs(tspt_bs_mod4vifp)) != "{ bs := \'01101\'B ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4oifp)); + if(log2str(t_rbs(tspt_bs_mod4oifp)) != "{ bs := omit ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4aifp)); + if(log2str(t_rbs(tspt_bs_mod4aifp)) != "{ bs := * ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4qifp)); + if(log2str(t_rbs(tspt_bs_mod4qifp)) != "{ bs := ? ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4al1ifp)); + if(log2str(t_rbs(tspt_bs_mod4al1ifp)) != "{ bs := * length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4al2ifp)); + if(log2str(t_rbs(tspt_bs_mod4al2ifp)) != "{ bs := * length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4ql1ifp)); + if(log2str(t_rbs(tspt_bs_mod4ql1ifp)) != "{ bs := ? length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4ql2ifp)); + if(log2str(t_rbs(tspt_bs_mod4ql2ifp)) != "{ bs := ? length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4vl1ifp)); + if(log2str(t_rbs(tspt_bs_mod4vl1ifp)) != "{ bs := \'01101\'B ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4vl2ifp)); + if(log2str(t_rbs(tspt_bs_mod4vl2ifp)) != "{ bs := (\'01101\'B, \'1010\'B) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4vl3ifp)); + if(log2str(t_rbs(tspt_bs_mod4vl3ifp)) != "{ bs := (\'01101\'B, \'1010\'B, \'101\'B) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4c1ifp)); + if(log2str(t_rbs(tspt_bs_mod4c1ifp)) != "{ bs := complement(\'01101\'B) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4c2ifp)); + if(log2str(t_rbs(tspt_bs_mod4c2ifp)) != "{ bs := complement(\'01101\'B, \'1010\'B) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4c3ifp)); + if(log2str(t_rbs(tspt_bs_mod4c3ifp)) != "{ bs := complement(\'01101\'B, \'1010\'B, \'101\'B) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4paifp)); + if(log2str(t_rbs(tspt_bs_mod4paifp)) != "{ bs := \'000*111'B ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4pqifp)); + if(log2str(t_rbs(tspt_bs_mod4pqifp)) != "{ bs := \'000?111\'B ifpresent }") {setverdict(fail)} else {setverdict(pass)}; +} + +testcase tc_bs_ttcn2string_emb() runs on MC { + log(t_rbs(tspt_bs_mod4v)); + if(ttcn2string(t_rbs(tspt_bs_mod4v)) != "{ bs := \'01101\'B }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4o)); + if(ttcn2string(t_rbs(tspt_bs_mod4o)) != "{ bs := omit }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4a)); + if(ttcn2string(t_rbs(tspt_bs_mod4a)) != "{ bs := * }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4q)); + if(ttcn2string(t_rbs(tspt_bs_mod4q)) != "{ bs := ? }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4al1)); + if(ttcn2string(t_rbs(tspt_bs_mod4al1)) != "{ bs := * length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4al2)); + if(ttcn2string(t_rbs(tspt_bs_mod4al2)) != "{ bs := * length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4ql1)); + if(ttcn2string(t_rbs(tspt_bs_mod4ql1)) != "{ bs := ? length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4ql2)); + if(ttcn2string(t_rbs(tspt_bs_mod4ql2)) != "{ bs := ? length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(">",t_rbs(tspt_bs_mod4vl1),"<"); + if(ttcn2string(t_rbs(tspt_bs_mod4vl1)) != "{ bs := \'01101\'B }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4vl2)); + if(ttcn2string(t_rbs(tspt_bs_mod4vl2)) != "{ bs := (\'01101\'B, \'1010\'B) }") {setverdict(fail)} else {setverdict(pass)}; + + log(t_rbs(tspt_bs_mod4vl3)); + if(ttcn2string(t_rbs(tspt_bs_mod4vl3)) != "{ bs := (\'01101\'B, \'1010\'B, \'101\'B) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4c1)); + if(ttcn2string(t_rbs(tspt_bs_mod4c1)) != "{ bs := complement(\'01101\'B) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4c2)); + if(ttcn2string(t_rbs(tspt_bs_mod4c2)) != "{ bs := complement(\'01101\'B, \'1010\'B) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4c3)); + if(ttcn2string(t_rbs(tspt_bs_mod4c3)) != "{ bs := complement(\'01101\'B, \'1010\'B, \'101\'B) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4pa)); + if(ttcn2string(t_rbs(tspt_bs_mod4pa)) != "{ bs := \'000*111\'B }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4pq)); + if(ttcn2string(t_rbs(tspt_bs_mod4pq)) != "{ bs := \'000?111\'B }") {setverdict(fail)} else {setverdict(pass)}; + //== + log(t_rbs(tspt_bs_mod4vifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4vifp)) != "{ bs := \'01101\'B ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4oifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4oifp)) != "{ bs := omit ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4aifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4aifp)) != "{ bs := * ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4qifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4qifp)) != "{ bs := ? ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4al1ifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4al1ifp)) != "{ bs := * length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4al2ifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4al2ifp)) != "{ bs := * length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4ql1ifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4ql1ifp)) != "{ bs := ? length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4ql2ifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4ql2ifp)) != "{ bs := ? length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4vl1ifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4vl1ifp)) != "{ bs := \'01101\'B ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4vl2ifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4vl2ifp)) != "{ bs := (\'01101\'B, \'1010\'B) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4vl3ifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4vl3ifp)) != "{ bs := (\'01101\'B, \'1010\'B, \'101\'B) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4c1ifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4c1ifp)) != "{ bs := complement(\'01101\'B) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4c2ifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4c2ifp)) != "{ bs := complement(\'01101\'B, \'1010\'B) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4c3ifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4c3ifp)) != "{ bs := complement(\'01101\'B, \'1010\'B, \'101\'B) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4paifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4paifp)) != "{ bs := \'000*111'B ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4pqifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4pqifp)) != "{ bs := \'000?111\'B ifpresent }") {setverdict(fail)} else {setverdict(pass)}; +} + +//=============== string2ttcn ============================== + +testcase tc_bs_string2ttcn_mod4v() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4v)),t_rbs(tspt_bs_mod4v)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4v)),t_rbs(tspt_bs_mod4v),true) +} + +testcase tc_bs_string2ttcn_mod4o() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4o)),t_rbs(tspt_bs_mod4o)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4o)),t_rbs(tspt_bs_mod4o),true) +} + +testcase tc_bs_string2ttcn_mod4a() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4a)),t_rbs(tspt_bs_mod4a)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4a)),t_rbs(tspt_bs_mod4a),false) +} + +testcase tc_bs_string2ttcn_mod4q() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4q)),t_rbs(tspt_bs_mod4q)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4q)),t_rbs(tspt_bs_mod4q),false) +} + +testcase tc_bs_string2ttcn_mod4al1() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4al1)),t_rbs(tspt_bs_mod4al1)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4al1)),t_rbs(tspt_bs_mod4al1),false) +} + +testcase tc_bs_string2ttcn_mod4al2() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4al2)),t_rbs(tspt_bs_mod4al2)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4al2)),t_rbs(tspt_bs_mod4al2),false) +} + + +testcase tc_bs_string2ttcn_mod4ql1() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4ql1)),t_rbs(tspt_bs_mod4ql1)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4ql1)),t_rbs(tspt_bs_mod4ql1),false) +} + +testcase tc_bs_string2ttcn_mod4ql2() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4ql2)),t_rbs(tspt_bs_mod4ql2)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4ql2)),t_rbs(tspt_bs_mod4ql2),false) +} + +testcase tc_bs_string2ttcn_mod4vl1() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4vl1)),t_rbs(tspt_bs_mod4vl1)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4vl1)),t_rbs(tspt_bs_mod4vl1),true) +} + +testcase tc_bs_string2ttcn_mod4vl2() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4vl2)),t_rbs(tspt_bs_mod4vl2)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4vl2)),t_rbs(tspt_bs_mod4vl2),false) +} + + +testcase tc_bs_string2ttcn_mod4vifp() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4vifp)),t_rbs(tspt_bs_mod4vifp)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4vifp)),t_rbs(tspt_bs_mod4vifp),false) +} + +testcase tc_bs_string2ttcn_mod4oifp() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4oifp)),t_rbs(tspt_bs_mod4oifp)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4oifp)),t_rbs(tspt_bs_mod4oifp),false) +} + +testcase tc_bs_string2ttcn_mod4aifp() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4aifp)),t_rbs(tspt_bs_mod4aifp)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4aifp)),t_rbs(tspt_bs_mod4aifp),false) +} + +testcase tc_bs_string2ttcn_mod4qifp() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4qifp)),t_rbs(tspt_bs_mod4qifp)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4qifp)),t_rbs(tspt_bs_mod4qifp),false) +} + +testcase tc_bs_string2ttcn_mod4al1ifp() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4al1ifp)),t_rbs(tspt_bs_mod4al1ifp)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4al1ifp)),t_rbs(tspt_bs_mod4al1ifp),false) +} + +testcase tc_bs_string2ttcn_mod4al2ifp() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4al2ifp)),t_rbs(tspt_bs_mod4al2ifp)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4al2ifp)),t_rbs(tspt_bs_mod4al2ifp),false) +} + + +testcase tc_bs_string2ttcn_mod4ql1ifp() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4ql1ifp)),t_rbs(tspt_bs_mod4ql1ifp)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4ql1ifp)),t_rbs(tspt_bs_mod4ql1ifp),false) +} + +testcase tc_bs_string2ttcn_mod4ql2ifp() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4ql2ifp)),t_rbs(tspt_bs_mod4ql2ifp)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4ql2ifp)),t_rbs(tspt_bs_mod4ql2ifp),false) +} + +testcase tc_bs_string2ttcn_mod4vl1ifp() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4vl1ifp)),t_rbs(tspt_bs_mod4vl1ifp)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4vl1ifp)),t_rbs(tspt_bs_mod4vl1ifp),false) +} + +testcase tc_bs_string2ttcn_mod4vl2ifp() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4vl2ifp)),t_rbs(tspt_bs_mod4vl2ifp)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4vl2ifp)),t_rbs(tspt_bs_mod4vl2ifp),false) +} + +//========================================================================= +// Control +//========================================================================= + + +control { + log("***bitstring tests****"); + execute(tc_bs_ModulePar_emb()); + execute(tc_bs_ttcn2string_emb()); + execute(tc_bs_string2ttcn_mod4v()); + execute(tc_bs_string2ttcn_mod4o()); + execute(tc_bs_string2ttcn_mod4a()); + execute(tc_bs_string2ttcn_mod4q()); + execute(tc_bs_string2ttcn_mod4al1()); + execute(tc_bs_string2ttcn_mod4al2()); + execute(tc_bs_string2ttcn_mod4ql1()); + execute(tc_bs_string2ttcn_mod4ql2()); + execute(tc_bs_string2ttcn_mod4vl1()); + execute(tc_bs_string2ttcn_mod4vl2()); + //execute(tc_bs_string2ttcn_mod4vl3()); + + execute(tc_bs_string2ttcn_mod4vifp()); + execute(tc_bs_string2ttcn_mod4oifp()); + execute(tc_bs_string2ttcn_mod4aifp()); + execute(tc_bs_string2ttcn_mod4qifp()); + execute(tc_bs_string2ttcn_mod4al1ifp()); + execute(tc_bs_string2ttcn_mod4al2ifp()); + execute(tc_bs_string2ttcn_mod4ql1ifp()); + execute(tc_bs_string2ttcn_mod4ql2ifp()); + execute(tc_bs_string2ttcn_mod4vl1ifp()); + execute(tc_bs_string2ttcn_mod4vl2ifp()); +} + +} + diff --git a/Regression_Test_java/src/text2ttcn/boolean_test.ttcn b/Regression_Test_java/src/text2ttcn/boolean_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..eb9087e2d3e7916c80d8d0de9fd7feaa01658be4 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn/boolean_test.ttcn @@ -0,0 +1,371 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +/* +//AUTHOR: +//DATE: +//VERSION: +*/ +module boolean_test +{ + +//========================================================================= +// Import Part +//========================================================================= +import from types2 all; +import from functions2 all; + +//========================================================================= +// Module Parameters +//========================================================================= + +modulepar { + template boolean tspt_b_t := true; + template boolean tspt_b_f := false; + template boolean tspt_b_o := omit; + template boolean tspt_b_a := *; + template boolean tspt_b_q := ? ; + template boolean tspt_b_tifp := true ifpresent; + template boolean tspt_b_fifp := false ifpresent; + template boolean tspt_b_oifp := omit ifpresent; // omit ifpresent is meaningless!!!! => Should be comp error!!! TODO: put into neg test!!! + template boolean tspt_b_aifp := * ifpresent; // ?????? only "? ispresent" acceptable + template boolean tspt_b_qifp := ? ifpresent; + template boolean tspt_b_c := complement(true); //complemented list + template boolean tspt_b_tl := (true,false); //template list + //template boolean tspt_b_n := not(true); + + //boolean template modification tests: + template boolean tspt_b_a1 := *; //modified for true + template boolean tspt_b_a2 := *; //modified for false + template boolean tspt_b_a3 := *; //modified for omit + template boolean tspt_b_a4 := *; //modified for * + template boolean tspt_b_a5 := ?; //modified for ? + template boolean tspt_b_a6 := ?; //modified for true ifpresent + template boolean tspt_b_a7 := true; //modified for false ifpresent + template boolean tspt_b_a8 := false; //modified for * ifpresent + template boolean tspt_b_a9 := false; //modified for * ifpresent + template boolean tspt_b_a10:= false; //modified for * ifpresent + template boolean tspt_b_a11:= false; //modified for complement(true) + template boolean tspt_b_err:= *; //wrong mod in cfg file +} + +//========================================================================= +// Data Types +//========================================================================= + +//========================================================================= +// Constants +//========================================================================= + +// Insert constants here if applicable! +// You can use the constant skeleton! + +//========================================================================= +// Templates +//========================================================================= + + template boolean t_b_t := true; + template boolean t_b_f := false; + template boolean t_b_o := omit; + template boolean t_b_a := *; + template boolean t_b_q := ? ; + template boolean t_b_tifp := true ifpresent; + template boolean t_b_fifp := false ifpresent; + template boolean t_b_oifp := omit ifpresent; // omit ifpresent is meaningless!!!! => Should be comp error!!! TODO: put into neg test!!! + template boolean t_b_aifp := * ifpresent; // ?????? only "? ispresent" acceptable + template boolean t_b_qifp := ? ifpresent; + template boolean t_b_c := complement(true); + + template REC_BOH t_rec_b(template boolean pl_b) := { + b:= pl_b, + o:= omit, + h:= omit + } + +//========================================================================= +// Altsteps +//========================================================================= + +//========================================================================= +// Functions +//========================================================================= + +// Insert functions here if applicable! +// You can use the function skeleton! + +//========================================================================= +// Testcases +//========================================================================= + + //not modulepar template - template string check + testcase tc_boolean_NoModulePar() runs on MC { + log( t_rec_b(t_b_t) ); + if( log2str( t_rec_b(t_b_t) ) != "{ b := true, o := omit, h := omit }" ) { setverdict(fail) } else {setverdict(pass) } + if( log2str( t_rec_b(t_b_f) ) != "{ b := false, o := omit, h := omit }") { setverdict(fail) }; + if( log2str( t_rec_b(t_b_o) ) != "{ b := omit, o := omit, h := omit }" ) { setverdict(fail) }; + if( log2str( t_rec_b(t_b_a) ) != "{ b := *, o := omit, h := omit }" ) { setverdict(fail) }; + if( log2str( t_rec_b(t_b_q) ) != "{ b := ?, o := omit, h := omit }" ) { setverdict(fail) }; + if( log2str( t_rec_b(t_b_tifp) ) != "{ b := true ifpresent, o := omit, h := omit }" ) { setverdict(fail) }; + if( log2str( t_rec_b(t_b_fifp) ) != "{ b := false ifpresent, o := omit, h := omit }" ) { setverdict(fail) }; + if( log2str( t_rec_b(t_b_oifp) ) != "{ b := omit ifpresent, o := omit, h := omit }" ) { setverdict(fail) }; + if( log2str( t_rec_b(t_b_aifp) ) != "{ b := * ifpresent, o := omit, h := omit }" ) { setverdict(fail) }; + if( log2str( t_rec_b(t_b_qifp) ) != "{ b := ? ifpresent, o := omit, h := omit }" ) { setverdict(fail) }; + //log(t_rec_b(t_b_c)); + if( log2str( t_rec_b(t_b_c) ) != "{ b := complement(true), o := omit, h := omit }" ) { setverdict(fail) }; + } + + //modulepar template - template string check + testcase tc_boolean_Embedded() runs on MC { + log(tspt_b_t); + //embedded in record: + log( "template value:", t_rec_b(tspt_b_t) ); + if( log2str( t_rec_b(tspt_b_t) ) != "{ b := true, o := omit, h := omit }" ) { setverdict(fail) } else {setverdict(pass) } + log( "template value:", t_rec_b(tspt_b_f) ); + if( log2str( t_rec_b(tspt_b_f) ) != "{ b := false, o := omit, h := omit }") { setverdict(fail) }; + log( "template value:", t_rec_b(tspt_b_o) ); + if( log2str( t_rec_b(tspt_b_o) ) != "{ b := omit, o := omit, h := omit }" ) { setverdict(fail) }; + log( "template value:", t_rec_b(tspt_b_a) ); + if( log2str( t_rec_b(tspt_b_a) ) != "{ b := *, o := omit, h := omit }" ) { setverdict(fail) }; + log( "template value:", t_rec_b(tspt_b_q) ); + if( log2str( t_rec_b(tspt_b_q) ) != "{ b := ?, o := omit, h := omit }" ) { setverdict(fail) }; + log( "template value:", t_rec_b(tspt_b_tifp) ); + if( log2str( t_rec_b(tspt_b_tifp) ) != "{ b := true ifpresent, o := omit, h := omit }" ) { setverdict(fail) }; + log( "template value:", t_rec_b(tspt_b_fifp) ); + if( log2str( t_rec_b(tspt_b_fifp) ) != "{ b := false ifpresent, o := omit, h := omit }" ) { setverdict(fail) }; + log( "template value:", t_rec_b(tspt_b_aifp) ); + if( log2str( t_rec_b(tspt_b_aifp) ) != "{ b := * ifpresent, o := omit, h := omit }" ) { setverdict(fail) }; + log( "template value:", t_rec_b(tspt_b_qifp) ); + if( log2str( t_rec_b(tspt_b_qifp) ) != "{ b := ? ifpresent, o := omit, h := omit }" ) { setverdict(fail) }; + log( "template value:", t_rec_b(tspt_b_c) ); + if( log2str( t_rec_b(tspt_b_c) ) != "{ b := complement(true), o := omit, h := omit }" ) { setverdict(fail) }; + } + + //true + testcase tc_boolean_t() runs on MC { + log(tspt_b_t); + if( log2str( tspt_b_t) != "true" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true} + var RoB vl_wrong_values := {false} + f_checkMatchingValues_bool(tspt_b_t,vl_good_values,vl_wrong_values); + } + + //false + testcase tc_boolean_f() runs on MC { + log(tspt_b_f); + if( log2str( tspt_b_f) != "false" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {false}; + var RoB vl_wrong_values := {true}; + f_checkMatchingValues_bool(tspt_b_f,vl_good_values,vl_wrong_values); + } + + //omit + testcase tc_boolean_o() runs on MC { + log(tspt_b_o); + if( log2str( tspt_b_o) != "omit" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {}; + var RoB vl_wrong_values := {true,false}; + f_checkMatchingValues_bool(tspt_b_o,vl_good_values,vl_wrong_values); + } + + //asterix + testcase tc_boolean_a() runs on MC { + log(tspt_b_a); + if( log2str( tspt_b_a) != "*" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true,false}; + var RoB vl_wrong_values := {}; + f_checkMatchingValues_bool(tspt_b_a,vl_good_values,vl_wrong_values); + } + + //question mark + testcase tc_boolean_q() runs on MC { + log(tspt_b_q); + if( log2str( tspt_b_q) != "?" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true,false}; + var RoB vl_wrong_values := {};//omit cannot be checked here + f_checkMatchingValues_bool(tspt_b_q,vl_good_values,vl_wrong_values); + } + + //true ifpresent + testcase tc_boolean_tifp() runs on MC { + log(tspt_b_tifp); + if( log2str( tspt_b_tifp) != "true ifpresent" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true} + var RoB vl_wrong_values := {false}; //omit cannot be checked here + f_checkMatchingValues_bool(tspt_b_tifp,vl_good_values,vl_wrong_values); + } + + //false ifpresent + testcase tc_boolean_fifp() runs on MC { + log(tspt_b_fifp); + if( log2str( tspt_b_fifp) != "false ifpresent" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {false}; + var RoB vl_wrong_values := {true}; + f_checkMatchingValues_bool(tspt_b_fifp,vl_good_values,vl_wrong_values); + } + //* ifpresent + testcase tc_boolean_aifp() runs on MC { + log(tspt_b_aifp); + if( log2str( tspt_b_aifp) != "* ifpresent" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true,false} + var RoB vl_wrong_values := {}; //omit cannot be checked here + f_checkMatchingValues_bool(tspt_b_aifp,vl_good_values,vl_wrong_values); + } + + //? ifpresent + testcase tc_boolean_qifp() runs on MC { + log(tspt_b_qifp); + if( log2str( tspt_b_qifp) != "? ifpresent" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true,false}; + var RoB vl_wrong_values := {}; + f_checkMatchingValues_bool(tspt_b_qifp,vl_good_values,vl_wrong_values); + } + + testcase tc_boolean_c() runs on MC { + log(tspt_b_c); + if( log2str( tspt_b_c) != "complement(true)" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {false}; + var RoB vl_wrong_values := {true}; + f_checkMatchingValues_bool(tspt_b_c,vl_good_values,vl_wrong_values); + } + + testcase tc_boolean_tl() runs on MC { + log(tspt_b_tl); + if( log2str( tspt_b_tl) != "(true, false)" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true,false}; + var RoB vl_wrong_values := {}; + f_checkMatchingValues_bool(tspt_b_tl,vl_good_values,vl_wrong_values); + } + + //modulepar modified in cfg file + testcase tc_boolean_modified4t() runs on MC { + log(tspt_b_a1); + if( log2str( tspt_b_a1) != "true" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true} + var RoB vl_wrong_values := {false} + f_checkMatchingValues_bool(tspt_b_a1,vl_good_values,vl_wrong_values); + } + + testcase tc_boolean_modified4f() runs on MC { + log(tspt_b_a2); + if( log2str( tspt_b_a2) != "false" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {false}; + var RoB vl_wrong_values := {true}; + f_checkMatchingValues_bool(tspt_b_a2,vl_good_values,vl_wrong_values); + } + + testcase tc_boolean_modified4o() runs on MC { + log(tspt_b_a3); + if( log2str( tspt_b_a3) != "omit" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {}; + var RoB vl_wrong_values := {true,false}; + f_checkMatchingValues_bool(tspt_b_a3,vl_good_values, vl_wrong_values); + } + + testcase tc_boolean_modified4a() runs on MC { + log(tspt_b_a4); + if( log2str( tspt_b_a4) != "*" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true,false}; + var RoB vl_wrong_values := {}; + f_checkMatchingValues_bool(tspt_b_a4,vl_good_values,vl_wrong_values); + } + + testcase tc_boolean_modified4q() runs on MC { + log(tspt_b_a5); + if( log2str( tspt_b_a5) != "?" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true,false}; + var RoB vl_wrong_values := {}; + f_checkMatchingValues_bool(tspt_b_a5,vl_good_values,vl_wrong_values); + } + + testcase tc_boolean_modified4tifp() runs on MC { + log(tspt_b_a6); + if( log2str( tspt_b_a6) != "true ifpresent" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true}; + var RoB vl_wrong_values := {false}; + f_checkMatchingValues_bool(tspt_b_a6,vl_good_values,vl_wrong_values); + } + + testcase tc_boolean_modified4fifp() runs on MC { + log(tspt_b_a7); + if( log2str( tspt_b_a7) != "false ifpresent" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {false}; + var RoB vl_wrong_values := {true}; + f_checkMatchingValues_bool(tspt_b_a7,vl_good_values,vl_wrong_values); + } + + testcase tc_boolean_modified4aifp() runs on MC { + log(tspt_b_a8); + if( log2str( tspt_b_a8) != "* ifpresent" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true,false}; + var RoB vl_wrong_values := {}; + f_checkMatchingValues_bool(tspt_b_a8,vl_good_values,vl_wrong_values); + } + + testcase tc_boolean_modified4qifp() runs on MC { + log(tspt_b_a9); + if( log2str( tspt_b_a9) != "? ifpresent" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true,false}; + var RoB vl_wrong_values := {}; + f_checkMatchingValues_bool(tspt_b_a9,vl_good_values,vl_wrong_values); + } + + testcase tc_boolean_modified4tf() runs on MC { + log(tspt_b_a10); + if( log2str( tspt_b_a10) != "(true, false)" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true,false}; + var RoB vl_wrong_values := {}; + f_checkMatchingValues_bool(tspt_b_a10,vl_good_values,vl_wrong_values); + } + + //modified for complement(true) + testcase tc_boolean_modified4ct() runs on MC { + log(tspt_b_a11); + if( log2str( tspt_b_a11) != "complement(true)" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {false}; + var RoB vl_wrong_values := {true}; + f_checkMatchingValues_bool(tspt_b_a11,vl_good_values,vl_wrong_values); + } + + +//========================================================================= +// Control +//========================================================================= + +control { + log("****Boolean tests****") + execute(tc_boolean_NoModulePar()); + execute(tc_boolean_Embedded()); + execute(tc_boolean_t()); + execute(tc_boolean_f()); + execute(tc_boolean_o()); + execute(tc_boolean_a()); + execute(tc_boolean_tifp()); + execute(tc_boolean_fifp()); + execute(tc_boolean_aifp()); + execute(tc_boolean_qifp()); + execute(tc_boolean_c()); + execute(tc_boolean_tl()); + //boolean template, modified from cfg file: + execute(tc_boolean_modified4t()); + execute(tc_boolean_modified4f()); + execute(tc_boolean_modified4o()); + execute(tc_boolean_modified4a()); + execute(tc_boolean_modified4q()); + execute(tc_boolean_modified4tifp()); + execute(tc_boolean_modified4fifp()); + execute(tc_boolean_modified4aifp()); + execute(tc_boolean_modified4qifp()); + execute(tc_boolean_modified4tf()); + execute(tc_boolean_modified4ct()); +} + + +} // end of module diff --git a/Regression_Test_java/src/text2ttcn/charstring_test.ttcn b/Regression_Test_java/src/text2ttcn/charstring_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..cd12ccd6855e14ae969739eac9de56130312bf90 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn/charstring_test.ttcn @@ -0,0 +1,1416 @@ +/****************************************************************************** + * 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 + * Baranyi, Botond + * + ******************************************************************************/ +module charstring_test { + +//========================================================================= +// Import Part +//========================================================================= + +import from types2 all; +import from functions2 all; + +//========================================================================= +// Module Parameters +//========================================================================= +modulepar { + + //modulepar charstrings not modified from cfg file + template charstring tspt_cs_v := "ABBA"; + template charstring tspt_cs_o := omit; + template charstring tspt_cs_a := *; + template charstring tspt_cs_q := ?; + template charstring tspt_cs_al1 := * length(2); //length restriction + template charstring tspt_cs_al2 := * length(2..4); + template charstring tspt_cs_ql1 := ? length(2); + template charstring tspt_cs_ql2 := ? length(2..4); + template charstring tspt_cs_vl1 := ("ABBA"); + template charstring tspt_cs_vl2 := ("ABBA","baba"); + template charstring tspt_cs_vl3 := ("ABBA","baba","Bye"); + template charstring tspt_cs_c1 := complement("ABBA") + template charstring tspt_cs_c2 := complement("ABBA","baba"); + template charstring tspt_cs_c3 := complement("ABBA","baba","Bye"); + template charstring tspt_cs_r1 := ("A".."B"); //range + template charstring tspt_cs_r2 := ("a".."c"); + template charstring tspt_cs_pa := pattern "abc*xyz" + template charstring tspt_cs_pq := pattern "abc?xyz" + + template charstring tspt_cs_vifp := "ABBA" ifpresent; + template charstring tspt_cs_oifp := omit ifpresent; + template charstring tspt_cs_aifp := * ifpresent; + template charstring tspt_cs_qifp := ? ifpresent; + template charstring tspt_cs_al1ifp := * length(2) ifpresent; //length restriction + template charstring tspt_cs_al2ifp := * length(2..4) ifpresent; + template charstring tspt_cs_ql1ifp := ? length(2) ifpresent; + template charstring tspt_cs_ql2ifp := ? length(2..4) ifpresent; + template charstring tspt_cs_vl1ifp := ("ABBA") ifpresent; + template charstring tspt_cs_vl2ifp := ("ABBA","baba") ifpresent; + template charstring tspt_cs_vl3ifp := ("ABBA","baba","Bye") ifpresent; + template charstring tspt_cs_c1ifp := complement("ABBA") ifpresent + template charstring tspt_cs_c2ifp := complement("ABBA","baba") ifpresent; + template charstring tspt_cs_c3ifp := complement("ABBA","baba","Bye") ifpresent; + template charstring tspt_cs_r1ifp := ("A".."B") ifpresent; //range + template charstring tspt_cs_r2ifp := ("a".."c") ifpresent; + template charstring tspt_cs_paifp := pattern "abc*xyz" ifpresent + template charstring tspt_cs_pqifp := pattern "abc?xyz" ifpresent + + //modulepar charstrings modified from cfg file + template charstring tspt_cs_mod4v := * //after mod:"ABBA"; + template charstring tspt_cs_mod4o := * //omit; + template charstring tspt_cs_mod4ol := * //omit; + template charstring tspt_cs_mod4a := "A" //*; + template charstring tspt_cs_mod4q := "" //?; + template charstring tspt_cs_mod4al1 := "A" //* length(2); //length restriction + template charstring tspt_cs_mod4al2 := "Original" //mofified for: * length(2..4); + template charstring tspt_cs_mod4ql1 := "Original" //mofified for:? length(2); + template charstring tspt_cs_mod4ql2 := "Original" //mofified for:? length(2..4); + template charstring tspt_cs_mod4vl1 := ("ABBA") //TODO: Adam //It should be mofified for: ("ABBA"); + template charstring tspt_cs_mod4vl2 := "Original" //mofified for:("ABBA","baba"); + template charstring tspt_cs_mod4vl3 := "Original" //mofified for:("ABBA","baba","Bye"); + template charstring tspt_cs_mod4c1 := "Original" //mofified for:complement("ABBA") + template charstring tspt_cs_mod4c2 := "Original" //mofified for:complement("ABBA","baba"); + template charstring tspt_cs_mod4c3 := "Original" //mofified for:complement("ABBA","baba","Bye"); + template charstring tspt_cs_mod4r1 := "Original" //mofified for:("A".."B"); //range + template charstring tspt_cs_mod4r2 := "Original" //mofified for:("a".."c"); + template charstring tspt_cs_mod4pa := "Original" //mofified for:pattern "abc*xyz" + template charstring tspt_cs_mod4pq := "Original" //mofified for:pattern "abc?xyz" + + template charstring tspt_cs_mod4vifp := "Original" //mofified for:"ABBA" ifpresent; + template charstring tspt_cs_mod4oifp := "Original" //mofified for:omit ifpresent; + template charstring tspt_cs_mod4aifp := "Original" //mofified for:* ifpresent; + template charstring tspt_cs_mod4qifp := "Original" //mofified for:? ifpresent; + template charstring tspt_cs_mod4al1ifp := "Original" //mofified for:* length(2) ifpresent; //length restriction + template charstring tspt_cs_mod4al2ifp := "Original" //mofified for:* length(2..4) ifpresent; + template charstring tspt_cs_mod4ql1ifp := "Original" //mofified for:? length(2) ifpresent; + template charstring tspt_cs_mod4ql2ifp := "Original" //mofified for:? length(2..4) ifpresent; + template charstring tspt_cs_mod4vl1ifp := ("ABBA") ifpresent //TODO: Adam //It should be mofified for: ("ABBA"); + template charstring tspt_cs_mod4vl2ifp := "Original" //mofified for:("ABBA","baba") ifpresent; + template charstring tspt_cs_mod4vl3ifp := "Original" //mofified for:("ABBA","baba","Bye") ifpresent; + template charstring tspt_cs_mod4c1ifp := "Original" //mofified for:complement("ABBA") ifpresent + template charstring tspt_cs_mod4c2ifp := "Original" //mofified for:complement("ABBA","baba") ifpresent; + template charstring tspt_cs_mod4c3ifp := "Original" //mofified for:complement("ABBA","baba","Bye") ifpresent; + template charstring tspt_cs_mod4r1ifp := "Original" //mofified for:("A".."B") ifpresent; //range + template charstring tspt_cs_mod4r2ifp := "Original" //mofified for:("a".."c") ifpresent; + template charstring tspt_cs_mod4paifp := "Original" //mofified for:pattern "abc*xyz" ifpresent + template charstring tspt_cs_mod4pqifp := "Original" //mofified for:pattern "abc?xyz" ifpresent + +} + +//========================================================================= +// Templates +//========================================================================= +// not modulepars +template charstring t_cs_v := "ABBA"; +template charstring t_cs_o := omit; +template charstring t_cs_a := *; +template charstring t_cs_q := ?; +template charstring t_cs_al1 := * length(2); //length restriction +template charstring t_cs_al2 := * length(2..4); +template charstring t_cs_ql1 := ? length(2); +template charstring t_cs_ql2 := ? length(2..4); +template charstring t_cs_vl1 := ("ABBA"); +template charstring t_cs_vl2 := ("ABBA","baba"); +template charstring t_cs_vl3 := ("ABBA","baba","Bye"); +template charstring t_cs_c1 := complement("ABBA") +template charstring t_cs_c2 := complement("ABBA","baba"); +template charstring t_cs_c3 := complement("ABBA","baba","Bye"); +template charstring t_cs_r1 := ("A".."B"); //range +template charstring t_cs_r2 := ("a".."c"); +template charstring t_cs_pa := pattern "abc*xyz" +template charstring t_cs_pq := pattern "abc?xyz" + +template charstring t_cs_vifp := "ABBA" ifpresent; +template charstring t_cs_oifp := omit ifpresent; +template charstring t_cs_aifp := * ifpresent; +template charstring t_cs_qifp := ? ifpresent; +template charstring t_cs_al1ifp := * length(2) ifpresent; //length restriction +template charstring t_cs_al2ifp := * length(2..4) ifpresent; +template charstring t_cs_ql1ifp := ? length(2) ifpresent; +template charstring t_cs_ql2ifp := ? length(2..4) ifpresent; +template charstring t_cs_vl1ifp := ("ABBA") ifpresent; +template charstring t_cs_vl2ifp := ("ABBA","baba") ifpresent; +template charstring t_cs_vl3ifp := ("ABBA","baba","Bye") ifpresent; +template charstring t_cs_c1ifp := complement("ABBA") ifpresent +template charstring t_cs_c2ifp := complement("ABBA","baba") ifpresent; +template charstring t_cs_c3ifp := complement("ABBA","baba","Bye") ifpresent; +template charstring t_cs_r1ifp := ("A".."B") ifpresent; //range +template charstring t_cs_r2ifp := ("a".."c") ifpresent; +template charstring t_cs_paifp := pattern "abc*xyz" ifpresent +template charstring t_cs_pqifp := pattern "abc?xyz" ifpresent + +//========================================================================= +// Functions +//========================================================================= +function f_string2ttcn_cs_t(in charstring pl_cs, in template charstring pl_expected_result) { + var template charstring vl_result; + @try { + string2ttcn(pl_cs,vl_result); + setverdict(pass) + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + log(pl_expected_result); + log(vl_result); + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +function f_string2ttcn_cs_t_str(in charstring pl_cs, in charstring pl_expected_result) { + var template charstring vl_result; + @try { + string2ttcn(pl_cs,vl_result); + setverdict(pass) + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + log("Expected result: ", pl_expected_result); + log("Result: ", vl_result); + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +//template string -> variable conversion +//expected result: error +function f_string2ttcn_cs_v(in charstring pl_cs, in template charstring pl_expected_result, in boolean pl_ok_expected) { + var charstring vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("string2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ",pl_expected_result ); + log("Result: ", vl_result); +} + +//this function is the same but uses +function f_string2ttcn_cs_v_str(in charstring pl_cs, charstring pl_expected_result, in boolean pl_ok_expected) { + var charstring vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("str2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ", pl_expected_result ); + log("Result: ", vl_result); +} + +//rrec + +function f_string2ttcn_rcs_t(in charstring pl_rcs, in template RCS pl_expected_result) { + var template RCS vl_result; + @try { + string2ttcn(pl_rcs,vl_result); + setverdict(pass) + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + log(pl_expected_result); + log(vl_result); + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +function f_string2ttcn_rcs_t_str(in charstring pl_cs, in charstring pl_expected_result) { + var template RCS vl_result; + @try { + string2ttcn(pl_cs,vl_result); + setverdict(pass) + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + log("Expected result: ", pl_expected_result); + log("Result: ", vl_result); + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +//template string -> variable conversion +//expected result: error +function f_string2ttcn_rcs_v(in charstring pl_cs, in template RCS pl_expected_result, in boolean pl_ok_expected) { + var RCS vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("string2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ",pl_expected_result ); + log("Result: ", vl_result); +} + +//this function is the same but uses +function f_string2ttcn_rcs_v_str(in charstring pl_cs, charstring pl_expected_result, in boolean pl_ok_expected) { + var RCS vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("str2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ", pl_expected_result ); + log("Result: ", vl_result); +} + +//========================================================================= +// Testcases +//========================================================================= + +testcase tc_cs_v() runs on MC { + var RoCS vl_good_values := {"ABBA"} + var RoCS vl_wrong_values := {"","A","AB","ABB","ABBAB","abba","anything","XXXX","ABCDE"} + f_checkMatchingValues_cs(t_cs_v, vl_good_values,vl_wrong_values); +} + +testcase tc_cs_o() runs on MC { + var RoCS vl_good_values := {} + var RoCS vl_wrong_values := {"","A","AB","ABB","ABBAB","abba","anything","XXXX","ABCDE"} + f_checkMatchingValues_cs(t_cs_o, vl_good_values,vl_wrong_values); +} + +testcase tc_cs_a() runs on MC { + var RoCS vl_good_values := {"","A","AB","ABB","ABBAB","abba","anything","XXXX","ABCDE"} + var RoCS vl_wrong_values := {} + f_checkMatchingValues_cs(t_cs_a, vl_good_values,vl_wrong_values); +} + +testcase tc_cs_q() runs on MC { + var RoCS vl_good_values := {"","A","AB","ABB","ABBAB","abba","anything","XXXX","ABCDE"} + var RoCS vl_wrong_values := {} + f_checkMatchingValues_cs(t_cs_q, vl_good_values,vl_wrong_values); +} + +// t_cs_al1 := * length(2); //length restriction +testcase tc_cs_al1() runs on MC { + var RoCS vl_good_values := {"AB", "ab","ba","12","A1"," "} + var RoCS vl_wrong_values := {"","A","ABB","ABBAB","abba","anything","XXXX","ABCDE","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} + f_checkMatchingValues_cs(t_cs_al1, vl_good_values,vl_wrong_values); +} + +// t_cs_al1 := * length(2..4); //length restriction +testcase tc_cs_al2() runs on MC { + var RoCS vl_good_values := {"AB", "ab","ba","12","A1"," ","123", "ABC","abc","ABBA"} + var RoCS vl_wrong_values := {"","A", "ABBAB","anything","XXXXX","ABCDE","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} + f_checkMatchingValues_cs(t_cs_al2, vl_good_values,vl_wrong_values); +} + +// t_cs_al1 := ? length(2); //length restriction +testcase tc_cs_ql1() runs on MC { + var RoCS vl_good_values := {"AB", "ab","ba","12","A1"," "} + var RoCS vl_wrong_values := {"","A","ABB","ABBAB","abba","anything","XXXX","ABCDE","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} + f_checkMatchingValues_cs(t_cs_ql1, vl_good_values,vl_wrong_values); +} + +// t_cs_al1 := ? length(2..4); //length restriction +testcase tc_cs_ql2() runs on MC { + var RoCS vl_good_values := {"AB", "ab","ba","12","A1"," ","123", "ABC","abc","ABBA"} + var RoCS vl_wrong_values := {"","A", "ABBAB","anything","XXXXX","ABCDE","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} + f_checkMatchingValues_cs(t_cs_ql2, vl_good_values,vl_wrong_values); +} + +testcase tc_cs_vl1() runs on MC { + var RoCS vl_good_values := {"ABBA"} + var RoCS vl_wrong_values := {"AB", "ab","ba","12","A1"," ""","A","ABB","ABBAB","abba","anything","XXXX","ABCDE","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} + f_checkMatchingValues_cs(t_cs_vl1, vl_good_values,vl_wrong_values); +} + +testcase tc_cs_vl2() runs on MC { + var RoCS vl_good_values := {"ABBA","baba"} + var RoCS vl_wrong_values := {"AB", "ab","ba","12","A1"," ""","A","ABB","ABBAB","abba","anything","XXXX","ABCDE","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} + f_checkMatchingValues_cs(t_cs_vl2, vl_good_values,vl_wrong_values); +} + +testcase tc_cs_vl3() runs on MC { + var RoCS vl_good_values := {"ABBA","baba","Bye"} + var RoCS vl_wrong_values := {"AB", "ab","ba","12","A1"," ""","A","ABB","ABBAB","abba","anything","XXXX","ABCDE","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} + f_checkMatchingValues_cs(t_cs_vl3, vl_good_values,vl_wrong_values); +} + +testcase tc_cs_c1() runs on MC { + var RoCS vl_good_values := {"AB", "ab","ba","12","A1"," ""","A","ABB","ABBAB","abba","anything","XXXX","ABCDE","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} + var RoCS vl_wrong_values := {"ABBA"} + f_checkMatchingValues_cs(t_cs_c1, vl_good_values,vl_wrong_values); +} + +testcase tc_cs_c2() runs on MC { + var RoCS vl_good_values :={"AB", "ab","ba","12","A1"," ""","A","ABB","ABBAB","abba","anything","XXXX","ABCDE","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} + var RoCS vl_wrong_values := {"ABBA","baba"} + f_checkMatchingValues_cs(t_cs_c2, vl_good_values,vl_wrong_values); +} + +testcase tc_cs_c3() runs on MC { + var RoCS vl_good_values := {"AB", "ab","ba","12","A1"," ""","A","ABB","ABBAB","abba","anything","XXXX","ABCDE","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} + var RoCS vl_wrong_values := {"ABBA","baba","Bye"} + f_checkMatchingValues_cs(t_cs_c3, vl_good_values,vl_wrong_values); +} + +//("A".."B") +testcase tc_cs_r1() runs on MC { + var RoCS vl_good_values := {"A","B","ABBA","AB","AAAAAA","BBBBB","ABBABABA"} + var RoCS vl_wrong_values := { "ab","ba","Bye","12","A1"," ","abba","anything","XXXX","ABCDE","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} + f_checkMatchingValues_cs(t_cs_r1, vl_good_values,vl_wrong_values); +} +//"a".."c" +testcase tc_cs_r2() runs on MC { + var RoCS vl_good_values := {"","a","b","c","ab","cba","abbac","abbababa","cabacccc"} + var RoCS vl_wrong_values := {"A","B","ABBA","AB","AAAAAAc","BBBBB","ABBABABAc", "Bye","12","abcA1"," ","anything","XXXX","ABCDE","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} + f_checkMatchingValues_cs(t_cs_r2, vl_good_values,vl_wrong_values); +} + +testcase tc_cs_pa() runs on MC { + var RoCS vl_good_values := { "abcxyz","abcAxyz","abc45xyz" } + var RoCS vl_wrong_values := { "ab","ba","Bye", "abcyz"} + f_checkMatchingValues_cs(t_cs_pa, vl_good_values,vl_wrong_values); +} + +testcase tc_cs_pq() runs on MC { + var RoCS vl_good_values := {"abcAxyz","abc4xyz" } + var RoCS vl_wrong_values := { "ab","ba","Bye", "abcxyz","abc45xyz"} + f_checkMatchingValues_cs(t_cs_pq, vl_good_values,vl_wrong_values); +} + +//=== charstring embedded in record ==== + +testcase tc_cs_v_emb() runs on MC { + var RoRCS vl_good_values := {{cs:="ABBA"}} + var RoRCS vl_wrong_values := {{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_v), vl_good_values,vl_wrong_values); +} + +testcase tc_cs_o_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{cs:=omit}}; + var RoRCS vl_wrong_values := {{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_o), vl_good_values,vl_wrong_values); +} + +testcase tc_cs_a_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"}} + var RoRCS vl_wrong_values := {{}} + f_checkMatchingValues_rcs(t_rcs(t_cs_a), vl_good_values,vl_wrong_values); +} + +testcase tc_cs_q_emb() runs on MC { + var RoRCS vl_good_values := {{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"}} + var RoRCS vl_wrong_values := {{omit}} + f_checkMatchingValues_rcs(t_rcs(t_cs_q), vl_good_values,vl_wrong_values); +} + +// t_rcs(t_cs_al1 := * length(2); //length restriction +testcase tc_cs_al1_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "}} + var RoRCS vl_wrong_values := {{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_al1), vl_good_values,vl_wrong_values); +} + +// t_rcs(t_cs_al1 := * length(2..4); //length restriction +testcase tc_cs_al2_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{"123"},{ "ABC"},{"abc"},{"ABBA"}} + var RoRCS vl_wrong_values := {{""},{"A"},{ "ABBAB"},{"anything"},{"XXXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_al2), vl_good_values,vl_wrong_values); +} + +// t_rcs(t_cs_al1 := ? length(2); //length restriction +testcase tc_cs_ql1_emb() runs on MC { + var RoRCS vl_good_values := {{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "}} + var RoRCS vl_wrong_values := {{omit},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_ql1), vl_good_values,vl_wrong_values); +} + +// t_rcs(t_cs_al1 := ? length(2..4); //length restriction +testcase tc_cs_ql2_emb() runs on MC { + var RoRCS vl_good_values := {{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{"123"},{ "ABC"},{"abc"},{"ABBA"}} + var RoRCS vl_wrong_values := {{omit},{""},{"A"},{ "ABBAB"},{"anything"},{"XXXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_ql2), vl_good_values,vl_wrong_values); +} +//("ABBA") +testcase tc_cs_vl1_emb() runs on MC { + var RoRCS vl_good_values := {{"ABBA"}} + var RoRCS vl_wrong_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_vl1), vl_good_values,vl_wrong_values); +} +//("ABBA","baba") +testcase tc_cs_vl2_emb() runs on MC { + var RoRCS vl_good_values := {{"ABBA"},{"baba"}} + var RoRCS vl_wrong_values := {{omit},{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_vl2), vl_good_values,vl_wrong_values); +} +//("ABBA","baba","Bye") +testcase tc_cs_vl3_emb() runs on MC { + var RoRCS vl_good_values := {{"ABBA"},{"baba"},{"Bye"}} + var RoRCS vl_wrong_values := {{omit},{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_vl3), vl_good_values,vl_wrong_values); +} +// Note: this tests legacy behavior and requires the -M compiler option! +//complement("ABBA") +testcase tc_cs_c1_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" """},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + var RoRCS vl_wrong_values := {{"ABBA"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_c1), vl_good_values,vl_wrong_values); +} +// Note: this tests legacy behavior and requires the -M compiler option! +//complement("ABBA","baba"); +testcase tc_cs_c2_emb() runs on MC { + var RoRCS vl_good_values :={{omit},{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + var RoRCS vl_wrong_values := {{"ABBA"},{"baba"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_c2), vl_good_values,vl_wrong_values); +} +// Note: this tests legacy behavior and requires the -M compiler option! +//complement("ABBA","baba","Bye"); +testcase tc_cs_c3_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + var RoRCS vl_wrong_values := {{"ABBA"},{"baba"},{"Bye"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_c3), vl_good_values,vl_wrong_values); +} + +//("A".."B") +testcase tc_cs_r1_emb() runs on MC { + var RoRCS vl_good_values := {{"A"},{"B"},{"ABBA"},{"AB"},{"AAAAAA"},{"BBBBB"},{"ABBABABA"}} + var RoRCS vl_wrong_values := {{omit},{"ab"},{"ba"},{"Bye"},{"12"},{"A1"},{" "},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_r1),vl_good_values,vl_wrong_values); +} +//"a".."c" +testcase tc_cs_r2_emb() runs on MC { + var RoRCS vl_good_values := {{""},{"a"},{"b"},{"c"},{"ab"},{"cba"},{"abbac"},{"abbababa"},{"cabacccc"}} + var RoRCS vl_wrong_values := {{omit},{"A"},{"B"},{"ABBA"},{"AB"},{"AAAAAAc"},{"BBBBB"},{"ABBABABAc"},{ "Bye"},{"12"},{"abcA1"},{" "},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_r2), vl_good_values,vl_wrong_values); +} +//pattern "abc*xyz" +testcase tc_cs_pa_emb() runs on MC { + var RoRCS vl_good_values := {{ "abcxyz"},{"abcAxyz"},{"abc45xyz" }} + var RoRCS vl_wrong_values := {{""},{"ab"},{"ba"},{"Bye"},{"abcyz"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_pa), vl_good_values,vl_wrong_values); +} +//pattern "abc?xyz" +testcase tc_cs_pq_emb() runs on MC { + var RoRCS vl_good_values := {{"abcAxyz"},{"abc4xyz" }} + var RoRCS vl_wrong_values := {{ "ab"},{"ba"},{"Bye"},{ "abcxyz"},{"abc45xyz"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_pq), vl_good_values,vl_wrong_values); +} + +//=========== Charstring Tests without Module Params and with "ifpresent" clause +//=== charstring embedded in record ==== + +testcase tc_cs_vifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{cs:="ABBA"}} + var RoRCS vl_wrong_values := {{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_vifp), vl_good_values,vl_wrong_values); +} + +testcase tc_cs_oifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{cs:=omit}}; + var RoRCS vl_wrong_values := {{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_oifp), vl_good_values,vl_wrong_values); +} + +testcase tc_cs_aifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"}} + var RoRCS vl_wrong_values := {{}} + f_checkMatchingValues_rcs(t_rcs(t_cs_aifp), vl_good_values,vl_wrong_values); +} + +testcase tc_cs_qifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"}} + var RoRCS vl_wrong_values := {} + f_checkMatchingValues_rcs(t_rcs(t_cs_qifp), vl_good_values,vl_wrong_values); +} + +// t_rcs(t_cs_al1 := * length(2); //length restriction +testcase tc_cs_al1ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "}} + var RoRCS vl_wrong_values := {{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_al1ifp), vl_good_values,vl_wrong_values); +} + +// t_rcs(t_cs_al1 := * length(2..4); //length restriction +testcase tc_cs_al2ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{"123"},{ "ABC"},{"abc"},{"ABBA"}} + var RoRCS vl_wrong_values := {{""},{"A"},{ "ABBAB"},{"anything"},{"XXXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_al2ifp), vl_good_values,vl_wrong_values); +} + +// t_rcs(t_cs_al1 := ? length(2); //length restriction +testcase tc_cs_ql1ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "}} + var RoRCS vl_wrong_values := {{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_ql1ifp), vl_good_values,vl_wrong_values); +} + +// t_rcs(t_cs_al1ifp := ? length(2..4); //length restriction +testcase tc_cs_ql2ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{"123"},{ "ABC"},{"abc"},{"ABBA"}} + var RoRCS vl_wrong_values := {{""},{"A"},{ "ABBAB"},{"anything"},{"XXXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_ql2ifp), vl_good_values,vl_wrong_values); +} +//("ABBA") +testcase tc_cs_vl1ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"ABBA"}} + var RoRCS vl_wrong_values := {{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_vl1ifp), vl_good_values,vl_wrong_values); +} +//("ABBA","baba") +testcase tc_cs_vl2ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"ABBA"},{"baba"}} + var RoRCS vl_wrong_values := {{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_vl2ifp), vl_good_values,vl_wrong_values); +} +//("ABBA","baba","Bye") +testcase tc_cs_vl3ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"ABBA"},{"baba"},{"Bye"}} + var RoRCS vl_wrong_values := {{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_vl3ifp), vl_good_values,vl_wrong_values); +} +//complement("ABBA") +testcase tc_cs_c1ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" """},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + var RoRCS vl_wrong_values := {{"ABBA"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_c1ifp), vl_good_values,vl_wrong_values); +} +//complement("ABBA","baba"); +testcase tc_cs_c2ifp_emb() runs on MC { + var RoRCS vl_good_values :={{omit},{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + var RoRCS vl_wrong_values := {{"ABBA"},{"baba"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_c2ifp), vl_good_values,vl_wrong_values); +} +//complement("ABBA","baba","Bye"); +testcase tc_cs_c3ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + var RoRCS vl_wrong_values := {{"ABBA"},{"baba"},{"Bye"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_c3ifp), vl_good_values,vl_wrong_values); +} + +//("A".."B") +testcase tc_cs_r1ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"A"},{"B"},{"ABBA"},{"AB"},{"AAAAAA"},{"BBBBB"},{"ABBABABA"}} + var RoRCS vl_wrong_values := {{"ab"},{"ba"},{"Bye"},{"12"},{"A1"},{" "},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_r1ifp),vl_good_values,vl_wrong_values); +} +//"a".."c" +testcase tc_cs_r2ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{""},{"a"},{"b"},{"c"},{"ab"},{"cba"},{"abbac"},{"abbababa"},{"cabacccc"}} + var RoRCS vl_wrong_values := {{"A"},{"B"},{"ABBA"},{"AB"},{"AAAAAAc"},{"BBBBB"},{"ABBABABAc"},{ "Bye"},{"12"},{"abcA1"},{" "},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_r2ifp), vl_good_values,vl_wrong_values); +} +//pattern "abc*xyz" +testcase tc_cs_paifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"abcxyz"},{"abcAxyz"},{"abc45xyz" }} + var RoRCS vl_wrong_values := {{""},{"ab"},{"ba"},{"Bye"},{"abcyz"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_paifp), vl_good_values,vl_wrong_values); +} +//pattern "abc?xyz" +testcase tc_cs_pqifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"abcAxyz"},{"abc4xyz" }} + var RoRCS vl_wrong_values := {{"ab"},{"ba"},{"Bye"},{ "abcxyz"},{"abc45xyz"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_pqifp), vl_good_values,vl_wrong_values); +} + + +//=========== Charstring Tests with Module Parameters ====== +testcase tc_cs_ModulePar_emb() runs on MC { + log(t_rcs(tspt_cs_mod4v)); + if(log2str(t_rcs(tspt_cs_mod4v)) != "{ cs := \"ABBA\" }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4o)); + if(log2str(t_rcs(tspt_cs_mod4o)) != "{ cs := omit }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4a)); + if(log2str(t_rcs(tspt_cs_mod4a)) != "{ cs := * }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4q)); + if(log2str(t_rcs(tspt_cs_mod4q)) != "{ cs := ? }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4al1)); + if(log2str(t_rcs(tspt_cs_mod4al1)) != "{ cs := * length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4al2)); + if(log2str(t_rcs(tspt_cs_mod4al2)) != "{ cs := * length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4ql1)); + if(log2str(t_rcs(tspt_cs_mod4ql1)) != "{ cs := ? length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4ql2)); + if(log2str(t_rcs(tspt_cs_mod4ql2)) != "{ cs := ? length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(">",t_rcs(tspt_cs_mod4vl1),"<"); + if(log2str(t_rcs(tspt_cs_mod4vl1)) != "{ cs := \"ABBA\" }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4vl2)); + if(log2str(t_rcs(tspt_cs_mod4vl2)) != "{ cs := (\"ABBA\", \"baba\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4vl3)); + if(log2str(t_rcs(tspt_cs_mod4vl3)) != "{ cs := (\"ABBA\", \"baba\", \"Bye\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4c1)); + if(log2str(t_rcs(tspt_cs_mod4c1)) != "{ cs := complement(\"ABBA\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4c2)); + if(log2str(t_rcs(tspt_cs_mod4c2)) != "{ cs := complement(\"ABBA\", \"baba\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4c3)); + if(log2str(t_rcs(tspt_cs_mod4c3)) != "{ cs := complement(\"ABBA\", \"baba\", \"Bye\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4r1)); + if(log2str(t_rcs(tspt_cs_mod4r1)) != "{ cs := (\"A\" .. \"B\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4r2)); + if(log2str(t_rcs(tspt_cs_mod4r2)) != "{ cs := (\"a\" .. \"c\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4pa)); + if(log2str(t_rcs(tspt_cs_mod4pa)) != "{ cs := pattern \"abc*xyz\" }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4pq)); + if(log2str(t_rcs(tspt_cs_mod4pq)) != "{ cs := pattern \"abc?xyz\" }") {setverdict(fail)} else {setverdict(pass)}; + //== + log(t_rcs(tspt_cs_mod4vifp)); + if(log2str(t_rcs(tspt_cs_mod4vifp)) != "{ cs := \"ABBA\" ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4oifp)); + if(log2str(t_rcs(tspt_cs_mod4oifp)) != "{ cs := omit ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4aifp)); + if(log2str(t_rcs(tspt_cs_mod4aifp)) != "{ cs := * ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4qifp)); + if(log2str(t_rcs(tspt_cs_mod4qifp)) != "{ cs := ? ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4al1ifp)); + if(log2str(t_rcs(tspt_cs_mod4al1ifp)) != "{ cs := * length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4al2ifp)); + if(log2str(t_rcs(tspt_cs_mod4al2ifp)) != "{ cs := * length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4ql1ifp)); + if(log2str(t_rcs(tspt_cs_mod4ql1ifp)) != "{ cs := ? length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4ql2ifp)); + if(log2str(t_rcs(tspt_cs_mod4ql2ifp)) != "{ cs := ? length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4vl1ifp)); + if(log2str(t_rcs(tspt_cs_mod4vl1ifp)) != "{ cs := \"ABBA\" ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4vl2ifp)); + if(log2str(t_rcs(tspt_cs_mod4vl2ifp)) != "{ cs := (\"ABBA\", \"baba\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4vl3ifp)); + if(log2str(t_rcs(tspt_cs_mod4vl3ifp)) != "{ cs := (\"ABBA\", \"baba\", \"Bye\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4c1ifp)); + if(log2str(t_rcs(tspt_cs_mod4c1ifp)) != "{ cs := complement(\"ABBA\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4c2ifp)); + if(log2str(t_rcs(tspt_cs_mod4c2ifp)) != "{ cs := complement(\"ABBA\", \"baba\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4c3ifp)); + if(log2str(t_rcs(tspt_cs_mod4c3ifp)) != "{ cs := complement(\"ABBA\", \"baba\", \"Bye\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4r1ifp)); + if(log2str(t_rcs(tspt_cs_mod4r1ifp)) != "{ cs := (\"A\" .. \"B\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4r2ifp)); + if(log2str(t_rcs(tspt_cs_mod4r2ifp)) != "{ cs := (\"a\" .. \"c\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4paifp)); + if(log2str(t_rcs(tspt_cs_mod4paifp)) != "{ cs := pattern \"abc*xyz\" ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4pqifp)); + if(log2str(t_rcs(tspt_cs_mod4pqifp)) != "{ cs := pattern \"abc?xyz\" ifpresent }") {setverdict(fail)} else {setverdict(pass)}; +} + + +testcase tc_cs_mod4v_emb() runs on MC { + var RoRCS vl_good_values := {{cs:="ABBA"}} + var RoRCS vl_wrong_values := {{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4v), vl_good_values,vl_wrong_values); +} + +testcase tc_cs_mod4o_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{cs:=omit}}; + var RoRCS vl_wrong_values := {{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4o), vl_good_values,vl_wrong_values); +} + +testcase tc_cs_mod4a_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"}} + var RoRCS vl_wrong_values := {{}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4a), vl_good_values,vl_wrong_values); +} + +testcase tc_cs_mod4q_emb() runs on MC { + var RoRCS vl_good_values := {{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"}} + var RoRCS vl_wrong_values := {{omit}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4q), vl_good_values,vl_wrong_values); +} + +// t_rcs(tspt_cs_mod4al1 := * length(2); //length restriction +testcase tc_cs_mod4al1_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "}} + var RoRCS vl_wrong_values := {{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4al1), vl_good_values,vl_wrong_values); +} + +// t_rcs(tspt_cs_mod4al2 := * length(2..4); //length restriction +testcase tc_cs_mod4al2_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{"123"},{ "ABC"},{"abc"},{"ABBA"}} + var RoRCS vl_wrong_values := {{""},{"A"},{ "ABBAB"},{"anything"},{"XXXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4al2), vl_good_values,vl_wrong_values); +} + +// t_rcs(tspt_cs_mod4ql1 := ? length(2); //length restriction +testcase tc_cs_mod4ql1_emb() runs on MC { + var RoRCS vl_good_values := {{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "}} + var RoRCS vl_wrong_values := {{omit},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4ql1), vl_good_values,vl_wrong_values); +} + +// t_rcs(tspt_cs_mod4ql2 := ? length(2..4); //length restriction +testcase tc_cs_mod4ql2_emb() runs on MC { + var RoRCS vl_good_values := {{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{"123"},{ "ABC"},{"abc"},{"ABBA"}} + var RoRCS vl_wrong_values := {{omit},{""},{"A"},{ "ABBAB"},{"anything"},{"XXXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4ql2), vl_good_values,vl_wrong_values); +} +//("ABBA") +/* TODO:Adam*/ +testcase tc_cs_mod4vl1_emb() runs on MC { + var RoRCS vl_good_values := {{"ABBA"}} + var RoRCS vl_wrong_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4vl1), vl_good_values,vl_wrong_values); +} + +//("ABBA", "baba") +testcase tc_cs_mod4vl2_emb() runs on MC { + var RoRCS vl_good_values := {{"ABBA"},{"baba"}} + var RoRCS vl_wrong_values := {{omit},{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4vl2), vl_good_values,vl_wrong_values); +} +//("ABBA","baba","Bye") +testcase tc_cs_mod4vl3_emb() runs on MC { + var RoRCS vl_good_values := {{"ABBA"},{"baba"},{"Bye"}} + var RoRCS vl_wrong_values := {{omit},{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4vl3), vl_good_values,vl_wrong_values); +} +// Note: this tests legacy behavior and requires the -M compiler option! +//complement("ABBA") +testcase tc_cs_mod4c1_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" """},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + var RoRCS vl_wrong_values := {{"ABBA"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4c1), vl_good_values,vl_wrong_values); +} +// Note: this tests legacy behavior and requires the -M compiler option! +//complement("ABBA","baba"); +testcase tc_cs_mod4c2_emb() runs on MC { + var RoRCS vl_good_values :={{omit},{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + var RoRCS vl_wrong_values := {{"ABBA"},{"baba"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4c2), vl_good_values,vl_wrong_values); +} +// Note: this tests legacy behavior and requires the -M compiler option! +//complement("ABBA","baba","Bye"); +testcase tc_cs_mod4c3_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + var RoRCS vl_wrong_values := {{"ABBA"},{"baba"},{"Bye"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4c3), vl_good_values,vl_wrong_values); +} + +//("A".."B") +testcase tc_cs_mod4r1_emb() runs on MC { + var RoRCS vl_good_values := {{"A"},{"B"},{"ABBA"},{"AB"},{"AAAAAA"},{"BBBBB"},{"ABBABABA"}} + var RoRCS vl_wrong_values := {{omit},{"ab"},{"ba"},{"Bye"},{"12"},{"A1"},{" "},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4r1),vl_good_values,vl_wrong_values); +} +//"a".."c" +testcase tc_cs_mod4r2_emb() runs on MC { + var RoRCS vl_good_values := {{""},{"a"},{"b"},{"c"},{"ab"},{"cba"},{"abbac"},{"abbababa"},{"cabacccc"}} + var RoRCS vl_wrong_values := {{omit},{"A"},{"B"},{"ABBA"},{"AB"},{"AAAAAAc"},{"BBBBB"},{"ABBABABAc"},{ "Bye"},{"12"},{"abcA1"},{" "},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4r2), vl_good_values,vl_wrong_values); +} +//pattern "abc*xyz" +testcase tc_cs_mod4pa_emb() runs on MC { + var RoRCS vl_good_values := {{ "abcxyz"},{"abcAxyz"},{"abc45xyz" }} + var RoRCS vl_wrong_values := {{""},{"ab"},{"ba"},{"Bye"},{"abcyz"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4pa), vl_good_values,vl_wrong_values); +} +//pattern "abc?xyz" +testcase tc_cs_mod4pq_emb() runs on MC { + var RoRCS vl_good_values := {{"abcAxyz"},{"abc4xyz" }} + var RoRCS vl_wrong_values := {{ "ab"},{"ba"},{"Bye"},{ "abcxyz"},{"abc45xyz"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4pq), vl_good_values,vl_wrong_values); +} + +//=== +testcase tc_cs_mod4vifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{cs:="ABBA"}} + var RoRCS vl_wrong_values := {{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4vifp), vl_good_values,vl_wrong_values); +} + +testcase tc_cs_mod4oifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{cs:=omit}}; + var RoRCS vl_wrong_values := {{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4oifp), vl_good_values,vl_wrong_values); +} + +testcase tc_cs_mod4aifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"}} + var RoRCS vl_wrong_values := {{}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4aifp), vl_good_values,vl_wrong_values); +} + +testcase tc_cs_mod4qifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"}} + var RoRCS vl_wrong_values := {} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4qifp), vl_good_values,vl_wrong_values); +} + +// t_rcs(tspt_cs_mod4al1 := * length(2); //length restriction +testcase tc_cs_mod4al1ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "}} + var RoRCS vl_wrong_values := {{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4al1ifp), vl_good_values,vl_wrong_values); +} + +// t_rcs(tspt_cs_mod4al1 := * length(2..4); //length restriction +testcase tc_cs_mod4al2ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{"123"},{ "ABC"},{"abc"},{"ABBA"}} + var RoRCS vl_wrong_values := {{""},{"A"},{ "ABBAB"},{"anything"},{"XXXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4al2ifp), vl_good_values,vl_wrong_values); +} + +// t_rcs(tspt_cs_mod4al1 := ? length(2); //length restriction +testcase tc_cs_mod4ql1ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "}} + var RoRCS vl_wrong_values := {{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4ql1ifp), vl_good_values,vl_wrong_values); +} + +// t_rcs(tspt_cs_mod4al1ifp := ? length(2..4); //length restriction +testcase tc_cs_mod4ql2ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{"123"},{ "ABC"},{"abc"},{"ABBA"}} + var RoRCS vl_wrong_values := {{""},{"A"},{ "ABBAB"},{"anything"},{"XXXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4ql2ifp), vl_good_values,vl_wrong_values); +} +//("ABBA") +/* TODO:Adam*/ +testcase tc_cs_mod4vl1ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"ABBA"}} + var RoRCS vl_wrong_values := {{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4vl1ifp), vl_good_values,vl_wrong_values); +} + +//("ABBA","baba") //TR: HR98602, 'Matching fault in case of template ("A","B") ifpresent' +testcase tc_cs_mod4vl2ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"ABBA"},{"baba"}} + var RoRCS vl_wrong_values := {{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4vl2ifp), vl_good_values,vl_wrong_values); +} +//("ABBA","baba","Bye") +testcase tc_cs_mod4vl3ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"ABBA"},{"baba"},{"Bye"}} + var RoRCS vl_wrong_values := {{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4vl3ifp), vl_good_values,vl_wrong_values); +} +//complement("ABBA") +testcase tc_cs_mod4c1ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" """},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + var RoRCS vl_wrong_values := {{"ABBA"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4c1ifp), vl_good_values,vl_wrong_values); +} +//complement("ABBA","baba"); +testcase tc_cs_mod4c2ifp_emb() runs on MC { + var RoRCS vl_good_values :={{omit},{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + var RoRCS vl_wrong_values := {{"ABBA"},{"baba"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4c2ifp), vl_good_values,vl_wrong_values); +} +//complement("ABBA","baba","Bye"); +testcase tc_cs_mod4c3ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + var RoRCS vl_wrong_values := {{"ABBA"},{"baba"},{"Bye"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4c3ifp), vl_good_values,vl_wrong_values); +} + +//("A".."B") +testcase tc_cs_mod4r1ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"A"},{"B"},{"ABBA"},{"AB"},{"AAAAAA"},{"BBBBB"},{"ABBABABA"}} + var RoRCS vl_wrong_values := {{"ab"},{"ba"},{"Bye"},{"12"},{"A1"},{" "},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4r1ifp),vl_good_values,vl_wrong_values); +} +//"a".."c" +testcase tc_cs_mod4r2ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{""},{"a"},{"b"},{"c"},{"ab"},{"cba"},{"abbac"},{"abbababa"},{"cabacccc"}} + var RoRCS vl_wrong_values := {{"A"},{"B"},{"ABBA"},{"AB"},{"AAAAAAc"},{"BBBBB"},{"ABBABABAc"},{ "Bye"},{"12"},{"abcA1"},{" "},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4r2ifp), vl_good_values,vl_wrong_values); +} +//pattern "abc*xyz" +testcase tc_cs_mod4paifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"abcxyz"},{"abcAxyz"},{"abc45xyz" }} + var RoRCS vl_wrong_values := {{""},{"ab"},{"ba"},{"Bye"},{"abcyz"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4paifp), vl_good_values,vl_wrong_values); +} +//pattern "abc?xyz" +testcase tc_cs_mod4pqifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"abcAxyz"},{"abc4xyz" }} + var RoRCS vl_wrong_values := {{"ab"},{"ba"},{"Bye"},{ "abcxyz"},{"abc45xyz"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4pqifp), vl_good_values,vl_wrong_values); +} + +//= +testcase tc_cs_ttcn2string_emb() runs on MC { + log(t_rcs(tspt_cs_mod4v)); + if(ttcn2string(t_rcs(tspt_cs_mod4v)) != "{ cs := \"ABBA\" }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4o)); + if(ttcn2string(t_rcs(tspt_cs_mod4o)) != "{ cs := omit }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4a)); + if(ttcn2string(t_rcs(tspt_cs_mod4a)) != "{ cs := * }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4q)); + if(ttcn2string(t_rcs(tspt_cs_mod4q)) != "{ cs := ? }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4al1)); + if(ttcn2string(t_rcs(tspt_cs_mod4al1)) != "{ cs := * length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4al2)); + if(ttcn2string(t_rcs(tspt_cs_mod4al2)) != "{ cs := * length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4ql1)); + if(ttcn2string(t_rcs(tspt_cs_mod4ql1)) != "{ cs := ? length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4ql2)); + if(ttcn2string(t_rcs(tspt_cs_mod4ql2)) != "{ cs := ? length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(">",t_rcs(tspt_cs_mod4vl1),"<"); + if(ttcn2string(t_rcs(tspt_cs_mod4vl1)) != "{ cs := \"ABBA\" }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4vl2)); + if(ttcn2string(t_rcs(tspt_cs_mod4vl2)) != "{ cs := (\"ABBA\", \"baba\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4vl3)); + if(ttcn2string(t_rcs(tspt_cs_mod4vl3)) != "{ cs := (\"ABBA\", \"baba\", \"Bye\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4c1)); + if(ttcn2string(t_rcs(tspt_cs_mod4c1)) != "{ cs := complement(\"ABBA\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4c2)); + if(ttcn2string(t_rcs(tspt_cs_mod4c2)) != "{ cs := complement(\"ABBA\", \"baba\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4c3)); + if(ttcn2string(t_rcs(tspt_cs_mod4c3)) != "{ cs := complement(\"ABBA\", \"baba\", \"Bye\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4r1)); + if(ttcn2string(t_rcs(tspt_cs_mod4r1)) != "{ cs := (\"A\" .. \"B\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4r2)); + if(ttcn2string(t_rcs(tspt_cs_mod4r2)) != "{ cs := (\"a\" .. \"c\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4pa)); + if(ttcn2string(t_rcs(tspt_cs_mod4pa)) != "{ cs := pattern \"abc*xyz\" }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4pq)); + if(ttcn2string(t_rcs(tspt_cs_mod4pq)) != "{ cs := pattern \"abc?xyz\" }") {setverdict(fail)} else {setverdict(pass)}; + //== + log(t_rcs(tspt_cs_mod4vifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4vifp)) != "{ cs := \"ABBA\" ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4oifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4oifp)) != "{ cs := omit ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4aifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4aifp)) != "{ cs := * ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4qifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4qifp)) != "{ cs := ? ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4al1ifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4al1ifp)) != "{ cs := * length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4al2ifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4al2ifp)) != "{ cs := * length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4ql1ifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4ql1ifp)) != "{ cs := ? length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4ql2ifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4ql2ifp)) != "{ cs := ? length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4vl1ifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4vl1ifp)) != "{ cs := \"ABBA\" ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4vl2ifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4vl2ifp)) != "{ cs := (\"ABBA\", \"baba\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4vl3ifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4vl3ifp)) != "{ cs := (\"ABBA\", \"baba\", \"Bye\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4c1ifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4c1ifp)) != "{ cs := complement(\"ABBA\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4c2ifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4c2ifp)) != "{ cs := complement(\"ABBA\", \"baba\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4c3ifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4c3ifp)) != "{ cs := complement(\"ABBA\", \"baba\", \"Bye\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4r1ifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4r1ifp)) != "{ cs := (\"A\" .. \"B\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4r2ifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4r2ifp)) != "{ cs := (\"a\" .. \"c\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4paifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4paifp)) != "{ cs := pattern \"abc*xyz\" ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4pqifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4pqifp)) != "{ cs := pattern \"abc?xyz\" ifpresent }") {setverdict(fail)} else {setverdict(pass)}; +} + +//==== string2ttcn testcases =============================================================== +//These testcases tests if +// 1. string2ttcn can generate the expected template +// 2. string2ttcn can generate the expected value, if possible/required (=true the third arg) +//=========================================================================================== +testcase tc_cs_string2ttcn_mod4v() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4v)),t_rcs(tspt_cs_mod4v)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4v)),t_rcs(tspt_cs_mod4v),true); +} + +testcase tc_cs_string2ttcn_mod4o() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4o)),t_rcs(tspt_cs_mod4o)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4o)),t_rcs(tspt_cs_mod4o),true); +} + +//omit length +testcase tc_cs_string2ttcn_mod4ol() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4ol)),t_rcs(tspt_cs_mod4ol)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4ol)),t_rcs(tspt_cs_mod4ol),false); +} + +testcase tc_cs_string2ttcn_mod4a() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4a)),t_rcs(tspt_cs_mod4a)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4a)),t_rcs(tspt_cs_mod4a),false); +} + +testcase tc_cs_string2ttcn_mod4q() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4q)),t_rcs(tspt_cs_mod4q)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4q)),t_rcs(tspt_cs_mod4q),false); +} + +testcase tc_cs_string2ttcn_mod4al1() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4al1)),t_rcs(tspt_cs_mod4al1)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4al1)),t_rcs(tspt_cs_mod4al1),false); +} + +testcase tc_cs_string2ttcn_mod4al2() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4al2)),t_rcs(tspt_cs_mod4al2)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4al2)),t_rcs(tspt_cs_mod4al2),false); +} + +testcase tc_cs_string2ttcn_mod4ql1() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4ql1)),t_rcs(tspt_cs_mod4ql1)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4ql1)),t_rcs(tspt_cs_mod4ql1),false); +} + +testcase tc_cs_string2ttcn_mod4ql2() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4ql2)),t_rcs(tspt_cs_mod4ql2)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4ql2)),t_rcs(tspt_cs_mod4ql2),false); +} + +testcase tc_cs_string2ttcn_mod4vl1() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4vl1)),t_rcs(tspt_cs_mod4vl1)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4vl1)),t_rcs(tspt_cs_mod4vl1),true); +} + +testcase tc_cs_string2ttcn_mod4vl2() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4vl2)),t_rcs(tspt_cs_mod4vl2)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4vl2)),t_rcs(tspt_cs_mod4vl2),false); +} + +testcase tc_cs_string2ttcn_mod4vl3() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4vl3)),t_rcs(tspt_cs_mod4vl3)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4vl3)),t_rcs(tspt_cs_mod4vl3),false); +} + +testcase tc_cs_string2ttcn_mod4c1() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4c1)),t_rcs(tspt_cs_mod4c1)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4c1)),t_rcs(tspt_cs_mod4c1),false); +} + +testcase tc_cs_string2ttcn_mod4c2() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4c2)),t_rcs(tspt_cs_mod4c2)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4c2)),t_rcs(tspt_cs_mod4c2),false); +} + +testcase tc_cs_string2ttcn_mod4c3() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4c3)),t_rcs(tspt_cs_mod4c3)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4c3)),t_rcs(tspt_cs_mod4c3),false); +} + +testcase tc_cs_string2ttcn_mod4r1() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4r1)),t_rcs(tspt_cs_mod4r1)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4r1)),t_rcs(tspt_cs_mod4r1),false); +} + +testcase tc_cs_string2ttcn_mod4r2() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4r2)),t_rcs(tspt_cs_mod4r2)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4r2)),t_rcs(tspt_cs_mod4r2),false); +} + +testcase tc_cs_string2ttcn_mod4pa() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4pa)),t_rcs(tspt_cs_mod4pa)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4pa)),t_rcs(tspt_cs_mod4pa),false); +} + +testcase tc_cs_string2ttcn_mod4pq() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4pq)),t_rcs(tspt_cs_mod4pq)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4pq)),t_rcs(tspt_cs_mod4pq),false); +} + +// ifp + +testcase tc_cs_string2ttcn_mod4vifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4vifp)),t_rcs(tspt_cs_mod4vifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4vifp)),t_rcs(tspt_cs_mod4vifp),false); +} + +testcase tc_cs_string2ttcn_mod4oifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4oifp)),t_rcs(tspt_cs_mod4oifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4oifp)),t_rcs(tspt_cs_mod4oifp),false); +} + +testcase tc_cs_string2ttcn_mod4aifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4aifp)),t_rcs(tspt_cs_mod4aifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4aifp)),t_rcs(tspt_cs_mod4aifp),false); +} + +testcase tc_cs_string2ttcn_mod4qifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4qifp)),t_rcs(tspt_cs_mod4qifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4qifp)),t_rcs(tspt_cs_mod4qifp),false); +} + +testcase tc_cs_string2ttcn_mod4al1ifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4al1ifp)),t_rcs(tspt_cs_mod4al1ifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4al1ifp)),t_rcs(tspt_cs_mod4al1ifp),false); +} + +testcase tc_cs_string2ttcn_mod4al2ifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4al2ifp)),t_rcs(tspt_cs_mod4al2ifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4al2ifp)),t_rcs(tspt_cs_mod4al2ifp),false); +} + +testcase tc_cs_string2ttcn_mod4ql1ifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4ql1ifp)),t_rcs(tspt_cs_mod4ql1ifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4ql1ifp)),t_rcs(tspt_cs_mod4ql1ifp),false); +} + +testcase tc_cs_string2ttcn_mod4ql2ifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4ql2ifp)),t_rcs(tspt_cs_mod4ql2ifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4ql2ifp)),t_rcs(tspt_cs_mod4ql2ifp),false); +} + +testcase tc_cs_string2ttcn_mod4vl1ifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4vl1ifp)),t_rcs(tspt_cs_mod4vl1ifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4vl1ifp)),t_rcs(tspt_cs_mod4vl1ifp),false); +} + +testcase tc_cs_string2ttcn_mod4vl2ifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4vl2ifp)),t_rcs(tspt_cs_mod4vl2ifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4vl2ifp)),t_rcs(tspt_cs_mod4vl2ifp),false); +} + +testcase tc_cs_string2ttcn_mod4vl3ifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4vl3ifp)),t_rcs(tspt_cs_mod4vl3ifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4vl3ifp)),t_rcs(tspt_cs_mod4vl3ifp),false); +} + +testcase tc_cs_string2ttcn_mod4c1ifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4c1ifp)),t_rcs(tspt_cs_mod4c1ifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4c1ifp)),t_rcs(tspt_cs_mod4c1ifp),false); +} + +testcase tc_cs_string2ttcn_mod4c2ifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4c2ifp)),t_rcs(tspt_cs_mod4c2ifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4c2ifp)),t_rcs(tspt_cs_mod4c2ifp),false); +} + +testcase tc_cs_string2ttcn_mod4c3ifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4c3ifp)),t_rcs(tspt_cs_mod4c3ifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4c3ifp)),t_rcs(tspt_cs_mod4c3ifp),false); +} + +testcase tc_cs_string2ttcn_mod4r1ifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4r1ifp)),t_rcs(tspt_cs_mod4r1ifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4r1ifp)),t_rcs(tspt_cs_mod4r1ifp),false); +} + +testcase tc_cs_string2ttcn_mod4r2ifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4r2ifp)),t_rcs(tspt_cs_mod4r2ifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4r2ifp)),t_rcs(tspt_cs_mod4r2ifp),false); +} + +testcase tc_cs_string2ttcn_mod4paifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4paifp)),t_rcs(tspt_cs_mod4paifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4paifp)),t_rcs(tspt_cs_mod4paifp),false); +} + +testcase tc_cs_string2ttcn_mod4pqifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4pqifp)),t_rcs(tspt_cs_mod4pqifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4pqifp)),t_rcs(tspt_cs_mod4pqifp),false); +} + +control { + + log("***charstring tests****"); + execute(tc_cs_v()); + execute(tc_cs_o()); + execute(tc_cs_a()); + execute(tc_cs_q()); + execute(tc_cs_al1()); + execute(tc_cs_al2()); + execute(tc_cs_ql1()); + execute(tc_cs_ql2()); + //execute(tc_cs_c()); + execute(tc_cs_vl1()); + execute(tc_cs_vl2()); + execute(tc_cs_vl3()); + execute(tc_cs_c1()); + execute(tc_cs_c2()); + execute(tc_cs_c3()); + execute(tc_cs_r1()); + execute(tc_cs_r2()); + execute(tc_cs_pa()); + execute(tc_cs_pq()); + //=== charstring embedded in record ==== + execute(tc_cs_v_emb()); + execute(tc_cs_o_emb()); + execute(tc_cs_a_emb()); + execute(tc_cs_q_emb()); + execute(tc_cs_al1_emb()); + execute(tc_cs_al2_emb()); + execute(tc_cs_ql1_emb()); + execute(tc_cs_ql2_emb()); + //execute(tc_cs_c_emb()); + execute(tc_cs_vl1_emb()); + execute(tc_cs_vl2_emb()); + execute(tc_cs_vl3_emb()); + execute(tc_cs_c1_emb()); + execute(tc_cs_c2_emb()); + execute(tc_cs_c3_emb()); + execute(tc_cs_r1_emb()); + execute(tc_cs_r2_emb()); + execute(tc_cs_pa_emb()); + execute(tc_cs_pq_emb()); + //embedded + ifpresent + execute(tc_cs_vifp_emb()); + execute(tc_cs_oifp_emb()); + execute(tc_cs_aifp_emb()); + execute(tc_cs_qifp_emb()); + execute(tc_cs_al1ifp_emb()); + execute(tc_cs_al2ifp_emb()); + execute(tc_cs_ql1ifp_emb()); + execute(tc_cs_ql2ifp_emb()); + execute(tc_cs_vl1ifp_emb()); + //execute(tc_cs_vl2ifp_emb()); + execute(tc_cs_vl3ifp_emb()); + execute(tc_cs_c1ifp_emb()); + execute(tc_cs_c2ifp_emb()); + execute(tc_cs_c3ifp_emb()); + execute(tc_cs_r1ifp_emb()); + execute(tc_cs_r2ifp_emb()); + execute(tc_cs_paifp_emb()); + execute(tc_cs_pqifp_emb()); + + //======modified modulepar template wth type of charstring==== + execute(tc_cs_ModulePar_emb()); + execute(tc_cs_mod4v_emb()); + execute(tc_cs_mod4o_emb()); + execute(tc_cs_mod4a_emb()); + execute(tc_cs_mod4q_emb()); + execute(tc_cs_mod4al1_emb()); + execute(tc_cs_mod4al2_emb()); + execute(tc_cs_mod4ql1_emb()); + execute(tc_cs_mod4ql2_emb()); + execute(tc_cs_mod4vl1_emb()); + execute(tc_cs_mod4vl2_emb()); + execute(tc_cs_mod4vl3_emb()); + execute(tc_cs_mod4c1_emb()); + execute(tc_cs_mod4c2_emb()); + execute(tc_cs_mod4c3_emb()); + execute(tc_cs_mod4r1_emb()); + execute(tc_cs_mod4r2_emb()); + execute(tc_cs_mod4pa_emb()); + execute(tc_cs_mod4pq_emb()); + //embedded + ifpresent + execute(tc_cs_mod4vifp_emb()); + execute(tc_cs_mod4oifp_emb()); + execute(tc_cs_mod4aifp_emb()); + execute(tc_cs_mod4qifp_emb()); + execute(tc_cs_mod4al1ifp_emb()); + execute(tc_cs_mod4al2ifp_emb()); + execute(tc_cs_mod4ql1ifp_emb()); + execute(tc_cs_mod4ql2ifp_emb()); + execute(tc_cs_mod4vl1ifp_emb()); //Adam solved + execute(tc_cs_mod4vl2ifp_emb()); //Fixed: TR: HR98602, 'Matching fault in case of template ("A","B") ifpresent' + execute(tc_cs_mod4vl3ifp_emb()); + execute(tc_cs_mod4c1ifp_emb()); + execute(tc_cs_mod4c2ifp_emb()); + execute(tc_cs_mod4c3ifp_emb()); + execute(tc_cs_mod4r1ifp_emb()); + execute(tc_cs_mod4r2ifp_emb()); + execute(tc_cs_mod4paifp_emb()); + execute(tc_cs_mod4pqifp_emb()); + + //ttcn2string: + execute(tc_cs_ttcn2string_emb()); + execute(tc_cs_string2ttcn_mod4v()); + execute(tc_cs_string2ttcn_mod4o()); + execute(tc_cs_string2ttcn_mod4ol()); + execute(tc_cs_string2ttcn_mod4a()); + execute(tc_cs_string2ttcn_mod4q()); + execute(tc_cs_string2ttcn_mod4al1()); + execute(tc_cs_string2ttcn_mod4al2()); + execute(tc_cs_string2ttcn_mod4ql1()); + execute(tc_cs_string2ttcn_mod4ql2()); + execute(tc_cs_string2ttcn_mod4vl1()); + execute(tc_cs_string2ttcn_mod4vl2()); + execute(tc_cs_string2ttcn_mod4vl3()); + execute(tc_cs_string2ttcn_mod4c1()); + execute(tc_cs_string2ttcn_mod4c2()); + execute(tc_cs_string2ttcn_mod4c3()); + execute(tc_cs_string2ttcn_mod4r1()); + execute(tc_cs_string2ttcn_mod4r2()); + execute(tc_cs_string2ttcn_mod4pa()); + execute(tc_cs_string2ttcn_mod4pq()); + //ttcn2string with ifpresent + execute(tc_cs_string2ttcn_mod4vifp()); + execute(tc_cs_string2ttcn_mod4oifp()); + execute(tc_cs_string2ttcn_mod4aifp()); + execute(tc_cs_string2ttcn_mod4qifp()); + execute(tc_cs_string2ttcn_mod4al1ifp()); + execute(tc_cs_string2ttcn_mod4al2ifp()); + execute(tc_cs_string2ttcn_mod4ql1ifp()); + execute(tc_cs_string2ttcn_mod4ql2ifp()); + execute(tc_cs_string2ttcn_mod4vl1ifp()); + execute(tc_cs_string2ttcn_mod4vl2ifp()); + execute(tc_cs_string2ttcn_mod4vl3ifp()); + execute(tc_cs_string2ttcn_mod4c1ifp()); + execute(tc_cs_string2ttcn_mod4c2ifp()); + execute(tc_cs_string2ttcn_mod4c3ifp()); + execute(tc_cs_string2ttcn_mod4r1ifp()); + execute(tc_cs_string2ttcn_mod4r2ifp()); + execute(tc_cs_string2ttcn_mod4paifp()); + execute(tc_cs_string2ttcn_mod4pqifp()); + +} + +} diff --git a/Regression_Test_java/src/text2ttcn/component_test.ttcn b/Regression_Test_java/src/text2ttcn/component_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..3c6b1a5d02025478cee9555e932af4f7efbbd3d7 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn/component_test.ttcn @@ -0,0 +1,46 @@ +/****************************************************************************** + * 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 + * Baranyi, Botond + * + ******************************************************************************/ +module component_test +{ + +type component CT {} + +function f_test() runs on CT { + timer tt1:=2.0 + tt1.start + tt1.timeout +} + +testcase tc_component() runs on CT { + var CT a := CT.create("a b.c\t!@#$%^&*(1)[]{};'""\\/,|`~"); + var CT b; + @try { + string2ttcn(ttcn2string(a), b); + if (a != b) { + setverdict(fail, "string2ttcn() result: ", b, ", expected: ", a); + } + b.start(f_test()); + b.done; + setverdict(pass); + } + @catch (err_msg) { + setverdict(fail, "string2ttcn() failed: ", err_msg); + } +} + +control { + log("*** component tests ***"); + execute(tc_component()) +} + +} diff --git a/Regression_Test_java/src/text2ttcn/enum_test.ttcn b/Regression_Test_java/src/text2ttcn/enum_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..b8de1c2135b1e566e0c276f49709d68ff6f4a927 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn/enum_test.ttcn @@ -0,0 +1,238 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +module enum_test +// [.objid{ itu_t(0) identified_organization(4) etsi(0) +// identified_organization(127) ericsson(5) testing(0) +// <put further nodes here if needed>}] +{ + +//========================================================================= +// Import Part +//========================================================================= +import from types2 all; +//import from functions2 all; +//========================================================================= +// Module Parameters +//========================================================================= +modulepar { + template MyEnum tspt_enum_mod4v := omit + template MyEnum tspt_enum_mod4a := first + template MyEnum tspt_enum_mod4q := first + template MyEnum tspt_enum_mod4o := first + template MyEnum tspt_enum_mod4c0 := first + template MyEnum tspt_enum_mod4c1 := first + template MyEnum tspt_enum_mod4c2 := first + template MyEnum tspt_enum_mod4vl1 := omit + template MyEnum tspt_enum_mod4vl2 := omit + //ifpresent version ( in cfg file): + template MyEnum tspt_enum_mod4vifp := omit + template MyEnum tspt_enum_mod4aifp := first + template MyEnum tspt_enum_mod4qifp := first + template MyEnum tspt_enum_mod4oifp := first + template MyEnum tspt_enum_mod4c0ifp := first + template MyEnum tspt_enum_mod4c1ifp := first + template MyEnum tspt_enum_mod4c2ifp := first + template MyEnum tspt_enum_mod4vl1ifp := omit + template MyEnum tspt_enum_mod4vl2ifp := omit +} +//========================================================================= +// Data Types +//========================================================================= + +// Insert data type defintions here if applicable! +// You can use the data_type skeleton! + +//========================================================================= +// Signatures +//========================================================================= + +// Insert signature definitions here if applicable! +// You can use the signature skeleton! + +//========================================================================= +//Port Types +//========================================================================= + +// Insert port type defintions here if applicable! +// You can use the port_type skeleton! + +//========================================================================= +//Component Types +//========================================================================= + +// Insert component type defintions here if applicable! +// You can use the component_type skeleton! + +//========================================================================= +// Constants +//========================================================================= + +// Insert constants here if applicable! +// You can use the constant skeleton! + +//========================================================================= +// Templates +//========================================================================= + +// Insert templates here if applicable! +// You can use the template skeleton! + +//========================================================================= +// Altsteps +//========================================================================= + +// Insert altsteps here if applicable! +// You can use the altstep skeleton! + +//========================================================================= +// Functions +//========================================================================= + +// Insert functions here if applicable! +// You can use the function skeleton! + +//========================================================================= +// Testcases +//========================================================================= +testcase tc_enum_ModulePar() runs on MC { + log(log2str(tspt_enum_mod4v)); + if(log2str(tspt_enum_mod4v) == "first (0)" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4a)); + if(log2str(tspt_enum_mod4a) == "*" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4q)); + if(log2str(tspt_enum_mod4q) == "?" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4o)); + if(log2str(tspt_enum_mod4o) == "omit" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4c0)); + if(log2str(tspt_enum_mod4c0) == "complement(omit)" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4c1)); + if(log2str(tspt_enum_mod4c1) == "complement(first (0))" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4c2)); + if(log2str(tspt_enum_mod4c2) == "complement(first (0), second (1))" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4vl1)); + if(log2str(tspt_enum_mod4vl1) == "first (0)" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4vl2)); + if(log2str(tspt_enum_mod4vl2) == "(first (0), second (1))" ) {setverdict(pass)} else {setverdict(fail)} + + log(log2str(tspt_enum_mod4vifp)); + if(log2str(tspt_enum_mod4vifp) == "first (0) ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4aifp)); + if(log2str(tspt_enum_mod4aifp) == "* ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4qifp)); + if(log2str(tspt_enum_mod4qifp) == "? ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4oifp)); + if(log2str(tspt_enum_mod4oifp) == "omit ifpresent") {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4c0ifp)); + if(log2str(tspt_enum_mod4c0ifp) == "complement(omit) ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4c1ifp)); + if(log2str(tspt_enum_mod4c1ifp) == "complement(first (0)) ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4c2ifp)); + if(log2str(tspt_enum_mod4c2ifp) == "complement(first (0), second (1)) ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4vl1ifp)); + if(log2str(tspt_enum_mod4vl1ifp) == "first (0) ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4vl2ifp)); + if(log2str(tspt_enum_mod4vl2ifp) == "(first (0), second (1)) ifpresent" ) {setverdict(pass)} else {setverdict(fail)} +} + +testcase tc_enum_ModulePar_emb() runs on MC { + log(log2str(t_renum(tspt_enum_mod4v))); + if(log2str(t_renum(tspt_enum_mod4v)) == "{ e := first (0) }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4a))); + if(log2str(t_renum(tspt_enum_mod4a)) == "{ e := * }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4q))); + if(log2str(t_renum(tspt_enum_mod4q)) == "{ e := ? }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4o))); + if(log2str(t_renum(tspt_enum_mod4o)) == "{ e := omit }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4c0))); + if(log2str(t_renum(tspt_enum_mod4c0)) == "{ e := complement(omit) }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4c1))); + if(log2str(t_renum(tspt_enum_mod4c1)) == "{ e := complement(first (0)) }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4c2))); + if(log2str(t_renum(tspt_enum_mod4c2)) == "{ e := complement(first (0), second (1)) }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4vl1))); + if(log2str(t_renum(tspt_enum_mod4vl1)) == "{ e := first (0) }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4vl2))); + if(log2str(t_renum(tspt_enum_mod4vl2)) == "{ e := (first (0), second (1)) }" ) {setverdict(pass)} else {setverdict(fail)} + + log(log2str(t_renum(tspt_enum_mod4vifp))); + if(log2str(t_renum(tspt_enum_mod4vifp)) == "{ e := first (0) ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} //see in EnumModuleParBug.ttcn/cfg + log(log2str(t_renum(tspt_enum_mod4aifp))); + if(log2str(t_renum(tspt_enum_mod4aifp)) == "{ e := * ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4qifp))); + if(log2str(t_renum(tspt_enum_mod4qifp)) == "{ e := ? ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4oifp))); + if(log2str(t_renum(tspt_enum_mod4oifp)) == "{ e := omit ifpresent }") {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4c0ifp))); + if(log2str(t_renum(tspt_enum_mod4c0ifp)) == "{ e := complement(omit) ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4c1ifp))); + if(log2str(t_renum(tspt_enum_mod4c1ifp)) == "{ e := complement(first (0)) ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4c2ifp))); + if(log2str(t_renum(tspt_enum_mod4c2ifp)) == "{ e := complement(first (0), second (1)) ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4vl1ifp))); + if(log2str(t_renum(tspt_enum_mod4vl1ifp)) == "{ e := first (0) ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4vl2ifp))); + if(log2str(t_renum(tspt_enum_mod4vl2ifp)) == "{ e := (first (0), second (1)) ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} +} + + +testcase tc_enum_ttcn2str_emb() runs on MC { + log(ttcn2string(t_renum(tspt_enum_mod4v))); + if(ttcn2string(t_renum(tspt_enum_mod4v)) == "{ e := first }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4a))); + if(ttcn2string(t_renum(tspt_enum_mod4a)) == "{ e := * }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4q))); + if(ttcn2string(t_renum(tspt_enum_mod4q)) == "{ e := ? }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4o))); + if(ttcn2string(t_renum(tspt_enum_mod4o)) == "{ e := omit }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4c0))); + if(ttcn2string(t_renum(tspt_enum_mod4c0)) == "{ e := complement(omit) }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4c1))); + if(ttcn2string(t_renum(tspt_enum_mod4c1)) == "{ e := complement(first) }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4c2))); + if(ttcn2string(t_renum(tspt_enum_mod4c2)) == "{ e := complement(first, second) }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4vl1))); + if(ttcn2string(t_renum(tspt_enum_mod4vl1)) == "{ e := first }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4vl2))); + if(ttcn2string(t_renum(tspt_enum_mod4vl2)) == "{ e := (first, second) }" ) {setverdict(pass)} else {setverdict(fail)} + + log(ttcn2string(t_renum(tspt_enum_mod4vifp))); + if(ttcn2string(t_renum(tspt_enum_mod4vifp)) == "{ e := first ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4aifp))); + if(ttcn2string(t_renum(tspt_enum_mod4aifp)) == "{ e := * ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4qifp))); + if(ttcn2string(t_renum(tspt_enum_mod4qifp)) == "{ e := ? ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4oifp))); + if(ttcn2string(t_renum(tspt_enum_mod4oifp)) == "{ e := omit ifpresent }") {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4c0ifp))); + if(ttcn2string(t_renum(tspt_enum_mod4c0ifp)) == "{ e := complement(omit) ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4c1ifp))); + if(ttcn2string(t_renum(tspt_enum_mod4c1ifp)) == "{ e := complement(first) ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4c2ifp))); + if(ttcn2string(t_renum(tspt_enum_mod4c2ifp)) == "{ e := complement(first, second) ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4vl1ifp))); + if(ttcn2string(t_renum(tspt_enum_mod4vl1ifp)) == "{ e := first ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4vl2ifp))); + if(ttcn2string(t_renum(tspt_enum_mod4vl2ifp)) == "{ e := (first, second) ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} +} +//========================================================================= +// Control +//========================================================================= + +control { + log("***enum tests ********"); + execute(tc_enum_ModulePar()); + execute(tc_enum_ModulePar_emb()); + execute(tc_enum_ttcn2str_emb()); +} + + +} // end of module diff --git a/Regression_Test_java/src/text2ttcn/float_test.ttcn b/Regression_Test_java/src/text2ttcn/float_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..eff0b4b67f690e28df24655842b7118ea7d4b6d6 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn/float_test.ttcn @@ -0,0 +1,369 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +/* +//AUTHOR: ethbaat +//DATE: 2013-12-11 +//VERSION: 1.0 +*/ +module float_test +{ + +//========================================================================= +// Import Part +//========================================================================= +import from types2 all; +import from functions2 all; + +//========================================================================= +// Module Parameters +//========================================================================= + +modulepar { + template float tspt_f_v := 9.0; + template float tspt_f_o := omit; + template float tspt_f_a := *; + template float tspt_f_q := ?; + template float tspt_f_vl1 := (0.0) + template float tspt_f_vl2 := (0.0,1.2) + template float tspt_f_vl3 := (0.0,1.2,-1.9) + template float tspt_f_c1 := complement(0.0); + template float tspt_f_c3 := complement(0.0,1.2,-1.9); + template float tspt_f_r := (-1.9..3.1); + + template float tspt_f1 := *; //overwritten by cfg for value 9.0 + template float tspt_f2 := 4.0; //overwritten by cfg for omit + template float tspt_f3 := 5.0; //overwritten by cfg for * + template float tspt_f4 := *; //overwritten by cfg for ? + template float tspt_f_mod4vl1 := ?; //overwritten by cfg for value list (0.0) + template float tspt_f_mod4vl3 := ?; //overwritten by cfg for value list (0.0,1.2,-1.9) + template float tspt_f6 := *; //overwritten by cfg for 9.0 ifpresent + template float tspt_f7 := *; //overwritten by cfg for omit ifpresent + template float tspt_f8 := *; //overwritten by cfg for * ifpresent + template float tspt_f9 := 9.0; //overwritten by cfg for ? ifpresent + template float tspt_f10 := *; //overwritten by cfg for value list (0.0,1.2,-1.9) ifpresent + template float tspt_f11 := *; //overwritten by cfg for complement + template float tspt_f12 := *; //overwritten by cfg for complement(9.0) ifpresent + template float tspt_f13 := *; + template float tspt_f14 := *; +} + +//========================================================================= +// Data Types +//========================================================================= + +//========================================================================= +// Signatures +//========================================================================= + +//========================================================================= +// Constants +//========================================================================= + +//========================================================================= +// Templates +//========================================================================= + template float t_f_v := 9.0; + template float t_f_o := omit; + template float t_f_a := *; + template float t_f_q := ?; + template float t_f_vl := (0.0,1.2,-1.9) + template float t_f_c := complement(0.0,1.2,-1.9); + +//========================================================================= +// Altsteps +//========================================================================= + +// Insert altsteps here if applicable! +// You can use the altstep skeleton! + +//========================================================================= +// Functions +//========================================================================= + +// Insert functions here if applicable! +// You can use the function skeleton! + +//========================================================================= +// Testcases +//========================================================================= + + testcase tc_float_NoModulePar() runs on MC { + log(t_f_v); + if( log2str(t_f_v) != "9.000000") { setverdict(fail)} else { setverdict(pass) } + if( log2str(t_f_o) != "omit") { setverdict(fail)}; + if( log2str(t_f_a) != "*") { setverdict(fail)}; + if( log2str(t_f_q) != "?") { setverdict(fail)}; + if( log2str(t_f_vl) != "(0.000000, 1.200000, -1.900000)") { setverdict(fail) }; + if( log2str(t_f_c) != "complement(0.000000, 1.200000, -1.900000)") { setverdict(fail) }; + } + + testcase tc_float_ModulePar() runs on MC { + if( log2str(tspt_f_v) != "9.000000") { setverdict(fail)} else { setverdict(pass) } + if( log2str(tspt_f_o) != "omit") { setverdict(fail)}; + if( log2str(tspt_f_a) != "*") { setverdict(fail)}; + if( log2str(tspt_f_q) != "?") { setverdict(fail)}; + log(tspt_f_vl3); + if( log2str(tspt_f_vl1) != "0.000000") { setverdict(fail) }; + if( log2str(tspt_f_vl2) != "(0.000000, 1.200000)") { setverdict(fail) }; + if( log2str(tspt_f_vl3) != "(0.000000, 1.200000, -1.900000)") { setverdict(fail) }; + if( log2str(tspt_f_c1) != "complement(0.000000)") { setverdict(fail) }; + if( log2str(tspt_f_c3) != "complement(0.000000, 1.200000, -1.900000)") { setverdict(fail) }; + //log(tspt_f_r); + if( log2str(tspt_f_r) != "(-1.900000 .. 3.100000)") { setverdict(fail) }; + } + + testcase tc_float_Embedded() runs on MC { + log(t_rec(1,tspt_f_v,omit,omit)); + if( log2str(t_rec(1,tspt_f_v,omit,omit)) != "{ i := 1, f := 9.000000, cs := omit, bs := omit }") { setverdict(fail)} else { setverdict(pass) } + if( log2str(t_rec(1,tspt_f_o,omit,omit)) != "{ i := 1, f := omit, cs := omit, bs := omit }") { setverdict(fail)}; + if( log2str(t_rec(1,tspt_f_a,omit,omit)) != "{ i := 1, f := *, cs := omit, bs := omit }") { setverdict(fail)}; + if( log2str(t_rec(1,tspt_f_q,omit,omit)) != "{ i := 1, f := ?, cs := omit, bs := omit }"){ setverdict(fail)}; + //log(tspt_f_vl3); + if( log2str(t_rec(1,tspt_f_vl1,omit,omit)) != "{ i := 1, f := 0.000000, cs := omit, bs := omit }") { setverdict(fail) }; + if( log2str(t_rec(1,tspt_f_vl2,omit,omit)) != "{ i := 1, f := (0.000000, 1.200000), cs := omit, bs := omit }") { setverdict(fail) }; + if( log2str(t_rec(1,tspt_f_vl3,omit,omit)) != "{ i := 1, f := (0.000000, 1.200000, -1.900000), cs := omit, bs := omit }") { setverdict(fail) }; + if( log2str(t_rec(1,tspt_f_c1,omit,omit)) != "{ i := 1, f := complement(0.000000), cs := omit, bs := omit }") { setverdict(fail) }; + if( log2str(t_rec(1,tspt_f_c3,omit,omit)) != "{ i := 1, f := complement(0.000000, 1.200000, -1.900000), cs := omit, bs := omit }") { setverdict(fail) }; + //log(tspt_f_r); + if( log2str(t_rec(1,tspt_f_r,omit,omit)) != "{ i := 1, f := (-1.900000 .. 3.100000), cs := omit, bs := omit }" ) { setverdict(fail) }; + } + + //value + testcase tc_float_value() runs on MC { + log( tspt_f_v ); + if( log2str(tspt_f_v) != "9.000000" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := {9.0} + var RoF vl_wrong_values := {-1000000.0, 0.0, -1.0, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( tspt_f_v, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_omit() runs on MC { + log( tspt_f_o ); + if( log2str(tspt_f_o) != "omit" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := {} + var RoF vl_wrong_values := {9.0, -1000000.0, 0.0, -1.0, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( tspt_f_o, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_a() runs on MC { + log( tspt_f_a ); + if( log2str(tspt_f_a) != "*" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := {9.0, -1000000.0, 0.0, -1.0, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + var RoF vl_wrong_values := {} + f_checkMatchingValues_float( tspt_f_a, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_q() runs on MC { + log( tspt_f_q ); + if( log2str(tspt_f_q) != "?") { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := {9.0, -1000000.0, 0.0, -1.0, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + var RoF vl_wrong_values := {} + f_checkMatchingValues_float( tspt_f_a, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_vl() runs on MC { + log( tspt_f_vl3 ); + if( log2str(tspt_f_vl3) != "(0.000000, 1.200000, -1.900000)" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := { 0.0, 1.2, -1.9 } + var RoF vl_wrong_values := {9.0, -1000000.0, 0.01, -1.91, 8.99999, 9.0, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( tspt_f_vl3, vl_good_values, vl_wrong_values ); + } + + //range + testcase tc_float_r() runs on MC { + log( tspt_f_r ); + if( log2str(tspt_f_r) != "(-1.900000 .. 3.100000)" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := { -1.900000, -1.8999999, -1.0, 0.0, 1.2, -1.9, 3.1 } + var RoF vl_wrong_values := {3.10001, 9.0, -1000000.0, -1.91, 8.99999, 9.0, 9.0001, -2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( tspt_f_r, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_right_value() runs on MC { + var template float vlt := tspt_f_vl3; + log( vlt ); + if( log2str(vlt) != "(0.000000, 1.200000, -1.900000)" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := { 0.0, 1.2, -1.9 } + var RoF vl_wrong_values := {9.0, -1000000.0, 0.01, -1.91, 8.99999, 9.0, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( vlt, vl_good_values, vl_wrong_values ); + } + + // + //value + testcase tc_float_modified4v() runs on MC { + log( tspt_f1 ); + if( log2str(tspt_f1) != "9.000000" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := {9.0} + var RoF vl_wrong_values := {-1000000.0, 0.0, -1.0, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( tspt_f1, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_modified4o() runs on MC { + log( tspt_f2 ); + if( log2str(tspt_f2) != "omit" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := {} + var RoF vl_wrong_values := {9.0, -1000000.0, 0.0, -1.0, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( tspt_f2, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_modified4a() runs on MC { + log( tspt_f3 ); + if( log2str(tspt_f3) != "*" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := {9.0, -1000000.0, 0.0, -1.0, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + var RoF vl_wrong_values := {} + f_checkMatchingValues_float( tspt_f3, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_modified4q() runs on MC { + log( tspt_f4 ); + if( log2str(tspt_f4) != "?") { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := {9.0, -1000000.0, 0.0, -1.0, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + var RoF vl_wrong_values := {} + f_checkMatchingValues_float( tspt_f4, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_modified4vl1() runs on MC { + log( tspt_f_mod4vl1 ); + if( log2str(tspt_f_mod4vl1) != "0.000000" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := { 0.0 } + var RoF vl_wrong_values := {1.2, -1.9, 9.0, -1000000.0, 0.01, -1.91, 8.99999, 9.0, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( tspt_f_mod4vl1, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_modified4vl3() runs on MC { + log( tspt_f_mod4vl3 ); + if( log2str(tspt_f_mod4vl3) != "(0.000000, 1.200000, -1.900000)" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := { 0.0, 1.2, -1.9 } + var RoF vl_wrong_values := {9.0, -1000000.0, 0.01, -1.91, 8.99999, 9.0, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( tspt_f_mod4vl3, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_modified4c() runs on MC { + var template float vlt := tspt_f11; + log( vlt ); + if( log2str(vlt) != "complement(9.000000)" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := { -1000000.0, 0.01, -1.91, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + var RoF vl_wrong_values := { 9.0 } + f_checkMatchingValues_float( vlt, vl_good_values, vl_wrong_values ); + } + + // modified 4 range from cfg file + testcase tc_float_modified4r() runs on MC { + log( tspt_f13 ); + if( log2str(tspt_f13) != "(-1.900000 .. 3.100000)" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := { -1.900000, -1.8999999, -1.0, 0.0, 1.2, -1.9, 3.1 } + var RoF vl_wrong_values := {3.10001, 9.0, -1000000.0, -1.91, 8.99999, 9.0, 9.0001, -2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( tspt_f13, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_modified4vl_right_value() runs on MC { + var template float vlt := tspt_f_mod4vl3; + log( vlt ); + if( log2str(vlt) != "(0.000000, 1.200000, -1.900000)" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := { 0.0, 1.2, -1.9 } + var RoF vl_wrong_values := {9.0, -1000000.0, 0.01, -1.91, 8.99999, 9.0, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( vlt, vl_good_values, vl_wrong_values ); + } + + //value + testcase tc_float_modified4vifp() runs on MC { + log( tspt_f6 ); + if( log2str(tspt_f6) != "9.000000 ifpresent" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := {9.0} + var RoF vl_wrong_values := {-1000000.0, 0.0, -1.0, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( tspt_f6, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_modified4oifp() runs on MC { + log( tspt_f7 ); + if( log2str(tspt_f7) != "omit ifpresent" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := {} + var RoF vl_wrong_values := {9.0, -1000000.0, 0.0, -1.0, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( tspt_f7, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_modified4aifp() runs on MC { + log( tspt_f8 ); + if( log2str(tspt_f8) != "* ifpresent" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := {9.0, -1000000.0, 0.0, -1.0, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + var RoF vl_wrong_values := {} + f_checkMatchingValues_float( tspt_f8, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_modified4qifp() runs on MC { + log( tspt_f4 ); + if( log2str(tspt_f9) != "? ifpresent") { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := {9.0, -1000000.0, 0.0, -1.0, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + var RoF vl_wrong_values := {} + f_checkMatchingValues_float( tspt_f9, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_modified4vlifp() runs on MC { + log( tspt_f10 ); + if( log2str(tspt_f10) != "(0.000000, 1.200000, -1.900000) ifpresent" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := { 0.0, 1.2, -1.9 } + var RoF vl_wrong_values := {9.0, -1000000.0, 0.01, -1.91, 8.99999, 9.0, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( tspt_f10, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_modified4cifp() runs on MC { + var template float vlt := tspt_f12; + log( vlt ); + if( log2str(vlt) != "complement(9.000000) ifpresent" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := { -1000000.0, 0.01, -1.91, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + var RoF vl_wrong_values := { 9.0 } + f_checkMatchingValues_float( vlt, vl_good_values, vl_wrong_values ); + } + + // modified 4 range from cfg file + testcase tc_float_modified4rifp() runs on MC { + log( tspt_f14 ); + if( log2str(tspt_f14) != "(-1.900000 .. 3.100000) ifpresent" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := { -1.900000, -1.8999999, -1.0, 0.0, 1.2, -1.9, 3.1 } + var RoF vl_wrong_values := {3.10001, 9.0, -1000000.0, -1.91, 8.99999, 9.0, 9.0001, -2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( tspt_f14, vl_good_values, vl_wrong_values ); + } + +//========================================================================= +// Control +//========================================================================= + +control { + log("****float tests****"); + execute(tc_float_NoModulePar()); + execute(tc_float_ModulePar()); + execute(tc_float_Embedded()); + execute(tc_float_value()); + execute(tc_float_omit()); + execute(tc_float_a()); + execute(tc_float_q()); + execute(tc_float_vl()); + execute(tc_float_r()); + execute(tc_float_right_value()); + execute(tc_float_modified4v()); + execute(tc_float_modified4o()); + execute(tc_float_modified4a()); + execute(tc_float_modified4q()); + execute(tc_float_modified4vl1()); + execute(tc_float_modified4vl3()); + execute(tc_float_modified4c()); + execute(tc_float_modified4r()); + execute(tc_float_modified4vl_right_value()); + execute(tc_float_modified4vifp()); + execute(tc_float_modified4oifp()); + execute(tc_float_modified4aifp()); + execute(tc_float_modified4qifp()); + execute(tc_float_modified4vlifp()); + execute(tc_float_modified4cifp()); + execute(tc_float_modified4rifp()); +} + +} // end of module diff --git a/Regression_Test_java/src/text2ttcn/functions2.ttcn b/Regression_Test_java/src/text2ttcn/functions2.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..339c88adf7bb42278a1d3016bebae019f6fb533d --- /dev/null +++ b/Regression_Test_java/src/text2ttcn/functions2.ttcn @@ -0,0 +1,575 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +module functions2 { + +import from types2 all; + + +group g_boolean { + + // setverdict is pass if every value is matching + function f_checkMatchingGoodValues_bool(template boolean pl_b, in RoB pl_rob) { + var integer s:=lengthof(pl_rob) + log("Template: ", pl_b, " values to be matched:", pl_rob) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rob[i],pl_b )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_rob[i],pl_b )); + } else { + setverdict(fail, int2str(i)&". nok"); log( match(pl_rob[i],pl_b )); + } + } + } with { extension "transparent" } + + function f_checkMatchingWrongValues_bool(template boolean pl_b, in RoB pl_rob) { + var integer s:=lengthof(pl_rob) + log("Template: ", pl_b, " values not to be matched:", pl_rob) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rob[i],pl_b )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_rob[i],pl_b )); + } else { + setverdict(pass, int2str(i)&". ok"); log( match(pl_rob[i],pl_b )); + } + } + } with { extension "transparent" } + + + function f_checkMatchingValues_bool(template boolean pl_b, in RoB pl_good_values, in RoB pl_wrong_values) { + f_checkMatchingGoodValues_bool(pl_b,pl_good_values); + f_checkMatchingWrongValues_bool(pl_b,pl_wrong_values); + } + +} + +group g_integer { + + // setverdict is pass if every value is matching + function f_checkMatchingGoodValues_int(template integer pl_i, in RoI pl_roi) { + var integer s:=lengthof(pl_roi) + log("Template: ", pl_i, " values to be matched:", pl_roi) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_roi[i],pl_i )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_roi[i],pl_i )); + } else { + setverdict(fail, int2str(i)&". nok"); log( match(pl_roi[i],pl_i )); + } + } + } with { extension "transparent" } + + function f_checkMatchingWrongValues_int(template integer pl_i, in RoI pl_roi) { + var integer s:=lengthof(pl_roi) + log("Template: ", pl_i, " values not to be matched:", pl_roi) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_roi[i],pl_i )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_roi[i],pl_i )); + } else { + setverdict(pass, int2str(i)&". ok"); log( match(pl_roi[i],pl_i )); + } + } + } with { extension "transparent" } + + function f_checkMatchingValues_int(template integer pl_i, in RoI pl_good_values, in RoI pl_wrong_values) { + f_checkMatchingGoodValues_int( pl_i, pl_good_values); + f_checkMatchingWrongValues_int( pl_i, pl_wrong_values); + } + +}//g_integer + +group g_float{ + + // setverdict is pass if every value is matching + function f_checkMatchingGoodValues_float(template float pl_f, in RoF pl_rof) { + var integer s:=lengthof(pl_rof) + log("Template: ", pl_f, " values to be matched:", pl_rof) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rof[i],pl_f )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_rof[i],pl_f )); + } else { + setverdict(fail, int2str(i)&". nok"); log( match(pl_rof[i],pl_f )); + } + } + } with { extension "transparent" } + + function f_checkMatchingWrongValues_float(template float pl_f, in RoF pl_rof) { + var integer s:=lengthof(pl_rof) + log("Template: ", pl_f, " values not to be matched:", pl_rof) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rof[i],pl_f )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_rof[i],pl_f )); + } else { + setverdict(pass, int2str(i)&". ok"); log( match(pl_rof[i],pl_f )); + } + } + } with { extension "transparent" } + + function f_checkMatchingValues_float(template float pl_f, in RoF pl_good_values, in RoF pl_wrong_values) { + f_checkMatchingGoodValues_float( pl_f, pl_good_values); + f_checkMatchingWrongValues_float( pl_f, pl_wrong_values); + } +} //g_float + +group g_bitstring { + +}//g_bitstring + +group g_octetstring { + + +}//g_octetstring + +group g_hexstring { + + +}//g_hexstring + +group g_charstring { + + function f_checkMatchingGoodValues_cs(template charstring pl_cs,in RoCS pl_rocs) { + var integer s:=lengthof(pl_rocs); + log("Template: ", pl_cs, " values to be matched:", pl_rocs); + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rocs[i],pl_cs )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_rocs[i],pl_cs )); + } else { + setverdict(fail); log(int2str(i)&". nok"); log( match(pl_rocs[i],pl_cs )); + } + } + } with { extension "transparent" } + + function f_checkMatchingWrongValues_cs(template charstring pl_cs, in RoCS pl_rocs) { + var integer s:=lengthof(pl_rocs) + log("Template: ", pl_cs, " values not to be matched:", pl_rocs) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rocs[i], pl_cs )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_rocs[i],pl_cs )); + } else { + setverdict(pass); log(int2str(i)&". ok"); log( match(pl_rocs[i],pl_cs )); + } + } + } with { extension "transparent" } + + function f_checkMatchingValues_cs(template charstring pl_cs,in RoCS pl_good_values, in RoCS pl_wrong_values) { + f_checkMatchingGoodValues_cs( pl_cs, pl_good_values); + f_checkMatchingWrongValues_cs( pl_cs, pl_wrong_values); + } + + function f_checkMatchingGoodValues_rcs(template RCS pl_rcs,in RoRCS pl_rorcs) { + var integer s:=lengthof(pl_rorcs); + log("Template: ", pl_rcs, " values to be matched:", pl_rorcs); + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorcs[i],pl_rcs )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_rorcs[i],pl_rcs )); + } else { + setverdict(fail); log(int2str(i)&". nok"); log( match(pl_rorcs[i],pl_rcs )); + } + } + } with { extension "transparent" } + + function f_checkMatchingWrongValues_rcs(template RCS pl_rcs, in RoRCS pl_rorcs) { + var integer s:=lengthof(pl_rorcs) + log("Template: ", pl_rcs, " values not to be matched:", pl_rorcs) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorcs[i], pl_rcs )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_rorcs[i],pl_rcs )); + } else { + setverdict(pass); log(int2str(i)&". ok"); log( match(pl_rorcs[i],pl_rcs )); + } + } + } with { extension "transparent" } + + function f_checkMatchingValues_rcs(template RCS pl_rcs,in RoRCS pl_good_values, in RoRCS pl_wrong_values) { + f_checkMatchingGoodValues_rcs( pl_rcs, pl_good_values); + f_checkMatchingWrongValues_rcs( pl_rcs, pl_wrong_values); + } +}//g_charstring + +group g_record { + + // setverdict is pass if every value is matching + function f_checkMatchingGoodValues_rec(template REC pl_rec,in RoREC pl_rorec) { + var integer s:=lengthof(pl_rorec); + log("Template: ", pl_rec, " values to be matched:", pl_rorec); + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorec[i],pl_rec )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_rorec[i],pl_rec )); + } else { + setverdict(fail); log(int2str(i)&". nok"); log( match(pl_rorec[i],pl_rec )); + } + } + } //with { extension "transparent" } + + function f_checkMatchingWrongValues_rec(template REC pl_rec, in RoREC pl_rorec) { + var integer s:=lengthof(pl_rorec) + log("Template: ", pl_rec, " values not to be matched:", pl_rorec) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorec[i], pl_rec )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_rorec[i],pl_rec )); + } else { + setverdict(pass); log(int2str(i)&". ok"); log( match(pl_rorec[i],pl_rec )); + } + } + } //with { extension "transparent" } + + function f_checkMatchingValues_rec(template REC pl_rec,in RoREC pl_good_values, in RoREC pl_wrong_values) { + f_checkMatchingGoodValues_rec( pl_rec, pl_good_values); + f_checkMatchingWrongValues_rec( pl_rec, pl_wrong_values); + } + + function f_checkMatchingGoodValues_rec2(template REC2 pl_rec,in RoREC2 pl_rorec) { + var integer s:=lengthof(pl_rorec); + log("Template: ", pl_rec, " values to be matched:", pl_rorec); + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorec[i],pl_rec )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_rorec[i],pl_rec )); + } else { + setverdict(fail); log(int2str(i)&". nok"); log( match(pl_rorec[i],pl_rec )); + } + } + } with { extension "transparent" } + + function f_checkMatchingWrongValues_rec2(template REC2 pl_rec, in RoREC2 pl_rorec) { + var integer s:=lengthof(pl_rorec) + log("Template: ", pl_rec, " values not to be matched:", pl_rorec) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorec[i], pl_rec )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_rorec[i],pl_rec )); + } else { + setverdict(pass); log(int2str(i)&". ok"); log( match(pl_rorec[i],pl_rec )); + } + } + } with { extension "transparent" } + +}//g_record + +group g_recordof { + + // ====record of integer:====== + // setverdict is pass if every value is matching + function f_checkMatchingGoodValues_roi(template RoI pl_roi,in RoRoI pl_roroi) { + var integer s:=lengthof(pl_roroi); + log("Template: ", pl_roi, " values to be matched:", pl_roroi); + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_roroi[i],pl_roi )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_roroi[i],pl_roi )); + } else { + setverdict(fail); log(int2str(i)&". nok"); log( match(pl_roroi[i],pl_roi )); + } + } + } with { extension "transparent" } + + function f_checkMatchingWrongValues_roi(template RoI pl_roi, in RoRoI pl_roroi) { + var integer s:=lengthof(pl_roroi) + log("Template: ", pl_roi, " values not to be matched:", pl_roroi) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_roroi[i], pl_roi )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_roroi[i],pl_roi )); + } else { + setverdict(pass); log(int2str(i)&". ok"); log( match(pl_roroi[i],pl_roi )); + } + } + } with { extension "transparent" } + + function f_checkMatchingValues_roi(template RoI pl_roi,in RoRoI pl_good_values, in RoRoI pl_wrong_values) { + f_checkMatchingGoodValues_roi( pl_roi, pl_good_values); + f_checkMatchingWrongValues_roi( pl_roi, pl_wrong_values); + } + + // ====record of float:====== + + // setverdict is pass if every value is matching + function f_checkMatchingGoodValues_rof(template RoF pl_rof,in RoRoF pl_rorof) { + var integer s:=lengthof(pl_rorof); + log("Template: ", pl_rof, " values to be matched:", pl_rorof); + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorof[i],pl_rof )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_rorof[i],pl_rof )); + } else { + setverdict(fail); log(int2str(i)&". nok"); log( match(pl_rorof[i],pl_rof )); + } + } + } with { extension "transparent" } + + function f_checkMatchingWrongValues_rof(template RoF pl_rof, in RoRoF pl_rorof) { + var integer s:=lengthof(pl_rorof) + log("Template: ", pl_rof, " values not to be matched:", pl_rorof) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorof[i], pl_rof )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_rorof[i],pl_rof )); + } else { + setverdict(pass); log(int2str(i)&". ok"); log( match(pl_rorof[i],pl_rof )); + } + } + } with { extension "transparent" } + + function f_checkMatchingValues_rof(template RoF pl_rof,in RoRoF pl_good_values, in RoRoF pl_wrong_values) { + f_checkMatchingGoodValues_rof( pl_rof, pl_good_values); + f_checkMatchingWrongValues_rof( pl_rof, pl_wrong_values); + } +}//g_recordof + +group g_array { + + //============ AI3 ============================= + // setverdict is pass if every value is matching + function f_checkMatchingGoodValues_ai3(template AI3 pl_ai3,in RoAI3 pl_rofai3, in boolean pl_successExpected:=true) { + var integer s:=lengthof(pl_rofai3); + log("Template: ", pl_ai3, " values to be matched:", pl_rofai3); + for( var integer i :=0; i<s;i:=i+1) { + if(pl_successExpected) { + if( match(pl_rofai3[i],pl_ai3 )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_rofai3[i],pl_ai3 )); + } else { + setverdict(fail); log(int2str(i)&". nok"); log( match(pl_rofai3[i],pl_ai3 )); + } + }else //not pl_successExpected + { + @try { + log(match(pl_rofai3[i], pl_ai3 )) + setverdict(fail); + } + @catch(err_str) { + log( "Expected error: ", err_str); + setverdict(pass) + } + } + } + } //with { extension "transparent" } + + function f_checkMatchingWrongValues_ai3(template AI3 pl_ai3, in RoAI3 pl_rofai3, in boolean pl_successExpected:=true) { + var integer s:=lengthof(pl_rofai3) + log("Template: ", pl_ai3, " values not to be matched:", pl_rofai3) + for( var integer i :=0; i<s;i:=i+1) { + if(pl_successExpected) { + if( match(pl_rofai3[i], pl_ai3 )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_rofai3[i],pl_ai3 )); + } else { + setverdict(pass); log(int2str(i)&". ok"); log( match(pl_rofai3[i],pl_ai3 )); + } + } else //not pl_successExpected + { + @try { + log(match(pl_rofai3[i], pl_ai3 )); + setverdict(fail); + } + @catch(err_str) { + log( "Expected error: ", err_str); + setverdict(pass) + } + } + } + } //with { extension "transparent" } + + function f_checkMatchingValues_ai3( template AI3 pl_ai3,in RoAI3 pl_good_values, in RoAI3 pl_wrong_values, in boolean pl_successExpected := true) { + f_checkMatchingGoodValues_ai3( pl_ai3, pl_good_values, pl_successExpected); + f_checkMatchingWrongValues_ai3( pl_ai3, pl_wrong_values, pl_successExpected); + } + + //=== AI2x3 ==== + +function f_check_AI2x3( template AI2x3 pl_t, RoAI2x3 pl_goodV, RoAI2x3 pl_badV) { + var integer NG := lengthof(pl_goodV); + var integer NB := lengthof(pl_badV); + for(var integer i:=0;i< NG;i:=i+1) { + if( match(pl_goodV[i],pl_t)) { + setverdict(pass) + } else { + setverdict(fail, pl_goodV[i], " should match with ", pl_t ); + } + } + + for(var integer i:=0;i< NB;i:=i+1) { + if( not match(pl_badV[i],pl_t)) { + setverdict(pass); + } else { + setverdict(fail, pl_badV[i], " must not match with ", pl_t ); + } + } +} with { extension "transparent" } + + //======= RAI3 ======== + + // setverdict is pass if every value is matching + function f_checkMatchingGoodValues_rai3(template RAI3 pl_rai3,in RoRAI3 pl_rorai3) { + var integer s:=lengthof(pl_rorai3); + log("Template: ", pl_rai3, " values to be matched:", pl_rorai3); + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorai3[i],pl_rai3 )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_rorai3[i],pl_rai3 )); + } else { + setverdict(fail); log(int2str(i)&". nok"); log( match(pl_rorai3[i],pl_rai3 )); + } + } + } with { extension "transparent" } + + function f_checkMatchingWrongValues_rai3(template RAI3 pl_rai3, in RoRAI3 pl_rorai3) { + var integer s:=lengthof(pl_rorai3) + log("Template: ", pl_rai3, " values not to be matched:", pl_rorai3) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorai3[i], pl_rai3 )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_rorai3[i],pl_rai3 )); + } else { + setverdict(pass); log(int2str(i)&". ok"); log( match(pl_rorai3[i],pl_rai3 )); + } + } + } with { extension "transparent" } + + function f_checkMatchingValues_rai3(template RAI3 pl_rai3,in RoRAI3 pl_good_values, in RoRAI3 pl_wrong_values) { + f_checkMatchingGoodValues_rai3( pl_rai3, pl_good_values); + f_checkMatchingWrongValues_rai3( pl_rai3, pl_wrong_values); + } + + // //============= REC_BAI3 ==================== + // // setverdict is pass if every value is matching + // function f_checkMatchingGoodValues_bai3(template AI3 pl_ai3,in RoAI3 pl_rofai3) { + // var integer s:=lengthof(pl_rofai3); + // log("Template: ", pl_ai3, " values to be matched:", pl_rofai3); + // for( var integer i :=0; i<s;i:=i+1) { + // if( match(pl_rofai3[i],pl_ai3 )) { + // setverdict(pass); log(int2str(i)&". ok");log( match(pl_rofai3[i],pl_ai3 )); + // } else { + // setverdict(fail); log(int2str(i)&". nok"); log( match(pl_rofai3[i],pl_ai3 )); + // } + // } + // } with { extension "transparent" } + // + // function f_checkMatchingWrongValues_bai3(template AI3 pl_ai3, in RoAI3 pl_rofai3) { + // var integer s:=lengthof(pl_rofai3) + // log("Template: ", pl_ai3, " values not to be matched:", pl_rofai3) + // for( var integer i :=0; i<s;i:=i+1) { + // if( match(pl_rofai3[i], pl_ai3 )) { + // setverdict(fail); log(int2str(i)&". nok");log( match(pl_rofai3[i],pl_ai3 )); + // } else { + // setverdict(pass); log(int2str(i)&". ok"); log( match(pl_rofai3[i],pl_ai3 )); + // } + // } + // } with { extension "transparent" } + // + // function f_checkMatchingValues_bai3(template AI3 pl_ai3,in RoAI3 pl_good_values, in RoAI3 pl_wrong_values) { + // f_checkMatchingGoodValues_ai3( pl_ai3, pl_good_values); + // f_checkMatchingWrongValues_ai3( pl_ai3, pl_wrong_values); + // } + +}//g_array + + +group g_set { + + //SET + // setverdict is pass if every value is matching + function f_checkMatchingGoodValues_set(template SET pl_set,in RoSET pl_roset) { + var integer s:=lengthof(pl_roset); + log("Template: ", pl_set, " values to be matched:", pl_roset); + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_roset[i],pl_set )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_roset[i],pl_set )); + } else { + setverdict(fail); log(int2str(i)&". nok"); log( match(pl_roset[i],pl_set )); + } + } + } with { extension "transparent" } + + function f_checkMatchingWrongValues_set(template SET pl_set, in RoSET pl_roset) { + var integer s:=lengthof(pl_roset) + log("Template: ", pl_set, " values not to be matched:", pl_roset) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_roset[i], pl_set )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_roset[i],pl_set )); + } else { + setverdict(pass); log(int2str(i)&". ok"); log( match(pl_roset[i],pl_set )); + } + } + } with { extension "transparent" } + + function f_checkMatchingValues_set(template SET pl_set,in RoSET pl_good_values, in RoSET pl_wrong_values) { + f_checkMatchingGoodValues_set( pl_set, pl_good_values); + f_checkMatchingWrongValues_set( pl_set, pl_wrong_values); + } + + //RSET + // setverdict is pass if every value is matching + function f_checkMatchingGoodValues_rset(template RSET pl_rset,in RoRSET pl_rorset) { + var integer s:=lengthof(pl_rorset); + log("Template: ", pl_rset, " values to be matched:", pl_rorset); + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorset[i],pl_rset )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_rorset[i],pl_rset )); + } else { + setverdict(fail); log(int2str(i)&". nok"); log( match(pl_rorset[i],pl_rset )); + } + } + } with { extension "transparent" } + + function f_checkMatchingWrongValues_rset(template RSET pl_rset, in RoRSET pl_rorset) { + var integer s:=lengthof(pl_rorset) + log("Template: ", pl_rset, " values not to be matched:", pl_rorset) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorset[i], pl_rset )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_rorset[i],pl_rset )); + } else { + setverdict(pass); log(int2str(i)&". ok"); log( match(pl_rorset[i],pl_rset )); + } + } + } with { extension "transparent" } + + function f_checkMatchingValues_rset(template RSET pl_rset,in RoRSET pl_good_values, in RoRSET pl_wrong_values) { + f_checkMatchingGoodValues_rset( pl_rset, pl_good_values); + f_checkMatchingWrongValues_rset( pl_rset, pl_wrong_values); + } + +}//g_set + +group g_setof { + //RSoCS = record of charstring + // setverdict is pass if every value is matching + function f_checkMatchingGoodValues_rsocs(template RSoCS pl_rsocs,in RoRSoCS pl_rorsocs) { + var integer s:=lengthof(pl_rorsocs); + log("Template: ", pl_rsocs, " values to be matched:", pl_rorsocs); + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorsocs[i],pl_rsocs )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_rorsocs[i],pl_rsocs )); + } else { + setverdict(fail); log(int2str(i)&". nok"); log( match(pl_rorsocs[i],pl_rsocs )); + } + } + } with { extension "transparent" } + + function f_checkMatchingWrongValues_rsocs(template RSoCS pl_rsocs, in RoRSoCS pl_rorsocs) { + var integer s:=lengthof(pl_rorsocs) + log("Template: ", pl_rsocs, " values not to be matched:", pl_rorsocs) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorsocs[i], pl_rsocs )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_rorsocs[i],pl_rsocs )); + } else { + setverdict(pass); log(int2str(i)&". ok"); log( match(pl_rorsocs[i],pl_rsocs )); + } + } + } with { extension "transparent" } + + function f_checkMatchingValues_rsocs(template RSoCS pl_rsocs,in RoRSoCS pl_good_values, in RoRSoCS pl_wrong_values) { + f_checkMatchingGoodValues_rsocs( pl_rsocs, pl_good_values); + f_checkMatchingWrongValues_rsocs( pl_rsocs, pl_wrong_values); + } + +}//g_setof + +group g_enumerated { + +}//g_enumerated + +group g_union { + +}//g_union + +group g_anytype { + +}//g_anytype + +} diff --git a/Regression_Test_java/src/text2ttcn/hexstring_test.ttcn b/Regression_Test_java/src/text2ttcn/hexstring_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..ce8e6a7450461b0a500e52086f3099d0096d791d --- /dev/null +++ b/Regression_Test_java/src/text2ttcn/hexstring_test.ttcn @@ -0,0 +1,257 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +/* +//AUTHOR: +//DATE: +//VERSION: +*/ +module hexstring_test +{ + +//========================================================================= +// Import Part +//========================================================================= +import from types2 all; +//import from functions2 all; + +//========================================================================= +// Module Parameters +//========================================================================= +modulepar { + + + //hexstring + //============================================================ + //================ Type: hexstring ========================== + //============================================================ + + //modulepar hexstrings not modified from cfg file + template hexstring tspt_hs_v := 'ABBA'H; + template hexstring tspt_hs_o := omit; + template hexstring tspt_hs_a := *; + template hexstring tspt_hs_q := ?; + template hexstring tspt_hs_al1 := * length(2); //length restriction + template hexstring tspt_hs_al2 := * length(2..4); + template hexstring tspt_hs_ql1 := ? length(2); + template hexstring tspt_hs_ql2 := ? length(2..4); + template hexstring tspt_hs_vl1 := ('ABBA'H); + template hexstring tspt_hs_vl2 := ('ABBA'H,'baba'H); + template hexstring tspt_hs_vl3 := ('ABBA'H,'baba'H,'B12'H); + template hexstring tspt_hs_c1 := complement('ABBA'H) + template hexstring tspt_hs_c2 := complement('ABBA'H,'baba'H); + template hexstring tspt_hs_c3 := complement('ABBA'H,'baba'H,'B12'H); + //template hexstring tspt_hs_r1 := ('A'H..'B'H); //range not allowed + //template hexstring tspt_hs_r2 := ('a'H..'c'H); + template hexstring tspt_hs_pa := 'abc*123'H + template hexstring tspt_hs_pq := 'abc?123'H + + template hexstring tspt_hs_vifp := 'ABBA'H ifpresent; + template hexstring tspt_hs_oifp := omit ifpresent; + template hexstring tspt_hs_aifp := * ifpresent; + template hexstring tspt_hs_qifp := ? ifpresent; + template hexstring tspt_hs_al1ifp := * length(2) ifpresent; //length restriction + template hexstring tspt_hs_al2ifp := * length(2..4) ifpresent; + template hexstring tspt_hs_ql1ifp := ? length(2) ifpresent; + template hexstring tspt_hs_ql2ifp := ? length(2..4) ifpresent; + template hexstring tspt_hs_vl1ifp := ('ABBA'H) ifpresent; + template hexstring tspt_hs_vl2ifp := ('ABBA'H,'baba'H) ifpresent; + template hexstring tspt_hs_vl3ifp := ('ABBA'H,'baba'H,'B12'H) ifpresent; + template hexstring tspt_hs_c1ifp := complement('ABBA'H) ifpresent + template hexstring tspt_hs_c2ifp := complement('ABBA'H,'baba'H) ifpresent; + template hexstring tspt_hs_c3ifp := complement('ABBA'H,'baba'H,'B12'H) ifpresent; + //template hexstring tspt_hs_r1ifp := ('A'H..'B'H) ifpresent; //range not allowed + //template hexstring tspt_hs_r2ifp := ('a'H..'c'H) ifpresent; //range not allowed + template hexstring tspt_hs_paifp := 'abc*123'H ifpresent + template hexstring tspt_hs_pqifp := 'abc?123'H ifpresent + + //modulepar hexstrings modified from cfg file + template hexstring tspt_hs_mod4v := * //after mod:'ABBA'; + template hexstring tspt_hs_mod4o := * //omit; + template hexstring tspt_hs_mod4a := 'A'H //*; + template hexstring tspt_hs_mod4q := ''H //?; + template hexstring tspt_hs_mod4al1 := 'A'H //* length(2); //length restriction + template hexstring tspt_hs_mod4al2 := '12345'H //mofified for: * length(2..4); + template hexstring tspt_hs_mod4ql1 := '12345'H //mofified for:? length(2); + template hexstring tspt_hs_mod4ql2 := '12345'H //mofified for:? length(2..4); + template hexstring tspt_hs_mod4vl1 := ('ABBA'H) //TODO: Adam //It should be mofified for: ('ABBA'H); + template hexstring tspt_hs_mod4vl2 := '12345'H //mofified for:('ABBA'H,'baba'H); + template hexstring tspt_hs_mod4vl3 := '12345'H //mofified for:('ABBA'H,'baba'H,'B12'H); + template hexstring tspt_hs_mod4c1 := '12345'H //mofified for:complement('ABBA') + template hexstring tspt_hs_mod4c2 := '12345'H //mofified for:complement('ABBA','baba'); + template hexstring tspt_hs_mod4c3 := '12345'H //mofified for:complement('ABBA','baba','Bye'); + template hexstring tspt_hs_mod4r1 := '12345'H //mofified for:('A'..'B'); //range + template hexstring tspt_hs_mod4r2 := '12345'H //mofified for:('a'..'c'); + template hexstring tspt_hs_mod4pa := '12345'H //mofified for:pattern 'abc*123' + template hexstring tspt_hs_mod4pq := '12345'H //mofified for:pattern 'abc?123' + + template hexstring tspt_hs_mod4vifp := '12345'H //mofified for:'ABBA' ifpresent; + template hexstring tspt_hs_mod4oifp := '12345'H //mofified for:omit ifpresent; + template hexstring tspt_hs_mod4aifp := '12345'H //mofified for:* ifpresent; + template hexstring tspt_hs_mod4qifp := '12345'H //mofified for:? ifpresent; + template hexstring tspt_hs_mod4al1ifp := '12345'H //mofified for:* length(2) ifpresent; //length restriction + template hexstring tspt_hs_mod4al2ifp := '12345'H //mofified for:* length(2..4) ifpresent; + template hexstring tspt_hs_mod4ql1ifp := '12345'H //mofified for:? length(2) ifpresent; + template hexstring tspt_hs_mod4ql2ifp := '12345'H //mofified for:? length(2..4) ifpresent; + template hexstring tspt_hs_mod4vl1ifp := ('ABBA'H) ifpresent //TODO: Adam //It should be mofified for: ('ABBA'H); + template hexstring tspt_hs_mod4vl2ifp := '12345'H //mofified for:('ABBA','baba') ifpresent; + template hexstring tspt_hs_mod4vl3ifp := '12345'H //mofified for:('ABBA','baba','B12') ifpresent; + template hexstring tspt_hs_mod4c1ifp := '12345'H //mofified for:complement('ABBA') ifpresent + template hexstring tspt_hs_mod4c2ifp := '12345'H //mofified for:complement('ABBA','baba') ifpresent; + template hexstring tspt_hs_mod4c3ifp := '12345'H //mofified for:complement('ABBA','baba','Bye') ifpresent; + //template hexstring tspt_hs_mod4r1ifp := '12345'H //mofified for:('A'H..'B'H) ifpresent; //range + //template hexstring tspt_hs_mod4r2ifp := '12345'H //mofified for:('a'H..'c'H) ifpresent; + template hexstring tspt_hs_mod4paifp := '12345'H //mofified for:pattern 'abc*xyz'H ifpresent + template hexstring tspt_hs_mod4pqifp := '12345'H //mofified for:pattern 'abc?xyz'H ifpresent + +} + +//========================================================================= +// Data Types +//========================================================================= + +// Insert data type defintions here if applicable! +// You can use the data_type skeleton! + +//========================================================================= +// Signatures +//========================================================================= + +// Insert signature definitions here if applicable! +// You can use the signature skeleton! + +//========================================================================= +//Port Types +//========================================================================= + +// Insert port type defintions here if applicable! +// You can use the port_type skeleton! + +//========================================================================= +//Component Types +//========================================================================= + +// Insert component type defintions here if applicable! +// You can use the component_type skeleton! + +//========================================================================= +// Constants +//========================================================================= + +// Insert constants here if applicable! +// You can use the constant skeleton! + +//========================================================================= +// Templates +//========================================================================= + +// Insert templates here if applicable! +// You can use the template skeleton! + +//========================================================================= +// Altsteps +//========================================================================= + +// Insert altsteps here if applicable! +// You can use the altstep skeleton! + +//========================================================================= +// Functions +//========================================================================= + +// Insert functions here if applicable! +// You can use the function skeleton! + +//========================================================================= +// Testcases +//========================================================================= + + testcase tc_hs_ModulePar_emb() runs on MC { + log(t_rhs(tspt_hs_mod4v)); + if(log2str(t_rhs(tspt_hs_mod4v)) != "{ hs := \'ABBA\'H }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4o)); + if(log2str(t_rhs(tspt_hs_mod4o)) != "{ hs := omit }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4a)); + if(log2str(t_rhs(tspt_hs_mod4a)) != "{ hs := * }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4q)); + if(log2str(t_rhs(tspt_hs_mod4q)) != "{ hs := ? }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4al1)); + if(log2str(t_rhs(tspt_hs_mod4al1)) != "{ hs := * length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4al2)); + if(log2str(t_rhs(tspt_hs_mod4al2)) != "{ hs := * length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4ql1)); + if(log2str(t_rhs(tspt_hs_mod4ql1)) != "{ hs := ? length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4ql2)); + if(log2str(t_rhs(tspt_hs_mod4ql2)) != "{ hs := ? length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(">",t_rhs(tspt_hs_mod4vl1),"<"); + if(log2str(t_rhs(tspt_hs_mod4vl1)) != "{ hs := \'ABBA\'H }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4vl2)); + if(log2str(t_rhs(tspt_hs_mod4vl2)) != "{ hs := (\'ABBA\'H, \'BABA\'H) }") {setverdict(fail)} else {setverdict(pass)}; + log(">{ hs := (\'ABBA\'H, \'BABA\'H) }<"); + log(t_rhs(tspt_hs_mod4vl3)); + if(log2str(t_rhs(tspt_hs_mod4vl3)) != "{ hs := (\'ABBA\'H, \'BABA\'H, \'B12\'H) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4c1)); + if(log2str(t_rhs(tspt_hs_mod4c1)) != "{ hs := complement(\'ABBA\'H) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4c2)); + if(log2str(t_rhs(tspt_hs_mod4c2)) != "{ hs := complement(\'ABBA\'H, \'BABA\'H) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4c3)); + if(log2str(t_rhs(tspt_hs_mod4c3)) != "{ hs := complement(\'ABBA\'H, \'BABA\'H, \'B12\'H) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4pa)); + if(log2str(t_rhs(tspt_hs_mod4pa)) != "{ hs := \'ABC*123\'H }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4pq)); + if(log2str(t_rhs(tspt_hs_mod4pq)) != "{ hs := \'ABC?123\'H }") {setverdict(fail)} else {setverdict(pass)}; + //== + log(t_rhs(tspt_hs_mod4vifp)); + if(log2str(t_rhs(tspt_hs_mod4vifp)) != "{ hs := \'ABBA\'H ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4oifp)); + if(log2str(t_rhs(tspt_hs_mod4oifp)) != "{ hs := omit ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4aifp)); + if(log2str(t_rhs(tspt_hs_mod4aifp)) != "{ hs := * ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4qifp)); + if(log2str(t_rhs(tspt_hs_mod4qifp)) != "{ hs := ? ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4al1ifp)); + if(log2str(t_rhs(tspt_hs_mod4al1ifp)) != "{ hs := * length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4al2ifp)); + if(log2str(t_rhs(tspt_hs_mod4al2ifp)) != "{ hs := * length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4ql1ifp)); + if(log2str(t_rhs(tspt_hs_mod4ql1ifp)) != "{ hs := ? length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4ql2ifp)); + if(log2str(t_rhs(tspt_hs_mod4ql2ifp)) != "{ hs := ? length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4vl1ifp)); + if(log2str(t_rhs(tspt_hs_mod4vl1ifp)) != "{ hs := \'ABBA\'H ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4vl2ifp)); + if(log2str(t_rhs(tspt_hs_mod4vl2ifp)) != "{ hs := (\'ABBA\'H, \'BABA\'H) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4vl3ifp)); + if(log2str(t_rhs(tspt_hs_mod4vl3ifp)) != "{ hs := (\'ABBA\'H, \'BABA\'H, \'B12\'H) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4c1ifp)); + if(log2str(t_rhs(tspt_hs_mod4c1ifp)) != "{ hs := complement(\'ABBA\'H) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4c2ifp)); + if(log2str(t_rhs(tspt_hs_mod4c2ifp)) != "{ hs := complement(\'ABBA\'H, \'BABA\'H) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4c3ifp)); + if(log2str(t_rhs(tspt_hs_mod4c3ifp)) != "{ hs := complement(\'ABBA\'H, \'BABA\'H, \'B12\'H) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4paifp)); + if(log2str(t_rhs(tspt_hs_mod4paifp)) != "{ hs := \'ABC*123'H ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4pqifp)); + if(log2str(t_rhs(tspt_hs_mod4pqifp)) != "{ hs := \'ABC?123\'H ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + } + + +//========================================================================= +// Control +//========================================================================= + +control { + log("***hexstring tests****"); + execute(tc_hs_ModulePar_emb()); +} + + +} // end of module diff --git a/Regression_Test_java/src/text2ttcn/integer_test.ttcn b/Regression_Test_java/src/text2ttcn/integer_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..7f501259ec5f4f1c03fc92e63b574cadbd2eddb1 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn/integer_test.ttcn @@ -0,0 +1,371 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +/* +//AUTHOR: ethbaat +//DATE: 2013-12-11 +//VERSION: 1.0 +*/ +module integer_test +{ + +//========================================================================= +// Import Part +//========================================================================= + +import from types2 all; +import from functions2 all; + +//========================================================================= +// Module Parameters +//========================================================================= +modulepar { + //integer + integer tsp_j := 0; + template integer tspt_i_v := 9; + template integer tspt_i_o := omit; + template integer tspt_i_a := *; + template integer tspt_i_q := ?; + template integer tspt_i_vl1 := (1); + template integer tspt_i_vl2 := (0,1); + template integer tspt_i_vl3 := (0,1,-1); + template integer tspt_i_c := complement(0,1,-1); + template integer tspt_i_r := (1..4); //range + + //templates overwritten: + template integer tspt_i1 := *; //overwritten by cfg for value 9 + template integer tspt_i2 := 4; //overwritten by cfg for omit + template integer tspt_i3 := 5; //overwritten by cfg for * + template integer tspt_i4 := *; //overwritten by cfg for ? + template integer tspt_i5 := ?; //overwritten by cfg for value list (0,1,-1) + template integer tspt_i6 := *; //overwritten by cfg for 9 ifpresent + template integer tspt_i7 := *; //overwritten by cfg for omit + template integer tspt_i8 := *; //overwritten by cfg for * + template integer tspt_i9 := *; //overwritten by cfg for ? + template integer tspt_i10 := *; //overwritten by cfg for value list (0,1,-1) + template integer tspt_i11 := *; //overwritten by cfg for complement +} + +//========================================================================= +// Data Types +//========================================================================= + +// Insert data type defintions here if applicable! +// You can use the data_type skeleton! + +//========================================================================= +// Signatures +//========================================================================= + +// Insert signature definitions here if applicable! +// You can use the signature skeleton! + +//========================================================================= +//Port Types +//========================================================================= + +// Insert port type defintions here if applicable! +// You can use the port_type skeleton! + +//========================================================================= +//Component Types +//========================================================================= + +// Insert component type defintions here if applicable! +// You can use the component_type skeleton! + +//========================================================================= +// Constants +//========================================================================= + +// Insert constants here if applicable! +// You can use the constant skeleton! + +//========================================================================= +// Templates +//========================================================================= + + template REC t_rec(template integer pl_i, template float pl_f, template charstring pl_cs, template bitstring pl_bs) := { + i:= pl_i, + f:= pl_f, + cs:=pl_cs, + bs:=pl_bs + } + + template integer t_i_v := 9; + template integer t_i_o := omit; + template integer t_i_a := *; + template integer t_i_q := ?; + template integer t_i_vl := (0,1,-1) + template integer t_i_c := complement(0,1,-1); +//========================================================================= +// Functions +//========================================================================= + +// Insert functions here if applicable! +// You can use the function skeleton! + +//========================================================================= +// Testcases +//========================================================================= + + //Goal: simple integer template is accepted as modulepar and it can be used + testcase tc_integer_NoModulePar() runs on MC { + if( log2str(t_i_v) != "9") { setverdict(fail)} else { setverdict(pass) } + if( log2str(t_i_o) != "omit") { setverdict(fail)}; + if( log2str(t_i_a) != "*") { setverdict(fail)}; + if( log2str(t_i_q) != "?") { setverdict(fail)}; + //log(t_i_vl); + if( log2str(t_i_vl) != "(0, 1, -1)") { setverdict(fail) }; + if( log2str(t_i_c) != "complement(0, 1, -1)") { setverdict(fail) }; + } + + testcase tc_integer_NoModulePar_Embedded() runs on MC { + log(t_rec(t_i_v,omit,omit,omit)); + if( log2str(t_rec(t_i_v,omit,omit,omit)) != "{ i := 9, f := omit, cs := omit, bs := omit }") { setverdict(fail)} else { setverdict(pass) } + log(t_rec(t_i_o,omit,omit,omit)); + if( log2str(t_rec(t_i_o,omit,omit,omit)) != "{ i := omit, f := omit, cs := omit, bs := omit }" ) { setverdict(fail)}; + log(t_rec(t_i_a,omit,omit,omit)); + if( log2str(t_rec(t_i_a,omit,omit,omit)) != "{ i := *, f := omit, cs := omit, bs := omit }" ) { setverdict(fail)}; + log(t_rec(t_i_q,omit,omit,omit)); + if( log2str(t_rec(t_i_q,omit,omit,omit)) != "{ i := ?, f := omit, cs := omit, bs := omit }") { setverdict(fail)}; + log( t_rec(t_i_vl,omit,omit,omit)); + if( log2str(t_rec(t_i_vl,omit,omit,omit)) != "{ i := (0, 1, -1), f := omit, cs := omit, bs := omit }") { setverdict(fail) }; + log( t_rec(t_i_c,omit,omit,omit)); + if( log2str(t_rec(t_i_c,omit,omit,omit)) != "{ i := complement(0, 1, -1), f := omit, cs := omit, bs := omit }") { setverdict(fail) }; + } + + testcase tc_integer_Embedded() runs on MC { + log(t_rec(tspt_i_v,omit,omit,omit)); + if( log2str(t_rec(tspt_i_v,omit,omit,omit)) != "{ i := 9, f := omit, cs := omit, bs := omit }") { setverdict(fail)} else { setverdict(pass) } + log(t_rec(tspt_i_o,omit,omit,omit)); + if( log2str(t_rec(tspt_i_o,omit,omit,omit)) != "{ i := omit, f := omit, cs := omit, bs := omit }" ) { setverdict(fail)}; + log(t_rec(tspt_i_a,omit,omit,omit)); + if( log2str(t_rec(tspt_i_a,omit,omit,omit)) != "{ i := *, f := omit, cs := omit, bs := omit }" ) { setverdict(fail)}; + log(t_rec(tspt_i_q,omit,omit,omit)); + if( log2str(t_rec(tspt_i_q,omit,omit,omit)) != "{ i := ?, f := omit, cs := omit, bs := omit }") { setverdict(fail)}; + log( t_rec(tspt_i_vl1,omit,omit,omit)); + if( log2str(t_rec(tspt_i_vl1,omit,omit,omit)) != "{ i := 1, f := omit, cs := omit, bs := omit }") { setverdict(fail) }; + log( t_rec(tspt_i_vl2,omit,omit,omit)); + if( log2str(t_rec(tspt_i_vl2,omit,omit,omit)) != "{ i := (0, 1), f := omit, cs := omit, bs := omit }") { setverdict(fail) }; + log( t_rec(tspt_i_vl3,omit,omit,omit)); + if( log2str(t_rec(tspt_i_vl3,omit,omit,omit)) != "{ i := (0, 1, -1), f := omit, cs := omit, bs := omit }") { setverdict(fail) }; + log( t_rec(tspt_i_c,omit,omit,omit)); + if( log2str(t_rec(tspt_i_c,omit,omit,omit)) != "{ i := complement(0, 1, -1), f := omit, cs := omit, bs := omit }") { setverdict(fail) }; + } + + testcase tc_integer_Embedded_value() runs on MC { + template REC vlt:=t_rec(tspt_i_v,omit,omit,omit); + var RoREC vl_good_values := {{ 9,omit,omit,omit}}; + var RoREC vl_wrong_values := { { 10,omit,omit,omit}, { 9,1.0,omit,omit},{ 9,1.0,"lambada",'01'B}, { 10000,1.0,"lambada",'01'B} }; + f_checkMatchingValues_rec( vlt, vl_good_values, vl_wrong_values ); + } + + testcase tc_integer_Embedded_complement() runs on MC { + template REC vlt:=t_rec(tspt_i_c,omit,omit,omit); + var RoREC vl_good_values := { {2,omit,omit,omit},{3,omit,omit,omit},{4,omit,omit,omit},{-2,omit,omit,omit}}; + var RoREC vl_wrong_values := { {1,omit,omit,omit},{-1,omit,omit,omit},{0,omit,omit,omit},{ 9,1.0,omit,omit},{ 9,1.0,"lambada",'01'B}, { 10000,1.0,"lambada",'01'B} }; + f_checkMatchingValues_rec( vlt, vl_good_values, vl_wrong_values ); + } + + testcase tc_integer_Embedded_range() runs on MC { + template REC vlt:=t_rec(tspt_i_r,omit,omit,omit); + var RoREC vl_good_values := {{1,omit,omit,omit},{2,omit,omit,omit},{3,omit,omit,omit},{4,omit,omit,omit}}; + var RoREC vl_wrong_values := { {-1,omit,omit,omit},{5,omit,omit,omit},{9,omit,omit,omit},{ 10,omit,omit,omit}, { 9,1.0,omit,omit},{ 9,1.0,"lambada",'01'B}, { 10000,1.0,"lambada",'01'B} }; + f_checkMatchingValues_rec( vlt, vl_good_values, vl_wrong_values ); + } + + //value + testcase tc_integer_value() runs on MC { + log( tspt_i_v ); + if( log2str(tspt_i_v) != "9" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {9} + var RoI vl_wrong_values := {-1000000, 0, -1,2,20001, 4294967296, 4294967296+1} + f_checkMatchingValues_int( tspt_i_v, vl_good_values, vl_wrong_values ); + } + + //omit + testcase tc_integer_omit() runs on MC { + log( tspt_i_o ); + if( log2str(tspt_i_o) != "omit" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {} + var RoI vl_wrong_values := { -100000, -1, 0,1,9, 4294967296, 4294967296+1} + f_checkMatchingValues_int( tspt_i_o, vl_good_values, vl_wrong_values ); + } + + //asterix + testcase tc_integer_a() runs on MC { + log( tspt_i_a ); + if( log2str(tspt_i_a) != "*" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {-100000, -1, 0,1,9, 4294967296, 4294967296+1} + var RoI vl_wrong_values := {} + f_checkMatchingValues_int( tspt_i_a, vl_good_values, vl_wrong_values ); + } + + testcase tc_integer_q() runs on MC { + log( tspt_i_q ); + if( log2str(tspt_i_q) != "?" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {-100000, -1, 0,1, 4294967296, 4294967296+1} + var RoI vl_wrong_values := {} + f_checkMatchingValues_int( tspt_i_q, vl_good_values, vl_wrong_values ); + } + //Goal: to test if integer template is modified from cfg file: + //value list + testcase tc_integer_vl() runs on MC { + log( tspt_i_vl3 ); + if( log2str(tspt_i_vl3) != "(0, 1, -1)" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {-1,0,1} + var RoI vl_wrong_values := {-1000000,2,9,20001} + f_checkMatchingValues_int(tspt_i_vl3, vl_good_values,vl_wrong_values); + } + + //goal: to test if template modulepar can be a right value + testcase tc_integer_vl_right_value() runs on MC { + var template integer vlt := tspt_i_vl3; + log( tspt_i_vl3 ); + if( log2str(vlt) != "(0, 1, -1)" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {-1,0,1} + var RoI vl_wrong_values := {-1000000,2,20001} + f_checkMatchingValues_int(vlt, vl_good_values,vl_wrong_values); + } + + //integer modulepar templates modified from cfg file: + + // for value + testcase tc_integer_modified4v() runs on MC { + log( tspt_i1 ); + if( log2str(tspt_i1) != "9" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {9} + var RoI vl_wrong_values := {-1000000, 0, -1,2,20001, 4294967296, 4294967296+1} + f_checkMatchingValues_int( tspt_i1, vl_good_values, vl_wrong_values ); + } + + //for omit + testcase tc_integer_modified4o() runs on MC { + log( tspt_i2 ); + if( log2str(tspt_i2) != "omit" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {} + var RoI vl_wrong_values := { -100000, -1, 0,1,9, 4294967296, 4294967296+1} + f_checkMatchingValues_int( tspt_i2, vl_good_values, vl_wrong_values ); + } + + //asterix + testcase tc_integer_modified4a() runs on MC { + log( tspt_i3 ); + if( log2str(tspt_i3) != "*" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {-100000, -1, 0,1,9, 4294967296, 4294967296+1} + var RoI vl_wrong_values := {} + f_checkMatchingValues_int( tspt_i3, vl_good_values, vl_wrong_values ); + } + + testcase tc_integer_modified4q() runs on MC { + log( tspt_i4 ); + if( log2str(tspt_i4) != "?" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {-100000, -1, 0,1,9, 4294967296, 4294967296+1} + var RoI vl_wrong_values := {} + f_checkMatchingValues_int( tspt_i4, vl_good_values, vl_wrong_values ); + } + + //value list + testcase tc_integer_modified4vl() runs on MC { + log( tspt_i5 ); + if( log2str(tspt_i5) != "(0, 1, -1)" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {-1,0,1} + var RoI vl_wrong_values := {-1000000,2,20001} + f_checkMatchingValues_int(tspt_i5, vl_good_values,vl_wrong_values); + } + + // for value + testcase tc_integer_modified4vifp() runs on MC { + log( tspt_i6 ); + if( log2str(tspt_i6) != "9 ifpresent" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {9} + var RoI vl_wrong_values := {-1000000, 0, -1,2,20001, 4294967296, 4294967296+1} + f_checkMatchingValues_int( tspt_i6, vl_good_values, vl_wrong_values ); + } + //for omit + testcase tc_integer_modified4oifp() runs on MC { + log( tspt_i7 ); + if( log2str(tspt_i7) != "omit ifpresent" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {} + var RoI vl_wrong_values := { -100000, -1, 0,1,9, 4294967296, 4294967296+1} + f_checkMatchingValues_int( tspt_i7, vl_good_values, vl_wrong_values ); + } + + //asterix + testcase tc_integer_modified4aifp() runs on MC { + log( tspt_i8 ); + if( log2str(tspt_i8) != "* ifpresent" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {-100000, -1, 0,1,9, 4294967296, 4294967296+1} + var RoI vl_wrong_values := {} + f_checkMatchingValues_int( tspt_i8, vl_good_values, vl_wrong_values ); + } + + testcase tc_integer_modified4qifp() runs on MC { + log( tspt_i9 ); + if( log2str(tspt_i9) != "? ifpresent" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {-100000, -1, 0,1,9, 4294967296, 4294967296+1} + var RoI vl_wrong_values := {} + f_checkMatchingValues_int( tspt_i9, vl_good_values, vl_wrong_values ); + } + + //value list + testcase tc_integer_modified4vlifp() runs on MC { + log( tspt_i10 ); + if( log2str(tspt_i10) != "(0, 1, -1) ifpresent" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {-1,0,1} + var RoI vl_wrong_values := {-1000000,2,20001} + f_checkMatchingValues_int(tspt_i10, vl_good_values,vl_wrong_values); + } + + //complement + testcase tc_integer_modified4c() runs on MC { + log( tspt_i11); + if( log2str(tspt_i11) != "complement(9)" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {-100000, -1, 0,1, 4294967296, 4294967296+1} + var RoI vl_wrong_values := {9} + f_checkMatchingValues_int( tspt_i11, vl_good_values, vl_wrong_values ); + } + + + +//========================================================================= +// Control +//========================================================================= +control { + log("****Integer tests****") + execute(tc_integer_NoModulePar()); + execute(tc_integer_NoModulePar_Embedded()); //with template record containing template argument + execute(tc_integer_Embedded()); + execute(tc_integer_Embedded_value()); + execute(tc_integer_Embedded_complement()); + execute(tc_integer_Embedded_range()); + execute(tc_integer_value()); + execute(tc_integer_omit()); + execute(tc_integer_a()); + execute(tc_integer_q()); + execute(tc_integer_vl()); + execute(tc_integer_vl_right_value()); + //integer templates modified from cfg file" + execute(tc_integer_modified4v()); + execute(tc_integer_modified4o()); + execute(tc_integer_modified4a()); + execute(tc_integer_modified4q()); + execute(tc_integer_modified4vl()); + execute(tc_integer_modified4vifp()); + execute(tc_integer_modified4oifp()); + execute(tc_integer_modified4aifp()); + execute(tc_integer_modified4qifp()); + execute(tc_integer_modified4vlifp()); + execute(tc_integer_modified4c()); +} + +} // end of module diff --git a/Regression_Test_java/src/text2ttcn/objid_test.ttcn b/Regression_Test_java/src/text2ttcn/objid_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..39c0856e5863f20ca9cbe9b3df9770d01f1996ae --- /dev/null +++ b/Regression_Test_java/src/text2ttcn/objid_test.ttcn @@ -0,0 +1,38 @@ +/****************************************************************************** + * 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 + * Baranyi, Botond + * + ******************************************************************************/ +module objid_test +{ + +type component CT {} + +testcase tc_objid() runs on CT { + const objid a := objid { itu_t(0) identified_organization(4) etsi(0) }; + var objid b; + @try { + string2ttcn(ttcn2string(a), b); + if (a != b) { + setverdict(fail, "string2ttcn() result: ", b, ", expected: ", a); + } + setverdict(pass); + } + @catch (err_msg) { + setverdict(fail, "string2ttcn() failed: ", err_msg); + } +} + +control { + log("*** objid tests ***"); + execute(tc_objid()) +} + +} diff --git a/Regression_Test_java/src/text2ttcn/octetstring_test.ttcn b/Regression_Test_java/src/text2ttcn/octetstring_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..4eb14793ccb46de4a0bdd78b9a6fc4ca07f629c0 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn/octetstring_test.ttcn @@ -0,0 +1,247 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +/* +//AUTHOR: +//DATE: +//VERSION: +*/ +module octetstring_test +{ + +//========================================================================= +// Import Part +//========================================================================= +import from types2 all; +//import from functions2 all; +//========================================================================= +// Module Parameters +//========================================================================= + +modulepar { + //modulepar octetstrings not modified from cfg file + template octetstring tspt_os_v := 'ABBA'O; + template octetstring tspt_os_o := omit; + template octetstring tspt_os_a := *; + template octetstring tspt_os_q := ?; + template octetstring tspt_os_al1 := * length(2); //length restriction + template octetstring tspt_os_al2 := * length(2..4); + template octetstring tspt_os_ql1 := ? length(2); + template octetstring tspt_os_ql2 := ? length(2..4); + template octetstring tspt_os_vl1 := ('ABBA'O); + template octetstring tspt_os_vl2 := ('ABBA'O,'baba'O); + template octetstring tspt_os_vl3 := ('ABBA'O,'baba'O,'B120'O); + template octetstring tspt_os_c1 := complement('ABBA'O) + template octetstring tspt_os_c2 := complement('ABBA'O,'baba'O); + template octetstring tspt_os_c3 := complement('ABBA'O,'baba'O,'B120'O); + //template octetstring tspt_os_r1 := ('A'O..'B'O); //range not allowed + //template octetstring tspt_os_r2 := ('a'O..'c'O); + template octetstring tspt_os_pa := 'abcd*1234'O + template octetstring tspt_os_pq := 'abcd?1234'O + + template octetstring tspt_os_vifp := 'ABBA'O ifpresent; + template octetstring tspt_os_oifp := omit ifpresent; + template octetstring tspt_os_aifp := * ifpresent; + template octetstring tspt_os_qifp := ? ifpresent; + template octetstring tspt_os_al1ifp := * length(2) ifpresent; //length restriction + template octetstring tspt_os_al2ifp := * length(2..4) ifpresent; + template octetstring tspt_os_ql1ifp := ? length(2) ifpresent; + template octetstring tspt_os_ql2ifp := ? length(2..4) ifpresent; + template octetstring tspt_os_vl1ifp := ('ABBA'O) ifpresent; + template octetstring tspt_os_vl2ifp := ('ABBA'O,'baba'O) ifpresent; + template octetstring tspt_os_vl3ifp := ('ABBA'O,'baba'O,'B120'O) ifpresent; + template octetstring tspt_os_c1ifp := complement('ABBA'O) ifpresent + template octetstring tspt_os_c2ifp := complement('ABBA'O,'baba'O) ifpresent; + template octetstring tspt_os_c3ifp := complement('ABBA'O,'baba'O,'B120'O) ifpresent; + //template octetstring tspt_os_r1ifp := ('A'O..'B'O) ifpresent; //range not allowed + //template octetstring tspt_os_r2ifp := ('a'O..'c'O) ifpresent; //range not allowed + template octetstring tspt_os_paifp := 'abcd*1234'O ifpresent + template octetstring tspt_os_pqifp := 'abcd?1234'O ifpresent + + //modulepar octetstrings modified from cfg file + template octetstring tspt_os_mod4v := * //after mod:'ABBA'; + template octetstring tspt_os_mod4o := * //omit; + template octetstring tspt_os_mod4a := 'AB'O //*; + template octetstring tspt_os_mod4q := ''O //?; + template octetstring tspt_os_mod4al1 := 'AB'O //* length(2); //length restriction + template octetstring tspt_os_mod4al2 := '1234'O //mofified for: * length(2..4); + template octetstring tspt_os_mod4ql1 := '1234'O //mofified for:? length(2); + template octetstring tspt_os_mod4ql2 := '1234'O //mofified for:? length(2..4); + template octetstring tspt_os_mod4vl1 := ('ABBA'O) //TODO: Adam //It should be mofified for: ('ABBA'O); + template octetstring tspt_os_mod4vl2 := '1234'O //mofified for:('ABBA'O,'baba'O); + template octetstring tspt_os_mod4vl3 := '1234'O //mofified for:('ABBA'O,'baba'O,'B12'O); + template octetstring tspt_os_mod4c1 := '1234'O //mofified for:complement('ABBA') + template octetstring tspt_os_mod4c2 := '1234'O //mofified for:complement('ABBA','baba'); + template octetstring tspt_os_mod4c3 := '1234'O //mofified for:complement('ABBA','baba','Bye'); + template octetstring tspt_os_mod4r1 := '1234'O //mofified for:('A'..'B'); //range + template octetstring tspt_os_mod4r2 := '1234'O //mofified for:('a'..'c'); + template octetstring tspt_os_mod4pa := '1234'O //mofified for:pattern 'abc*123' + template octetstring tspt_os_mod4pq := '1234'O //mofified for:pattern 'abc?123' + + template octetstring tspt_os_mod4vifp := '1234'O //mofified for:'ABBA' ifpresent; + template octetstring tspt_os_mod4oifp := '1234'O //mofified for:omit ifpresent; + template octetstring tspt_os_mod4aifp := '1234'O //mofified for:* ifpresent; + template octetstring tspt_os_mod4qifp := '1234'O //mofified for:? ifpresent; + template octetstring tspt_os_mod4al1ifp := '1234'O //mofified for:* length(2) ifpresent; //length restriction + template octetstring tspt_os_mod4al2ifp := '1234'O //mofified for:* length(2..4) ifpresent; + template octetstring tspt_os_mod4ql1ifp := '1234'O //mofified for:? length(2) ifpresent; + template octetstring tspt_os_mod4ql2ifp := '1234'O //mofified for:? length(2..4) ifpresent; + template octetstring tspt_os_mod4vl1ifp := ('ABBA'O) ifpresent //TODO: Adam //It should be mofified for: ('ABBA'O); + template octetstring tspt_os_mod4vl2ifp := '1234'O //mofified for:('ABBA','baba') ifpresent; + template octetstring tspt_os_mod4vl3ifp := '1234'O //mofified for:('ABBA','baba','B12') ifpresent; + template octetstring tspt_os_mod4c1ifp := '1234'O //mofified for:complement('ABBA') ifpresent + template octetstring tspt_os_mod4c2ifp := '1234'O //mofified for:complement('ABBA','baba') ifpresent; + template octetstring tspt_os_mod4c3ifp := '1234'O //mofified for:complement('ABBA','baba','Bye') ifpresent; + //template octetstring tspt_os_mod4r1ifp := '1234'O //mofified for:('A'O..'B'O) ifpresent; //range + //template octetstring tspt_os_mod4r2ifp := '1234'O //mofified for:('a'O..'c'O) ifpresent; + template octetstring tspt_os_mod4paifp := '1234'O //mofified for:pattern 'abc*xyz'O ifpresent + template octetstring tspt_os_mod4pqifp := '1234'O //mofified for:pattern 'abc?xyz'O ifpresent + +} + +//========================================================================= +// Data Types +//========================================================================= + +// Insert data type defintions here if applicable! +// You can use the data_type skeleton! + +//========================================================================= +// Signatures +//========================================================================= + +// Insert signature definitions here if applicable! +// You can use the signature skeleton! + +//========================================================================= +//Port Types +//========================================================================= + +// Insert port type defintions here if applicable! +// You can use the port_type skeleton! + +//========================================================================= +//Component Types +//========================================================================= + +// Insert component type defintions here if applicable! +// You can use the component_type skeleton! + +//========================================================================= +// Constants +//========================================================================= + +// Insert constants here if applicable! +// You can use the constant skeleton! + +//========================================================================= +// Templates +//========================================================================= + +// Insert templates here if applicable! +// You can use the template skeleton! + +//========================================================================= +// Altsteps +//========================================================================= + +// Insert altsteps here if applicable! +// You can use the altstep skeleton! + +//========================================================================= +// Functions +//========================================================================= + +// Insert functions here if applicable! +// You can use the function skeleton! + +//========================================================================= +// Testcases +//========================================================================= + + testcase tc_os_ModulePar_emb() runs on MC { + log(t_ros(tspt_os_mod4v)); + if(log2str(t_ros(tspt_os_mod4v)) != "{ os := \'ABBA\'O }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4o)); + if(log2str(t_ros(tspt_os_mod4o)) != "{ os := omit }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4a)); + if(log2str(t_ros(tspt_os_mod4a)) != "{ os := * }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4q)); + if(log2str(t_ros(tspt_os_mod4q)) != "{ os := ? }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4al1)); + if(log2str(t_ros(tspt_os_mod4al1)) != "{ os := * length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4al2)); + if(log2str(t_ros(tspt_os_mod4al2)) != "{ os := * length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4ql1)); + if(log2str(t_ros(tspt_os_mod4ql1)) != "{ os := ? length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4ql2)); + if(log2str(t_ros(tspt_os_mod4ql2)) != "{ os := ? length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(">",t_ros(tspt_os_mod4vl1),"<"); + if(log2str(t_ros(tspt_os_mod4vl1)) != "{ os := \'ABBA\'O }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4vl2)); + if(log2str(t_ros(tspt_os_mod4vl2)) != "{ os := (\'ABBA\'O, \'BABA\'O) }") {setverdict(fail)} else {setverdict(pass)}; + log(">{ os := (\'ABBA\'O, \'BABA\'O) }<"); + log(t_ros(tspt_os_mod4vl3)); + if(log2str(t_ros(tspt_os_mod4vl3)) != "{ os := (\'ABBA\'O, \'BABA\'O, \'B120\'O) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4c1)); + if(log2str(t_ros(tspt_os_mod4c1)) != "{ os := complement(\'ABBA\'O) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4c2)); + if(log2str(t_ros(tspt_os_mod4c2)) != "{ os := complement(\'ABBA\'O, \'BABA\'O) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4c3)); + if(log2str(t_ros(tspt_os_mod4c3)) != "{ os := complement(\'ABBA\'O, \'BABA\'O, \'B120\'O) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4pa)); + if(log2str(t_ros(tspt_os_mod4pa)) != "{ os := \'ABCD*1234\'O }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4pq)); + if(log2str(t_ros(tspt_os_mod4pq)) != "{ os := \'ABCD?1234\'O }") {setverdict(fail)} else {setverdict(pass)}; + //== + log(t_ros(tspt_os_mod4vifp)); + if(log2str(t_ros(tspt_os_mod4vifp)) != "{ os := \'ABBA\'O ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4oifp)); + if(log2str(t_ros(tspt_os_mod4oifp)) != "{ os := omit ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4aifp)); + if(log2str(t_ros(tspt_os_mod4aifp)) != "{ os := * ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4qifp)); + if(log2str(t_ros(tspt_os_mod4qifp)) != "{ os := ? ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4al1ifp)); + if(log2str(t_ros(tspt_os_mod4al1ifp)) != "{ os := * length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4al2ifp)); + if(log2str(t_ros(tspt_os_mod4al2ifp)) != "{ os := * length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4ql1ifp)); + if(log2str(t_ros(tspt_os_mod4ql1ifp)) != "{ os := ? length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4ql2ifp)); + if(log2str(t_ros(tspt_os_mod4ql2ifp)) != "{ os := ? length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4vl1ifp)); + if(log2str(t_ros(tspt_os_mod4vl1ifp)) != "{ os := \'ABBA\'O ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4vl2ifp)); + if(log2str(t_ros(tspt_os_mod4vl2ifp)) != "{ os := (\'ABBA\'O, \'BABA\'O) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4vl3ifp)); + if(log2str(t_ros(tspt_os_mod4vl3ifp)) != "{ os := (\'ABBA\'O, \'BABA\'O, \'B120\'O) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4c1ifp)); + if(log2str(t_ros(tspt_os_mod4c1ifp)) != "{ os := complement(\'ABBA\'O) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4c2ifp)); + if(log2str(t_ros(tspt_os_mod4c2ifp)) != "{ os := complement(\'ABBA\'O, \'BABA\'O) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4c3ifp)); + if(log2str(t_ros(tspt_os_mod4c3ifp)) != "{ os := complement(\'ABBA\'O, \'BABA\'O, \'B120\'O) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4paifp)); + if(log2str(t_ros(tspt_os_mod4paifp)) != "{ os := \'ABCD*1234'O ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4pqifp)); + if(log2str(t_ros(tspt_os_mod4pqifp)) != "{ os := \'ABCD?1234\'O ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + } + + //========================================================================= + // Control + //========================================================================= + control { + log("***octetstring tests****"); + execute(tc_os_ModulePar_emb()); + } + +} // end of module diff --git a/Regression_Test_java/src/text2ttcn/record_test.ttcn b/Regression_Test_java/src/text2ttcn/record_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..d5bfcc60d75bf39b04324af5771445b10f296772 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn/record_test.ttcn @@ -0,0 +1,1270 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +/* +//AUTHOR: +//DATE: +//VERSION: +*/ +module record_test +{ + +//========================================================================= +// Import Part +//========================================================================= +import from types2 all; +import from functions2 all; + +//========================================================================= +// Module Parameters +//========================================================================= +modulepar { + + //============= Type: REC ========================================= + // + template REC tspt_rec_mod4empty := {} + template RREC tspt_rrec_mod4empty := { rec:={} } + template REC tspt_rec_v := {1,1.0,"ABBA",'0100'B} + template REC tspt_rec_a := *; + template REC tspt_rec_q := ?; + template REC tspt_rec_o := omit; + template REC tspt_rec_v_omitx4 := {omit,omit,omit,omit} ; + template REC tspt_rec_r := ({1,1.0,"ABBA",'0100'B}, {2,2.0,"baba",'01001'B}) + template REC tspt_rec_vr := {1,1.0,("ABBA","baba"),'0100'B} + template REC tspt_rec_c := complement( {1,1.0,("ABBA","baba"),'0100'B} ) + + template REC tspt_rec_mod4v := {-,-,-,omit} + template REC tspt_rec_mod4a := {-,-,-,omit} + template REC tspt_rec_mod4q := {-,-,-,omit} + template REC tspt_rec_mod4o := {-,-,-,omit} + template REC tspt_rec_mod4vl2x2 := omit + template REC tspt_rec_mod4omitx4 := *; + template REC tspt_rec_mod4r := {omit,omit,omit,omit} ; + template REC tspt_rec_mod4vr := {omit,omit,omit,omit} ; + template REC tspt_rec_mod4c := complement( {1,1.0,("ABBA","baba"),'0100'B} ) + + template REC tspt_rec_mod4vl := {9,1.0,"NABBA",'0100'B}; //overwritten by cfg + template REC tspt_rec_mod4vq:= { i := ?, f := 1.0, cs:= pattern "abc*xyz", bs:= '01'B } // not overwritten by cfg + + template REC tspt_rec_mod4cspattern:= { i := 2, f := 1.0, cs:= "ABBA",bs:= '01'B} //overwritten by cfg + template REC tspt_rec_mod4cspatternbs:= { i := ?, f := 1.0, cs:= "ABBA",bs:= '01'B} //overwritten by cfg + template REC tspt_rec_mod4cspatternbs2:= { i := ?, f := 1.0, cs:= "ABBA",bs:= '01'B} //overwritten by cfg + template REC tspt_mod4pattern_mixed_order:= { i := ?, f := 1.0, cs:= "ABBA",bs:= '01'B} //overwritten by cfg + + //=== + template REC tspt_rec_mod4emptyifp := {} ifpresent + template RREC tspt_rrec_mod4emptyifp := { rec:= {} ifpresent } + template REC tspt_rec_mod4vifp := {omit,omit,omit,omit} ; + template REC tspt_rec_mod4aifp := {1,1.0,"ABBA",'0100'B} + template REC tspt_rec_mod4qifp := {1,1.0,"ABBA",'0100'B} + template REC tspt_rec_mod4oifp := {1,1.0,"ABBA",'0100'B} + template REC tspt_rec_mod4vl2x2ifp := omit + template REC tspt_rec_mod4omitx4ifp := *; + template REC tspt_rec_mod4rifp := {omit,omit,omit,omit} ; + template REC tspt_rec_mod4vrifp := {omit,omit,omit,omit} ; + template REC tspt_rec_mod4vrifp2 := {omit,omit,omit,omit} ; + template REC tspt_rec_mod4cifp := complement( {1,1.0,("ABBA","baba"),'0100'B} ) + + template REC tspt_rec_mod4vlifp := {9,1.0 ifpresent,"NABBA",'0100'B ifpresent}; //overwritten by cfg + template REC tspt_rec_mod4vqifp := { i := ?, f := 1.0, cs:= pattern "abc*xyz", bs:= '01'B } // not overwritten by cfg + + template REC tspt_rec_mod4cspatternifp := { i := 2, f := 1.0 ifpresent, cs:= "ABBA",bs:= '01'B} //overwritten by cfg + template REC tspt_rec_mod4cspatternbsifp:= { i := ?, f := 1.0 ifpresent, cs:= "ABBA",bs:= '01'B} //overwritten by cfg + template REC tspt_rec_mod4cspatternbs2ifp:= { i := ?, f := 1.0 ifpresent, cs:= "ABBA",bs:= '01'B} //overwritten by cfg + template REC tspt_mod4pattern_mixed_orderifp:= { i := ?, f := 1.0 ifpresent, cs:= "ABBA",bs:= '01'B} //overwritten by cfg + + template REC tspt_rec_empty := { } + template REC tspt_rec_emptyifp := { } ifpresent + //template REC tspt_rec_a := * + + template RREC tspt_rrec_empty := { rec := {} } + template RREC tspt_rrec_emptyifp := { rec:= {} ifpresent } + template RREC tspt_rrec_a := { rec := * } + //=== + //not accepted: + /* template REC tspt_rec_mod4vq(in template integer pl_i1) := { + i := pl_i1, + f := 1.0, + cs:= pattern "abc*xyz" + bs:= '01'B + } // cannot be overwritten by cfg + */ + //Type:REC2 + template REC2 tspt_REC2_1 := { b := true ifpresent, cs := omit, i:= omit } //not overwritten by cfg + template REC2 tspt_REC2_2 := { b := true ifpresent, cs := omit, i:= 2 ifpresent } //overwritten by cfg, but not really + template REC2 tspt_REC2_3 := { b := true ifpresent, cs := omit, i:= omit } //overwritten by cfg, b:= * + template REC2 tspt_REC2_4 := { b := true ifpresent, cs := omit, i:= omit } //overwritten by cfg, b:= * + template REC2 tspt_REC2_5 := { b := true ifpresent, cs := omit, i:= omit } //overwritten by cfg, +} + + +//========================================================================= +// Templates +//========================================================================= +template REC t_rec_v_par( template integer pl_i1) := { + i := pl_i1, + f := 1.0, + cs:= pattern "abc*xyz", + bs:= '0100'B +} // not overwritten by cfg + +template REC tspt_rec_mod4vq_BUG(template integer pl_i1) := { + i := pl_i1, + f := 1.0, + cs:= pattern "abc*xyz", + bs:= '01'B +} ; // not overwritten by cfg + +//========================================================================= +// Altsteps +//========================================================================= + +// Insert altsteps here if applicable! +// You can use the altstep skeleton! + +//========================================================================= +// Functions +//========================================================================= + +function f_string2ttcn_REC_t(in charstring pl_rec, in template REC pl_expected_result, in boolean pl_ok_expected := true) { + var template REC vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_rec,vl_result); + setverdict(pass) + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + + log(pl_expected_result); + log(vl_result); + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_rec, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("string2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } +} + +function f_string2ttcn_REC_t_str(in charstring pl_rec, in charstring pl_expected_result) { + var template REC vl_result; + @try { + string2ttcn(pl_rec,vl_result); + setverdict(pass) + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + log("Expected result: ", pl_expected_result); + log("Result: ", vl_result); + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +//template string -> variable conversion +//expected result: error +function f_string2ttcn_REC_v(in charstring pl_cs, in template REC pl_expected_result, in boolean pl_ok_expected) { + var REC vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("string2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ",pl_expected_result ); + log("Result: ", vl_result); +} + +//this function is the same but uses +function f_string2ttcn_REC_v_str(in charstring pl_cs, charstring pl_expected_result, in boolean pl_ok_expected) { + var REC vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("str2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ", pl_expected_result ); + log("Result: ", vl_result); +} + +//rrec + +function f_string2ttcn_RREC_t(in charstring pl_rrec, in template RREC pl_expected_result, in boolean pl_ok_expected := true) { + var template RREC vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_rrec,vl_result); + setverdict(pass) + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_rrec, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("string2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + } + log(pl_expected_result); + log(vl_result); +} + +function f_cs_transparent_in(in charstring pl_rrec) return charstring { + return pl_rrec; +} + +function f_cs_transparent_inout(in charstring pl_rrec) return charstring { + return pl_rrec; +} + +function f_cs_transparent_inout_t(in template charstring pl_rrec) return template charstring { + return pl_rrec; +} + +function f_rrec_transparent_in_t(in template RREC pl_rrec) return template RREC { + return pl_rrec; +} + +function f_rrec_transparent_inout_t(inout template RREC pl_rrec) return template RREC { + return pl_rrec; +} + +//with input argumentum of string2ttcn is a reurn value of a function +function f_string2ttcn_RREC_t_retval_in(in charstring pl_rrec, in template RREC pl_expected_result) { + var template RREC vl_result; + @try { + string2ttcn(f_cs_transparent_in(pl_rrec),vl_result); + setverdict(pass) + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + log(pl_expected_result); + log(vl_result); + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +function f_string2ttcn_RREC_t_retval_inout(in charstring pl_rrec, in template RREC pl_expected_result) { + var template RREC vl_result; + @try { + string2ttcn(f_cs_transparent_inout(pl_rrec),vl_result); + setverdict(pass) + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + log(pl_expected_result); + log(vl_result); + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +function f_string2ttcn_RREC_t_str(in charstring pl_rec, in charstring pl_expected_result) { + var template RREC vl_result; + @try { + string2ttcn(pl_rec,vl_result); + setverdict(pass) + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + log("Expected result: ", pl_expected_result); + log("Result: ", vl_result); + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +//template string -> variable conversion +//expected result: error +function f_string2ttcn_RREC_v(in charstring pl_cs, in template RREC pl_expected_result, in boolean pl_ok_expected) { + var RREC vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("string2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ",pl_expected_result ); + log("Result: ", vl_result); +} + +//this function is the same but uses +function f_string2ttcn_RREC_v_str(in charstring pl_cs, charstring pl_expected_result, in boolean pl_ok_expected) { + var RREC vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("str2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ", pl_expected_result ); + log("Result: ", vl_result); +} + + +//========================================================================= +// Testcases +//========================================================================= + +testcase tc_rec_v() runs on MC { + var RoREC vl_good_values := { {1,1.0,"ABBA",'0100'B} } + var RoREC vl_wrong_values := { {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, {1,1.0,"ABBA",'0101'B}, {2,-99.9,"ABBA",'0100'B} } + f_checkMatchingValues_rec(tspt_rec_v, vl_good_values,vl_wrong_values); +} + +testcase tc_rec_a() runs on MC { + var RoREC vl_good_values := { {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, {1,1.0,"ABBA",'0100'B}, {2,-99.9,"ABBA",'0100'B} } + f_checkMatchingGoodValues_rec(tspt_rec_a, vl_good_values); +} + +testcase tc_rec_q() runs on MC { + var RoREC vl_good_values := { {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, {1,1.0,"ABBA",'0100'B}, {2,-99.9,"ABBA",'0100'B} } + f_checkMatchingGoodValues_rec(tspt_rec_q, vl_good_values); +} + +testcase tc_rec_o() runs on MC { + var RoREC vl_good_values := {}; + var RoREC vl_wrong_values := {{omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit},{3,1.0,"ABBA",'0100'B},{3,omit,omit,omit},{omit,1.0,omit,omit},{omit,omit,"anything",omit},{omit,omit,omit,'01'B} } + f_checkMatchingValues_rec(tspt_rec_o, vl_good_values, vl_wrong_values); +} + + +testcase tc_rec_v_omitx4() runs on MC { + var RoREC vl_good_values := {{omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit} }; + var RoREC vl_wrong_values := {{3,1.0,"ABBA",'0100'B},{3,omit,omit,omit},{omit,1.0,omit,omit},{omit,omit,"anything",omit},{omit,omit,omit,'01'B} } + f_checkMatchingValues_rec(tspt_rec_v_omitx4, vl_good_values, vl_wrong_values); +} + +testcase tc_rec_r() runs on MC { + var RoREC vl_good_values := {{1,1.0,"ABBA",'0100'B}, {2,2.0,"baba",'01001'B}} + var RoREC vl_wrong_values := { + {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, + {2,2.0,"ABBA",'0100'B},{3,1.0,"ABBA",'0100'B},{3,omit,omit,omit}, + {omit,1.0,omit,omit},{omit,omit,"anything",omit},{omit,omit,omit,'01'B} + } + f_checkMatchingValues_rec(tspt_rec_r, vl_good_values, vl_wrong_values); +} + + + +testcase tc_rec_vr() runs on MC { + var RoREC vl_good_values := {{1,1.0,"ABBA",'0100'B}, {1,1.0,"baba",'0100'B}} + var RoREC vl_wrong_values := { + {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, + {2,2.0,"ABBA",'0100'B},{3,1.0,"ABBA",'0100'B},{3,omit,omit,omit}, + {omit,1.0,omit,omit},{omit,omit,"anything",omit},{omit,omit,omit,'01'B} + } + f_checkMatchingValues_rec(tspt_rec_vr, vl_good_values, vl_wrong_values); +} + +testcase tc_rec_v_par() runs on MC { + var RoREC vl_good_values := { {1,1.0,"abcAxyz",'0100'B}, {1,1.0,"abcxyz",'0100'B},{1,1.0,"abc5xyz",'0100'B} } + var RoREC vl_wrong_values := { {3,1.0,"abcAxyz",'0100'B}, {1,2.0,"abdXxyz",'0100'B}} + f_checkMatchingValues_rec(t_rec_v_par(1), vl_good_values, vl_wrong_values); +} + +testcase tc_rec_c() runs on MC { + var RoREC vl_good_values := { + {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, + {3,1.0,"ABBA",'0100'B},{3,omit,omit,omit},{omit,1.0,omit,omit},{omit,omit,"anything",omit},{omit,omit,omit,'01'B} } + var RoREC vl_wrong_values := {{1,1.0,"ABBA",'0100'B}, {1,1.0,"baba",'0100'B}} + f_checkMatchingValues_rec(tspt_rec_c, vl_good_values, vl_wrong_values); +} + +//========================== +//=== modified templates === +//========================== +//==== Goal: to test if record template is modified from cfg file:=== +// tc_rec_mod4* + +testcase tc_rec_mod4v() runs on MC { + var RoREC vl_good_values := { {1,1.0,"ABBA",'0100'B} } + var RoREC vl_wrong_values := { {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, {1,1.0,"ABBA",'0101'B}, {2,-99.9,"ABBA",'0100'B} } + f_checkMatchingValues_rec(tspt_rec_mod4v, vl_good_values,vl_wrong_values); +} + +testcase tc_rec_mod4a() runs on MC { + var RoREC vl_good_values := { {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, {1,1.0,"ABBA",'0100'B}, {2,-99.9,"ABBA",'0100'B} } + f_checkMatchingGoodValues_rec(tspt_rec_mod4a, vl_good_values); +} + +testcase tc_rec_mod4q() runs on MC { + var RoREC vl_good_values := { {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, {1,1.0,"ABBA",'0100'B}, {2,-99.9,"ABBA",'0100'B} } + f_checkMatchingGoodValues_rec(tspt_rec_mod4q, vl_good_values); +} + +testcase tc_rec_mod4o() runs on MC { + var RoREC vl_good_values := {}; + var RoREC vl_wrong_values := {{omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit},{3,1.0,"ABBA",'0100'B},{3,omit,omit,omit},{omit,1.0,omit,omit},{omit,omit,"anything",omit},{omit,omit,omit,'01'B} } + f_checkMatchingValues_rec(tspt_rec_mod4o, vl_good_values, vl_wrong_values); +} + +//goal: to test if template modulepar can be a right value + all fields are omit +testcase tc_rec_mod4omitx4() runs on MC { + var template REC vlt := tspt_rec_mod4omitx4; + var RoREC vl_good_values := {{omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}}; + var RoREC vl_wrong_values := {{1,1.0,"ABBA",'0100'B}}; + f_checkMatchingValues_rec(vlt, vl_good_values, vl_wrong_values); +} +testcase tc_rec_mod4r() runs on MC { + var RoREC vl_good_values := {{1,1.0,"ABBA",'0100'B}, {2,2.0,"baba",'01001'B}} + var RoREC vl_wrong_values := { + {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, + {2,2.0,"ABBA",'0100'B},{3,1.0,"ABBA",'0100'B},{3,omit,omit,omit}, + {omit,1.0,omit,omit},{omit,omit,"anything",omit},{omit,omit,omit,'01'B} + } + f_checkMatchingValues_rec(tspt_rec_mod4r, vl_good_values, vl_wrong_values); +} + +testcase tc_rec_mod4vr() runs on MC { + var RoREC vl_good_values := {{1,1.0,"ABBA",'0100'B}, {1,1.0,"baba",'0100'B}} + var RoREC vl_wrong_values :={ + {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, + {2,2.0,"ABBA",'0100'B},{3,1.0,"ABBA",'0100'B},{3,omit,omit,omit}, + {omit,1.0,omit,omit},{omit,omit,"anything",omit},{omit,omit,omit,'01'B} } + f_checkMatchingGoodValues_rec(tspt_rec_mod4vr, vl_good_values); + +} + +testcase tc_rec_mod4c() runs on MC { + var RoREC vl_good_values := { + {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, + {3,1.0,"ABBA",'0100'B},{3,omit,omit,omit},{omit,1.0,omit,omit},{omit,omit,"anything",omit},{omit,omit,omit,'01'B} } + var RoREC vl_wrong_values := {{1,1.0,"ABBA",'0100'B}, {1,1.0,"baba",'0100'B}} + f_checkMatchingValues_rec(tspt_rec_mod4c, vl_good_values, vl_wrong_values); +} + +testcase tc_rec_mod4vl2x2() runs on MC { + var RoREC vl_good_values := { {1,1.0,"ABBA",'0100'B}, {1,1.0,"ABBA",'01001'B},{1,1.0,"baba",'0100'B},{1,1.0,"baba",'01001'B} } + var RoREC vl_wrong_values := {{3,1.0,"ABBA",'0100'B},{1,2.0,"baba",'0100'B}, {1,1.0,"wrong",'0100'B},{1,1.0,"ABBA",'010010'B},{9,9.9,"wrong",'010010'B} } + f_checkMatchingValues_rec(tspt_rec_mod4vl2x2, vl_good_values, vl_wrong_values); +} + +//modified template: {1,1.0,("ABBA","baba"),'0100'B} +testcase tc_rec_mod4vl() runs on MC { + var template REC vlt := tspt_rec_mod4vl; + var RoREC vl_good_values := {{1,1.0,"ABBA",'0100'B},{1,1.0,"baba",'0100'B} } + var RoREC vl_wrong_values := {{2,1.1,"ABBA",'0100'B}, {2,1.0,"ABBA",'01001'B}, {2,1.0,"blabla",'01001'B}} + f_checkMatchingValues_rec(vlt, vl_good_values, vl_wrong_values); +} + +//modified for { i := ?, f := 1.0, cs:= pattern "abc*xyz", bs:= '0100'B } +testcase tc_rec_mod4vq() runs on MC { + var template REC vlt := tspt_rec_mod4vq; + var RoREC vl_good_values := {{1,1.0,"abc xyz",'0100'B},{112345678,1.0,"abcXxyz",'0100'B} } + var RoREC vl_wrong_values := {{2,1.0,"ABBA",'01'B}, {2,1.0,"ABBA",'0100'B},{3,4.0,"abcxyzz",'011'B}} + f_checkMatchingValues_rec(vlt, vl_good_values, vl_wrong_values); +} + + +//goal: to test modification like this: { ?, -,pattern "abc*xyz", '0100'B} +testcase tc_rec_mod4cspattern() runs on MC { + var RoREC vl_good_values := { {1,1.0,"abcAxyz",'0100'B}, {9,1.0,"abcxyz",'0100'B},{1,1.0,"abc5xyz",'0100'B}, {omit,1.0,"abc5xyz",'0100'B} } + var RoREC vl_wrong_values := { {1,1.0,"ABBA",'0100'B}, {1,2.0,"abdXxyz",'0100'B},{2,3.0,"oh",'00'B}} + f_checkMatchingValues_rec(tspt_rec_mod4cspattern, vl_good_values, vl_wrong_values); +} + +//template as argument of altstep + +altstep as_rec(template REC pl_rec, in RoREC pl_good_values, in RoREC pl_wrong_values, timer t) { + + [] t.timeout { + f_checkMatchingValues_rec(pl_rec, pl_good_values, pl_wrong_values); + } +} + +//test if altstep is cooperate with modulepar +testcase tc_rec_mod4cspattern_as() runs on MC { + var RoREC vl_good_values := { {1,1.0,"abcAxyz",'0100'B}, {9,1.0,"abcxyz",'0100'B},{1,1.0,"abc5xyz",'0100'B}, {omit,1.0,"abc5xyz",'0100'B} } + var RoREC vl_wrong_values := { {1,1.0,"ABBA",'0100'B}, {1,2.0,"abdXxyz",'0100'B},{2,3.0,"oh",'00'B}}; + timer t:=0.1; t.start; + as_rec(tspt_rec_mod4cspattern, vl_good_values,vl_wrong_values, t); + if( log2str(tspt_rec_mod4cspattern) != "{ i := *, f := 1.000000, cs := pattern \"abc*xyz\", bs := '0100'B }") { setverdict(fail) } +} + +//modify template field: +testcase tc_rec_mod4cspatternbs() runs on MC { + var RoREC vl_good_values := { {1,1.0,"abcAxyz",'0100'B}, {9,1.0,"abcxyz",'0100'B},{1,1.0,"abc5xyz",'0100'B} } + var RoREC vl_wrong_values := { {1,1.0,"ABBA",'0100'B}, {1,2.0,"abdXxyz",'0100'B},{2,3.0,"oh",'00'B}} + f_checkMatchingValues_rec(tspt_rec_mod4cspatternbs, vl_good_values, vl_wrong_values); + if( log2str(tspt_rec_mod4cspatternbs) != "{ i := ?, f := 1.000000, cs := pattern \"abc*xyz\", bs := '0100'B }") { setverdict(fail) } +} + +//value list notation test: +//tspt_rec_mod4cspatternbs2: { i := ?, f := 1.0,cs:= "ABBA", bs:= '01'B} -> { i := ?, f := 1.0,cs:= pattern "abc*xyz", bs:= '01'B} +testcase tc_rec_mod4cspatternbs2() runs on MC { + var RoREC vl_good_values := { {1,1.0,"abcAxyz",'0100'B}, {9,1.0,"abcxyz",'0100'B},{1,1.0,"abc5xyz",'0100'B} } + var RoREC vl_wrong_values := { {1,1.0,"ABBA",'0100'B}, {1,2.0,"abdXxyz",'0100'B},{2,3.0,"oh",'00'B}} + f_checkMatchingValues_rec(tspt_rec_mod4cspatternbs2, vl_good_values,vl_wrong_values ); + if( log2str(tspt_rec_mod4cspatternbs2) != "{ i := ?, f := 1.000000, cs := pattern \"abc*xyz\", bs := '0100'B }") { setverdict(fail) } +} + +//mixed fields in cfg file: +testcase tc_mod4pattern_mixed_order() runs on MC { + var RoREC vl_good_values := { {1,1.0,"abcAxyz",'0100'B}, {9,1.0,"abcxyz",'0100'B},{1,1.0,"abc5xyz",'0100'B} } + var RoREC vl_wrong_values := { {1,1.0,"ABBA",'0100'B}, {1,2.0,"abdXxyz",'0100'B},{2,3.0,"oh",'00'B}} + f_checkMatchingGoodValues_rec(tspt_mod4pattern_mixed_order, vl_good_values); + f_checkMatchingWrongValues_rec(tspt_mod4pattern_mixed_order, vl_wrong_values); + if( log2str(tspt_mod4pattern_mixed_order) != "{ i := ?, f := 1.000000, cs := pattern \"abc*xyz\", bs := '0100'B }") { setverdict(fail) } + log(tspt_mod4pattern_mixed_order); +} + +//=== + +testcase tc_rec_mod4vifp() runs on MC { + var RoREC vl_good_values := { {1,1.0,"ABBA",'0100'B}, {omit,1.0,"ABBA",'0100'B},{omit,omit,omit,omit} } + var RoREC vl_wrong_values := { {1,1.0,"ABBA",'0101'B}, {2,-99.9,"ABBA",'0100'B} } + f_checkMatchingValues_rec(tspt_rec_mod4vifp, vl_good_values,vl_wrong_values); + if(log2str(tspt_rec_mod4vifp)!="{ i := 1 ifpresent, f := 1.000000 ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent }") {setverdict(fail);} +} + +testcase tc_rec_mod4aifp() runs on MC { + var RoREC vl_good_values := { {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, {1,1.0,"ABBA",'0100'B}, {2,-99.9,"ABBA",'0100'B} } + f_checkMatchingGoodValues_rec(tspt_rec_mod4aifp, vl_good_values); +} + +testcase tc_rec_mod4qifp() runs on MC { + var RoREC vl_good_values := { {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, {1,1.0,"ABBA",'0100'B}, {2,-99.9,"ABBA",'0100'B} } + f_checkMatchingGoodValues_rec(tspt_rec_mod4qifp, vl_good_values); +} + +testcase tc_rec_mod4oifp() runs on MC { + var RoREC vl_good_values := {}; + var RoREC vl_wrong_values := {{omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit},{3,1.0,"ABBA",'0100'B},{3,omit,omit,omit},{omit,1.0,omit,omit},{omit,omit,"anything",omit},{omit,omit,omit,'01'B} } + f_checkMatchingValues_rec(tspt_rec_mod4oifp, vl_good_values, vl_wrong_values); +} + +//goal: to test if template modulepar can be a right value + all fields are omit +testcase tc_rec_mod4omitx4ifp() runs on MC { + var template REC vlt := tspt_rec_mod4omitx4ifp; + var RoREC vl_good_values := {{omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}}; + var RoREC vl_wrong_values := {{1,1.0,"ABBA",'0100'B}}; + f_checkMatchingValues_rec(vlt, vl_good_values, vl_wrong_values); +} +testcase tc_rec_mod4rifp() runs on MC { + var RoREC vl_good_values := { + {1,1.0,"ABBA",'0100'B}, {2,2.0,"baba",'01001'B}, {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit},{omit,1.0,omit,omit}} + var RoREC vl_wrong_values := { + {2,2.0,"ABBA",'0100'B},{3,1.0,"ABBA",'0100'B},{3,omit,omit,omit}, + {omit,omit,"anything",omit},{omit,omit,omit,'01'B} + } + f_checkMatchingValues_rec(tspt_rec_mod4rifp, vl_good_values, vl_wrong_values); +} + +testcase tc_rec_mod4vrifp() runs on MC { + var RoREC vl_good_values := {{1,1.0,"ABBA",'0100'B}, {2,1.0,"ABBA",'0100'B}, {2,-9.0,"ABBA",'0100'B},{2,2.0,"ABBA",'0100'B}, + {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit},{omit,1.0,omit,omit},{omit,omit,omit,'0100'B},{omit,omit,"ABBA",'0100'B} + } + var RoREC vl_wrong_values :={ + {3,1.0,"ABBA",'0100'B},{3,omit,omit,omit}, + {omit,omit,"anything",omit},{omit,omit,omit,'01'B} } + f_checkMatchingValues_rec(tspt_rec_mod4vrifp, vl_good_values,vl_wrong_values ); + +} + +testcase tc_rec_mod4cifp() runs on MC { + var RoREC vl_good_values := { + {3,1.0,"ABBA",'0100'B},{3,omit,omit,omit},{omit,1.1,omit,omit},{omit,omit,"anything",omit},{omit,omit,omit,'01'B} } + var RoREC vl_wrong_values := { {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, + {1,1.0,"ABBA",'0100'B}, {1,1.0,"baba",'0100'B},{1,omit,omit,omit},{omit,1.0,omit,omit},{omit,omit,"ABBA",omit},{omit,omit,"baba",omit},{omit,omit,omit,'0100'B}} + f_checkMatchingValues_rec(tspt_rec_mod4cifp, vl_good_values, vl_wrong_values); +} + +testcase tc_rec_mod4vl2x2ifp() runs on MC { + var RoREC vl_good_values := { {1,1.0,"ABBA",'0100'B}, {1,1.0,"ABBA",'01001'B},{1,1.0,"baba",'0100'B},{1,1.0,"baba",'01001'B} } + var RoREC vl_wrong_values := {{3,1.0,"ABBA",'0100'B},{1,2.0,"baba",'0100'B}, {1,1.0,"wrong",'0100'B},{1,1.0,"ABBA",'010010'B},{9,9.9,"wrong",'010010'B} } + f_checkMatchingValues_rec(tspt_rec_mod4vl2x2ifp, vl_good_values, vl_wrong_values); +} + +//modified template: {1 ifpresent,1.0 ifpresent,("ABBA","baba") ifpresent,'0100'B} +//failed: if cs:=omit, it failes +testcase tc_rec_mod4vlifp() runs on MC { + var template REC vlt := tspt_rec_mod4vlifp; + var RoREC vl_good_values := {{1,1.0,"ABBA",'0100'B},{1,1.0,"baba",'0100'B}, {omit,omit,omit,'0100'B}, {i:=1,f:=1.0,cs:=omit,bs:='0100'B} } + var RoREC vl_wrong_values := {{2,1.1,"ABBA",'0100'B}, {2,1.0,"ABBA",'01001'B}, {2,1.0,"blabla",'01001'B}} + f_checkMatchingValues_rec(vlt, vl_good_values, vl_wrong_values); +} + +//modified for { i := ?, f := 1.0, cs:= pattern "abc*xyz", bs:= '0100'B } +testcase tc_rec_mod4vqifp() runs on MC { + var template REC vlt := tspt_rec_mod4vqifp; + var RoREC vl_good_values := {{1,1.0,"abc xyz",'0100'B},{112345678,1.0,"abcXxyz",'0100'B} } + var RoREC vl_wrong_values := {{2,1.0,"ABBA",'01'B}, {2,1.0,"ABBA",'0100'B},{3,4.0,"abcxyzz",'011'B}} + f_checkMatchingValues_rec(vlt, vl_good_values, vl_wrong_values); +} + + +//goal: to test modification like this: { ?, -,pattern "abc*xyz", '0100'B} +testcase tc_rec_mod4cspatternifp() runs on MC { + var RoREC vl_good_values := { {1,1.0,"abcAxyz",'0100'B}, {9,1.0,"abcxyz",'0100'B},{1,1.0,"abc5xyz",'0100'B}, {omit,1.0,"abc5xyz",'0100'B} } + var RoREC vl_wrong_values := { {1,1.0,"ABBA",'0100'B}, {1,2.0,"abdXxyz",'0100'B},{2,3.0,"oh",'00'B}} + f_checkMatchingValues_rec(tspt_rec_mod4cspatternifp, vl_good_values, vl_wrong_values); +} + +//test if altstep is cooperate with modulepar +testcase tc_rec_mod4cspattern_asifp() runs on MC { + var RoREC vl_good_values := { {1,1.0,"abcAxyz",'0100'B}, {9,1.0,"abcxyz",'0100'B},{1,1.0,"abc5xyz",'0100'B}, + {omit,1.0,"abc5xyz",'0100'B},{omit,omit,omit,omit} } + var RoREC vl_wrong_values := { {1,1.0,"ABBA",'0100'B}, {1,2.0,"abdXxyz",'0100'B},{2,3.0,"oh",'00'B}}; + timer t:=0.1; t.start; + as_rec(tspt_rec_mod4cspatternifp, vl_good_values,vl_wrong_values, t); + //log(">>>Test1: { i := * ifpresent, f := 1.000000 ifpresent, cs := pattern \"abc*xyz\" ifpresent, bs := '0100'B ifpresent }") + //log(">>>Test2:", tspt_rec_mod4cspatternifp); + if( log2str(tspt_rec_mod4cspatternifp) != "{ i := * ifpresent, f := 1.000000 ifpresent, cs := pattern \"abc*xyz\" ifpresent, bs := '0100'B ifpresent }") { setverdict(fail) } +} + +//modify template field: +testcase tc_rec_mod4cspatternbsifp() runs on MC { + var RoREC vl_good_values := { {1,1.0,"abcAxyz",'0100'B}, {9,1.0,"abcxyz",'0100'B},{1,1.0,"abc5xyz",'0100'B}, {13,omit,omit,omit} } + var RoREC vl_wrong_values := { {1,1.0,"ABBA",'0100'B}, {1,2.0,"abdXxyz",'0100'B},{2,3.0,"oh",'00'B}, {omit,omit,omit,omit} } + f_checkMatchingValues_rec(tspt_rec_mod4cspatternbsifp, vl_good_values, vl_wrong_values); + //log(">>>Test3: { i := ?, f := 1.000000 ifpresent, cs := pattern \"abc*xyz\" ifpresent, bs := '0100'B ifpresent }"); + //log(">>>Test4: ",tspt_rec_mod4cspatternbsifp); + if( log2str(tspt_rec_mod4cspatternbsifp) != "{ i := ?, f := 1.000000 ifpresent, cs := pattern \"abc*xyz\" ifpresent, bs := '0100'B ifpresent }") { setverdict(fail) } +} + +//value list notation test: +//tspt_rec_mod4cspatternbs2: { i := ?, f := 1.0,cs:= "ABBA", bs:= '01'B} -> { i := ?, f := 1.0,cs:= pattern "abc*xyz", bs:= '01'B} +testcase tc_rec_mod4cspatternbs2ifp() runs on MC { + var RoREC vl_good_values := { {1,1.0,"abcAxyz",'0100'B}, {9,1.0,"abcxyz",'0100'B},{1,1.0,"abc5xyz",'0100'B}, {13,omit,omit,omit} } + var RoREC vl_wrong_values := { {1,1.0,"ABBA",'0100'B}, {1,2.0,"abdXxyz",'0100'B},{2,3.0,"oh",'00'B}} + + f_checkMatchingValues_rec(tspt_rec_mod4cspatternbs2ifp, vl_good_values,vl_wrong_values ); + //if( log2str(tspt_rec_mod4cspatternbs2ifp) != "{ i := ? ifpresent, f := 1.000000 ifpresent, cs := pattern \"abc*xyz\" ifpresent, bs := '0100'B ifpresent }") { setverdict(fail) } +} + +//mixed fields in cfg file: +testcase tc_mod4pattern_mixed_orderifp() runs on MC { + var RoREC vl_good_values := { {1,1.0,"abcAxyz",'0100'B}, {9,1.0,"abcxyz",'0100'B},{1,1.0,"abc5xyz",'0100'B} } + var RoREC vl_wrong_values := { {1,1.0,"ABBA",'0100'B}, {1,2.0,"abdXxyz",'0100'B},{2,3.0,"oh",'00'B}} + f_checkMatchingGoodValues_rec(tspt_mod4pattern_mixed_order, vl_good_values); + f_checkMatchingWrongValues_rec(tspt_mod4pattern_mixed_orderifp, vl_wrong_values); + if( log2str(tspt_mod4pattern_mixed_orderifp) != "{ i := ?, f := 1.000000 ifpresent, cs := pattern \"abc*xyz\" ifpresent, bs := '0100'B ifpresent }") { setverdict(fail) } + log(tspt_mod4pattern_mixed_orderifp); +} + +//== +template REC2 t_REC2_1 := { + b := true ifpresent, + cs := omit, + i := omit +} + +//Goal: to test if a normal template checking is ok for "ifpresent" and "omit" +testcase tc_REC2_0() runs on MC { + var RoREC2 vl_good_values := { {omit,omit,omit},{true,omit,omit} } + var RoREC2 vl_wrong_values := { {false,omit,omit}, {false,"a",1}, { false, "_anything_else*",1}, { true, "_anything_else*",1}, {omit, "b",1} } + f_checkMatchingGoodValues_rec2( t_REC2_1, vl_good_values ); + f_checkMatchingWrongValues_rec2( t_REC2_1, vl_wrong_values ); + log(t_REC2_1); + if( log2str(t_REC2_1) != "{ b := true ifpresent, cs := omit, i := omit }" ) { setverdict(fail) } +} + +testcase tc_REC2_1() runs on MC { + var RoREC2 vl_good_values := { {omit,omit,omit},{true,omit,omit} } + var RoREC2 vl_wrong_values := { {false,omit,1}, {false,"a",2}, { false, "_anything_else*",2}, { true, "_anything_else*",2}, {omit, "b",omit} } + f_checkMatchingGoodValues_rec2( tspt_REC2_1, vl_good_values ); + f_checkMatchingWrongValues_rec2( tspt_REC2_1, vl_wrong_values ); + log(tspt_REC2_1); + if( log2str(tspt_REC2_1) != "{ b := true ifpresent, cs := omit, i := omit }" ) { setverdict(fail) } +} + +testcase tc_REC2_2() runs on MC { + var RoREC2 vl_good_values := { {omit,omit,omit},{true,omit,omit},{omit,omit,2},{true,omit,2} } + var RoREC2 vl_wrong_values := { {false,omit,omit}, {false,"a",1}, { false, "_anything_else*",2}, { true, "_anything_else*", omit}, {omit,"b",1} } + f_checkMatchingGoodValues_rec2( tspt_REC2_2, vl_good_values ); + f_checkMatchingWrongValues_rec2( tspt_REC2_2, vl_wrong_values ); + log(tspt_REC2_2); + if( log2str(tspt_REC2_2) != "{ b := true ifpresent, cs := omit, i := 2 ifpresent }" ) { setverdict(fail) } +} + +//template modification check +testcase tc_REC2_3() runs on MC { + var RoREC2 vl_good_values := { {omit,omit,omit},{true,omit,omit}, {false,omit,omit},{omit,omit,2},{true,omit,2},{false,omit,2}} + var RoREC2 vl_wrong_values := { {false,"a",omit}, { false, "_anything_else*",1}, { true, "_anything_else*",2}, {omit, "b",2} } + f_checkMatchingGoodValues_rec2( tspt_REC2_3, vl_good_values ); + f_checkMatchingWrongValues_rec2( tspt_REC2_3, vl_wrong_values ); + log("The modified template is: ",tspt_REC2_3); + if( log2str(tspt_REC2_3) != "{ b := *, cs := omit, i := 2 ifpresent }" ) { setverdict(fail) } +} +//template modification check, explicit name-value notation: +testcase tc_REC2_4() runs on MC { + var RoREC2 vl_good_values := { {true,omit,omit},{false,omit,omit} } + var RoREC2 vl_wrong_values := { {omit,omit,omit},{false,"a",1}, { false, "_anything_else*",2}, { true, "_anything_else*",2}, {omit, "b", 2} } + f_checkMatchingGoodValues_rec2( tspt_REC2_4, vl_good_values ); + f_checkMatchingWrongValues_rec2( tspt_REC2_4, vl_wrong_values ); + log("The modified template is: ",tspt_REC2_4); + if( log2str(tspt_REC2_4) != "{ b := ?, cs := omit, i := omit }" ) { setverdict(fail) } +} + +//template modification check, explicit name-value notation: +testcase tc_REC2_5() runs on MC { + var RoREC2 vl_good_values := { { true,"a", omit },{ false,"b",omit }, { true,"c", 1 }, { false, "b", 2 }} + var RoREC2 vl_wrong_values := { { omit,omit,omit },{ false,"al",1 }, { false, "_anything_else*", 2 }, { true, "_anything_else*",2 }, { omit,"babe", 1} } + f_checkMatchingGoodValues_rec2( tspt_REC2_5, vl_good_values ); + f_checkMatchingWrongValues_rec2( tspt_REC2_5, vl_wrong_values ); + log("The modified template is: ",tspt_REC2_5); + if( log2str(tspt_REC2_5) != "{ b := ?, cs := ? length (1), i := * }" ) { setverdict(fail) } +} + +//==== String comparison testcases === +testcase tc_REC_log2str() runs on MC { + log(tspt_rec_empty); + if(log2str(tspt_rec_empty) == "<uninitialized template>") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4v); + if(log2str(tspt_rec_mod4v) == "{ i := 1, f := 1.000000, cs := \"ABBA\", bs := '0100'B }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4a); + if(log2str(tspt_rec_mod4a) == "*") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4q); + if(log2str(tspt_rec_mod4q) == "?") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4o); + if(log2str(tspt_rec_mod4o) == "omit") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vr); + if(log2str(tspt_rec_mod4vr) == "{ i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vl2x2); + if(log2str(tspt_rec_mod4vl2x2) == "{ i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := ('0100'B, '01001'B) }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4omitx4); + if(log2str(tspt_rec_mod4omitx4) == "{ i := omit, f := omit, cs := omit, bs := omit }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4r); + if(log2str(tspt_rec_mod4r) == "({ i := 1, f := 1.000000, cs := \"ABBA\", bs := '0100'B }, { i := 2, f := 2.000000, cs := \"baba\", bs := '01001'B })") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vr); + if(log2str(tspt_rec_mod4vr) == "{ i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4c); + if(log2str(tspt_rec_mod4c) == "complement({ i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B })") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vl); + if(log2str(tspt_rec_mod4vl) == "{ i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vq); + if(log2str(tspt_rec_mod4vq) == "{ i := ?, f := 1.000000, cs := pattern \"abc*xyz\", bs := '0100'B }") { setverdict(pass) } else {setverdict(fail)} +} + +testcase tc_REC_ifp_log2str() runs on MC { + log(tspt_rec_empty); + if(log2str(tspt_rec_empty) == "<uninitialized template>") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vifp); + if(log2str(tspt_rec_mod4vifp) == "{ i := 1 ifpresent, f := 1.000000 ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4aifp); + if(log2str(tspt_rec_mod4aifp) == "* ifpresent") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4qifp); + if(log2str(tspt_rec_mod4qifp) == "? ifpresent") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4oifp); + if(log2str(tspt_rec_mod4oifp) == "omit ifpresent") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vl2x2ifp); + if(log2str(tspt_rec_mod4vl2x2ifp) == "{ i := 1 ifpresent, f := 1.000000 ifpresent, cs := (\"ABBA\" ifpresent, \"baba\" ifpresent), bs := ('0100'B, '01001'B) ifpresent }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4omitx4ifp); + if(log2str(tspt_rec_mod4omitx4ifp) == "{ i := omit, f := omit, cs := omit, bs := omit } ifpresent" ) { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4rifp); + if(log2str(tspt_rec_mod4rifp) == "({ i := 1 ifpresent, f := 1.000000 ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent }, { i := 2, f := 2.000000, cs := \"baba\", bs := '01001'B })") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vrifp); + if(log2str(tspt_rec_mod4vrifp) == "{ i := (1 .. 2) ifpresent, f := ? ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent }" ) { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4cifp); + if(log2str(tspt_rec_mod4cifp) == "complement({ i := 1 ifpresent, f := 1.000000 ifpresent, cs := (\"ABBA\", \"baba\") ifpresent, bs := '0100'B ifpresent })") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vlifp); + if(log2str(tspt_rec_mod4vlifp) == "{ i := 1 ifpresent, f := 1.000000 ifpresent, cs := (\"ABBA\", \"baba\") ifpresent, bs := '0100'B ifpresent }" ) { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vqifp); + if(log2str(tspt_rec_mod4vqifp) == "{ i := ?, f := 1.000000, cs := pattern \"abc*xyz\", bs := '0100'B ifpresent }" ) { setverdict(pass) } else {setverdict(fail)} +} + + +//=== + +// Embedded templates +testcase tc_REC_log2str_emb() runs on MC { + log(tspt_rec_empty); + if(log2str(tspt_rec_empty) == "<uninitialized template>") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4v)); + if(log2str(t_rrec(tspt_rec_mod4v)) == "{ rec := { i := 1, f := 1.000000, cs := \"ABBA\", bs := '0100'B } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4a)); + if(log2str(t_rrec(tspt_rec_mod4a)) == "{ rec := * }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4q)); + if(log2str(t_rrec(tspt_rec_mod4q)) == "{ rec := ? }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4o)); + if(log2str(t_rrec(tspt_rec_mod4o)) == "{ rec := omit }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vr)); + if(log2str(t_rrec(tspt_rec_mod4vr)) == "{ rec := { i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vl2x2)); + if(log2str(t_rrec(tspt_rec_mod4vl2x2)) == "{ rec := { i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := ('0100'B, '01001'B) } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4omitx4)); + if(log2str(t_rrec(tspt_rec_mod4omitx4)) == "{ rec := { i := omit, f := omit, cs := omit, bs := omit } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4r)); + if(log2str(t_rrec(tspt_rec_mod4r)) == "{ rec := ({ i := 1, f := 1.000000, cs := \"ABBA\", bs := '0100'B }, { i := 2, f := 2.000000, cs := \"baba\", bs := '01001'B }) }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vr)); + if(log2str(t_rrec(tspt_rec_mod4vr)) == "{ rec := { i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4c)); + if(log2str(t_rrec(tspt_rec_mod4c)) == "{ rec := complement({ i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B }) }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vl)); + if(log2str(t_rrec(tspt_rec_mod4vl)) == "{ rec := { i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vq)); + if(log2str(t_rrec(tspt_rec_mod4vq)) == "{ rec := { i := ?, f := 1.000000, cs := pattern \"abc*xyz\", bs := '0100'B } }") { setverdict(pass) } else {setverdict(fail)} +} + +testcase tc_REC_ifp_log2str_emb() runs on MC { + log(tspt_rec_empty); + if(log2str(tspt_rec_empty) == "<uninitialized template>") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vifp)); + if(log2str(t_rrec(tspt_rec_mod4vifp)) == "{ rec := { i := 1 ifpresent, f := 1.000000 ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4aifp)); + if(log2str(t_rrec(tspt_rec_mod4aifp)) == "{ rec := * ifpresent }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4qifp)); + if(log2str(t_rrec(tspt_rec_mod4qifp)) == "{ rec := ? ifpresent }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4oifp)); + if(log2str(t_rrec(tspt_rec_mod4oifp)) == "{ rec := omit ifpresent }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vl2x2ifp)); + if(log2str(t_rrec(tspt_rec_mod4vl2x2ifp)) == "{ rec := { i := 1 ifpresent, f := 1.000000 ifpresent, cs := (\"ABBA\" ifpresent, \"baba\" ifpresent), bs := ('0100'B, '01001'B) ifpresent } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4omitx4ifp)); + if(log2str(t_rrec(tspt_rec_mod4omitx4ifp)) == "{ rec := { i := omit, f := omit, cs := omit, bs := omit } ifpresent }" ) { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4rifp)); + if(log2str(t_rrec(tspt_rec_mod4rifp)) == "{ rec := ({ i := 1 ifpresent, f := 1.000000 ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent }, { i := 2, f := 2.000000, cs := \"baba\", bs := '01001'B }) }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vrifp)); + if(log2str(t_rrec(tspt_rec_mod4vrifp)) == "{ rec := { i := (1 .. 2) ifpresent, f := ? ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent } }" ) { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4cifp)); + if(log2str(t_rrec(tspt_rec_mod4cifp)) == "{ rec := complement({ i := 1 ifpresent, f := 1.000000 ifpresent, cs := (\"ABBA\", \"baba\") ifpresent, bs := '0100'B ifpresent }) }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vlifp)); + if(log2str(t_rrec(tspt_rec_mod4vlifp)) == "{ rec := { i := 1 ifpresent, f := 1.000000 ifpresent, cs := (\"ABBA\", \"baba\") ifpresent, bs := '0100'B ifpresent } }" ) { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vqifp)); + if(log2str(t_rrec(tspt_rec_mod4vqifp)) == "{ rec := { i := ?, f := 1.000000, cs := pattern \"abc*xyz\", bs := '0100'B ifpresent } }" ) { setverdict(pass) } else {setverdict(fail)} +} + +//====================================== +//=========== ttcn2str ================= +//====================================== + +//==== String comparison testcases === +testcase tc_REC_ttcn2string() runs on MC { + log(ttcn2string(tspt_rec_empty)); + if(ttcn2string(tspt_rec_empty) == "-") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4v); + if(ttcn2string(tspt_rec_mod4v) == "{ i := 1, f := 1.000000, cs := \"ABBA\", bs := '0100'B }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4a); + if(ttcn2string(tspt_rec_mod4a) == "*") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4q); + if(ttcn2string(tspt_rec_mod4q) == "?") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4o); + if(ttcn2string(tspt_rec_mod4o) == "omit") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vr); + if(ttcn2string(tspt_rec_mod4vr) == "{ i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vl2x2); + if(ttcn2string(tspt_rec_mod4vl2x2) == "{ i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := ('0100'B, '01001'B) }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4omitx4); + if(ttcn2string(tspt_rec_mod4omitx4) == "{ i := omit, f := omit, cs := omit, bs := omit }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4r); + if(ttcn2string(tspt_rec_mod4r) == "({ i := 1, f := 1.000000, cs := \"ABBA\", bs := '0100'B }, { i := 2, f := 2.000000, cs := \"baba\", bs := '01001'B })") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vr); + if(ttcn2string(tspt_rec_mod4vr) == "{ i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4c); + if(ttcn2string(tspt_rec_mod4c) == "complement({ i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B })") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vl); + if(ttcn2string(tspt_rec_mod4vl) == "{ i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vq); + if(ttcn2string(tspt_rec_mod4vq) == "{ i := ?, f := 1.000000, cs := pattern \"abc*xyz\", bs := '0100'B }") { setverdict(pass) } else {setverdict(fail)} +} + +testcase tc_REC_ifp_ttcn2string() runs on MC { + log(ttcn2string(tspt_rec_emptyifp)); + if(ttcn2string(tspt_rec_emptyifp) == "- ifpresent") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vifp); + if(ttcn2string(tspt_rec_mod4vifp) == "{ i := 1 ifpresent, f := 1.000000 ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4aifp); + if(ttcn2string(tspt_rec_mod4aifp) == "* ifpresent") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4qifp); + if(ttcn2string(tspt_rec_mod4qifp) == "? ifpresent") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4oifp); + if(ttcn2string(tspt_rec_mod4oifp) == "omit ifpresent") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vl2x2ifp); + if(ttcn2string(tspt_rec_mod4vl2x2ifp) == "{ i := 1 ifpresent, f := 1.000000 ifpresent, cs := (\"ABBA\" ifpresent, \"baba\" ifpresent), bs := ('0100'B, '01001'B) ifpresent }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4omitx4ifp); + if(ttcn2string(tspt_rec_mod4omitx4ifp) == "{ i := omit, f := omit, cs := omit, bs := omit } ifpresent" ) { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4rifp); + if(ttcn2string(tspt_rec_mod4rifp) == "({ i := 1 ifpresent, f := 1.000000 ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent }, { i := 2, f := 2.000000, cs := \"baba\", bs := '01001'B })") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vrifp); + if(ttcn2string(tspt_rec_mod4vrifp) == "{ i := (1 .. 2) ifpresent, f := ? ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent }" ) { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4cifp); + if(ttcn2string(tspt_rec_mod4cifp) == "complement({ i := 1 ifpresent, f := 1.000000 ifpresent, cs := (\"ABBA\", \"baba\") ifpresent, bs := '0100'B ifpresent })") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vlifp); + if(ttcn2string(tspt_rec_mod4vlifp) == "{ i := 1 ifpresent, f := 1.000000 ifpresent, cs := (\"ABBA\", \"baba\") ifpresent, bs := '0100'B ifpresent }" ) { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vqifp); + if(ttcn2string(tspt_rec_mod4vqifp) == "{ i := ?, f := 1.000000, cs := pattern \"abc*xyz\", bs := '0100'B ifpresent }" ) { setverdict(pass) } else {setverdict(fail)} +} + +// Embedded templates +testcase tc_REC_ttcn2string_emb() runs on MC { + log(ttcn2string(tspt_rrec_empty)); + if(ttcn2string(tspt_rrec_empty) == "-") { setverdict(pass) } else {setverdict(fail)} + log(ttcn2string(tspt_rrec_mod4empty)); + if(ttcn2string(tspt_rrec_mod4empty) == "-") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4v)); + if(ttcn2string(t_rrec(tspt_rec_mod4v)) == "{ rec := { i := 1, f := 1.000000, cs := \"ABBA\", bs := '0100'B } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4a)); + if(ttcn2string(t_rrec(tspt_rec_mod4a)) == "{ rec := * }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4q)); + if(ttcn2string(t_rrec(tspt_rec_mod4q)) == "{ rec := ? }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4o)); + if(ttcn2string(t_rrec(tspt_rec_mod4o)) == "{ rec := omit }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vr)); + if(ttcn2string(t_rrec(tspt_rec_mod4vr)) == "{ rec := { i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vl2x2)); + if(ttcn2string(t_rrec(tspt_rec_mod4vl2x2)) == "{ rec := { i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := ('0100'B, '01001'B) } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4omitx4)); + if(ttcn2string(t_rrec(tspt_rec_mod4omitx4)) == "{ rec := { i := omit, f := omit, cs := omit, bs := omit } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4r)); + if(ttcn2string(t_rrec(tspt_rec_mod4r)) == "{ rec := ({ i := 1, f := 1.000000, cs := \"ABBA\", bs := '0100'B }, { i := 2, f := 2.000000, cs := \"baba\", bs := '01001'B }) }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vr)); + if(ttcn2string(t_rrec(tspt_rec_mod4vr)) == "{ rec := { i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4c)); + if(ttcn2string(t_rrec(tspt_rec_mod4c)) == "{ rec := complement({ i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B }) }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vl)); + if(ttcn2string(t_rrec(tspt_rec_mod4vl)) == "{ rec := { i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vq)); + if(ttcn2string(t_rrec(tspt_rec_mod4vq)) == "{ rec := { i := ?, f := 1.000000, cs := pattern \"abc*xyz\", bs := '0100'B } }") { setverdict(pass) } else {setverdict(fail)} +} + +testcase tc_REC_ifp_ttcn2string_emb() runs on MC { + log(ttcn2string(tspt_rrec_emptyifp)); + if(ttcn2string(tspt_rrec_emptyifp) == "{ rec := - ifpresent }") { setverdict(pass) } else {setverdict(fail)} + log(ttcn2string(tspt_rrec_mod4emptyifp)); + if(ttcn2string(tspt_rrec_mod4emptyifp) == "{ rec := - ifpresent }") { setverdict(pass) } else {setverdict(fail)} + + log(t_rrec(tspt_rec_mod4vifp)); + if(ttcn2string(t_rrec(tspt_rec_mod4vifp)) == "{ rec := { i := 1 ifpresent, f := 1.000000 ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent } }") { setverdict(pass) } else {setverdict(fail)} + + log(ttcn2string(f_rrec_transparent_in_t(t_rrec(tspt_rec_mod4vifp)))); + if(ttcn2string(f_rrec_transparent_in_t(t_rrec(tspt_rec_mod4vifp))) == "{ rec := { i := 1 ifpresent, f := 1.000000 ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent } }") { setverdict(pass) } else {setverdict(fail)} + + var template RREC vlt_rrec:= t_rrec(tspt_rec_mod4vifp) + log(ttcn2string(f_rrec_transparent_inout_t(vlt_rrec))); + if(ttcn2string(f_rrec_transparent_inout_t(vlt_rrec)) == "{ rec := { i := 1 ifpresent, f := 1.000000 ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent } }") { setverdict(pass) } else {setverdict(fail)} + + log(t_rrec(tspt_rec_mod4aifp)); + if(ttcn2string(t_rrec(tspt_rec_mod4aifp)) == "{ rec := * ifpresent }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4qifp)); + if(ttcn2string(t_rrec(tspt_rec_mod4qifp)) == "{ rec := ? ifpresent }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4oifp)); + if(ttcn2string(t_rrec(tspt_rec_mod4oifp)) == "{ rec := omit ifpresent }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vl2x2ifp)); + if(ttcn2string(t_rrec(tspt_rec_mod4vl2x2ifp)) == "{ rec := { i := 1 ifpresent, f := 1.000000 ifpresent, cs := (\"ABBA\" ifpresent, \"baba\" ifpresent), bs := ('0100'B, '01001'B) ifpresent } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4omitx4ifp)); + if(ttcn2string(t_rrec(tspt_rec_mod4omitx4ifp)) == "{ rec := { i := omit, f := omit, cs := omit, bs := omit } ifpresent }" ) { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4rifp)); + if(ttcn2string(t_rrec(tspt_rec_mod4rifp)) == "{ rec := ({ i := 1 ifpresent, f := 1.000000 ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent }, { i := 2, f := 2.000000, cs := \"baba\", bs := '01001'B }) }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vrifp)); + if(ttcn2string(t_rrec(tspt_rec_mod4vrifp)) == "{ rec := { i := (1 .. 2) ifpresent, f := ? ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent } }" ) { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4cifp)); + if(ttcn2string(t_rrec(tspt_rec_mod4cifp)) == "{ rec := complement({ i := 1 ifpresent, f := 1.000000 ifpresent, cs := (\"ABBA\", \"baba\") ifpresent, bs := '0100'B ifpresent }) }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vlifp)); + if(ttcn2string(t_rrec(tspt_rec_mod4vlifp)) == "{ rec := { i := 1 ifpresent, f := 1.000000 ifpresent, cs := (\"ABBA\", \"baba\") ifpresent, bs := '0100'B ifpresent } }" ) { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vqifp)); + if(ttcn2string(t_rrec(tspt_rec_mod4vqifp)) == "{ rec := { i := ?, f := 1.000000, cs := pattern \"abc*xyz\", bs := '0100'B ifpresent } }" ) { setverdict(pass) } else {setverdict(fail)} +} + +testcase tc_REC_string2ttcn_empty() runs on MC { + f_string2ttcn_REC_t(ttcn2string(tspt_rec_empty),tspt_rec_empty); + f_string2ttcn_REC_v(ttcn2string(tspt_rec_empty),tspt_rec_empty,true); +} + +testcase tc_REC_string2ttcn_v() runs on MC { + f_string2ttcn_REC_t(ttcn2string(tspt_rec_v), tspt_rec_v); + f_string2ttcn_REC_v(ttcn2string(tspt_rec_v),tspt_rec_v,true); + + var charstring vl_cs := ttcn2string(tspt_rec_v); + f_string2ttcn_REC_t(vl_cs, tspt_rec_v); + f_string2ttcn_REC_v(vl_cs, tspt_rec_v,true); +} + +testcase tc_REC_string2ttcn_a() runs on MC { + f_string2ttcn_REC_t(ttcn2string(tspt_rec_a), tspt_rec_a); + f_string2ttcn_REC_v(ttcn2string(tspt_rec_a),tspt_rec_a,false); +} + +testcase tc_REC_string2ttcn_q() runs on MC { + f_string2ttcn_REC_t(ttcn2string(tspt_rec_q), tspt_rec_q); + f_string2ttcn_REC_v(ttcn2string(tspt_rec_q),tspt_rec_q,false); +} + + +testcase tc_REC_string2ttcn_o() runs on MC { + f_string2ttcn_REC_t(ttcn2string(tspt_rec_o), tspt_rec_o); + f_string2ttcn_REC_v(ttcn2string(tspt_rec_o),tspt_rec_o,false); +} + +testcase tc_REC_string2ttcn_v_omitx4() runs on MC { + f_string2ttcn_REC_t(ttcn2string(tspt_rec_v_omitx4), tspt_rec_v_omitx4); + f_string2ttcn_REC_v(ttcn2string(tspt_rec_v_omitx4),tspt_rec_v_omitx4,true); +} + +testcase tc_REC_string2ttcn_r() runs on MC { + f_string2ttcn_REC_t(ttcn2string(tspt_rec_r), tspt_rec_r); + f_string2ttcn_REC_v(ttcn2string(tspt_rec_r),tspt_rec_r,false); +} + +//==rrec - the embedded case === + +testcase tc_RREC_string2ttcn_empty() runs on MC { + f_string2ttcn_RREC_t(ttcn2string(tspt_rrec_empty),tspt_rrec_empty); + f_string2ttcn_RREC_v(ttcn2string(tspt_rrec_empty),tspt_rrec_empty,true); +} + +testcase tc_RREC_string2ttcn_v() runs on MC { + f_string2ttcn_RREC_t(ttcn2string(t_rrec(tspt_rec_mod4v)), t_rrec(tspt_rec_mod4v)); + f_string2ttcn_RREC_v(ttcn2string(t_rrec(tspt_rec_mod4v)),t_rrec(tspt_rec_mod4v),true); + + f_string2ttcn_RREC_t_retval_in(ttcn2string(t_rrec(tspt_rec_mod4v)), t_rrec(tspt_rec_mod4v)); + f_string2ttcn_RREC_t_retval_inout(ttcn2string(t_rrec(tspt_rec_mod4v)), t_rrec(tspt_rec_mod4v)); +} + +testcase tc_RREC_string2ttcn_a() runs on MC { + f_string2ttcn_RREC_t(ttcn2string(t_rrec(tspt_rec_mod4a)), t_rrec(tspt_rec_mod4a)); + f_string2ttcn_RREC_v(ttcn2string(t_rrec(tspt_rec_mod4a)),t_rrec(tspt_rec_mod4a),false); +} + +testcase tc_RREC_string2ttcn_q() runs on MC { + f_string2ttcn_RREC_t(ttcn2string(t_rrec(tspt_rec_mod4q)), t_rrec(tspt_rec_mod4q)); + f_string2ttcn_RREC_v(ttcn2string(t_rrec(tspt_rec_mod4q)),t_rrec(tspt_rec_mod4q),false); +} + + +testcase tc_RREC_string2ttcn_o() runs on MC { + f_string2ttcn_RREC_t(ttcn2string(t_rrec(tspt_rec_mod4o)), t_rrec(tspt_rec_mod4o)); + f_string2ttcn_RREC_v(ttcn2string(t_rrec(tspt_rec_mod4o)),t_rrec(tspt_rec_mod4o),true); +} + +testcase tc_RREC_string2ttcn_omitx4() runs on MC { + f_string2ttcn_RREC_t(ttcn2string(t_rrec(tspt_rec_mod4omitx4)), t_rrec(tspt_rec_mod4omitx4)); + f_string2ttcn_RREC_v(ttcn2string(t_rrec(tspt_rec_mod4omitx4)), t_rrec(tspt_rec_mod4omitx4),true); +} + +testcase tc_RREC_string2ttcn_r() runs on MC { + f_string2ttcn_RREC_t(ttcn2string(t_rrec(tspt_rec_mod4r)), t_rrec(tspt_rec_mod4r)); + f_string2ttcn_RREC_v(ttcn2string(t_rrec(tspt_rec_mod4r)), t_rrec(tspt_rec_mod4r),false); +} + +//ifpresent +testcase tc_RREC_string2ttcn_vifp() runs on MC { + f_string2ttcn_RREC_t(ttcn2string(t_rrec(tspt_rec_mod4vifp)), t_rrec(tspt_rec_mod4vifp)); + f_string2ttcn_RREC_v(ttcn2string(t_rrec(tspt_rec_mod4vifp)),t_rrec(tspt_rec_mod4vifp),false); +} + +testcase tc_RREC_string2ttcn_aifp() runs on MC { + f_string2ttcn_RREC_t(ttcn2string(t_rrec(tspt_rec_mod4aifp)), t_rrec(tspt_rec_mod4aifp)); + f_string2ttcn_RREC_v(ttcn2string(t_rrec(tspt_rec_mod4aifp)),t_rrec(tspt_rec_mod4aifp),false); +} + +testcase tc_RREC_string2ttcn_qifp() runs on MC { + f_string2ttcn_RREC_t(ttcn2string(t_rrec(tspt_rec_mod4qifp)), t_rrec(tspt_rec_mod4qifp)); + f_string2ttcn_RREC_v(ttcn2string(t_rrec(tspt_rec_mod4qifp)),t_rrec(tspt_rec_mod4qifp),false); +} + + +testcase tc_RREC_string2ttcn_oifp() runs on MC { + f_string2ttcn_RREC_t(ttcn2string(t_rrec(tspt_rec_mod4oifp)), t_rrec(tspt_rec_mod4oifp)); + f_string2ttcn_RREC_v(ttcn2string(t_rrec(tspt_rec_mod4oifp)),t_rrec(tspt_rec_mod4oifp),false); //failed !!! +} + +testcase tc_RREC_string2ttcn_omitx4ifp() runs on MC { + f_string2ttcn_RREC_t(ttcn2string(t_rrec(tspt_rec_mod4omitx4ifp)), t_rrec(tspt_rec_mod4omitx4ifp)); + f_string2ttcn_RREC_v(ttcn2string(t_rrec(tspt_rec_mod4omitx4ifp)), t_rrec(tspt_rec_mod4omitx4ifp),false); +} + +testcase tc_RREC_string2ttcn_rifp() runs on MC { + f_string2ttcn_RREC_t(ttcn2string(t_rrec(tspt_rec_mod4rifp)), t_rrec(tspt_rec_mod4rifp)); + f_string2ttcn_RREC_v(ttcn2string(t_rrec(tspt_rec_mod4rifp)), t_rrec(tspt_rec_mod4rifp),false); +} + +//=== Negative tests ==== + +testcase tc_RREC_string2ttcn_neg1() runs on MC { + f_string2ttcn_RREC_t("{ rec := ? ifpresent }", t_rrec(tspt_rec_mod4qifp),true); + f_string2ttcn_RREC_t("{ recfalse := ? ifpresent }", t_rrec(tspt_rec_mod4qifp),false); + f_string2ttcn_RREC_t("{ rec := ifpresent }", t_rrec(tspt_rec_mod4qifp),false); + f_string2ttcn_RREC_t("{ rec := x ifpresent }", t_rrec(tspt_rec_mod4qifp),false);// TODO: wrong error message + f_string2ttcn_RREC_t("{ rec := {x:=1 ifpresent }}", t_rrec(tspt_rec_mod4qifp),false); + f_string2ttcn_RREC_t("{ rec := {x:=1 ifpresent }", t_rrec(tspt_rec_mod4qifp),false); + f_string2ttcn_RREC_v("{ recfalse := { i := 1, f := 1.000000, cs := \"ABBA\", bs := '0100'B } }" , t_rrec(tspt_rec_v),false); +} + +//========================================================================= +// Control +//========================================================================= +control { + log("****record tests****"); + execute(tc_rec_v()); + execute(tc_rec_a()); + execute(tc_rec_q()); + execute(tc_rec_o()); + execute(tc_rec_v_omitx4()); + execute(tc_rec_r()); + execute(tc_rec_vr()); + execute(tc_rec_v_par()); + execute(tc_rec_c()); + //=== modified templates === + execute(tc_rec_mod4v()); + execute(tc_rec_mod4a()); + execute(tc_rec_mod4q()); + execute(tc_rec_mod4o()); + execute(tc_rec_mod4omitx4()); + execute(tc_rec_mod4r()); + execute(tc_rec_mod4vr()); + execute(tc_rec_mod4c()); + execute(tc_rec_mod4vl2x2()); + execute(tc_rec_mod4vl()); + execute(tc_rec_mod4vq()); + execute(tc_rec_mod4cspattern()); + execute(tc_rec_mod4cspattern_as()); + execute(tc_rec_mod4cspatternbs()); + execute(tc_mod4pattern_mixed_order()); + //==modified ispresent templates ==== + execute(tc_rec_mod4vifp()); + execute(tc_rec_mod4aifp()); + execute(tc_rec_mod4qifp()); + execute(tc_rec_mod4oifp()); + execute(tc_rec_mod4omitx4ifp()); + execute(tc_rec_mod4rifp()); + execute(tc_rec_mod4vrifp()); + execute(tc_rec_mod4cifp()); + execute(tc_rec_mod4vl2x2ifp()); + execute(tc_rec_mod4vlifp()); + execute(tc_rec_mod4vqifp()); + execute(tc_rec_mod4cspatternifp()); + execute(tc_rec_mod4cspattern_asifp()); + execute(tc_rec_mod4cspatternbsifp()); + execute(tc_rec_mod4cspatternbs2ifp()); + execute(tc_mod4pattern_mixed_orderifp()); + + execute(tc_REC2_0()); + execute(tc_REC2_1()); + execute(tc_REC2_2()); + execute(tc_REC2_3()); + execute(tc_REC2_4()); + execute(tc_REC2_5()); + + //==== String comparison testcases === + execute(tc_REC_log2str()); + execute(tc_REC_ifp_log2str()); + execute(tc_REC_log2str_emb()); + execute(tc_REC_ifp_log2str_emb()); + + execute(tc_REC_ttcn2string()); + execute(tc_REC_ifp_ttcn2string()); + execute(tc_REC_ttcn2string_emb()); + execute(tc_REC_ifp_ttcn2string_emb()); + + //execute(tc_REC_string2ttcn_empty()); //TODO: Adam, correct the two bugs. --NOT solved, + execute(tc_REC_string2ttcn_v()); + execute(tc_REC_string2ttcn_a()); + execute(tc_REC_string2ttcn_q()); + execute(tc_REC_string2ttcn_o()); + execute(tc_REC_string2ttcn_v_omitx4()); + execute(tc_REC_string2ttcn_r()); //TODO: check the error message "Error while setting parameter field '': Type mismatch: ..." + + execute(tc_RREC_string2ttcn_v()); + execute(tc_RREC_string2ttcn_a()); + execute(tc_RREC_string2ttcn_q()); + execute(tc_RREC_string2ttcn_o()); + execute(tc_RREC_string2ttcn_omitx4()); + execute(tc_RREC_string2ttcn_r()); //TODO: check the error message ""Error while setting parameter field '.rec': ..." + + execute(tc_RREC_string2ttcn_vifp()); + execute(tc_RREC_string2ttcn_aifp()); + execute(tc_RREC_string2ttcn_qifp()); + execute(tc_RREC_string2ttcn_oifp()); //fixed by Adam: string2ttcn: { rec := omit ifpresent } -> { rec := omit } /value/, it should be reported as an error!!!! + execute(tc_RREC_string2ttcn_omitx4ifp()); + execute(tc_RREC_string2ttcn_rifp()); //TODO: check the error message ""Error while setting parameter field '.rec': ..." + execute(tc_RREC_string2ttcn_neg1()); + +} +} // end of module diff --git a/Regression_Test_java/src/text2ttcn/recordof_test.ttcn b/Regression_Test_java/src/text2ttcn/recordof_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..b2e7c2960a099b7bd42ae8016ca0f4d1c1274df0 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn/recordof_test.ttcn @@ -0,0 +1,772 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +/* +//AUTHOR: +//DATE: +//VERSION: +*/ +module recordof_test +{ + +//========================================================================= +// Import Part +//========================================================================= +import from types2 all; +import from functions2 all; + +//========================================================================= +// Module Parameters +//========================================================================= +modulepar { + //record of + template RoI tspt_recof_i_v0 := {}; + template RoI tspt_recof_i_v1 := {1}; + template RoI tspt_recof_i_v2 := {1,2}; + //template RoI tspt_recof_i_v2 := {omit,2}; //not allowed + template RoI tspt_recof_i_v3 := {1,2,3}; + template RoI tspt_recof_i_v3a := {1,*,3}; + template RoI tspt_recof_i_v3q := {1,?,3}; + template RoI tspt_recof_i_vl3 := {(1,2),2,(3,4)}; //value list + template RoI tspt_recof_i_vl := ( {1,2,3}, {2,2,4} ) + template RoI tspt_recof_i_v10 := {1,2,3,4,5,6,7,8,9,10}; + template RoI tspt_recof_i_o := omit; + template RoI tspt_recof_i_a := *; + template RoI tspt_recof_i_q := ?; + template RoI tspt_recof_i_r := {1,(1..3)}; //range + //template RoI tspt_recof_i_c := complement {1,2}; //range + template RoI tspt_recof_i_c := {1,complement(1,2,3)} + //template RoI tspt_recof_i_cr := {1,complement(1..3)} + template RoI tspt_recof_i_lv := ? length(3) + template RoI tspt_recof_i_lr := ? length(3..5) //length range + template RoI tspt_recof_i_p := { permutation (1,2,3),10 } + + //it will modified for sth in cfg file: + template RoI tspt_recof_i_mod4v0 := ? + template RoI tspt_recof_i_mod4v1 := ? + template RoI tspt_recof_i_mod4v2 := ?; + template RoI tspt_recof_i_mod4v3 := ?; + template RoI tspt_recof_i_mod4v3a := ?; + template RoI tspt_recof_i_mod4v3q := ?; + template RoI tspt_recof_i_mod4vl3 := ({1},{(1,2),2,(3,4)}); //value list + template RoI tspt_recof_i_mod4vl := ? + template RoI tspt_recof_i_mod4v10 := ? + template RoI tspt_recof_i_mod4o := {1,2,3,4,5,6,7,8,9,10}; + template RoI tspt_recof_i_mod4a := {1,2,3,4,5,6,7,8,9,10}; + template RoI tspt_recof_i_mod4q := {1,2,3,4,5,6,7,8,9,10}; + template RoI tspt_recof_i_mod4r := {2}; + template RoI tspt_recof_i_mod4cu := { permutation (1,2,3),10 }; ///almost bug + template RoI tspt_recof_i_mod4c := { permutation (1,2,3),10 }; ///almost bug + template RoI tspt_recof_i_mod4cm1 := { permutation (1,2,3) }; + template RoI tspt_recof_i_mod4cm2 := { permutation (1,2,3),10 }; + template RoI tspt_recof_i_mod4lv := ? + template RoI tspt_recof_i_mod4lr := * + template RoI tspt_recof_i_mod4p := {12,34} + template RoI tspt_recof_i_mod4rifp := {12,34} //will be changed for range + template RoI tspt_recof_i_mod4vlifp := * //will be changed + //rec of float + template RoF tspt_recof_f_v0 := {}; + template RoF tspt_recof_f_v1 := {1.0}; + template RoF tspt_recof_f_v2 := {1.0,2.0}; + //template RoF tspt_recof_f_v2 := {omit,2.0}; //not allowed + template RoF tspt_recof_f_v3 := {1.0,2.0,3.0}; + template RoF tspt_recof_f_v3a := {1.0,*,3.0}; + template RoF tspt_recof_f_v3q := {1.0,?,3.0}; + template RoF tspt_recof_f_vl3 := {(1.0,2.0),2.0,(3.0,4.0)}; //value list + template RoF tspt_recof_f_vl := ( {1.0,2.0,3.0}, {2.0,2.0,4.0} ) + template RoF tspt_recof_f_v10 := {1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0}; + template RoF tspt_recof_f_o := omit; + template RoF tspt_recof_f_a := *; + template RoF tspt_recof_f_q := ?; + template RoF tspt_recof_f_r := {1.0,(1.0..3.0)}; //range + //template RoF tspt_recof_f_c := complement {1.0,2.0}; //range + template RoF tspt_recof_f_c := {1.0,complement(1.0,2.0,3.0)} + //template RoF tspt_recof_f_cr := {1,complement(1.0..3.0)} + template RoF tspt_recof_f_lv := ? length(3) + template RoF tspt_recof_f_lr := ? length(3..5) //length range + template RoF tspt_recof_f_p := { permutation (1.0,2.0,3.0),10.0 } + + //it will modified for sth in cfg file: + template RoF tspt_recof_f_mod4v0 := ? + template RoF tspt_recof_f_mod4v1 := ? + template RoF tspt_recof_f_mod4v2 := ?; + template RoF tspt_recof_f_mod4v3 := ?; + template RoF tspt_recof_f_mod4v3a := ?; + template RoF tspt_recof_f_mod4v3q := ?; + template RoF tspt_recof_f_mod4vl3 := ({1.0},{(1.0,2.0),2.0,(3.0,4.0)}); //value list + template RoF tspt_recof_f_mod4vl := ? + template RoF tspt_recof_f_mod4v10 := ? + template RoF tspt_recof_f_mod4o := {1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0}; + template RoF tspt_recof_f_mod4a := {1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0}; + template RoF tspt_recof_f_mod4q := {1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0}; + template RoF tspt_recof_f_mod4r := {2.0}; + template RoF tspt_recof_f_mod4cu := { permutation (1.0,2.0,3.0),10.0 }; ///almost bug + template RoF tspt_recof_f_mod4c := { permutation (1.0,2.0,3.0),10.0 }; ///almost bug + template RoF tspt_recof_f_mod4cm1 := { permutation (1.0,2.0,3.0) }; + template RoF tspt_recof_f_mod4cm2 := { permutation (1.0,2.0,3.0),10.0 }; + template RoF tspt_recof_f_mod4lv := ? + template RoF tspt_recof_f_mod4lr := * + template RoF tspt_recof_f_mod4p := {12.0,34.0} + template RoF tspt_recof_f_mod4rifp := {12.0,34.0} //will be changed for range +} +//========================================================================= +// Data Types +//========================================================================= + +// Insert data type defintions here if applicable! +// You can use the data_type skeleton! + +//========================================================================= +// Signatures +//========================================================================= + +// Insert signature definitions here if applicable! +// You can use the signature skeleton! + +//========================================================================= +//Port Types +//========================================================================= + +// Insert port type defintions here if applicable! +// You can use the port_type skeleton! + +//========================================================================= +//Component Types +//========================================================================= + +// Insert component type defintions here if applicable! +// You can use the component_type skeleton! + +//========================================================================= +// Constants +//========================================================================= + +// Insert constants here if applicable! +// You can use the constant skeleton! + +//========================================================================= +// Templates +//========================================================================= + //record of + template RoI t_recof_i_v0 := {}; + template RoI t_recof_i_v1 := {1}; + template RoI t_recof_i_v2 := {1,2}; + //template RoI t_recof_i_v2 := {omit,2}; //not allowed + template RoI t_recof_i_v3 := {1,2,3}; + template RoI t_recof_i_v3a := {1,*,3}; + template RoI t_recof_i_v3q := {1,?,3}; + template RoI t_recof_i_vl3 := {(1,2),2,(3,4)}; //value list + template RoI t_recof_i_v10 := {1,2,3,4,5,6,7,8,9,10}; + template RoI t_recof_i_o := omit; + template RoI t_recof_i_a := *; + template RoI t_recof_i_q := ?; + template RoI t_recof_i_r := {1,(1..3)}; //range + //template RoI t_recof_i_c := complement {1,2}; + template RoI t_recof_i_c := {1,complement(1,2,3)} + //template RoI t_recof_i_cr := {1,complement(1..3)} //TODO: check why it is not accepted + template RoI t_recof_i_lv := ? length(3) + template RoI t_recof_i_lr := ? length(3..5) //length range + template RoI t_recof_i_p := { permutation (1,2,3),10 } + +//========================================================================= +// Altsteps +//========================================================================= + +// Insert altsteps here if applicable! +// You can use the altstep skeleton! + +//========================================================================= +// Functions +//========================================================================= + +// Insert functions here if applicable! +// You can use the function skeleton! + +//========================================================================= +// Testcases +//========================================================================= + + testcase tc_recordof_i_NoModulePar() runs on MC { + + log(t_recof_i_v0); + if( log2str(t_recof_i_v0) != "{ }") { setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_v1); + if( log2str(t_recof_i_v1) != "{ 1 }") {setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_v2); + if( log2str(t_recof_i_v2) != "{ 1, 2 }") {setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_v3); + if( log2str(t_recof_i_v3) != "{ 1, 2, 3 }") {setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_v3a); + if( log2str(t_recof_i_v3a) != "{ 1, *, 3 }") {setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_v3q); + if( log2str(t_recof_i_v3q) != "{ 1, ?, 3 }") {setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_vl3); + if( log2str(t_recof_i_vl3) != "{ (1, 2), 2, (3, 4) }") {setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_v10); + if( log2str(t_recof_i_v10) != "{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }") {setverdict(fail) }; + log(t_recof_i_o); + if( log2str(t_recof_i_o) != "omit") { setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_a); + if( log2str(t_recof_i_a) != "*") { setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_q); + if( log2str(t_recof_i_q) != "?") { setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_r); + if( log2str(t_recof_i_r) != "{ 1, (1 .. 3) }") { setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_c); + if( log2str(t_recof_i_c) != "{ 1, complement(1, 2, 3) }") { setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_lv); + if( log2str(t_recof_i_lv) != "? length (3)") { setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_lr); + if( log2str(t_recof_i_lr) != "? length (3 .. 5)") { setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_p); + if( log2str(t_recof_i_p) != "{ permutation(1, 2, 3), 10 }") { setverdict(fail) } else { setverdict(pass) }; + } + + + testcase tc_recordof_i_ModulePar() runs on MC { + + log(tspt_recof_i_v0); + if( log2str(tspt_recof_i_v0) != "{ }") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_v1); + if( log2str(tspt_recof_i_v1) != "{ 1 }") {setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_v2); + if( log2str(tspt_recof_i_v2) != "{ 1, 2 }") {setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_v3); + if( log2str(tspt_recof_i_v3) != "{ 1, 2, 3 }") {setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_v3a); + if( log2str(tspt_recof_i_v3a) != "{ 1, *, 3 }") {setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_v3q); + if( log2str(tspt_recof_i_v3q) != "{ 1, ?, 3 }") {setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_vl3); + if( log2str(tspt_recof_i_vl3) != "{ (1, 2), 2, (3, 4) }") {setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_v10); + if( log2str(tspt_recof_i_v10) != "{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }") {setverdict(fail) }; + log(tspt_recof_i_o); + if( log2str(tspt_recof_i_o) != "omit") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_a); + if( log2str(tspt_recof_i_a) != "*") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_q); + if( log2str(tspt_recof_i_q) != "?") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_r); + if( log2str(tspt_recof_i_r) != "{ 1, (1 .. 3) }") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_c); + if( log2str(tspt_recof_i_c) != "{ 1, complement(1, 2, 3) }") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_lv); + if( log2str(tspt_recof_i_lv) != "? length (3)") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_lr); + if( log2str(tspt_recof_i_lr) != "? length (3 .. 5)") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_p); + if( log2str(tspt_recof_i_p) != "{ permutation(1, 2, 3), 10 }") { setverdict(fail) } else { setverdict(pass) }; + } + + testcase tc_recordof_i_Embedded() runs on MC { //TODO + //TODO + } + //===== + testcase tc_recordof_i_v0() runs on MC { + log(tspt_recof_i_v0); + var RoI vl_long :={}; //to stress test + for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i } + var RoRoI vl_good_values := { {} } + var RoRoI vl_wrong_values := { {1},{2},{1,2,3},{1,2,3,4,1000}, vl_long } + f_checkMatchingValues_roi(tspt_recof_i_v0,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_v1() runs on MC { + log(tspt_recof_i_v1); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1} }; + var RoRoI vl_wrong_values := { {2},{1,2},{1,2,3},{1,2,3,4,1000} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_v1,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_v2() runs on MC { + log(tspt_recof_i_v2); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,2} }; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,3},{1,2,3,4,1000} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_v2,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_v3() runs on MC { + log(tspt_recof_i_v3); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,2,3} }; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,4},{1,2,3,4,1000} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_v3,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_v3a() runs on MC { + log(tspt_recof_i_v3a); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,1,3}, {1,2,3}, {1,3,3}, {1,4,3}, {1,9999,3} }; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,4},{1,2,3,4,1000} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_v3a,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_v3q() runs on MC { + log(tspt_recof_i_v3q); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,1,3}, {1,2,3}, {1,3,3}, {1,4,3}, {1,9999,3} }; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,4},{1,2,3,4,1000} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_v3q,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_vl3() runs on MC { + log(tspt_recof_i_vl3); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,2,3}, {2,2,3}, {1,2,4}, {2,2,4} }; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,5},{1,2,3,4,1000} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_vl3,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_vl() runs on MC { + log(tspt_recof_i_vl); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,2,3}, {2,2,4} }; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,4},{1,2,3,4,1000}, {2,2,3}, {1,2,4} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_vl,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_v10() runs on MC { + log(tspt_recof_i_v10); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,2,3,4,5,6,7,8,9,10} }; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11}} //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_v10,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_o() runs on MC { + log(tspt_recof_i_o); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := {}; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_o,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_a() runs on MC { + log(tspt_recof_i_a); + var RoRoI vl_good_values := {{}, {2},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + var RoRoI vl_wrong_values := {}; + f_checkMatchingValues_roi(tspt_recof_i_a,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_q() runs on MC { + log(tspt_recof_i_q); + var RoRoI vl_good_values := { {}, {2},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + var RoRoI vl_wrong_values := {}; + f_checkMatchingValues_roi(tspt_recof_i_q,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_r() runs on MC { + log(tspt_recof_i_r); + var RoRoI vl_good_values := { {1,1},{1,2},{1,3} } + var RoRoI vl_wrong_values := { {}, {2},{1,4},{-1,4},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + f_checkMatchingValues_roi(tspt_recof_i_r,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_c() runs on MC { + log(tspt_recof_i_c); + var RoRoI vl_good_values := { {1,0},{1,4},{1,5}} + var RoRoI vl_wrong_values := { {}, {2},{1,1},{1,2},{1,3}, {2,4},{-1,4},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + f_checkMatchingValues_roi(tspt_recof_i_c,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_lv() runs on MC { + log(tspt_recof_i_lv); + var RoRoI vl_good_values := { {0,1,0},{1,4,5},{1,5,-1},{1000,6000,700},{11,5,-3},{1,2,4}} + var RoRoI vl_wrong_values := { {}, {2},{1,1},{1,2},{1,3},{2,4},{-1,4},{2,3},{1,2,3,4,1000},{1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + f_checkMatchingValues_roi(tspt_recof_i_lv,vl_good_values,vl_wrong_values); + } + + //length range + testcase tc_recordof_i_lr() runs on MC { + log(tspt_recof_i_lr); + var RoRoI vl_good_values := { {1,0,1},{1,2,3,4},{1,2,3,4,5},{-5,4,3,2,1}, {0,0,0} } + var RoRoI vl_wrong_values := { {}, {2},{1,1},{1,2},{1,3},{2,4},{-1,4},{2,3}, {1,2,3,4,1000,1001}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + f_checkMatchingValues_roi(tspt_recof_i_lr,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_p() runs on MC { + log(tspt_recof_i_p); + var RoRoI vl_good_values := { {1,2,3,10},{1,3,2,10},{2,1,3,10},{2,3,1,10},{3,1,2,10},{3,2,1,10} } + var RoRoI vl_wrong_values := { {}, {2},{1,1},{1,2},{1,3},{2,4},{-1,4},{2,3},{11,5,-3},{1,2,4},{1,2,3,11}, {4,2,3,10},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + f_checkMatchingValues_roi(tspt_recof_i_p,vl_good_values,vl_wrong_values); + } + + //====recordof templates modified from cfg file===== + + testcase tc_recordof_i_mod4v0() runs on MC { + log(tspt_recof_i_mod4v0); + var RoI vl_long :={}; //to stress test + for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i } + var RoRoI vl_good_values := { {} } + var RoRoI vl_wrong_values := { {1},{2},{1,2,3},{1,2,3,4,1000}, vl_long } + f_checkMatchingValues_roi(tspt_recof_i_mod4v0,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4v1() runs on MC { + log(tspt_recof_i_mod4v1); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1} }; + var RoRoI vl_wrong_values := { {},{2},{1,2},{1,2,3},{1,2,3,4,1000} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_mod4v1,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4v2() runs on MC { + log(tspt_recof_i_mod4v2); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,2} }; + var RoRoI vl_wrong_values := { {},{1},{2},{2,3},{1,2,3},{1,2,3,4,1000} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_mod4v2,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4v3() runs on MC { + log(tspt_recof_i_mod4v3); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,2,3} }; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,4},{1,2,3,4,1000} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_mod4v3,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4v3a() runs on MC { + log(tspt_recof_i_mod4v3a); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,1,3}, {1,2,3}, {1,3,3}, {1,4,3}, {1,9999,3} }; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,4},{1,2,3,4,1000} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_mod4v3a,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4v3q() runs on MC { + log(tspt_recof_i_mod4v3q); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,1,3}, {1,2,3}, {1,3,3}, {1,4,3}, {1,9999,3} }; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,4},{1,2,3,4,1000} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_mod4v3q,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4vl3() runs on MC { + log(tspt_recof_i_mod4vl3); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,2,3}, {2,2,3}, {1,2,4}, {2,2,4} }; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,5},{1,2,3,4,1000} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_mod4vl3,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4vl() runs on MC { + log(tspt_recof_i_mod4vl); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,2,3}, {2,2,4} }; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,4},{1,2,3,4,1000}, {2,2,3}, {1,2,4} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_mod4vl,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4v10() runs on MC { + log(tspt_recof_i_mod4v10); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,2,3,4,5,6,7,8,9,10} }; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11}} //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_mod4v10,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4o() runs on MC { + log(tspt_recof_i_mod4o); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := {}; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_mod4o,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4a() runs on MC { + log(tspt_recof_i_mod4a); + var RoRoI vl_good_values := {{}, {2},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + var RoRoI vl_wrong_values := {}; + f_checkMatchingValues_roi(tspt_recof_i_mod4a,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4q() runs on MC { + log(tspt_recof_i_mod4q); + var RoRoI vl_good_values := { {}, {2},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + var RoRoI vl_wrong_values := {}; + f_checkMatchingValues_roi(tspt_recof_i_mod4q,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4r() runs on MC { + log(tspt_recof_i_mod4r); + var RoRoI vl_good_values := { {1,1},{1,2},{1,3} } + var RoRoI vl_wrong_values := { {}, {2},{1,4},{-1,4},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + f_checkMatchingValues_roi(tspt_recof_i_mod4r,vl_good_values,vl_wrong_values); + } + + //fails + testcase tc_recordof_i_cu_noconfig() runs on MC { + var template RoI vlt := { permutation (1,2,3),10 } + log("Before mod: ",vlt); //Before mod: { permutation(1, 2, 3), 10 } + vlt := { 1, complement(1,2,3),3,4 } ; + log("after mod: ",vlt); //after mod: { permutation(1, complement(1, 2, 3), 3), 4 } but it should be { 1, complement(1,2,3),3,4 } + var RoRoI vl_good_values := {{1,0,3,4},{1,4,3,4},{1,5,3,4},{1,-1,3,4}} + var RoRoI vl_wrong_values := { {}, {2},{1,1,3,4},{1,2,3,4},{1,3,3,4},{1,2,3,4},{1,3},{3,1,1,4} } + f_checkMatchingValues_roi(vlt,vl_good_values,vl_wrong_values); + } + + //fails + testcase tc_recordof_i_mod4c_undefined() runs on MC { + //original: + log(tspt_recof_i_mod4cu); //expected: { 1, complement(1,2,3),3,4 } , got: { permutation(1, complement(1, 2, 3), 3), 4 } + var RoRoI vl_good_values := {{1,0,3,4},{1,4,3,4},{1,5,3,4},{1,-1,3,4}} + var RoRoI vl_wrong_values := { {}, {2},{1,1,3,4},{1,2,3,4},{1,3,3,4},{1,2,3,4},{1,3},{3,1,1,4} } + f_checkMatchingValues_roi(tspt_recof_i_mod4cu,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4c() runs on MC { + log(tspt_recof_i_mod4c); + var RoRoI vl_good_values := {{1,0,1,1},{1,4,1,1},{1,5,1,1}} + var RoRoI vl_wrong_values := { {}, {2},{1,1},{1,2},{1,3}, {2,4},{-1,4},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + f_checkMatchingValues_roi(tspt_recof_i_mod4c,vl_good_values,vl_wrong_values); + } + + //3->3 elements + testcase tc_recordof_i_mod4cm1() runs on MC { + log(tspt_recof_i_mod4cm1); + var RoRoI vl_good_values := {{1,0,1},{1,4,1},{1,5,1}} + var RoRoI vl_wrong_values := { {}, {2},{1,1},{1,2},{1,3}, {2,4},{-1,4},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + f_checkMatchingValues_roi(tspt_recof_i_mod4cm1,vl_good_values,vl_wrong_values); + } + //3->5 elements + testcase tc_recordof_i_mod4cm2() runs on MC { + log(tspt_recof_i_mod4cm2); + var RoRoI vl_good_values := {{1,0,1,1,1},{1,4,1,1,1},{1,5,1,1,1}} + var RoRoI vl_wrong_values := { {}, {2},{1,1},{1,2},{1,3}, {2,4},{-1,4},{2,3},{1,2,4},{1,2,3,10}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + f_checkMatchingValues_roi(tspt_recof_i_mod4cm2,vl_good_values,vl_wrong_values); + } + testcase tc_recordof_i_mod4lv() runs on MC { + log(tspt_recof_i_mod4lv); + var RoRoI vl_good_values := { {0,1,0},{1,4,5},{1,5,-1},{1000,6000,700},{11,5,-3},{1,2,4},{2,3,4}} + var RoRoI vl_wrong_values := { {}, {2},{1,1},{1,2},{1,3},{2,4},{-1,4},{1,2,3,4,1000},{1,2,3,4,5,6,7,8,9,11}} + f_checkMatchingValues_roi(tspt_recof_i_mod4lv,vl_good_values,vl_wrong_values); + } + + //length range + testcase tc_recordof_i_mod4lr() runs on MC { + log(tspt_recof_i_mod4lr); + var RoRoI vl_good_values := { {1,0,1},{1,2,3,4},{1,2,3,4,5},{-5,4,3,2,1}, {0,0,0} } + var RoRoI vl_wrong_values := { {}, {2},{1,1},{1,2},{1,3},{2,4},{-1,4},{2,3}, {1,2,3,4,1000,1001}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + f_checkMatchingValues_roi(tspt_recof_i_mod4lr,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4p() runs on MC { + log(tspt_recof_i_mod4p); + var RoRoI vl_good_values := { {1,2,3,10},{1,3,2,10},{2,1,3,10},{2,3,1,10},{3,1,2,10},{3,2,1,10} } + var RoRoI vl_wrong_values := { {}, {2},{1,1},{1,2},{1,3},{2,4},{-1,4},{2,3},{11,5,-3},{1,2,4},{1,2,3,11}, {4,2,3,10},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + f_checkMatchingValues_roi(tspt_recof_i_mod4p,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4rifp() runs on MC { + log(tspt_recof_i_mod4rifp); + var RoRoI vl_good_values := { {1,1},{1,2},{1,3} } + var RoRoI vl_wrong_values := { {}, {2},{1,4},{-1,4},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + f_checkMatchingValues_roi(tspt_recof_i_mod4rifp,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4vlifp() runs on MC { + log(tspt_recof_i_mod4vlifp); + var RoRoI vl_good_values := { {1,2,3},{2,2,4} } + var RoRoI vl_wrong_values := { {}, {2},{1,4},{-1,4},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + f_checkMatchingValues_roi(tspt_recof_i_mod4vlifp,vl_good_values,vl_wrong_values); + } + + //record of floats + testcase tc_recordof_f_ModulePar() runs on MC { + + log(tspt_recof_f_v0); + if( log2str(tspt_recof_f_v0) != "{ }") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_v1); + if( log2str(tspt_recof_f_v1) != "{ 1.000000 }") {setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_v2); + if( log2str(tspt_recof_f_v2) != "{ 1.000000, 2.000000 }") {setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_v3); + if( log2str(tspt_recof_f_v3) != "{ 1.000000, 2.000000, 3.000000 }") {setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_v3a); + if( log2str(tspt_recof_f_v3a) != "{ 1.000000, *, 3.000000 }") {setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_v3q); + if( log2str(tspt_recof_f_v3q) != "{ 1.000000, ?, 3.000000 }") {setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_vl3); + if( log2str(tspt_recof_f_vl3) != "{ (1.000000, 2.000000), 2.000000, (3.000000, 4.000000) }") {setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_v10); + if( log2str(tspt_recof_f_v10) != "{ 1.000000, 2.000000, 3.000000, 4.000000, 5.000000, 6.000000, 7.000000, 8.000000, 9.000000, 10.000000 }") {setverdict(fail) }; + log(tspt_recof_f_o); + if( log2str(tspt_recof_f_o) != "omit") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_a); + if( log2str(tspt_recof_f_a) != "*") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_q); + if( log2str(tspt_recof_f_q) != "?") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_r); + if( log2str(tspt_recof_f_r) != "{ 1.000000, (1.000000 .. 3.000000) }") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_c); + if( log2str(tspt_recof_f_c) != "{ 1.000000, complement(1.000000, 2.000000, 3.000000) }") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_lv); + if( log2str(tspt_recof_f_lv) != "? length (3)") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_lr); + if( log2str(tspt_recof_f_lr) != "? length (3 .. 5)") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_p); + if( log2str(tspt_recof_f_p) != "{ permutation(1.000000, 2.000000, 3.000000), 10.000000 }") { setverdict(fail) } else { setverdict(pass) }; + } + + testcase tc_recordof_f_v0() runs on MC { + log(tspt_recof_f_v0); + var RoF vl_long :={}; //to stress test + for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= int2float(i) } + var RoRoF vl_good_values := { {} } + var RoRoF vl_wrong_values := { {1.0},{2.0},{1.0,2.0,3.0},{1.0,2.0,3.0,4.0,1.0000}, vl_long } + f_checkMatchingValues_rof(tspt_recof_f_v0,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_f_v1() runs on MC { + log(tspt_recof_f_v1); + var RoF vl_long :={}; //to stress test + for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= int2float(i) } + var RoRoF vl_good_values := { {1.0} } + var RoRoF vl_wrong_values := { {},{2.0},{1.0,2.0,3.0},{1.0,2.0,3.0,4.0,1.0000}, vl_long } + f_checkMatchingValues_rof(tspt_recof_f_v1,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_f_v2() runs on MC { + log(tspt_recof_f_v2); + var RoF vl_long :={}; //to stress test + for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= int2float(i) } + var RoRoF vl_good_values := { {1.0,2.0} } + var RoRoF vl_wrong_values := { {},{2.0},{2.0,1.0},{1.0,2.0,3.0},{1.0,2.0,3.0,4.0,1.0000}, vl_long } + f_checkMatchingValues_rof(tspt_recof_f_v2,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_f_v3() runs on MC { + log(tspt_recof_f_v3); + var RoF vl_long :={}; //to stress test + for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= int2float(i) } + var RoRoF vl_good_values := { {1.0,2.0,3.0} } + var RoRoF vl_wrong_values := { {},{2.0},{2.0,1.0},{1.0,2.0}, {1.0,3.0,2.0}, {1.0,2.0,4.0},{1.0,2.0,3.0, -4.9},{1.0,2.0,3.0,4.0,1.0000}, vl_long } + f_checkMatchingValues_rof(tspt_recof_f_v3,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_f_v3a() runs on MC { + log(tspt_recof_f_v3a); + var RoRoF vl_good_values := { {1.0,2.0,3.0}, {1.0,29.9,3.0}, {1.0,-29.9,3.0} } + var RoRoF vl_wrong_values := { {},{2.0},{2.0,1.0},{1.0,2.0}, {1.0,3.0,2.0}, {1.0,2.0,4.0},{1.0,2.0,3.0, -4.9},{1.0,2.0,3.0,4.0,1.0000}} + f_checkMatchingValues_rof(tspt_recof_f_v3a,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_f_v3q() runs on MC { + log(tspt_recof_f_v3q); + var RoRoF vl_good_values := { {1.0,2.0,3.0}, {1.0,29.9,3.0}, {1.0,-29.9,3.0} } + var RoRoF vl_wrong_values := { {},{2.0},{2.0,1.0},{1.0,2.0}, {1.0,3.0,2.0}, {1.0,2.0,4.0},{1.0,2.0,3.0, -4.9},{1.0,2.0,3.0,4.0,1.0000}} + f_checkMatchingValues_rof(tspt_recof_f_v3q,vl_good_values,vl_wrong_values); + } + testcase tc_recordof_f_vl3() runs on MC { + log(tspt_recof_f_vl3); + var RoRoF vl_good_values := { {1.0,2.0,3.0}, {2.0,2.0,3.0}, {1.0,2.0,4.0}, {2.0,2.0,4.0} } + var RoRoF vl_wrong_values := { {},{2.0},{2.0,1.0},{1.0,2.0}, {1.0,3.0,2.0}, {1.0,2.0,5.0},{1.0,2.0,3.0, -4.9},{1.0,2.0,3.0,4.0,1.0000}} + f_checkMatchingValues_rof(tspt_recof_f_vl3,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_f_vl() runs on MC { + log(tspt_recof_f_vl); + var RoRoF vl_good_values := { {1.0,2.0,3.0}, {2.0,2.0,4.0} } + var RoRoF vl_wrong_values := { {},{2.0},{2.0,1.0},{1.0,2.0},{1.0,2.0,4.0}, {2.0,3.0,4.0},{1.0,3.0,2.0}, {1.0,2.0,4.0},{1.0,2.0,3.0, -4.9},{1.0,2.0,3.0,4.0,1.0000}} + f_checkMatchingValues_rof(tspt_recof_f_vl,vl_good_values,vl_wrong_values); + } + testcase tc_recordof_f_v10() runs on MC { + log(tspt_recof_f_v10); + var RoRoF vl_good_values := { {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0} } + var RoRoF vl_wrong_values := { {},{2.0},{2.0,1.0},{1.0,2.0},{1.0,2.0,4.0}, {2.0,3.0,4.0},{1.0,3.0,2.0}, {1.0,2.0,4.0},{1.0,2.0,3.0, -4.9},{1.0,2.0,3.0,4.0,1.0000}} + f_checkMatchingValues_rof(tspt_recof_f_v10,vl_good_values,vl_wrong_values); + } + //TODO: record of charstring, bitstring etc + rec of type + +//========================================================================= +// Control +//========================================================================= + +control { + log("***record of tests****"); + execute(tc_recordof_i_NoModulePar()); + execute(tc_recordof_i_ModulePar()); + execute(tc_recordof_i_v0()); + execute(tc_recordof_i_v1()); + execute(tc_recordof_i_v2()); + execute(tc_recordof_i_v3()); + execute(tc_recordof_i_v3a()); + execute(tc_recordof_i_v3q()); + execute(tc_recordof_i_vl3()); + execute(tc_recordof_i_vl()); + execute(tc_recordof_i_v10()); + execute(tc_recordof_i_o()); + execute(tc_recordof_i_a()); + execute(tc_recordof_i_q()); + execute(tc_recordof_i_r()); + execute(tc_recordof_i_c()); + execute(tc_recordof_i_lv()); + execute(tc_recordof_i_lr()); + execute(tc_recordof_i_p()); + + execute(tc_recordof_i_mod4v0()); + execute(tc_recordof_i_mod4v1()); + execute(tc_recordof_i_mod4v2()); + execute(tc_recordof_i_mod4v3()); + execute(tc_recordof_i_mod4v3a()); + execute(tc_recordof_i_mod4v3q()); + execute(tc_recordof_i_mod4vl3()); + execute(tc_recordof_i_mod4vl()); + execute(tc_recordof_i_mod4v10()); + execute(tc_recordof_i_mod4o()); + execute(tc_recordof_i_mod4a()); + execute(tc_recordof_i_mod4q()); + execute(tc_recordof_i_mod4r()); + //execute(tc_recordof_i_cu_noconfig()); //fails, TR: HS10984 + //execute(tc_recordof_i_mod4c_undefined()); //fails, TR: HS10984 + execute(tc_recordof_i_mod4c()); + execute(tc_recordof_i_mod4cm1()); + execute(tc_recordof_i_mod4cm2()); + execute(tc_recordof_i_mod4lv()); + execute(tc_recordof_i_mod4lr()); + execute(tc_recordof_i_mod4p()); + execute(tc_recordof_i_mod4rifp()); + execute(tc_recordof_i_mod4vlifp()); + + execute(tc_recordof_f_ModulePar()); + execute(tc_recordof_f_v0()); + execute(tc_recordof_f_v1()); + execute(tc_recordof_f_v2()); + execute(tc_recordof_f_v3()); + execute(tc_recordof_f_v3a()); + execute(tc_recordof_f_v3q()); + execute(tc_recordof_f_vl3()); + execute(tc_recordof_f_vl()); + execute(tc_recordof_f_v10()); +} +} // end of module diff --git a/Regression_Test_java/src/text2ttcn/set_test.ttcn b/Regression_Test_java/src/text2ttcn/set_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..e77f48d9d22bff7a74c34d266448dbf9acc709b3 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn/set_test.ttcn @@ -0,0 +1,327 @@ +/****************************************************************************** + * 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 + * Baranyi, Botond + * + ******************************************************************************/ +/* +//AUTHOR: +//DATE: +//VERSION: +*/ +module set_test +{ + +//========================================================================= +// Import Part +//========================================================================= +import from types2 all; +import from functions2 all; + +//========================================================================= +// Module Parameters +//========================================================================= + +modulepar { + //set + template SET tspt_set_v0; + template SET tspt_set_v1:= { b:=true }; + template SET tspt_set_v2:= { b:=true, cs:= "sth" } + template SET tspt_set_v3:= { b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=99} + // these will be overwritten from cfg file: + template SET tspt_set_mod4v1 := omit; + template SET tspt_set_mod4v2 := omit; + template SET tspt_set_mod4v3 := omit; + template SET tspt_set_mod4a := omit; + template SET tspt_set_mod4q := omit; + template SET tspt_set_mod4o := *; + template SET tspt_set_mod4c0 := *; + template SET tspt_set_mod4c1 := *; + template SET tspt_set_mod4c2 := *; + template SET tspt_set_mod4c3 := *; +} +//========================================================================= +// Data Types +//========================================================================= + +// Insert data type defintions here if applicable! +// You can use the data_type skeleton! + +//========================================================================= +// Signatures +//========================================================================= + +// Insert signature definitions here if applicable! +// You can use the signature skeleton! + +//========================================================================= +//Port Types +//========================================================================= + +// Insert port type defintions here if applicable! +// You can use the port_type skeleton! + +//========================================================================= +//Component Types +//========================================================================= + +// Insert component type defintions here if applicable! +// You can use the component_type skeleton! + +//========================================================================= +// Constants +//========================================================================= + +// Insert constants here if applicable! +// You can use the constant skeleton! + +//========================================================================= +// Templates +//========================================================================= + +// Insert templates here if applicable! +// You can use the template skeleton! + +//========================================================================= +// Altsteps +//========================================================================= + +// Insert altsteps here if applicable! +// You can use the altstep skeleton! + +//========================================================================= +// Functions +//========================================================================= + +// Insert functions here if applicable! +// You can use the function skeleton! + +//========================================================================= +// Testcases +//========================================================================= +testcase tc_set_ModulePar() runs on MC { + //values: + log(tspt_set_v0); + if(log2str(tspt_set_v0) != "<uninitialized template>") {setverdict(fail) } else {setverdict(pass)} + log(tspt_set_v1); + if(log2str(tspt_set_v1) != "{ b := true, i := <uninitialized template>, f := <uninitialized template>, bs := <uninitialized template>, os := <uninitialized template>, hs := <uninitialized template>, cs := <uninitialized template> }") {setverdict(fail) } else {setverdict(pass)} + log(tspt_set_v2); + if(log2str(tspt_set_v2) != "{ b := true, i := <uninitialized template>, f := <uninitialized template>, bs := <uninitialized template>, os := <uninitialized template>, hs := <uninitialized template>, cs := \"sth\" }") {setverdict(fail) } else {setverdict(pass)} + log(tspt_set_v3); + if(log2str(tspt_set_v3) != "{ b := true, i := 99, f := 0.000000, bs := omit, os := ?, hs := ?, cs := \"sth\" }") {setverdict(fail) } else {setverdict(pass)} + //jokers + if(log2str(tspt_set_mod4v1) != "{ b := true, i := <uninitialized template>, f := <uninitialized template>, bs := <uninitialized template>, os := <uninitialized template>, hs := <uninitialized template>, cs := <uninitialized template> }") {setverdict(fail) } else {setverdict(pass)} + if(log2str(tspt_set_mod4v2) != "{ b := true, i := <uninitialized template>, f := <uninitialized template>, bs := <uninitialized template>, os := <uninitialized template>, hs := <uninitialized template>, cs := \"sth\" }") {setverdict(fail) } else {setverdict(pass)} + if(log2str(tspt_set_mod4v3) != "{ b := true, i := 99, f := 0.000000, bs := omit, os := ?, hs := ?, cs := \"sth\" }") {setverdict(fail) } else {setverdict(pass)} + if(log2str(tspt_set_mod4a) != "*") {setverdict(fail) } else {setverdict(pass)}; + if(log2str(tspt_set_mod4q) != "?") {setverdict(fail) } else {setverdict(pass)}; + if(log2str(tspt_set_mod4o) != "omit") {setverdict(fail) } else {setverdict(pass)}; +} + +testcase tc_set_ModulePar_emb() runs on MC { + @try { + log(t_rset(tspt_set_v0)); + } + @catch( dte_message) { + if( match(dte_message, pattern "*Copying an uninitialized/unsupported template*" )) {setverdict(pass)} else {setverdict(fail)}; + } + log(tspt_set_v1); + @try { + log(t_rset(tspt_set_v1)); + } + @catch( dte_message) { + if( match(dte_message, pattern "*Copying an uninitialized/unsupported template*" )) {setverdict(pass)} else {setverdict(fail)}; + log("Hi"); + } + log("Bye"); + //jokers: + log(t_rset(tspt_set_mod4v1)); + if(log2str(t_rset(tspt_set_mod4v1)) == "{ s := { b := true, i := <uninitialized template>, f := <uninitialized template>, bs := <uninitialized template>, os := <uninitialized template>, hs := <uninitialized template>, cs := <uninitialized template> } }") {setverdict(pass)} else {setverdict(fail)}; + log(t_rset(tspt_set_mod4v2)); + if(log2str(t_rset(tspt_set_mod4v2)) == "{ s := { b := true, i := <uninitialized template>, f := <uninitialized template>, bs := <uninitialized template>, os := <uninitialized template>, hs := <uninitialized template>, cs := \"sth\" } }" ) {setverdict(pass)} else {setverdict(fail)}; + log(t_rset(tspt_set_mod4a)); + if(log2str(t_rset(tspt_set_mod4a)) == "{ s := * }") {setverdict(pass)} else {setverdict(fail)}; + log(t_rset(tspt_set_mod4q)); + if(log2str(t_rset(tspt_set_mod4q)) == "{ s := ? }") {setverdict(pass)} else {setverdict(fail)}; + log(t_rset(tspt_set_mod4o)); + if(log2str(t_rset(tspt_set_mod4o)) == "{ s := omit }") {setverdict(pass)} else {setverdict(fail)}; + log(t_rset(tspt_set_mod4c1)); + if(log2str(t_rset(tspt_set_mod4c1)) == "{ s := complement({ b := true, i := 99, f := 0.000000, bs := omit, os := ?, hs := ?, cs := \"sth\" }) }") {setverdict(pass)} else {setverdict(fail)}; + log(t_rset(tspt_set_mod4c2)); + if(log2str(t_rset(tspt_set_mod4c2)) == "{ s := complement({ b := true, i := 99, f := 0.000000, bs := omit, os := ?, hs := ?, cs := \"sth\" }, omit) }") {setverdict(pass)} else {setverdict(fail)}; + log(t_rset(tspt_set_mod4c3)); + if(log2str(t_rset(tspt_set_mod4c3)) == "{ s := complement({ b := true, i := 0, f := 0.000000, bs := omit, os := ?, hs := ?, cs := \"sth\" }, { b := true, i := 1, f := 0.000000, bs := omit, os := ?, hs := ?, cs := \"sth\" }, { b := true, i := 2, f := 0.000000, bs := omit, os := ?, hs := ?, cs := \"sth\" }) }") {setverdict(pass)} else {setverdict(fail)}; +} + +//rset +//cfg: tspt_set_mod4v3 := { b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=99} +testcase tc_set_mod4v3_emb() runs on MC { + log(t_rset(tspt_set_mod4v3)); + var RoRSET vl_good_values := { + {{ b:=true, i:=99, f:=0.0, bs:=omit, os:='FF'O,hs:='0'H, cs:="sth" }}, + {{ i:=99, b:=true, f:=0.0, bs:=omit, os:='ABBA'O, hs:='ABC11'H,cs:="sth" }}, + {{ b:=true, i:=99, f:=0.0, bs:=omit, os:='EF'O, hs:='D'H, cs:="sth" }}, + {{ b:=true, i:=99, f:=0.0, bs:=omit, os:='ABBA'O,hs:='A'H, cs:="sth" }} + } + var RoRSET vl_wrong_values := { + {omit}, + {{ b:=true, i:=omit, f:=0.0, bs:=omit, os:='FF'O, hs:='0'H, cs:="sth" }}, + {{ b:=true, i:=99, f:=0.0, bs:=omit, os:=omit, hs:=omit, cs:="sth" }}, + {{b:=true, i:=99, f:=0.0, bs:='0110'B, os:='ABBA'O,hs:='A'H, cs:="sth" }} + + } + f_checkMatchingValues_rset(t_rset(tspt_set_mod4v3),vl_good_values,vl_wrong_values); +} + +testcase tc_set_mod4a_emb() runs on MC { + log(t_rset(tspt_set_mod4a)); + var RoRSET vl_good_values := { + {omit}, + {{ b:=omit, i:=omit, f:=omit, bs:=omit, os:=omit,hs:=omit,cs:=omit}}, + {{ b:=true, i:=omit, f:=omit, bs:=omit, os:=omit,hs:=omit,cs:=omit}}, + {{ b:=true, i:=99, f:=0.0, bs:=omit, os:='FF'O,hs:='0'H,cs:="sth" }}, + {{ i:=99, b:=true, f:=0.0, bs:=omit, os:='ABBA'O,hs:='ABC11'H,cs:="sth" }} + } + var RoRSET vl_wrong_values := { } + f_checkMatchingValues_rset(t_rset(tspt_set_mod4a),vl_good_values,vl_wrong_values); +} + +testcase tc_set_mod4q_emb() runs on MC { + log(t_rset(tspt_set_mod4q)); + var RoRSET vl_good_values := { + {{ b:=omit, i:=omit, f:=omit, bs:=omit, os:=omit,hs:=omit,cs:=omit}}, + {{ b:=true, i:=omit, f:=omit, bs:=omit, os:=omit,hs:=omit,cs:=omit}}, + {{ b:=true, i:=99, f:=0.0, bs:=omit, os:='FF'O,hs:='0'H,cs:="sth" }}, + {{ i:=99, b:=true, f:=0.0, bs:=omit, os:='ABBA'O,hs:='ABC11'H,cs:="sth" }}, + {{ b:=true, i:=99, f:=0.0, bs:=omit, os:=omit,hs:=omit,cs:="sth" }}, + {{ b:=true, i:=99, f:=0.0, bs:='0110'B, os:='ABBA'O,hs:='A'H,cs:="sth" }} + } + var RoRSET vl_wrong_values := { + {omit} + } + f_checkMatchingValues_rset(t_rset(tspt_set_mod4q),vl_good_values,vl_wrong_values); +} + +testcase tc_set_mod4o_emb() runs on MC { + log(t_rset(tspt_set_mod4o)); + var RoRSET vl_good_values := { + {omit} + } + var RoRSET vl_wrong_values := { + {{ b:=omit, i:=omit, f:=omit, bs:=omit, os:=omit,hs:=omit,cs:=omit}}, + {{ b:=true, i:=omit, f:=omit, bs:=omit, os:=omit,hs:=omit,cs:=omit}}, + {{ b:=true, i:=99, f:=0.0, bs:=omit, os:='FF'O,hs:='0'H,cs:="sth" }}, + {{ i:=99, b:=true, f:=0.0, bs:=omit, os:='ABBA'O,hs:='ABC11'H,cs:="sth" }}, + {{ b:=true, i:=99, f:=0.0, bs:=omit, os:=omit,hs:=omit,cs:="sth" }}, + {{ b:=true, i:=99, f:=0.0, bs:='0110'B, os:='ABBA'O,hs:='A'H,cs:="sth" }} + } + f_checkMatchingValues_rset(t_rset(tspt_set_mod4o),vl_good_values,vl_wrong_values); +} +// Note: this tests legacy behavior and requires the -M compiler option! +//tspt_set_mod4c1 := complement({ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=99}) +testcase tc_set_mod4c1_emb() runs on MC { + log(t_rset(tspt_set_mod4c1)); + var RoRSET vl_good_values := { + {omit}, + {{ b:=false, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "noth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.1, bs:=omit, os:='00'O,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=omit,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:=omit,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=100}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:=omit,i:=100}}, + {{ b:=false, cs:= "no", f:=1.0, bs:='01'B, os:=omit,hs:=omit,i:=100}} + } + var RoRSET vl_wrong_values := { + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=99}} + } + f_checkMatchingValues_rset(t_rset(tspt_set_mod4c1),vl_good_values,vl_wrong_values); +} + +//tspt_set_mod4c2 := complement({ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=99}, omit) +testcase tc_set_mod4c2_emb() runs on MC { + log(t_rset(tspt_set_mod4c2)); + var RoRSET vl_good_values := { + {{ b:=false, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "noth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.1, bs:=omit, os:='00'O,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=omit,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:=omit,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=100}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:=omit,i:=100}}, + {{ b:=false, cs:= "no", f:=1.0, bs:='01'B, os:=omit,hs:=omit,i:=100}} + } + var RoRSET vl_wrong_values := { + { omit }, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=99}} + } + f_checkMatchingValues_rset(t_rset(tspt_set_mod4c2),vl_good_values,vl_wrong_values); +} +//complement(omit) +testcase tc_set_mod4c0_emb() runs on MC { + log(t_rset(tspt_set_mod4c0)); + var RoRSET vl_good_values := { + {{ b:=false, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "noth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.1, bs:=omit, os:='00'O,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=omit,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:=omit,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=100}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:=omit,i:=100}}, + {{ b:=false, cs:= "no", f:=1.0, bs:='01'B, os:=omit,hs:=omit,i:=100}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=99}} + } + var RoRSET vl_wrong_values := { + { omit } + } + f_checkMatchingValues_rset(t_rset(tspt_set_mod4c0),vl_good_values,vl_wrong_values); +} +//tspt_set_mod4c3 := +//complement({ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=0}, +//{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=1},{ b:=true,i:=2, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?}) + +testcase tc_set_mod4c3_emb() runs on MC { + log(t_rset(tspt_set_mod4c3)); + var RoRSET vl_good_values := { + {{ b:=false, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=98}}, + {{ b:=true, cs:= "noth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.1, bs:=omit, os:='00'O,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=omit,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:=omit,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=100}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:=omit,i:=100}}, + {{ b:=false, cs:= "no", f:=1.0, bs:='01'B, os:=omit,hs:=omit,i:=100}} + } + var RoRSET vl_wrong_values := { + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=0}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=1}}, + {{ b:=true,i:=2, cs:= "sth", f:=0.0, bs:=omit, os:='01'O,hs:='A'H}} + } + f_checkMatchingValues_rset(t_rset(tspt_set_mod4c3),vl_good_values,vl_wrong_values); +} + +//========================================================================= +// Control +//========================================================================= + +control { + log("***set tests *********"); + execute(tc_set_ModulePar()); + execute(tc_set_ModulePar_emb()); + execute(tc_set_mod4v3_emb()); + execute(tc_set_mod4a_emb()); + execute(tc_set_mod4q_emb()); + execute(tc_set_mod4o_emb()); + execute(tc_set_mod4c1_emb()); + execute(tc_set_mod4c2_emb()); + execute(tc_set_mod4c0_emb()); + execute(tc_set_mod4c3_emb()); +} + +} // end of module diff --git a/Regression_Test_java/src/text2ttcn/setof_test.ttcn b/Regression_Test_java/src/text2ttcn/setof_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..1e71400e24afb8c0fb8659f1fbda93dca3c1988f --- /dev/null +++ b/Regression_Test_java/src/text2ttcn/setof_test.ttcn @@ -0,0 +1,314 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +/* +//AUTHOR: +//DATE: +//VERSION: +*/ +module setof_test +{ + +//========================================================================= +// Import Part +//========================================================================= +import from types2 all; +import from functions2 all; +//========================================================================= +// Module Parameters +//========================================================================= +modulepar { + + //set of + template SoCS tspt_setof_mod4v1 := omit; + template SoCS tspt_setof_mod4v2 := omit; + template SoCS tspt_setof_mod4v3 := omit; + template SoCS tspt_setof_mod4a := omit; + template SoCS tspt_setof_mod4q := omit; + template SoCS tspt_setof_mod4o := *; + template SoCS tspt_setof_mod4c0 := *; + template SoCS tspt_setof_mod4c1 := *; + template SoCS tspt_setof_mod4c2 := *; + template SoCS tspt_setof_mod4c3 := *; + template SoCS tspt_setof_mod4vl := *; + + template SoCS tspt_setof_mod4v1ifp := omit; + template SoCS tspt_setof_mod4v2ifp := omit; + template SoCS tspt_setof_mod4v3ifp := omit; + template SoCS tspt_setof_mod4aifp := omit; + template SoCS tspt_setof_mod4qifp := omit; + template SoCS tspt_setof_mod4oifp := *; + template SoCS tspt_setof_mod4c0ifp := *; + template SoCS tspt_setof_mod4c1ifp := *; + template SoCS tspt_setof_mod4c2ifp := *; + template SoCS tspt_setof_mod4c3ifp := *; + template SoCS tspt_setof_mod4vlifp := *; + template SoCS tspt_setof_mod4superset := *; + template SoCS tspt_setof_mod4supersetifp := *; + template SoCS tspt_setof_mod4supersetl3 := *; + template SoCS tspt_setof_mod4supersetl1_3 := *; + template SoCS tspt_setof_mod4supersetl3ifp := *; + template SoCS tspt_setof_mod4subset := *; + template SoCS tspt_setof_mod4subsetifp := *; +} + +//========================================================================= +// Data Types +//========================================================================= + +// Insert data type defintions here if applicable! +// You can use the data_type skeleton! + +//========================================================================= +// Signatures +//========================================================================= + +// Insert signature definitions here if applicable! +// You can use the signature skeleton! + +//========================================================================= +//Port Types +//========================================================================= + +// Insert port type defintions here if applicable! +// You can use the port_type skeleton! + +//========================================================================= +//Component Types +//========================================================================= + +// Insert component type defintions here if applicable! +// You can use the component_type skeleton! + +//========================================================================= +// Constants +//========================================================================= + +// Insert constants here if applicable! +// You can use the constant skeleton! + +//========================================================================= +// Templates +//========================================================================= + +// Insert templates here if applicable! +// You can use the template skeleton! + +//========================================================================= +// Altsteps +//========================================================================= + +// Insert altsteps here if applicable! +// You can use the altstep skeleton! + +//========================================================================= +// Functions +//========================================================================= + +// Insert functions here if applicable! +// You can use the function skeleton! + +//========================================================================= +// Testcases +//========================================================================= +testcase tc_setof_ModulePar() runs on MC { + log(log2str(tspt_setof_mod4v1)); + if( log2str(tspt_setof_mod4v1) == "{ \"a\" }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4v2)); + if( log2str(tspt_setof_mod4v2) == "{ \"a\", \"b\" }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4v3)); + if( log2str(tspt_setof_mod4v3) == "{ \"a\", \"b\", \"c\" }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4a)); + if( log2str(tspt_setof_mod4a) == "*") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4q)); + if( log2str(tspt_setof_mod4q) == "?") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4o)); + if( log2str(tspt_setof_mod4o) == "omit") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4c0)); + if( log2str(tspt_setof_mod4c0) == "{ complement(omit) }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4c1)); + if( log2str(tspt_setof_mod4c1) == "{ complement(\"a\"), \"b\" }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4c2)); + if( log2str(tspt_setof_mod4c2) == "{ complement(\"a\", \"b\"), \"c\" }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4c3)); + if( log2str(tspt_setof_mod4c3) == "complement({ \"a\" }, { \"a\", \"b\" }, { \"c\" })") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4vl)); + if( log2str(tspt_setof_mod4vl) == "{ (\"a\", \"b\"), (\"cica\", \"macska\", \"cat\") }") { setverdict(pass)} else { setverdict(fail) }; + log(log2str(tspt_setof_mod4superset)); + if( log2str(tspt_setof_mod4superset) == "superset(\"a\", \"b\")") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4supersetl3)); + if( log2str(tspt_setof_mod4supersetl3) == "superset(\"a\", \"b\") length (3)") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4supersetl1_3)); + if( log2str(tspt_setof_mod4supersetl1_3) == "superset(\"a\", \"b\") length (1 .. 3)") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4subset)); + if( log2str(tspt_setof_mod4subset) == "subset(\"a\", \"b\")") { setverdict(pass)} else { setverdict(fail) } + + log(log2str(tspt_setof_mod4v1ifp)); + if( log2str(tspt_setof_mod4v1ifp) == "{ \"a\" } ifpresent") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4v2ifp)); + if( log2str(tspt_setof_mod4v2ifp) == "{ \"a\", \"b\" } ifpresent") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4v3ifp)); + if( log2str(tspt_setof_mod4v3ifp) == "{ \"a\", \"b\", \"c\" } ifpresent") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4aifp)); + if( log2str(tspt_setof_mod4aifp) == "* ifpresent") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4qifp)); + if( log2str(tspt_setof_mod4qifp) == "? ifpresent") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4oifp)); + if( log2str(tspt_setof_mod4oifp) == "omit ifpresent") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4c0ifp)); + if( log2str(tspt_setof_mod4c0ifp) == "{ complement(omit) } ifpresent") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4c1ifp)); + if( log2str(tspt_setof_mod4c1ifp) == "{ complement(\"a\"), \"b\" } ifpresent") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4c2ifp)); + if( log2str(tspt_setof_mod4c2ifp) == "{ complement(\"a\", \"b\"), \"c\" } ifpresent") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4c3ifp)); + if( log2str(tspt_setof_mod4c3ifp) == "complement({ \"a\" }, { \"a\", \"b\" }, { \"c\" }) ifpresent") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4vlifp)); + if( log2str(tspt_setof_mod4vlifp) == "{ (\"a\", \"b\"), (\"cica\", \"macska\", \"cat\") } ifpresent") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4supersetifp)); + if( log2str(tspt_setof_mod4supersetifp) == "superset(\"a\", \"b\") ifpresent") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4supersetl3ifp)); + if( log2str(tspt_setof_mod4supersetl3ifp) == "superset(\"a\", \"b\") length (3) ifpresent") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4subsetifp)); + if( log2str(tspt_setof_mod4subsetifp) == "subset(\"a\", \"b\") ifpresent") { setverdict(pass)} else { setverdict(fail) } +} + +testcase tc_setof_ModulePar_emb() runs on MC { + log(log2str(t_rsocs(tspt_setof_mod4v1))); + if( log2str(t_rsocs(tspt_setof_mod4v1)) == "{ s := { \"a\" } }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4v2))); + if( log2str(t_rsocs(tspt_setof_mod4v2)) == "{ s := { \"a\", \"b\" } }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4v3))); + if( log2str(t_rsocs(tspt_setof_mod4v3)) == "{ s := { \"a\", \"b\", \"c\" } }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4a))); + if( log2str(t_rsocs(tspt_setof_mod4a)) == "{ s := * }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4q))); + if( log2str(t_rsocs(tspt_setof_mod4q)) == "{ s := ? }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4o))); + if( log2str(t_rsocs(tspt_setof_mod4o)) == "{ s := omit }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4c0))); + if( log2str(t_rsocs(tspt_setof_mod4c0)) == "{ s := { complement(omit) } }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4c1))); + if( log2str(t_rsocs(tspt_setof_mod4c1)) == "{ s := { complement(\"a\"), \"b\" } }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4c2))); + if( log2str(t_rsocs(tspt_setof_mod4c2)) == "{ s := { complement(\"a\", \"b\"), \"c\" } }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4c3))); + if( log2str(t_rsocs(tspt_setof_mod4c3)) == "{ s := complement({ \"a\" }, { \"a\", \"b\" }, { \"c\" }) }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4vl))); + if( log2str(t_rsocs(tspt_setof_mod4vl)) == "{ s := { (\"a\", \"b\"), (\"cica\", \"macska\", \"cat\") } }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4superset))); + if( log2str(t_rsocs(tspt_setof_mod4superset)) == "{ s := superset(\"a\", \"b\") }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4supersetl3))); + if( log2str(t_rsocs(tspt_setof_mod4supersetl3)) == "{ s := superset(\"a\", \"b\") length (3) }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4subset))); + if( log2str(t_rsocs(tspt_setof_mod4subset)) == "{ s := subset(\"a\", \"b\") }") { setverdict(pass)} else { setverdict(fail) } + + + log(log2str(t_rsocs(tspt_setof_mod4v1ifp))); + if( log2str(t_rsocs(tspt_setof_mod4v1ifp)) == "{ s := { \"a\" } ifpresent }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4v2ifp))); + if( log2str(t_rsocs(tspt_setof_mod4v2ifp)) == "{ s := { \"a\", \"b\" } ifpresent }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4v3ifp))); + if( log2str(t_rsocs(tspt_setof_mod4v3ifp)) == "{ s := { \"a\", \"b\", \"c\" } ifpresent }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4aifp))); + if( log2str(t_rsocs(tspt_setof_mod4aifp)) == "{ s := * ifpresent }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4qifp))); + if( log2str(t_rsocs(tspt_setof_mod4qifp)) == "{ s := ? ifpresent }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4oifp))); + if( log2str(t_rsocs(tspt_setof_mod4oifp)) == "{ s := omit ifpresent }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4c0ifp))); + if( log2str(t_rsocs(tspt_setof_mod4c0ifp)) == "{ s := { complement(omit) } ifpresent }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4c1ifp))); + if( log2str(t_rsocs(tspt_setof_mod4c1ifp)) == "{ s := { complement(\"a\"), \"b\" } ifpresent }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4c2ifp))); + if( log2str(t_rsocs(tspt_setof_mod4c2ifp)) == "{ s := { complement(\"a\", \"b\"), \"c\" } ifpresent }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4c3ifp))); + if( log2str(t_rsocs(tspt_setof_mod4c3ifp)) == "{ s := complement({ \"a\" }, { \"a\", \"b\" }, { \"c\" }) ifpresent }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4vlifp))); + if( log2str(t_rsocs(tspt_setof_mod4vlifp)) == "{ s := { (\"a\", \"b\"), (\"cica\", \"macska\", \"cat\") } ifpresent }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4supersetifp))); + if( log2str(t_rsocs(tspt_setof_mod4supersetifp)) == "{ s := superset(\"a\", \"b\") ifpresent }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4supersetl3ifp))); + if( log2str(t_rsocs(tspt_setof_mod4supersetl3ifp)) == "{ s := superset(\"a\", \"b\") length (3) ifpresent }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4subsetifp))); + if( log2str(t_rsocs(tspt_setof_mod4subsetifp)) == "{ s := subset(\"a\", \"b\") ifpresent }") { setverdict(pass)} else { setverdict(fail) } + +} + +testcase tc_setof_mod4vlifp_emb() runs on MC { + log(log2str(t_rsocs(tspt_setof_mod4vlifp))); + var RoRSoCS vl_good_values := {{s:=omit}, {s:={"a","cica"} }} + var RoRSoCS vl_wrong_values := { {{"c","cica"}} } + f_checkMatchingValues_rsocs(t_rsocs(tspt_setof_mod4vlifp),vl_good_values,vl_wrong_values); +} + +testcase tc_setof_mod4superset_emb() runs on MC { + log(log2str(t_rsocs(tspt_setof_mod4superset))); + var RoRSoCS vl_good_values := { {s:={"a","cica","b"} }, {s:={"a","b"} } , {s:={"a","b","a", "d", "anything"} } } + var RoRSoCS vl_wrong_values := { {{"b","cica"}}, {{"a","c","anyth"}} } + f_checkMatchingValues_rsocs(t_rsocs(tspt_setof_mod4superset),vl_good_values,vl_wrong_values); +} + +testcase tc_setof_mod4supersetl3_emb() runs on MC { + log(log2str(t_rsocs(tspt_setof_mod4supersetl3))); + var RoRSoCS vl_good_values := { {s:={"a","cica","b"} }, {s:={"a","b","a"} } } + var RoRSoCS vl_wrong_values := { {{"b","cica"}}, {s:={"a","b","c","dada"} } } + f_checkMatchingValues_rsocs(t_rsocs(tspt_setof_mod4supersetl3),vl_good_values,vl_wrong_values); +} + +testcase tc_setof_mod4supersetl1_3_emb() runs on MC { + log(log2str(t_rsocs(tspt_setof_mod4supersetl1_3))); + var RoRSoCS vl_good_values := { {s:={"a","cica","b"} }, {s:={"a","b","a"} }, {s:={"a","b"} } } + var RoRSoCS vl_wrong_values := { {{"b","cica"}}, {s:={"a","b","c","dada"} } } + f_checkMatchingValues_rsocs(t_rsocs(tspt_setof_mod4supersetl1_3),vl_good_values,vl_wrong_values); +} + + +testcase tc_setof_mod4supersetifp_emb() runs on MC { + log(log2str(t_rsocs(tspt_setof_mod4supersetifp))); + var RoRSoCS vl_good_values := {{s:=omit}, {s:={"a","cica","b"} }, {s:={"a","b"} }, {s:={"a","b","b"} } } + var RoRSoCS vl_wrong_values := { {{"a","cica"}} } + f_checkMatchingValues_rsocs(t_rsocs(tspt_setof_mod4supersetifp),vl_good_values,vl_wrong_values); +} + +testcase tc_setof_mod4subset_emb() runs on MC { + log(log2str(t_rsocs(tspt_setof_mod4subset))); + var RoRSoCS vl_good_values := { {s:={}}, {s:={"a"}}, {s:={"b"}}, {s:={"a","b"} } } + var RoRSoCS vl_wrong_values := { {{"b","cica"}} } + f_checkMatchingValues_rsocs(t_rsocs(tspt_setof_mod4subset),vl_good_values,vl_wrong_values); +} + +testcase tc_setof_mod4subsetifp_emb() runs on MC { + log(log2str(t_rsocs(tspt_setof_mod4subsetifp))); + var RoRSoCS vl_good_values := {{s:=omit}, {s:={}},{s:={"a"}}, {s:={"b"}}, {s:={"a","b"}} } + var RoRSoCS vl_wrong_values := { {{"a","cica"}}, {{"a","cica","b"}} } + f_checkMatchingValues_rsocs(t_rsocs(tspt_setof_mod4subsetifp),vl_good_values,vl_wrong_values); +} +//TODO: matching tests + +//========================================================================= +// Control +//========================================================================= + +control { + log("***set of tests ******"); + execute(tc_setof_ModulePar()); + execute(tc_setof_ModulePar_emb()); + execute(tc_setof_mod4vlifp_emb()); + execute(tc_setof_mod4superset_emb()); + execute(tc_setof_mod4supersetl3_emb()); + execute(tc_setof_mod4supersetl1_3_emb()); + execute(tc_setof_mod4supersetifp_emb()); + execute(tc_setof_mod4subset_emb()); + execute(tc_setof_mod4subsetifp_emb()); +} + +} // end of module diff --git a/Regression_Test_java/src/text2ttcn/text2ttcn_1.cfg b/Regression_Test_java/src/text2ttcn/text2ttcn_1.cfg new file mode 100644 index 0000000000000000000000000000000000000000..19a0e7119b7d8825ed353100c42064b637c78731 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn/text2ttcn_1.cfg @@ -0,0 +1,508 @@ +############################################################################### +# 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 +# Baranyi, Botond +# +############################################################################### +[LOGGING] +SourceInfoFormat := Stack + +[MODULE_PARAMETERS] + +#boolean +tspt_b_a1 := true +tspt_b_a2 := false +tspt_b_a3 := omit +tspt_b_a4 := * +tspt_b_a5 := ? +tspt_b_a6 := true ifpresent +tspt_b_a7 := false ifpresent +tspt_b_a8 := * ifpresent +tspt_b_a9 := ? ifpresent +tspt_b_a10 := (true,false) +tspt_b_a11 := complement(true) + +#tspt_b_err := xy //error +#tspt_b_err := "apple" +#tspt_b_err := 'apple2' +#tspt_b_err := 12 + +#Type: integer +tspt_i1 := 9 +tspt_i2 := omit +tspt_i3 := * +tspt_i4 := ? +tspt_i5 := (0,1,-1) +tspt_i6 := 9 ifpresent +tspt_i7 := omit ifpresent +tspt_i8 := * ifpresent +tspt_i9 := ? ifpresent +tspt_i10 := (0,1,-1) ifpresent +tspt_i11 := complement(9) +#value list: +#tspt_i_vl := (0,1,-1) + +#Tpe:float +tspt_f1 := 9.00 +tspt_f2 := omit +tspt_f3 := * +tspt_f4 := ? +tspt_f_mod4vl1 := (0.0) +tspt_f_mod4vl3 := (0.0, 1.2, -1.9) +tspt_f6 := 9.00 ifpresent +tspt_f7 := omit ifpresent +tspt_f8 := * ifpresent +tspt_f9 := ? ifpresent +tspt_f10 := (0.0, 1.2, -1.9) ifpresent +tspt_f11 := complement(9.000) +tspt_f12 := complement(9.000) ifpresent +tspt_f13 := (-1.9..3.1) +tspt_f14 := (-1.9..3.1) ifpresent +#Type: bitstring + +tspt_bs_mod4v := '01101'B; + tspt_bs_mod4o := omit; + tspt_bs_mod4a := *; + tspt_bs_mod4q := ?; + tspt_bs_mod4al1 := * length(2); //length restriction + tspt_bs_mod4al2 := * length(2..4); + tspt_bs_mod4ql1 := ? length(2); + tspt_bs_mod4ql2 := ? length(2..4); + //tspt_bs_mod4vl1 := ('01101'B); //TODO for Adam: in line xx, at or before token `)': syntax error, unexpected ')', expecting ',' + tspt_bs_mod4vl2 := ('01101'B,'1010'B); + tspt_bs_mod4vl3 := ('01101'B,'1010'B,'101'B); + tspt_bs_mod4c1 := complement('01101'B) + tspt_bs_mod4c2 := complement('01101'B,'1010'B); + tspt_bs_mod4c3 := complement('01101'B,'1010'B,'101'B); + //tspt_bs_mod4r1 := ("A".."B"); //range not allowed + //tspt_bs_mod4r2 := ("a".."c"); //range not allowed + tspt_bs_mod4pa := '000*111'B + tspt_bs_mod4pq := '000?111'B + + tspt_bs_mod4vifp := '01101'B ifpresent; + tspt_bs_mod4oifp := omit ifpresent; + tspt_bs_mod4aifp := * ifpresent; + tspt_bs_mod4qifp := ? ifpresent; + tspt_bs_mod4al1ifp := * length(2) ifpresent; //length restriction + tspt_bs_mod4al2ifp := * length(2..4) ifpresent; + tspt_bs_mod4ql1ifp := ? length(2) ifpresent; + tspt_bs_mod4ql2ifp := ? length(2..4) ifpresent; + //tspt_bs_mod4vl1ifp := ('01101'B) ifpresent; //TODO for Adam: in line yy, at or before token `)': syntax error, unexpected ')', expecting ',' + tspt_bs_mod4vl2ifp := ('01101'B,'1010'B) ifpresent; + tspt_bs_mod4vl3ifp := ('01101'B,'1010'B,'101'B) ifpresent; + tspt_bs_mod4c1ifp := complement('01101'B) ifpresent + tspt_bs_mod4c2ifp := complement('01101'B,'1010'B) ifpresent; + tspt_bs_mod4c3ifp := complement('01101'B,'1010'B,'101'B) ifpresent; + //tspt_bs_mod4r1ifp := ('A'B .. 'B'B) ifpresent; //range not allowed + //tspt_bs_mod4r2ifp := ('a'B ..'c'B) ifpresent;//range not allowed + tspt_bs_mod4paifp := '000*111'B ifpresent + tspt_bs_mod4pqifp := '000?111'B ifpresent + + +#Type: octetstring + tspt_os_mod4v := 'ABBA'O; + tspt_os_mod4o := omit; + tspt_os_mod4a := *; + tspt_os_mod4q := ?; + tspt_os_mod4al1 := * length(2); //length restriction + tspt_os_mod4al2 := * length(2..4); + tspt_os_mod4ql1 := ? length(2); + tspt_os_mod4ql2 := ? length(2..4); + //tspt_os_mod4vl1 := ('ABBA'O); //TODO for Adam: in line xx, at or before token `)': syntax error, unexpected ')', expecting ',' + tspt_os_mod4vl2 := ('ABBA'O,'baba'O); + tspt_os_mod4vl3 := ('ABBA'O,'baba'O,'B120'O); + tspt_os_mod4c1 := complement('ABBA'O) + tspt_os_mod4c2 := complement('ABBA'O,'baba'O); + tspt_os_mod4c3 := complement('ABBA'O,'baba'O,'B120'O); + //tspt_os_mod4r1 := ("A".."B"); //range not allowed + //tspt_os_mod4r2 := ("a".."c"); //range not allowed + tspt_os_mod4pa := 'abcd*1234'O + tspt_os_mod4pq := 'abcd?1234'O + + tspt_os_mod4vifp := 'ABBA'O ifpresent; + tspt_os_mod4oifp := omit ifpresent; + tspt_os_mod4aifp := * ifpresent; + tspt_os_mod4qifp := ? ifpresent; + tspt_os_mod4al1ifp := * length(2) ifpresent; //length restriction + tspt_os_mod4al2ifp := * length(2..4) ifpresent; + tspt_os_mod4ql1ifp := ? length(2) ifpresent; + tspt_os_mod4ql2ifp := ? length(2..4) ifpresent; + //tspt_os_mod4vl1ifp := ('ABBA'O) ifpresent; //TODO for Adam: in line yy, at or before token `)': syntax error, unexpected ')', expecting ',' + tspt_os_mod4vl2ifp := ('ABBA'O,'baba'O) ifpresent; + tspt_os_mod4vl3ifp := ('ABBA'O,'baba'O,'B120'O) ifpresent; + tspt_os_mod4c1ifp := complement('ABBA'O) ifpresent + tspt_os_mod4c2ifp := complement('ABBA'O,'baba'O) ifpresent; + tspt_os_mod4c3ifp := complement('ABBA'O,'baba'O,'B120'O) ifpresent; + //tspt_os_mod4r1ifp := ('A'O..'B'O) ifpresent; //range not allowed + //tspt_os_mod4r2ifp := ('a'O..'c'O) ifpresent;//range not allowed + tspt_os_mod4paifp := 'abcd*1234'O ifpresent + tspt_os_mod4pqifp := 'abcd?1234'O ifpresent + +#Type: hexstring + + tspt_hs_mod4v := 'ABBA'H; + tspt_hs_mod4o := omit; + tspt_hs_mod4a := *; + tspt_hs_mod4q := ?; + tspt_hs_mod4al1 := * length(2); //length restriction + tspt_hs_mod4al2 := * length(2..4); + tspt_hs_mod4ql1 := ? length(2); + tspt_hs_mod4ql2 := ? length(2..4); + //tspt_hs_mod4vl1 := ('ABBA'H); //TODO for Adam: in line xx, at or before token `)': syntax error, unexpected ')', expecting ',' + tspt_hs_mod4vl2 := ('ABBA'H,'baba'H); + tspt_hs_mod4vl3 := ('ABBA'H,'baba'H,'B12'H); + tspt_hs_mod4c1 := complement('ABBA'H) + tspt_hs_mod4c2 := complement('ABBA'H,'baba'H); + tspt_hs_mod4c3 := complement('ABBA'H,'baba'H,'B12'H); + //tspt_hs_mod4r1 := ("A".."B"); //range not allowed + //tspt_hs_mod4r2 := ("a".."c"); //range not allowed + tspt_hs_mod4pa := 'abc*123'H + tspt_hs_mod4pq := 'abc?123'H + + tspt_hs_mod4vifp := 'ABBA'H ifpresent; + tspt_hs_mod4oifp := omit ifpresent; + tspt_hs_mod4aifp := * ifpresent; + tspt_hs_mod4qifp := ? ifpresent; + tspt_hs_mod4al1ifp := * length(2) ifpresent; //length restriction + tspt_hs_mod4al2ifp := * length(2..4) ifpresent; + tspt_hs_mod4ql1ifp := ? length(2) ifpresent; + tspt_hs_mod4ql2ifp := ? length(2..4) ifpresent; + //tspt_hs_mod4vl1ifp := ('ABBA'H) ifpresent; //TODO for Adam: in line yy, at or before token `)': syntax error, unexpected ')', expecting ',' + tspt_hs_mod4vl2ifp := ('ABBA'H,'baba'H) ifpresent; + tspt_hs_mod4vl3ifp := ('ABBA'H,'baba'H,'B12'H) ifpresent; + tspt_hs_mod4c1ifp := complement('ABBA'H) ifpresent + tspt_hs_mod4c2ifp := complement('ABBA'H,'baba'H) ifpresent; + tspt_hs_mod4c3ifp := complement('ABBA'H,'baba'H,'B12'H) ifpresent; + //tspt_hs_mod4r1ifp := ('A'H..'B'H) ifpresent; //range not allowed + //tspt_hs_mod4r2ifp := ('a'H..'c'H) ifpresent;//range not allowed + tspt_hs_mod4paifp := 'abc*123'H ifpresent + tspt_hs_mod4pqifp := 'abc?123'H ifpresent + +#Type: charstring + tspt_cs_mod4v := "ABBA"; + tspt_cs_mod4o := omit; + tspt_cs_mod4ol := omit length(2); + tspt_cs_mod4a := *; + tspt_cs_mod4q := ?; + tspt_cs_mod4al1 := * length(2); //length restriction + tspt_cs_mod4al2 := * length(2..4); + tspt_cs_mod4ql1 := ? length(2); + tspt_cs_mod4ql2 := ? length(2..4); + //tspt_cs_mod4vl1 := ("ABBA"); //TODO for Adam: in line 67, at or before token `)': syntax error, unexpected ')', expecting ',' + tspt_cs_mod4vl2 := ("ABBA","baba"); + tspt_cs_mod4vl3 := ("ABBA","baba","Bye"); + tspt_cs_mod4c1 := complement("ABBA") + tspt_cs_mod4c2 := complement("ABBA","baba"); + tspt_cs_mod4c3 := complement("ABBA","baba","Bye"); + tspt_cs_mod4r1 := ("A".."B"); //range + tspt_cs_mod4r2 := ("a".."c"); + tspt_cs_mod4pa := pattern "abc*xyz" + tspt_cs_mod4pq := pattern "abc?xyz" + + tspt_cs_mod4vifp := "ABBA" ifpresent; + tspt_cs_mod4oifp := omit ifpresent; + tspt_cs_mod4aifp := * ifpresent; + tspt_cs_mod4qifp := ? ifpresent; + tspt_cs_mod4al1ifp := * length(2) ifpresent; //length restriction + tspt_cs_mod4al2ifp := * length(2..4) ifpresent; + tspt_cs_mod4ql1ifp := ? length(2) ifpresent; + tspt_cs_mod4ql2ifp := ? length(2..4) ifpresent; + //tspt_cs_mod4vl1ifp := ("ABBA") ifpresent; //TODO for Adam: in line 86, at or before token `)': syntax error, unexpected ')', expecting ',' + tspt_cs_mod4vl2ifp := ("ABBA","baba") ifpresent; + tspt_cs_mod4vl3ifp := ("ABBA","baba","Bye") ifpresent; + tspt_cs_mod4c1ifp := complement("ABBA") ifpresent + tspt_cs_mod4c2ifp := complement("ABBA","baba") ifpresent; + tspt_cs_mod4c3ifp := complement("ABBA","baba","Bye") ifpresent; + tspt_cs_mod4r1ifp := ("A".."B") ifpresent; //range + tspt_cs_mod4r2ifp := ("a".."c") ifpresent; + tspt_cs_mod4paifp := pattern "abc*xyz" ifpresent + tspt_cs_mod4pqifp := pattern "abc?xyz" ifpresent + +#type: universal charstring + tspt_ucs_mod4v := "ABBA"; + tspt_ucs_mod4o := omit; + tspt_ucs_mod4ol := omit length(2); + tspt_ucs_mod4a := *; + tspt_ucs_mod4q := ?; + tspt_ucs_mod4al1 := * length(2); //length restriction + tspt_ucs_mod4al2 := * length(2..4); + tspt_ucs_mod4ql1 := ? length(2); + tspt_ucs_mod4ql2 := ? length(2..4); + //tspt_ucs_mod4vl1 := ("ABBA"); //TODO for Adam: in line 67, at or before token `)': syntax error, unexpected ')', expecting ',' + tspt_ucs_mod4vl2 := ("Ãdám","Éva"); + tspt_ucs_mod4vl3 := ("ABBA","baba","Bye"); + tspt_ucs_mod4c1 := complement("ABBA") + tspt_ucs_mod4c2 := complement("ABBA","baba"); + tspt_ucs_mod4c3 := complement("ABBA","baba","Bye"); + tspt_ucs_mod4r1 := ("A".."B"); //range + tspt_ucs_mod4r2 := ("a".."c"); + tspt_ucs_mod4pa := pattern "abc*xyz" + tspt_ucs_mod4pq := pattern "abc?xyz" + + tspt_ucs_mod4vifp := "ABBA" ifpresent; + tspt_ucs_mod4oifp := omit ifpresent; + tspt_ucs_mod4aifp := * ifpresent; + tspt_ucs_mod4qifp := ? ifpresent; + tspt_ucs_mod4al1ifp := * length(2) ifpresent; //length restriction + tspt_ucs_mod4al2ifp := * length(2..4) ifpresent; + tspt_ucs_mod4ql1ifp := ? length(2) ifpresent; + tspt_ucs_mod4ql2ifp := ? length(2..4) ifpresent; + //tspt_ucs_mod4vl1ifp := ("ABBA") ifpresent; //TODO for Adam: in line 86, at or before token `)': syntax error, unexpected ')', expecting ',' + tspt_ucs_mod4vl2ifp := ("ABBA","baba") ifpresent; + tspt_ucs_mod4vl3ifp := ("ABBA","baba","Bye") ifpresent; + tspt_ucs_mod4c1ifp := complement("ABBA") ifpresent + tspt_ucs_mod4c2ifp := complement("ABBA","baba") ifpresent; + tspt_ucs_mod4c3ifp := complement("ABBA","baba","Bye") ifpresent; + tspt_ucs_mod4r1ifp := ("A".."B") ifpresent; //range + tspt_ucs_mod4r2ifp := ("a".."c") ifpresent; + tspt_ucs_mod4paifp := pattern "abc*xyz" ifpresent + tspt_ucs_mod4pqifp := pattern "abc?xyz" ifpresent + + +############### Type:REC #################################### +tspt_rec_mod4empty := {} +tspt_rec_mod4v := {1,1.0,"ABBA",'0100'B} +tspt_rec_mod4a := *; +tspt_rec_mod4q := ?; +tspt_rec_mod4o := omit; +tspt_rec_mod4vr := { (1..2), ?, "ABBA", '0100'B } //not final value! +tspt_rec_mod4vl2x2 := { 1, 1.0, ("ABBA","baba"),('0100'B,'01001'B) } +tspt_rec_mod4omitx4 := { omit, omit, omit, omit } +tspt_rec_mod4r := ({1,1.0,"ABBA",'0100'B}, {2,2.0,"baba",'01001'B}) +tspt_rec_mod4vr := {1,1.0,("ABBA","baba"),'0100'B} +tspt_rec_mod4c := complement( {1,1.0,("ABBA","baba"),'0100'B} ) +tspt_rec_mod4vl := { 1, -,("ABBA","baba"), -} +tspt_rec_mod4vq := { ?, -,-, '0100'B} + +tspt_rec_mod4cspattern := { *, -,pattern "abc*xyz", '0100'B} + +tspt_rec_mod4cspatternbs := { cs := pattern "abc*xyz"} +tspt_rec_mod4cspatternbs := { bs := '0100'B} + +tspt_rec_mod4cspatternbs2 := { i := -, f := -, cs := pattern "abc*xyz", bs:= '0100'B } + +tspt_mod4pattern_mixed_order := { f := -, cs := pattern "abc*xyz", bs:= '0100'B, i := - } +//== ifpresent +tspt_rec_mod4emptyifp := {} ifpresent +tspt_rrec_mod4emptyifp := { rec:= {} ifpresent } +tspt_rec_mod4vifp := {1 ifpresent,1.0 ifpresent,"ABBA" ifpresent,'0100'B ifpresent} +tspt_rec_mod4aifp := * ifpresent; //???? TR ??? +tspt_rec_mod4qifp := ? ifpresent; //???? TR ??? +tspt_rec_mod4oifp := omit ifpresent; //???? TR ??? +tspt_rec_mod4vrifp := { (1..2) ifpresent, ? ifpresent, "ABBA" ifpresent, '0100'B ifpresent } +tspt_rec_mod4vl2x2ifp := { 1 ifpresent, 1.0 ifpresent, ("ABBA" ifpresent,"baba" ifpresent),('0100'B,'01001'B) ifpresent } +tspt_rec_mod4omitx4ifp := { omit, omit, omit, omit } ifpresent +tspt_rec_mod4rifp := ({1 ifpresent,1.0 ifpresent,"ABBA" ifpresent,'0100'B ifpresent}, {2,2.0,"baba",'01001'B}) +tspt_rec_mod4cifp := complement( {1 ifpresent,1.0 ifpresent,("ABBA","baba") ifpresent,'0100'B ifpresent} ) +tspt_rec_mod4vlifp := { 1 ifpresent, -,("ABBA","baba") ifpresent, -} +tspt_rec_mod4vqifp := { ?, -,-, '0100'B ifpresent} + +tspt_rec_mod4cspatternifp := { * ifpresent, -,pattern "abc*xyz" ifpresent, '0100'B ifpresent} + +tspt_rec_mod4cspatternbsifp := { cs := pattern "abc*xyz" ifpresent} +tspt_rec_mod4cspatternbsifp := { bs := '0100'B ifpresent} + +tspt_rec_mod4cspatternbs2ifp := { i := -, f := -, cs := pattern "abc*xyz" ifpresent, bs:= '0100'B ifpresent} + +tspt_mod4pattern_mixed_orderifp := { f := -, cs := pattern "abc*xyz" ifpresent, bs:= '0100'B ifpresent, i := - } +//== +#Type: REC2 +tspt_REC2_2 := {-,-} +tspt_REC2_3 := { *, -, 2 ifpresent } +tspt_REC2_4 := { b:=?, cs:=-} //ugly spacing:) +tspt_REC2_5 := { b:=?, cs:= ? length(1), i := * } + +#Type: record of +tspt_recof_i_mod4v0 := {}; +tspt_recof_i_mod4v1 := {1}; +tspt_recof_i_mod4v2 := {1,2}; +tspt_recof_i_mod4v3 := {1,2,3}; +tspt_recof_i_mod4v3a := {1,*,3}; +tspt_recof_i_mod4v3q := {1,?,3}; +tspt_recof_i_mod4vl3 := {(1,2),2,(3,4)}; //value list +tspt_recof_i_mod4vl := ( {1,2,3}, {2,2,4} ) +tspt_recof_i_mod4v10 := {1,2,3,4,5,6,7,8,9,10}; +tspt_recof_i_mod4o := omit; +tspt_recof_i_mod4a := *; +tspt_recof_i_mod4q := ?; +tspt_recof_i_mod4r := {1,(1..3)}; //range +//tspt_recof_i_mod4cu := { 1, complement(1,2,3) } //3->2 elements --undefined behavior, result: { permutation(1, complement(1, 2, 3) } +tspt_recof_i_mod4cu := { 1, complement(1,2,3),3,4 } //3->2 elements --undefined behavior, result: { permutation(1, complement(1, 2, 3) } +tspt_recof_i_mod4c := { 1, complement(1,2,3),1,1 } //3->4 elements +tspt_recof_i_mod4cm1 := { 1, complement(1,2,3),1} //3->3 elements +tspt_recof_i_mod4cm2 := { 1, complement(1,2,3),1,1,1} //3->5 elements +tspt_recof_i_mod4lv := ? length(3) +tspt_recof_i_mod4lr := ? length(3..5) //length range +tspt_recof_i_mod4p := { permutation( 1, 2, 3), 10 } +tspt_recof_i_mod4rifp := {1,(1..3)} ifpresent +tspt_recof_i_mod4vlifp := ( {1,2,3}, {2,2,4} ) ifpresent + +#type: array +tspt_array_i3_mod4a := * +tspt_array_i3_mod4q := ? +tspt_array_i3_mod4o := omit +tspt_array_i3_mod4v0 := {-,-,-} +tspt_array_i3_mod4v1:= {1,-,-} +tspt_array_i3_mod4v2:= {1,2,-} +tspt_array_i3_mod4v3v := {0, 1, 2} +//tspt_array_i3_mod4v4 := {0, 1, 2, 3} +tspt_array_i3_mod4v3a := {0, *, 2} +tspt_array_i3_mod4v3q := {?, 1, 2} +//tspt_array_i3_mod4v3o := {omit, 1, 2} //error +tspt_array_i3_mod4v3vl := {0, 1, (1,2)} //value list +tspt_array_i3_mod4vl := ( {0,1,2},{9,10,11}) +tspt_array_i3_mod4v3r := {0, 1, (1..3)} //range +tspt_array_i3_mod4v3mix := {(0,1), 1, (1..3)} +tspt_array_i3_mod4v3c := {(0,1), 1, complement(2,3)} +tspt_array_i3_mod4field1 := {0, -, -} + +tspt_array_i3_mod4aifp := * ifpresent +tspt_array_i3_mod4qifp := ? ifpresent +tspt_array_i3_mod4v0ifp := omit ifpresent //not error ? +tspt_array_i3_mod4v1ifp := {1} ifpresent //not error +tspt_array_i3_mod4v2ifp := {1,2} ifpresent //noterror +tspt_array_i3_mod4v3vifp := {0, 1, 2} ifpresent +//tspt_array_i3_mod4v4 := {0, 1, 2, 3} ifpresent +tspt_array_i3_mod4v3aifp := {0, *, 2} ifpresent +tspt_array_i3_mod4v3qifp := {?, 1, 2} ifpresent +//tspt_array_i3_mod4v3o := {omit, 1, 2} //error +tspt_array_i3_mod4v3vlifp := {0, 1, (1,2)} ifpresent //value list +tspt_array_i3_mod4vlifp := ( {0,1,2},{9,10,11}) ifpresent +tspt_array_i3_mod4v3rifp := {0, 1, (1..3)} ifpresent //range +tspt_array_i3_mod4v3mixifp := {(0,1), 1, (1..3)} ifpresent +tspt_array_i3_mod4v3cifp := {(0,1), 1, complement(2,3)} ifpresent +tspt_array_i3_mod4field1ifp := {0, -, -} ifpresent + +//=== SET=== +tspt_set_mod4v1 := { b:=true }; +tspt_set_mod4v2 := { b:=true, cs:= "sth" }; +tspt_set_mod4v3 := { b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=99} +tspt_set_mod4a := *; +tspt_set_mod4q := ?; +tspt_set_mod4o := omit; +tspt_set_mod4c1 := complement({ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=99}) +tspt_set_mod4c2 := complement({ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=99}, omit) +tspt_set_mod4c0 := complement(omit) +tspt_set_mod4c3 := complement({ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=0},{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=1},{ b:=true,i:=2, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?}) + +tspt_setof_mod4v1 := { "a" } +tspt_setof_mod4v2 := { "a", "b"} +tspt_setof_mod4v3 := { "a","b","c"} +tspt_setof_mod4a := * +tspt_setof_mod4q := ?; +tspt_setof_mod4o := omit; +tspt_setof_mod4c0 := {complement(omit)}; +tspt_setof_mod4c1 := {complement("a"),"b"}; +tspt_setof_mod4c2 := {complement("a","b"),"c"}; +tspt_setof_mod4c3 := complement({"a"}, {"a","b"},{"c"}); +tspt_setof_mod4vl := { ("a","b"),("cica","macska","cat") } +tspt_setof_mod4superset := superset ("a", "b") +tspt_setof_mod4subset := subset ("a", "b") +tspt_setof_mod4supersetl3 := superset ("a", "b") length(3) +tspt_setof_mod4supersetl1_3 := superset ("a", "b") length(1..3) + +tspt_setof_mod4v1ifp := { "a" } ifpresent +tspt_setof_mod4v2ifp := { "a", "b"} ifpresent +tspt_setof_mod4v3ifp := { "a","b","c"} ifpresent +tspt_setof_mod4aifp := * ifpresent +tspt_setof_mod4qifp := ? ifpresent +tspt_setof_mod4oifp := omit ifpresent +tspt_setof_mod4c0ifp := {complement(omit)} ifpresent +tspt_setof_mod4c1ifp := {complement("a"),"b"} ifpresent +tspt_setof_mod4c2ifp := {complement("a","b"),"c"} ifpresent +tspt_setof_mod4c3ifp := complement({"a"}, {"a","b"},{"c"}) ifpresent +tspt_setof_mod4vlifp := { ("a","b"),("cica","macska","cat") } ifpresent +tspt_setof_mod4supersetifp := superset ("a", "b") ifpresent +tspt_setof_mod4supersetl3ifp := superset ("a", "b") length(3) ifpresent +tspt_setof_mod4subsetifp := subset ("a", "b") ifpresent +//enum +tspt_enum_mod4v := first +tspt_enum_mod4a := * +tspt_enum_mod4q := ? +tspt_enum_mod4o := omit +tspt_enum_mod4c0:=complement(omit); +tspt_enum_mod4c1:=complement(first); +tspt_enum_mod4c2:=complement(first,second); +tspt_enum_mod4vl1 := first +tspt_enum_mod4vl2 := (first, second ) + +tspt_enum_mod4vifp := first ifpresent +tspt_enum_mod4aifp := * ifpresent +tspt_enum_mod4qifp := ? ifpresent +tspt_enum_mod4oifp := omit ifpresent +tspt_enum_mod4c0ifp := complement(omit) ifpresent +tspt_enum_mod4c1ifp := complement(first) ifpresent +tspt_enum_mod4c2ifp := complement(first,second) ifpresent +tspt_enum_mod4vl1ifp := first ifpresent +tspt_enum_mod4vl2ifp := (first, second ) ifpresent + +//union +tspt_union_mod4v_b := { b := true } +tspt_union_mod4v_i := { i := 1 } +tspt_union_mod4v_f := { f := 1.0 } +tspt_union_mod4v_bs := { bs := '01101'B } +tspt_union_mod4v_os := { os := 'ABBA'O } +tspt_union_mod4v_hs := { hs := 'ABBA'H } +tspt_union_mod4v_cs := { cs := "ABBA" } +tspt_union_mod4v_r := { r := { 1, 1.0, "ABBA",'0100'B } } +tspt_union_mod4v_roi := { roi := { 1 } } +tspt_union_mod4v_s_uninit := { s := { b := true } } +tspt_union_mod4v_s := { s:= { b:=true, i:=1,f:=1.0,bs:='01101'B, os:='ABBA'O, hs:='ABBA'H, cs:="ABBA" } } +tspt_union_mod4v_socs := { socs := { "ABBA"} } +tspt_union_mod4v_e := { e := first } +tspt_union_mod4v_u := { u := { i := 1 } } + +tspt_union_mod4a := * +tspt_union_mod4q := ? +tspt_union_mod4o := omit + +tspt_union_mod4v_bifp := { b := true } ifpresent + + +tspt_union_mod4v_bifp := { b := true } ifpresent +tspt_union_mod4v_iifp := { i := 1 } ifpresent +tspt_union_mod4v_fifp := { f := 1.0 } ifpresent +tspt_union_mod4v_bsifp := { bs := '01101'B } ifpresent +tspt_union_mod4v_osifp := { os := 'ABBA'O } ifpresent +tspt_union_mod4v_hsifp := { hs := 'ABBA'H } ifpresent +tspt_union_mod4v_csifp := { cs := "ABBA" } ifpresent +tspt_union_mod4v_rifp := { r := { 1, 1.0, "ABBA",'0100'B } } ifpresent +tspt_union_mod4v_roiifp := { roi := { 1 } } ifpresent +tspt_union_mod4v_s_uninitifp := { s := { b := true } } ifpresent +tspt_union_mod4v_sifp := { s:= { b:=true, i:=1,f:=1.0,bs:='01101'B, os:='ABBA'O, hs:='ABBA'H, cs:="ABBA" } } ifpresent +tspt_union_mod4v_socsifp := { socs := { "ABBA"} } ifpresent +tspt_union_mod4v_eifp := { e := first } ifpresent +tspt_union_mod4v_uifp := { u := { i := 1 } } ifpresent + +tspt_union_mod4aifp := * ifpresent +tspt_union_mod4qifp := ? ifpresent +tspt_union_mod4oifp := omit ifpresent +[EXECUTE] +#array_test.tc_array_string2ttcn_DTE_test - TODO: put into neg test !!! +array_test.control +boolean_test.control +integer_test.control +float_test.control +bitstring_test.control +octetstring_test.control +hexstring_test.control +charstring_test.control +record_test.control +recordof_test.control +set_test.control +setof_test.control +enum_test.control +ucharstring_test.control +union_test.control +objid_test.control + + +#To debug the faulty testcases: +#record_test.tc_REC_string2ttcn_empty +#record_test.tc_RREC_string2ttcn_oifp diff --git a/Regression_Test_java/src/text2ttcn/text2ttcn_2.cfg b/Regression_Test_java/src/text2ttcn/text2ttcn_2.cfg new file mode 100644 index 0000000000000000000000000000000000000000..46e4425d4b660f1d95b387da185020555a772327 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn/text2ttcn_2.cfg @@ -0,0 +1,4 @@ +[ORDERED_INCLUDE] +"../text2ttcn_1.cfg" +[EXECUTE] +component_test.control diff --git a/Regression_Test_java/src/text2ttcn/types2.ttcn b/Regression_Test_java/src/text2ttcn/types2.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..e30ebda334ca1c573650676a2d3d73090fa89fd1 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn/types2.ttcn @@ -0,0 +1,254 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +module types2 { + +type component MC {} + + + +group g_boolean { + type record of boolean RoB; +}//g_boolean + +group g_integer { + + type record of integer RoI; + type integer int_1_3 (1..3) + +} //g_integer + +group g_float{ + type record of float RoF + +} //g_float + +group g_bitstring { + type bitstring BitStrings1 ('0'B, '1'B ); + type bitstring BitStrings2 ('00'B, '01'B, '10'B, '11'B); + type bitstring BitStrings_1_2 (BitStrings1, BitStrings2); + + type record of hexstring RoBS; + //wrapper to test charstring in record: + type record RBS { + bitstring bs optional + } + + type record of RBS RoRBS; + + template RBS t_rbs(template bitstring pl_bs) := { bs:=pl_bs } + +}//g_bitstring + +group g_octetstring { + type record of octetstring RoOS; + //wrapper to test charstring in record: + type record ROS { + octetstring os optional + } + + type record of ROS RoROS; + + template ROS t_ros(template octetstring pl_os) := { os:=pl_os } + +}//g_octetstring + +group g_hexstring { + type record of hexstring RoHS; + //wrapper to test charstring in record: + type record RHS { + hexstring hs optional + } + + type record of RHS RoRHS; + + template RHS t_rhs(template hexstring pl_hs) := { hs:=pl_hs } + +}//g_hexstring + +group g_charstring { + + type record of charstring RoCS; + //wrapper to test charstring in record: + type record RCS { + charstring cs optional + } + + type record of RCS RoRCS; + + template RCS t_rcs(template charstring pl_cs) := { cs:=pl_cs } + +}//g_charstring + +group g_universal_charstring { + + type record of universal charstring RoUCS; + //wrapper to test charstring in record: + type record RUCS { + universal charstring ucs optional + } + + type record of RUCS RoRUCS; + + template RUCS t_rucs(template universal charstring pl_ucs) := { ucs:=pl_ucs } + +}//g_charstring + +group g_record { + + //REC + type record REC { + integer i optional, + float f optional, + charstring cs optional, + bitstring bs optional + } + type record of REC RoREC; + + type record RREC { REC rec optional }; + + template RoREC t_rorec(template REC pl_rec) := { pl_rec } + template RREC t_rrec( template REC pl_rec) := { rec := pl_rec } + //REC2 + type record REC2 { + boolean b optional, + charstring cs optional, + int_1_3 i optional + } + type record of REC2 RoREC2; + + //record of boolean, octetstring, hexstring: + type record REC_BOH { + boolean b optional, + octetstring o optional, + hexstring h optional + } + + type record REC_BAI3 { + boolean b optional, + AI3 ai3 optional + } + + template REC t_rec(template integer pl_i, template float pl_f, template charstring pl_cs, template bitstring pl_bs) := { + i:= pl_i, + f:= pl_f, + cs:=pl_cs, + bs:=pl_bs + } + + +}//g_record + +group g_recordof { + // see earlier: type record of integer RoI + type record of RoI RoRoI; + type record of RoB RoRoB; + //type record of float RoF; + type record of RoF RoRoF; + +}//g_recordof + +group g_array { + //array of boolean; + //array of integers; + type integer AI3[3]; + type integer AI2x3[2][3]; + + type record of AI3 RoAI3; + type record of AI2x3 RoAI2x3; + + type record RAI3 { + AI3 ai3 optional + } + + type record of RAI3 RoRAI3; + template RAI3 t_rai3(template AI3 pl_ai3) := { ai3 := pl_ai3 }; + + //array of floats + //array of bitstrings + //array of octetstrings + //array of hexstrings + //array of charstrings + //array of records + //arrays of sets + //arrays of set of + //array of enum + //array of union + //array of anytype + //array of user type + + //see also REC_BAI3 +}//g_array + + +group g_set { + + type set SET { + boolean b optional, + integer i optional, + float f optional, + bitstring bs optional, + octetstring os optional, + hexstring hs optional, + charstring cs optional + } + type record of SET RoSET; + //template RoSET t_roset(template SET pl_set) := { pl_set }; + + type record RSET { SET s optional } + template RSET t_rset(template SET pl_set) := {s:= pl_set }; + type record of RSET RoRSET; + +}//g_set + +group g_setof { + type set of charstring SoCS; + type record of SoCS RoSoCS; + type record RSoCS { SoCS s optional } + template RSoCS t_rsocs(template SoCS pl_s) := { s := pl_s } + type record of RSoCS RoRSoCS + +}//g_setof + +group g_enumerated { + type enumerated MyEnum { first, second, third } + + type record REnum { MyEnum e optional } + template REnum t_renum(template MyEnum pl_e) := { e := pl_e } +}//g_enumerated + +group g_union { + type union U { + boolean b, + integer i, + float f, + bitstring bs, + octetstring os, + hexstring hs, + charstring cs, + REC r, + RoI roi, + SET s, + SoCS socs, + MyEnum e, + U u + } + + type record RU { U u optional } + template RU t_ru(template U pl_u) := { u := pl_u } + +}//g_union + +group g_anytype { + +}//g_anytype + +}//module diff --git a/Regression_Test_java/src/text2ttcn/ucharstring_test.ttcn b/Regression_Test_java/src/text2ttcn/ucharstring_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..1dea71f53e9e9b262e7b7dd017083826ab10016f --- /dev/null +++ b/Regression_Test_java/src/text2ttcn/ucharstring_test.ttcn @@ -0,0 +1,565 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +module ucharstring_test { +//========================================================================= +// Import Part +//========================================================================= + +import from types2 all; +//import from functions all; + +//========================================================================= +// Module Parameters +//========================================================================= +modulepar { + + //modulepar charstrings not modified from cfg file + template universal charstring tspt_ucs_v := "ABBA"; + template universal charstring tspt_ucs_o := omit; + template universal charstring tspt_ucs_a := *; + template universal charstring tspt_ucs_q := ?; + template universal charstring tspt_ucs_al1 := * length(2); //length restriction + template universal charstring tspt_ucs_al2 := * length(2..4); + template universal charstring tspt_ucs_ql1 := ? length(2); + template universal charstring tspt_ucs_ql2 := ? length(2..4); + template universal charstring tspt_ucs_vl1 := ("ABBA"); + template universal charstring tspt_ucs_vl2 := ("ABBA","baba"); + template universal charstring tspt_ucs_vl3 := ("ABBA","baba","Bye"); + template universal charstring tspt_ucs_c1 := complement("ABBA") + template universal charstring tspt_ucs_c2 := complement("ABBA","baba"); + template universal charstring tspt_ucs_c3 := complement("ABBA","baba","Bye"); + template universal charstring tspt_ucs_r1 := ("A".."B"); //range + template universal charstring tspt_ucs_r2 := ("a".."c"); + template universal charstring tspt_ucs_pa := pattern "abc*xyz" + template universal charstring tspt_ucs_pq := pattern "abc?xyz" + + template universal charstring tspt_ucs_vifp := "ABBA" ifpresent; + template universal charstring tspt_ucs_oifp := omit ifpresent; + template universal charstring tspt_ucs_aifp := * ifpresent; + template universal charstring tspt_ucs_qifp := ? ifpresent; + template universal charstring tspt_ucs_al1ifp := * length(2) ifpresent; //length restriction + template universal charstring tspt_ucs_al2ifp := * length(2..4) ifpresent; + template universal charstring tspt_ucs_ql1ifp := ? length(2) ifpresent; + template universal charstring tspt_ucs_ql2ifp := ? length(2..4) ifpresent; + template universal charstring tspt_ucs_vl1ifp := ("ABBA") ifpresent; + template universal charstring tspt_ucs_vl2ifp := ("ABBA","baba") ifpresent; + template universal charstring tspt_ucs_vl3ifp := ("ABBA","baba","Bye") ifpresent; + template universal charstring tspt_ucs_c1ifp := complement("ABBA") ifpresent + template universal charstring tspt_ucs_c2ifp := complement("ABBA","baba") ifpresent; + template universal charstring tspt_ucs_c3ifp := complement("ABBA","baba","Bye") ifpresent; + template universal charstring tspt_ucs_r1ifp := ("A".."B") ifpresent; //range + template universal charstring tspt_ucs_r2ifp := ("a".."c") ifpresent; + template universal charstring tspt_ucs_paifp := pattern "abc*xyz" ifpresent + template universal charstring tspt_ucs_pqifp := pattern "abc?xyz" ifpresent + + //modulepar universal charstrings modified from cfg file + template universal charstring tspt_ucs_mod4v := * //after mod:"ABBA"; + template universal charstring tspt_ucs_mod4o := * //omit; + template universal charstring tspt_ucs_mod4ol := * //omit; + template universal charstring tspt_ucs_mod4a := "A" //*; + template universal charstring tspt_ucs_mod4q := "" //?; + template universal charstring tspt_ucs_mod4al1 := "A" //* length(2); //length restriction + template universal charstring tspt_ucs_mod4al2 := "Original" //mofified for: * length(2..4); + template universal charstring tspt_ucs_mod4ql1 := "Original" //mofified for:? length(2); + template universal charstring tspt_ucs_mod4ql2 := "Original" //mofified for:? length(2..4); + template universal charstring tspt_ucs_mod4vl1 := ("ABBA") //TODO: Adam //It should be mofified for: ("ABBA"); + template universal charstring tspt_ucs_mod4vl2 := "Original" //mofified for:("ABBA","baba"); + template universal charstring tspt_ucs_mod4vl3 := "Original" //mofified for:("ABBA","baba","Bye"); + template universal charstring tspt_ucs_mod4c1 := "Original" //mofified for:complement("ABBA") + template universal charstring tspt_ucs_mod4c2 := "Original" //mofified for:complement("ABBA","baba"); + template universal charstring tspt_ucs_mod4c3 := "Original" //mofified for:complement("ABBA","baba","Bye"); + template universal charstring tspt_ucs_mod4r1 := "Original" //mofified for:("A".."B"); //range + template universal charstring tspt_ucs_mod4r2 := "Original" //mofified for:("a".."c"); + template universal charstring tspt_ucs_mod4pa := "Original" //mofified for:pattern "abc*xyz" + template universal charstring tspt_ucs_mod4pq := "Original" //mofified for:pattern "abc?xyz" + + template universal charstring tspt_ucs_mod4vifp := "Original" //mofified for:"ABBA" ifpresent; + template universal charstring tspt_ucs_mod4oifp := "Original" //mofified for:omit ifpresent; + template universal charstring tspt_ucs_mod4aifp := "Original" //mofified for:* ifpresent; + template universal charstring tspt_ucs_mod4qifp := "Original" //mofified for:? ifpresent; + template universal charstring tspt_ucs_mod4al1ifp := "Original" //mofified for:* length(2) ifpresent; //length restriction + template universal charstring tspt_ucs_mod4al2ifp := "Original" //mofified for:* length(2..4) ifpresent; + template universal charstring tspt_ucs_mod4ql1ifp := "Original" //mofified for:? length(2) ifpresent; + template universal charstring tspt_ucs_mod4ql2ifp := "Original" //mofified for:? length(2..4) ifpresent; + template universal charstring tspt_ucs_mod4vl1ifp := ("ABBA") ifpresent //TODO: Adam //It should be mofified for: ("ABBA"); + template universal charstring tspt_ucs_mod4vl2ifp := "Original" //mofified for:("ABBA","baba") ifpresent; + template universal charstring tspt_ucs_mod4vl3ifp := "Original" //mofified for:("ABBA","baba","Bye") ifpresent; + template universal charstring tspt_ucs_mod4c1ifp := "Original" //mofified for:complement("ABBA") ifpresent + template universal charstring tspt_ucs_mod4c2ifp := "Original" //mofified for:complement("ABBA","baba") ifpresent; + template universal charstring tspt_ucs_mod4c3ifp := "Original" //mofified for:complement("ABBA","baba","Bye") ifpresent; + template universal charstring tspt_ucs_mod4r1ifp := "Original" //mofified for:("A".."B") ifpresent; //range + template universal charstring tspt_ucs_mod4r2ifp := "Original" //mofified for:("a".."c") ifpresent; + template universal charstring tspt_ucs_mod4paifp := "Original" //mofified for:pattern "abc*xyz" ifpresent + template universal charstring tspt_ucs_mod4pqifp := "Original" //mofified for:pattern "abc?xyz" ifpresent + +} + +//========================================================================= +// Templates +//========================================================================= +// not modulepars +template universal charstring t_ucs_v := "ABBA"; +template universal charstring t_ucs_o := omit; +template universal charstring t_ucs_a := *; +template universal charstring t_ucs_q := ?; +template universal charstring t_ucs_al1 := * length(2); //length restriction +template universal charstring t_ucs_al2 := * length(2..4); +template universal charstring t_ucs_ql1 := ? length(2); +template universal charstring t_ucs_ql2 := ? length(2..4); +template universal charstring t_ucs_vl1 := ("ABBA"); +template universal charstring t_ucs_vl2 := ("ABBA","baba"); +template universal charstring t_ucs_vl3 := ("ABBA","baba","Bye"); +template universal charstring t_ucs_c1 := complement("ABBA") +template universal charstring t_ucs_c2 := complement("ABBA","baba"); +template universal charstring t_ucs_c3 := complement("ABBA","baba","Bye"); +template universal charstring t_ucs_r1 := ("A".."B"); //range +template universal charstring t_ucs_r2 := ("a".."c"); +template universal charstring t_ucs_pa := pattern "abc*xyz" +template universal charstring t_ucs_pq := pattern "abc?xyz" + +template universal charstring t_ucs_vifp := "ABBA" ifpresent; +template universal charstring t_ucs_oifp := omit ifpresent; +template universal charstring t_ucs_aifp := * ifpresent; +template universal charstring t_ucs_qifp := ? ifpresent; +template universal charstring t_ucs_al1ifp := * length(2) ifpresent; //length restriction +template universal charstring t_ucs_al2ifp := * length(2..4) ifpresent; +template universal charstring t_ucs_ql1ifp := ? length(2) ifpresent; +template universal charstring t_ucs_ql2ifp := ? length(2..4) ifpresent; +template universal charstring t_ucs_vl1ifp := ("ABBA") ifpresent; +template universal charstring t_ucs_vl2ifp := ("ABBA","baba") ifpresent; +template universal charstring t_ucs_vl3ifp := ("ABBA","baba","Bye") ifpresent; +template universal charstring t_ucs_c1ifp := complement("ABBA") ifpresent +template universal charstring t_ucs_c2ifp := complement("ABBA","baba") ifpresent; +template universal charstring t_ucs_c3ifp := complement("ABBA","baba","Bye") ifpresent; +template universal charstring t_ucs_r1ifp := ("A".."B") ifpresent; //range +template universal charstring t_ucs_r2ifp := ("a".."c") ifpresent; +template universal charstring t_ucs_paifp := pattern "abc*xyz" ifpresent +template universal charstring t_ucs_pqifp := pattern "abc?xyz" ifpresent + +//========================================================================= +// Functions +//========================================================================= + +function f_string2ttcn_rucs_t(in charstring pl_cs, in template RUCS pl_expected_result) { + var template RUCS vl_result; + @try { + string2ttcn(pl_cs,vl_result); + setverdict(pass) + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + log(pl_expected_result); + log(vl_result); + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +function f_string2ttcn_rucs_t_str(in charstring pl_cs, in charstring pl_expected_result) { + var template RUCS vl_result; + @try { + string2ttcn(pl_cs,vl_result); + setverdict(pass) + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + log("Expected result: ", pl_expected_result); + log("Result: ", vl_result); + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +//template string -> variable conversion +//expected result: error +function f_string2ttcn_rucs_v(in charstring pl_cs, in template RUCS pl_expected_result, in boolean pl_ok_expected) { + var RUCS vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("string2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ",pl_expected_result ); + log("Result: ", vl_result); +} + +//this function is the same but uses +function f_string2ttcn_rucs_v_str(in charstring pl_cs, charstring pl_expected_result, in boolean pl_ok_expected) { + var RUCS vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("str2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ", pl_expected_result ); + log("Result: ", vl_result); +} + +//========================================================================= +// Testcases +//========================================================================= + +testcase tc_ucs_ttcn2string_emb() runs on MC { + log(t_rucs(tspt_ucs_mod4v)); + log(ttcn2string(t_rucs(tspt_ucs_mod4v))); + if(ttcn2string(t_rucs(tspt_ucs_mod4v)) != "{ ucs := \"ABBA\" }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4o)); + if(ttcn2string(t_rucs(tspt_ucs_mod4o)) != "{ ucs := omit }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4a)); + if(ttcn2string(t_rucs(tspt_ucs_mod4a)) != "{ ucs := * }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4q)); + if(ttcn2string(t_rucs(tspt_ucs_mod4q)) != "{ ucs := ? }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4al1)); + if(ttcn2string(t_rucs(tspt_ucs_mod4al1)) != "{ ucs := * length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4al2)); + if(ttcn2string(t_rucs(tspt_ucs_mod4al2)) != "{ ucs := * length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4ql1)); + if(ttcn2string(t_rucs(tspt_ucs_mod4ql1)) != "{ ucs := ? length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4ql2)); + if(ttcn2string(t_rucs(tspt_ucs_mod4ql2)) != "{ ucs := ? length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(">",t_rucs(tspt_ucs_mod4vl1),"<"); + if(ttcn2string(t_rucs(tspt_ucs_mod4vl1)) != "{ ucs := \"ABBA\" }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4vl2)); + if(ttcn2string(t_rucs(tspt_ucs_mod4vl2)) != "{ ucs := (char(0, 0, 0, 193) & \"d\" & char(0, 0, 0, 225) & \"m\", char(0, 0, 0, 201) & \"va\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4vl3)); + if(ttcn2string(t_rucs(tspt_ucs_mod4vl3)) != "{ ucs := (\"ABBA\", \"baba\", \"Bye\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4c1)); + if(ttcn2string(t_rucs(tspt_ucs_mod4c1)) != "{ ucs := complement(\"ABBA\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4c2)); + if(ttcn2string(t_rucs(tspt_ucs_mod4c2)) != "{ ucs := complement(\"ABBA\", \"baba\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4c3)); + if(ttcn2string(t_rucs(tspt_ucs_mod4c3)) != "{ ucs := complement(\"ABBA\", \"baba\", \"Bye\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4r1)); + if(ttcn2string(t_rucs(tspt_ucs_mod4r1)) != "{ ucs := (\"A\" .. \"B\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4r2)); + if(ttcn2string(t_rucs(tspt_ucs_mod4r2)) != "{ ucs := (\"a\" .. \"c\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4pa)); + if(ttcn2string(t_rucs(tspt_ucs_mod4pa)) != "{ ucs := pattern \"abc*xyz\" }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4pq)); + if(ttcn2string(t_rucs(tspt_ucs_mod4pq)) != "{ ucs := pattern \"abc?xyz\" }") {setverdict(fail)} else {setverdict(pass)}; + //== + log(t_rucs(tspt_ucs_mod4vifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4vifp)) != "{ ucs := \"ABBA\" ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4oifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4oifp)) != "{ ucs := omit ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4aifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4aifp)) != "{ ucs := * ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4qifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4qifp)) != "{ ucs := ? ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4al1ifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4al1ifp)) != "{ ucs := * length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4al2ifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4al2ifp)) != "{ ucs := * length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4ql1ifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4ql1ifp)) != "{ ucs := ? length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4ql2ifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4ql2ifp)) != "{ ucs := ? length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4vl1ifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4vl1ifp)) != "{ ucs := \"ABBA\" ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4vl2ifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4vl2ifp)) != "{ ucs := (\"ABBA\", \"baba\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4vl3ifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4vl3ifp)) != "{ ucs := (\"ABBA\", \"baba\", \"Bye\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4c1ifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4c1ifp)) != "{ ucs := complement(\"ABBA\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4c2ifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4c2ifp)) != "{ ucs := complement(\"ABBA\", \"baba\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4c3ifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4c3ifp)) != "{ ucs := complement(\"ABBA\", \"baba\", \"Bye\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4r1ifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4r1ifp)) != "{ ucs := (\"A\" .. \"B\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4r2ifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4r2ifp)) != "{ ucs := (\"a\" .. \"c\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4paifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4paifp)) != "{ ucs := pattern \"abc*xyz\" ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4pqifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4pqifp)) != "{ ucs := pattern \"abc?xyz\" ifpresent }") {setverdict(fail)} else {setverdict(pass)}; +} + +//==== string2ttcn testcases =============================================================== +//These testcases tests if +// 1. string2ttcn can generate the expected template +// 2. string2ttcn can generate the expected value, if possible/required (=true the third arg) +//=========================================================================================== +testcase tc_ucs_string2ttcn_mod4v() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4v)),t_rucs(tspt_ucs_mod4v)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4v)),t_rucs(tspt_ucs_mod4v),true); +} + +testcase tc_ucs_string2ttcn_mod4o() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4o)),t_rucs(tspt_ucs_mod4o)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4o)),t_rucs(tspt_ucs_mod4o),true); +} + +//omit length +testcase tc_ucs_string2ttcn_mod4ol() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4ol)),t_rucs(tspt_ucs_mod4ol)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4ol)),t_rucs(tspt_ucs_mod4ol),false); +} + +testcase tc_ucs_string2ttcn_mod4a() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4a)),t_rucs(tspt_ucs_mod4a)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4a)),t_rucs(tspt_ucs_mod4a),false); +} + +testcase tc_ucs_string2ttcn_mod4q() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4q)),t_rucs(tspt_ucs_mod4q)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4q)),t_rucs(tspt_ucs_mod4q),false); +} + +testcase tc_ucs_string2ttcn_mod4al1() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4al1)),t_rucs(tspt_ucs_mod4al1)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4al1)),t_rucs(tspt_ucs_mod4al1),false); +} + +testcase tc_ucs_string2ttcn_mod4al2() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4al2)),t_rucs(tspt_ucs_mod4al2)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4al2)),t_rucs(tspt_ucs_mod4al2),false); +} + +testcase tc_ucs_string2ttcn_mod4ql1() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4ql1)),t_rucs(tspt_ucs_mod4ql1)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4ql1)),t_rucs(tspt_ucs_mod4ql1),false); +} + +testcase tc_ucs_string2ttcn_mod4ql2() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4ql2)),t_rucs(tspt_ucs_mod4ql2)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4ql2)),t_rucs(tspt_ucs_mod4ql2),false); +} + +testcase tc_ucs_string2ttcn_mod4vl1() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4vl1)),t_rucs(tspt_ucs_mod4vl1)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4vl1)),t_rucs(tspt_ucs_mod4vl1),true); +} + +testcase tc_ucs_string2ttcn_mod4vl2() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4vl2)),t_rucs(tspt_ucs_mod4vl2)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4vl2)),t_rucs(tspt_ucs_mod4vl2),false); +} + +testcase tc_ucs_string2ttcn_mod4vl3() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4vl3)),t_rucs(tspt_ucs_mod4vl3)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4vl3)),t_rucs(tspt_ucs_mod4vl3),false); +} + +testcase tc_ucs_string2ttcn_mod4c1() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4c1)),t_rucs(tspt_ucs_mod4c1)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4c1)),t_rucs(tspt_ucs_mod4c1),false); +} + +testcase tc_ucs_string2ttcn_mod4c2() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4c2)),t_rucs(tspt_ucs_mod4c2)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4c2)),t_rucs(tspt_ucs_mod4c2),false); +} + +testcase tc_ucs_string2ttcn_mod4c3() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4c3)),t_rucs(tspt_ucs_mod4c3)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4c3)),t_rucs(tspt_ucs_mod4c3),false); +} + +testcase tc_ucs_string2ttcn_mod4r1() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4r1)),t_rucs(tspt_ucs_mod4r1)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4r1)),t_rucs(tspt_ucs_mod4r1),false); +} + +testcase tc_ucs_string2ttcn_mod4r2() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4r2)),t_rucs(tspt_ucs_mod4r2)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4r2)),t_rucs(tspt_ucs_mod4r2),false); +} + +testcase tc_ucs_string2ttcn_mod4pa() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4pa)),t_rucs(tspt_ucs_mod4pa)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4pa)),t_rucs(tspt_ucs_mod4pa),false); +} + +testcase tc_ucs_string2ttcn_mod4pq() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4pq)),t_rucs(tspt_ucs_mod4pq)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4pq)),t_rucs(tspt_ucs_mod4pq),false); +} + +// ifp + +testcase tc_ucs_string2ttcn_mod4vifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4vifp)),t_rucs(tspt_ucs_mod4vifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4vifp)),t_rucs(tspt_ucs_mod4vifp),false); +} + +testcase tc_ucs_string2ttcn_mod4oifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4oifp)),t_rucs(tspt_ucs_mod4oifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4oifp)),t_rucs(tspt_ucs_mod4oifp),false); +} + +testcase tc_ucs_string2ttcn_mod4aifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4aifp)),t_rucs(tspt_ucs_mod4aifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4aifp)),t_rucs(tspt_ucs_mod4aifp),false); +} + +testcase tc_ucs_string2ttcn_mod4qifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4qifp)),t_rucs(tspt_ucs_mod4qifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4qifp)),t_rucs(tspt_ucs_mod4qifp),false); +} + +testcase tc_ucs_string2ttcn_mod4al1ifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4al1ifp)),t_rucs(tspt_ucs_mod4al1ifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4al1ifp)),t_rucs(tspt_ucs_mod4al1ifp),false); +} + +testcase tc_ucs_string2ttcn_mod4al2ifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4al2ifp)),t_rucs(tspt_ucs_mod4al2ifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4al2ifp)),t_rucs(tspt_ucs_mod4al2ifp),false); +} + +testcase tc_ucs_string2ttcn_mod4ql1ifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4ql1ifp)),t_rucs(tspt_ucs_mod4ql1ifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4ql1ifp)),t_rucs(tspt_ucs_mod4ql1ifp),false); +} + +testcase tc_ucs_string2ttcn_mod4ql2ifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4ql2ifp)),t_rucs(tspt_ucs_mod4ql2ifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4ql2ifp)),t_rucs(tspt_ucs_mod4ql2ifp),false); +} + +testcase tc_ucs_string2ttcn_mod4vl1ifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4vl1ifp)),t_rucs(tspt_ucs_mod4vl1ifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4vl1ifp)),t_rucs(tspt_ucs_mod4vl1ifp),false); +} + +testcase tc_ucs_string2ttcn_mod4vl2ifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4vl2ifp)),t_rucs(tspt_ucs_mod4vl2ifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4vl2ifp)),t_rucs(tspt_ucs_mod4vl2ifp),false); +} + +testcase tc_ucs_string2ttcn_mod4vl3ifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4vl3ifp)),t_rucs(tspt_ucs_mod4vl3ifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4vl3ifp)),t_rucs(tspt_ucs_mod4vl3ifp),false); +} + +testcase tc_ucs_string2ttcn_mod4c1ifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4c1ifp)),t_rucs(tspt_ucs_mod4c1ifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4c1ifp)),t_rucs(tspt_ucs_mod4c1ifp),false); +} + +testcase tc_ucs_string2ttcn_mod4c2ifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4c2ifp)),t_rucs(tspt_ucs_mod4c2ifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4c2ifp)),t_rucs(tspt_ucs_mod4c2ifp),false); +} + +testcase tc_ucs_string2ttcn_mod4c3ifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4c3ifp)),t_rucs(tspt_ucs_mod4c3ifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4c3ifp)),t_rucs(tspt_ucs_mod4c3ifp),false); +} + +testcase tc_ucs_string2ttcn_mod4r1ifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4r1ifp)),t_rucs(tspt_ucs_mod4r1ifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4r1ifp)),t_rucs(tspt_ucs_mod4r1ifp),false); +} + +testcase tc_ucs_string2ttcn_mod4r2ifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4r2ifp)),t_rucs(tspt_ucs_mod4r2ifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4r2ifp)),t_rucs(tspt_ucs_mod4r2ifp),false); +} + +testcase tc_ucs_string2ttcn_mod4paifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4paifp)),t_rucs(tspt_ucs_mod4paifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4paifp)),t_rucs(tspt_ucs_mod4paifp),false); +} + +testcase tc_ucs_string2ttcn_mod4pqifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4pqifp)),t_rucs(tspt_ucs_mod4pqifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4pqifp)),t_rucs(tspt_ucs_mod4pqifp),false); +} + +control { + + log("***universal charstring tests****"); + //execute(tc_ucs_v()); + //ttcn2string: + execute(tc_ucs_ttcn2string_emb()); + + execute(tc_ucs_string2ttcn_mod4v()); + execute(tc_ucs_string2ttcn_mod4o()); + execute(tc_ucs_string2ttcn_mod4ol()); + execute(tc_ucs_string2ttcn_mod4a()); + execute(tc_ucs_string2ttcn_mod4q()); + execute(tc_ucs_string2ttcn_mod4al1()); + execute(tc_ucs_string2ttcn_mod4al2()); + execute(tc_ucs_string2ttcn_mod4ql1()); + execute(tc_ucs_string2ttcn_mod4ql2()); + execute(tc_ucs_string2ttcn_mod4vl1()); + execute(tc_ucs_string2ttcn_mod4vl2()); + execute(tc_ucs_string2ttcn_mod4vl3()); + execute(tc_ucs_string2ttcn_mod4c1()); + execute(tc_ucs_string2ttcn_mod4c2()); + execute(tc_ucs_string2ttcn_mod4c3()); + execute(tc_ucs_string2ttcn_mod4r1()); + execute(tc_ucs_string2ttcn_mod4r2()); + execute(tc_ucs_string2ttcn_mod4pa()); + execute(tc_ucs_string2ttcn_mod4pq()); + //ttcn2string with ifpresent + execute(tc_ucs_string2ttcn_mod4vifp()); + execute(tc_ucs_string2ttcn_mod4oifp()); + execute(tc_ucs_string2ttcn_mod4aifp()); + execute(tc_ucs_string2ttcn_mod4qifp()); + execute(tc_ucs_string2ttcn_mod4al1ifp()); + execute(tc_ucs_string2ttcn_mod4al2ifp()); + execute(tc_ucs_string2ttcn_mod4ql1ifp()); + execute(tc_ucs_string2ttcn_mod4ql2ifp()); + execute(tc_ucs_string2ttcn_mod4vl1ifp()); + execute(tc_ucs_string2ttcn_mod4vl2ifp()); + execute(tc_ucs_string2ttcn_mod4vl3ifp()); + execute(tc_ucs_string2ttcn_mod4c1ifp()); + execute(tc_ucs_string2ttcn_mod4c2ifp()); + execute(tc_ucs_string2ttcn_mod4c3ifp()); + execute(tc_ucs_string2ttcn_mod4r1ifp()); + execute(tc_ucs_string2ttcn_mod4r2ifp()); + execute(tc_ucs_string2ttcn_mod4paifp()); + execute(tc_ucs_string2ttcn_mod4pqifp()); + +} + +} //module diff --git a/Regression_Test_java/src/text2ttcn/union_test.ttcn b/Regression_Test_java/src/text2ttcn/union_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..7ecf189a74aba2cf37a1e29ad80bd8b5c9038586 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn/union_test.ttcn @@ -0,0 +1,297 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +/* +//AUTHOR: +//DATE: +//VERSION: +*/ +module union_test +{ + +//========================================================================= +// Import Part +//========================================================================= +import from types2 all; +//import from functions2 all; +//========================================================================= +// Module Parameters +//========================================================================= +modulepar{ + template U tspt_union_mod4v_b := { e := first } + template U tspt_union_mod4v_i := { e := first } + template U tspt_union_mod4v_f := { e := first } + template U tspt_union_mod4v_bs := { e := first } + template U tspt_union_mod4v_os := { e := first } + template U tspt_union_mod4v_hs := { e := first } + template U tspt_union_mod4v_cs := { e := first } + template U tspt_union_mod4v_r := { e := first } + template U tspt_union_mod4v_roi := { e := first } + template U tspt_union_mod4v_s := { e := first } + template U tspt_union_mod4v_s_uninit := { e := first } + template U tspt_union_mod4v_socs := { e := first } + template U tspt_union_mod4v_e := { e := first } + template U tspt_union_mod4v_u := { e := first } + + template U tspt_union_mod4a := { e := first } + template U tspt_union_mod4q := { e := first } + template U tspt_union_mod4o := { e := first } + + //union ifpresent + template U tspt_union_mod4v_bifp := { e := first } + template U tspt_union_mod4v_iifp := { e := first } ifpresent + template U tspt_union_mod4v_fifp := { e := first } ifpresent + template U tspt_union_mod4v_bsifp := { e := first } ifpresent + template U tspt_union_mod4v_osifp := { e := first } ifpresent + template U tspt_union_mod4v_hsifp := { e := first } ifpresent + template U tspt_union_mod4v_csifp := { e := first } ifpresent + template U tspt_union_mod4v_rifp := { e := first } ifpresent + template U tspt_union_mod4v_roiifp := { e := first } ifpresent + template U tspt_union_mod4v_sifp := { e := first } ifpresent + template U tspt_union_mod4v_s_uninitifp := { e := first } + template U tspt_union_mod4v_socsifp := { e := first } ifpresent + template U tspt_union_mod4v_eifp := { e := first } ifpresent + template U tspt_union_mod4v_uifp := { e := first } ifpresent + + template U tspt_union_mod4aifp := { e := first } ifpresent + template U tspt_union_mod4qifp := { e := first } ifpresent + template U tspt_union_mod4oifp := { e := first } ifpresent +} +//========================================================================= +// Data Types +//========================================================================= + +// Insert data type defintions here if applicable! +// You can use the data_type skeleton! + +//========================================================================= +// Signatures +//========================================================================= + +// Insert signature definitions here if applicable! +// You can use the signature skeleton! + +//========================================================================= +//Port Types +//========================================================================= + +// Insert port type defintions here if applicable! +// You can use the port_type skeleton! + +//========================================================================= +//Component Types +//========================================================================= + +// Insert component type defintions here if applicable! +// You can use the component_type skeleton! + +//========================================================================= +// Constants +//========================================================================= + +// Insert constants here if applicable! +// You can use the constant skeleton! + +//========================================================================= +// Templates +//========================================================================= + +// Insert templates here if applicable! +// You can use the template skeleton! + +//========================================================================= +// Altsteps +//========================================================================= + +// Insert altsteps here if applicable! +// You can use the altstep skeleton! + +//========================================================================= +// Functions +//========================================================================= + +// Insert functions here if applicable! +// You can use the function skeleton! + +//========================================================================= +// Testcases +//========================================================================= + + +testcase tc_union_ModulePar() runs on MC { + log(log2str(tspt_union_mod4v_b)); + if(log2str(tspt_union_mod4v_b) == "{ b := true }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_i)); + if(log2str(tspt_union_mod4v_i) == "{ i := 1 }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_f)); + if(log2str(tspt_union_mod4v_f) == "{ f := 1.000000 }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_bs)); + if(log2str(tspt_union_mod4v_bs) == "{ bs := '01101'B }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_os)); + if(log2str(tspt_union_mod4v_os) == "{ os := 'ABBA'O }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_hs)); + if(log2str(tspt_union_mod4v_hs) == "{ hs := 'ABBA'H }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_cs)); + if(log2str(tspt_union_mod4v_cs) == "{ cs := \"ABBA\" }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_r)); + if(log2str(tspt_union_mod4v_r) == "{ r := { i := 1, f := 1.000000, cs := \"ABBA\", bs := '0100'B } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_roi)); + if(log2str(tspt_union_mod4v_roi) == "{ roi := { 1 } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_s)); + if(log2str(tspt_union_mod4v_s) == + "{ s := { b := true, i := 1, f := 1.000000, bs := '01101'B, os := 'ABBA'O, hs := 'ABBA'H, cs := \"ABBA\" } }" ) + {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_s_uninit)); + if(log2str(tspt_union_mod4v_s_uninit) == + "{ s := { b := true, i := <uninitialized template>, f := <uninitialized template>, bs := <uninitialized template>, os := <uninitialized template>, hs := <uninitialized template>, cs := <uninitialized template> } }") + {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_socs)); + if(log2str(tspt_union_mod4v_socs) == "{ socs := { \"ABBA\" } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_e)); + if(log2str(tspt_union_mod4v_e) == "{ e := first (0) }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_u)); + if(log2str(tspt_union_mod4v_u) == "{ u := { i := 1 } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4a)); + if(log2str(tspt_union_mod4a) == "*" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4q)); + if(log2str(tspt_union_mod4q) == "?" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4o)); + if(log2str(tspt_union_mod4o) == "omit" ) {setverdict(pass)} else {setverdict(fail)} + + log(log2str(tspt_union_mod4v_bifp)); + if(log2str(tspt_union_mod4v_bifp) == "{ b := true } ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_iifp)); + if(log2str(tspt_union_mod4v_iifp) == "{ i := 1 } ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_fifp)); + if(log2str(tspt_union_mod4v_fifp) == "{ f := 1.000000 } ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_bsifp)); + if(log2str(tspt_union_mod4v_bsifp) == "{ bs := '01101'B } ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_osifp)); + if(log2str(tspt_union_mod4v_osifp) == "{ os := 'ABBA'O } ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_hsifp)); + if(log2str(tspt_union_mod4v_hsifp) == "{ hs := 'ABBA'H } ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_csifp)); + if(log2str(tspt_union_mod4v_csifp) == "{ cs := \"ABBA\" } ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_rifp)); + if(log2str(tspt_union_mod4v_rifp) == "{ r := { i := 1, f := 1.000000, cs := \"ABBA\", bs := '0100'B } } ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_roiifp)); + if(log2str(tspt_union_mod4v_roiifp) == "{ roi := { 1 } } ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_sifp)); + if(log2str(tspt_union_mod4v_sifp) == + "{ s := { b := true, i := 1, f := 1.000000, bs := '01101'B, os := 'ABBA'O, hs := 'ABBA'H, cs := \"ABBA\" } } ifpresent" ) + {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_s_uninitifp)); + if(log2str(tspt_union_mod4v_s_uninitifp) == + "{ s := { b := true, i := <uninitialized template>, f := <uninitialized template>, bs := <uninitialized template>, os := <uninitialized template>, hs := <uninitialized template>, cs := <uninitialized template> } } ifpresent") + {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_socsifp)); + if(log2str(tspt_union_mod4v_socsifp) == "{ socs := { \"ABBA\" } } ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_eifp)); + if(log2str(tspt_union_mod4v_eifp) == "{ e := first (0) } ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_uifp)); + if(log2str(tspt_union_mod4v_uifp) == "{ u := { i := 1 } } ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4aifp)); + if(log2str(tspt_union_mod4aifp) == "* ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4qifp)); + if(log2str(tspt_union_mod4qifp) == "? ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4oifp)); + if(log2str(tspt_union_mod4oifp) == "omit ifpresent" ) {setverdict(pass)} else {setverdict(fail)} +} + +testcase tc_union_ModulePar_emb() runs on MC { + log(log2str(t_ru(tspt_union_mod4v_b))); + if(log2str(t_ru(tspt_union_mod4v_b)) == "{ u := { b := true } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_i))); + if(log2str(t_ru(tspt_union_mod4v_i)) == "{ u := { i := 1 } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_f))); + if(log2str(t_ru(tspt_union_mod4v_f)) == "{ u := { f := 1.000000 } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_bs))); + if(log2str(t_ru(tspt_union_mod4v_bs)) == "{ u := { bs := '01101'B } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_os))); + if(log2str(t_ru(tspt_union_mod4v_os)) == "{ u := { os := 'ABBA'O } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_hs))); + if(log2str(t_ru(tspt_union_mod4v_hs)) == "{ u := { hs := 'ABBA'H } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_cs))); + if(log2str(t_ru(tspt_union_mod4v_cs)) == "{ u := { cs := \"ABBA\" } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_r))); + if(log2str(t_ru(tspt_union_mod4v_r)) == "{ u := { r := { i := 1, f := 1.000000, cs := \"ABBA\", bs := '0100'B } } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_roi))); + if(log2str(t_ru(tspt_union_mod4v_roi)) == "{ u := { roi := { 1 } } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_s))); + if(log2str(t_ru(tspt_union_mod4v_s)) == + "{ u := { s := { b := true, i := 1, f := 1.000000, bs := '01101'B, os := 'ABBA'O, hs := 'ABBA'H, cs := \"ABBA\" } } }" ) + {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_s_uninit))); + if(log2str(t_ru(tspt_union_mod4v_s_uninit)) == + "{ u := { s := { b := true, i := <uninitialized template>, f := <uninitialized template>, bs := <uninitialized template>, os := <uninitialized template>, hs := <uninitialized template>, cs := <uninitialized template> } } }") + {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_socs))); + if(log2str(t_ru(tspt_union_mod4v_socs)) == "{ u := { socs := { \"ABBA\" } } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_e))); + if(log2str(t_ru(tspt_union_mod4v_e)) == "{ u := { e := first (0) } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_u))); + if(log2str(t_ru(tspt_union_mod4v_u)) == "{ u := { u := { i := 1 } } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4a))); + if(log2str(t_ru(tspt_union_mod4a)) == "{ u := * }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4q))); + if(log2str(t_ru(tspt_union_mod4q)) == "{ u := ? }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4o))); + if(log2str(t_ru(tspt_union_mod4o)) == "{ u := omit }" ) {setverdict(pass)} else {setverdict(fail)} + + log(log2str(t_ru(tspt_union_mod4v_bifp))); + if(log2str(t_ru(tspt_union_mod4v_bifp)) == "{ u := { b := true } ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_iifp))); + if(log2str(t_ru(tspt_union_mod4v_iifp)) == "{ u := { i := 1 } ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_fifp))); + if(log2str(t_ru(tspt_union_mod4v_fifp)) == "{ u := { f := 1.000000 } ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_bsifp))); + if(log2str(t_ru(tspt_union_mod4v_bsifp)) == "{ u := { bs := '01101'B } ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_osifp))); + if(log2str(t_ru(tspt_union_mod4v_osifp)) == "{ u := { os := 'ABBA'O } ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_hsifp))); + if(log2str(t_ru(tspt_union_mod4v_hsifp)) == "{ u := { hs := 'ABBA'H } ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_csifp))); + if(log2str(t_ru(tspt_union_mod4v_csifp)) == "{ u := { cs := \"ABBA\" } ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_rifp))); + if(log2str(t_ru(tspt_union_mod4v_rifp)) == "{ u := { r := { i := 1, f := 1.000000, cs := \"ABBA\", bs := '0100'B } } ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_roiifp))); + if(log2str(t_ru(tspt_union_mod4v_roiifp)) == "{ u := { roi := { 1 } } ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_sifp))); + if(log2str(t_ru(tspt_union_mod4v_sifp)) == + "{ u := { s := { b := true, i := 1, f := 1.000000, bs := '01101'B, os := 'ABBA'O, hs := 'ABBA'H, cs := \"ABBA\" } } ifpresent }" ) + {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_s_uninitifp))); + if(log2str(t_ru(tspt_union_mod4v_s_uninitifp)) == + "{ u := { s := { b := true, i := <uninitialized template>, f := <uninitialized template>, bs := <uninitialized template>, os := <uninitialized template>, hs := <uninitialized template>, cs := <uninitialized template> } } ifpresent }") + {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_socsifp))); + if(log2str(t_ru(tspt_union_mod4v_socsifp)) == "{ u := { socs := { \"ABBA\" } } ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_eifp))); + if(log2str(t_ru(tspt_union_mod4v_eifp)) == "{ u := { e := first (0) } ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_uifp))); + if(log2str(t_ru(tspt_union_mod4v_uifp)) == "{ u := { u := { i := 1 } } ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4aifp))); + if(log2str(t_ru(tspt_union_mod4aifp)) == "{ u := * ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4qifp))); + if(log2str(t_ru(tspt_union_mod4qifp)) == "{ u := ? ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4oifp))); + if(log2str(t_ru(tspt_union_mod4oifp)) == "{ u := omit ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} +} + //========================================================================= + // Control + //========================================================================= + control { + log("***union tests********"); + execute(tc_union_ModulePar()); + execute(tc_union_ModulePar_emb()); + } + +} // end of module diff --git a/Regression_Test_java/src/text2ttcn_nolegacy/array_test.ttcn b/Regression_Test_java/src/text2ttcn_nolegacy/array_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..eafdcda5667393853198a635ca30b698567d9ac8 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn_nolegacy/array_test.ttcn @@ -0,0 +1,1021 @@ +/****************************************************************************** + * 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 + * Baranyi, Botond + * + ******************************************************************************/ +module array_test +{ +//========================================================================= +// Import Part +//========================================================================= +import from types2 all; +import from functions2 all; +//========================================================================= +// Module Parameters +//========================================================================= +modulepar { + template AI3 tspt_array_i3_a := * + template AI3 tspt_array_i3_q := ? + template AI3 tspt_array_i3_v0 := {-,-,-} //error, length shall be 3 + template AI3 tspt_array_i3_v1:= {1,-,-} + template AI3 tspt_array_i3_v2:= {1,2,-} + template AI3 tspt_array_i3_v3v := {0, 1, 2} + //template AI3 tspt_array_i3_v4 := {0, 1, 2, 3} //error, length shall be 3 + template AI3 tspt_array_i3_v3a := {0, *, 2} + template AI3 tspt_array_i3_v3q := {?, 1, 2} + //template AI3 tspt_array_i3_v3o := {omit, 1, 2} //"error: `omit' value is not allowed in this context" + template AI3 tspt_array_i3_v3vl := {0, 1, (1,2)} //value list + template AI3 tspt_array_i3_vl := ( {0,1,2},{9,10,11}) + template AI3 tspt_array_i3_v3r := {0, 1, (1..3)} //range + template AI3 tspt_array_i3_v3mix := {(0,1), 1, (1..3)} + template AI3 tspt_array_i3_v3c := {(0,1), 1, complement(2,3)} + template AI3 tspt_array_i3_v3p := { permutation(1,2,3) } //TR: HS10539, fixed + template AI3 tspt_array_i3_v3pa := { permutation(1,2,*) } + + template AI3 tspt_array_i3_mod4a := {9,10,11} + template AI3 tspt_array_i3_mod4q := {9,10,11} + template AI3 tspt_array_i3_mod4o := * + template AI3 tspt_array_i3_mod4v0 := {1,2,3} + template AI3 tspt_array_i3_mod4v1:= {-,2,3} + template AI3 tspt_array_i3_mod4v2:= {-,-,3} + template AI3 tspt_array_i3_mod4v3v := {-,-,-} + //template AI3 tspt_array_i3_mod4v4 := {-,-,-} + template AI3 tspt_array_i3_mod4v3a := {9,10,11} + template AI3 tspt_array_i3_mod4v3q := {9,10,11} + //template AI3 tspt_array_i3_mod4v3o := * + template AI3 tspt_array_i3_mod4v3vl := {-,-,-} + template AI3 tspt_array_i3_mod4vl := * + template AI3 tspt_array_i3_mod4v3r := {-,-,-} + template AI3 tspt_array_i3_mod4v3mix := {-,-,-} + template AI3 tspt_array_i3_mod4v3c := {-,-,-} + template AI3 tspt_array_i3_mod4field1 := { (0, 1), 1, (1 .. 3) } + + template AI3 tspt_array_i3_mod4aifp := {9,10,11} + template AI3 tspt_array_i3_mod4qifp := {9,10,11} + template AI3 tspt_array_i3_mod4v0ifp := * + template AI3 tspt_array_i3_mod4v1ifp := * + template AI3 tspt_array_i3_mod4v2ifp := * + template AI3 tspt_array_i3_mod4v3vifp := * + template AI3 tspt_array_i3_mod4v4 := ? + template AI3 tspt_array_i3_mod4v3aifp := {9,10,11} + template AI3 tspt_array_i3_mod4v3qifp := {9,10,11} + //template AI3 tspt_array_i3_mod4v3o ifp := * + template AI3 tspt_array_i3_mod4v3vlifp := {9,10,11} + template AI3 tspt_array_i3_mod4vlifp := * + template AI3 tspt_array_i3_mod4v3rifp := {9,10,11} + template AI3 tspt_array_i3_mod4v3mixifp := ? + template AI3 tspt_array_i3_mod4v3cifp := ?; + // template AI3 tspt_array_i3_mod4v3crifp := *; + // template AI3 tspt_array_i3_mod4v3pifp := *; + template AI3 tspt_array_i3_mod4field1ifp := { (0, 1), 1, (1 .. 3) } ifpresent; +} + +//========================================================================= +// Templates +//========================================================================= +//array +template AI3 t_array_i3_a := * +template AI3 t_array_i3_q := ? +template AI3 t_array_i3_v0 := {-,-,-} //error +template AI3 t_array_i3_v1:= {1,-,-} //error +template AI3 t_array_i3_v2:= {1,2,-} //error +template AI3 t_array_i3_v3v := {0, 1, 2} +//template AI3 t_array_i3_v4 := {0, 1, 2, 3} +template AI3 t_array_i3_v3a := {0, *, 2} +template AI3 t_array_i3_v3q := {?, 1, 2} +//template AI3 t_array_i3_v3o := {omit, 1, 2} //error +template AI3 t_array_i3_v3vl := {0, 1, (1,2)} //value list +template AI3 t_array_i3_vl := ( {0,1,2},{0,1,3}) +template AI3 t_array_i3_v3r := {0, 1, (1..3)} //range +template AI3 t_array_i3_v3mix := {(0,1), 1, (1..3)} +template AI3 t_array_i3_v3c := {(0,1), 1, complement(2,3)} +template AI3 t_array_i3_v3cr := {(0..1), 1, complement(2,4)} +template AI3 t_array_i3_v3p := { permutation(1,2,3) } //TR: HS10539, fixed +template AI3 t_array_i3_v3pa := { permutation(1,2,*) } + +template AI3 tt := { 1,2,* }; +template AI3 tt1x3 := { 1,*,3 }; +template AI3 ttx45 := { *,4,5 }; + + +template REC_BAI3 t_array_bai3( template boolean t_b, template AI3 t_ai3) := { + b:= t_b, + ai3:=t_ai3 +} + +type component MyComp_CT { + var template integer v_AI3literal[3] := { permutation(1,*,3) }; + var template integer v_AI3allfrom[3] := { permutation(all from tt) }; +} + + +//========================================================================= +// Functions +//========================================================================= + +//template string -> template conversion +//expected result: success +function f_string2ttcn_REC_BAI3_t(in charstring pl_cs, in template REC_BAI3 pl_expected_result) { + var template REC_BAI3 vl_result; + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + log(pl_expected_result); + log(vl_result); + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +//template string -> template conversion +//expected result: success, expected result struct in charstring +function f_string2ttcn_REC_BAI3_t_str(in charstring pl_cs, in charstring pl_expected_result) { + var template REC_BAI3 vl_result; + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + log("Expected result: ", pl_expected_result); + log("Result: ", vl_result); + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +//template string -> variable conversion +//expected result: error +function f_string2ttcn_REC_BAI3_v(in charstring pl_cs, in template REC_BAI3 pl_expected_result, in boolean pl_ok_expected) { + var REC_BAI3 vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("str2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ",pl_expected_result ); + log("Result: ", vl_result); +} + +//this function is the same but uses +function f_string2ttcn_REC_BAI3_v_str(in charstring pl_cs, charstring pl_expected_result, in boolean pl_ok_expected) { + var REC_BAI3 vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail, match(pl_expected_result, log2str(vl_result))) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("str2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ", pl_expected_result ); + log("Result: ", vl_result); +} + + + + +//========================================================================= +// Testcases +//========================================================================= + +testcase tc_array_i_NoModulePar() runs on MC { + + if( log2str(t_array_i3_a) != "*" ) {setverdict(fail) } else { setverdict(pass) }; + if( log2str(t_array_i3_q) != "?" ) {setverdict(fail) } else { setverdict(pass) }; + log(t_array_i3_v3v); + if( log2str(t_array_i3_v3v) != "{ 0, 1, 2 }" ) {setverdict(fail) } else { setverdict(pass) }; + log(t_array_i3_v3a); + if( log2str(t_array_i3_v3a) != "{ 0, *, 2 }" ) {setverdict(fail) } else { setverdict(pass) }; + log(t_array_i3_v3q); + if( log2str(t_array_i3_v3q) != "{ ?, 1, 2 }" ) {setverdict(fail) } else { setverdict(pass) }; + log(t_array_i3_v3vl); + if( log2str(t_array_i3_v3vl) != "{ 0, 1, (1, 2) }" ) {setverdict(fail) } else { setverdict(pass) }; + log(t_array_i3_vl); + if( log2str(t_array_i3_vl) != "({ 0, 1, 2 }, { 0, 1, 3 })" ) {setverdict(fail) } else { setverdict(pass) }; + log(t_array_i3_v3r); + if( log2str(t_array_i3_v3r) != "{ 0, 1, (1 .. 3) }" ) {setverdict(fail) } else { setverdict(pass) }; + log(t_array_i3_v3mix); + if( log2str(t_array_i3_v3mix) != "{ (0, 1), 1, (1 .. 3) }" ) {setverdict(fail) } else { setverdict(pass) }; + log(t_array_i3_v3c); + if( log2str(t_array_i3_v3c) != "{ (0, 1), 1, complement(2, 3) }" ) {setverdict(fail) } else { setverdict(pass) }; + log(t_array_i3_v3p); + if( log2str(t_array_i3_v3p) != "{ permutation(1, 2, 3) }" ) {setverdict(fail) } else { setverdict(pass) }; +} + +testcase tc_array_i_ModulePar() runs on MC { + + if( log2str(tspt_array_i3_a) != "*" ) {setverdict(fail) } else { setverdict(pass) }; + if( log2str(tspt_array_i3_q) != "?" ) {setverdict(fail) } else { setverdict(pass) }; + log(tspt_array_i3_v3v); + if( log2str(tspt_array_i3_v3v) != "{ 0, 1, 2 }" ) {setverdict(fail) } else { setverdict(pass) }; + log(tspt_array_i3_v3a); + if( log2str(tspt_array_i3_v3a) != "{ 0, *, 2 }" ) {setverdict(fail) } else { setverdict(pass) }; + log(tspt_array_i3_v3q); + if( log2str(tspt_array_i3_v3q) != "{ ?, 1, 2 }" ) {setverdict(fail) } else { setverdict(pass) }; + log(tspt_array_i3_v3vl); + if( log2str(tspt_array_i3_v3vl) != "{ 0, 1, (1, 2) }" ) {setverdict(fail) } else { setverdict(pass) }; + log(tspt_array_i3_vl); + if( log2str(tspt_array_i3_vl) != "({ 0, 1, 2 }, { 9, 10, 11 })" ) {setverdict(fail) } else { setverdict(pass) }; + log(tspt_array_i3_v3r); + if( log2str(tspt_array_i3_v3r) != "{ 0, 1, (1 .. 3) }" ) {setverdict(fail) } else { setverdict(pass) }; + log(tspt_array_i3_v3mix); + if( log2str(tspt_array_i3_v3mix) != "{ (0, 1), 1, (1 .. 3) }" ) {setverdict(fail) } else { setverdict(pass) }; + log(tspt_array_i3_v3c); + if( log2str(tspt_array_i3_v3c) != "{ (0, 1), 1, complement(2, 3) }" ) {setverdict(fail) } else { setverdict(pass) }; + log(tspt_array_i3_v3p); + if( log2str(tspt_array_i3_v3p) != "{ permutation(1, 2, 3) }" ) {setverdict(fail) } else { setverdict(pass) }; //TR: HS10539, fixed + log(tspt_array_i3_v3pa); + if( log2str(tspt_array_i3_v3pa) != "{ permutation(1, 2, *) }" ) {setverdict(fail) } else { setverdict(pass) }; //TR: HS10539, fixed +} + +testcase tc_array_i_v3p() runs on MC { + var RoAI3 vl_good_values := { {1,2,3}, {1,3,2},{2,1,3},{2,3,1},{3,1,2},{3,2,1} } + var RoAI3 vl_wrong_values := { {1,2,4}, {1,5,6},{20,10,30} } + f_checkMatchingValues_ai3(tspt_array_i3_v3p,vl_good_values,vl_wrong_values); + f_checkMatchingValues_ai3(t_array_i3_v3p,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_v3pa() runs on MC { + var RoAI3 vl_good_values := { {1,2,3}, {1,3,2},{2,1,3},{2,3,1},{3,1,2},{3,2,1}, {1,2,4}, {5,2,1}} + var RoAI3 vl_wrong_values := { {1,5,6},{20,10,30} } + f_checkMatchingValues_ai3(tspt_array_i3_v3pa,vl_good_values,vl_wrong_values); + f_checkMatchingValues_ai3(t_array_i3_v3pa,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_a() runs on MC { + log(tspt_array_i3_a); + var RoAI3 vl_good_values := { {1,1,3}, {1,2,3}, {1,3,3}, {1,4,3}, {1,9999,3} }; + var RoAI3 vl_wrong_values := { }; + f_checkMatchingValues_ai3(tspt_array_i3_a,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_q() runs on MC { + log(tspt_array_i3_q); + var RoAI3 vl_good_values := { {1,1,3}, {1,2,3}, {1,3,3}, {1,4,3}, {1,9999,3} }; + var RoAI3 vl_wrong_values := { }; + f_checkMatchingValues_ai3(tspt_array_i3_q,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_v3v() runs on MC { + log(tspt_array_i3_v3v); + var RoAI3 vl_good_values := { {0,1,2} }; + var RoAI3 vl_wrong_values := {{0,1,3},{0,2,2},{0,3,2},{0,-1,2},{0,-,2},{1,1,3}, {1,2,3}, {1,3,3}, {1,4,3}, {1,9999,3} }; + f_checkMatchingValues_ai3(tspt_array_i3_v3v,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_v3a() runs on MC { + log(tspt_array_i3_v3a); + var RoAI3 vl_good_values := { {0,1,2},{0,2,2},{0,3,2},{0,-1,2},{0,-,2}}; + var RoAI3 vl_wrong_values := {{0,1,3},{1,1,3}, {1,2,3}, {1,3,3}, {1,4,3}, {1,9999,3} }; + f_checkMatchingValues_ai3(tspt_array_i3_v3a,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_v3q() runs on MC { + log(tspt_array_i3_v3q); + var RoAI3 vl_good_values := { {0,1,2},{0,2,2},{0,3,2},{0,-1,2},{0,-,2}}; + var RoAI3 vl_wrong_values := {{0,1,3},{1,1,3}, {0,2,3}, {1,3,3}, {0,4,9}, {1,9999,2} }; + f_checkMatchingValues_ai3(tspt_array_i3_v3a,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_v3vl() runs on MC { + log(tspt_array_i3_v3vl); + var RoAI3 vl_good_values := { {0,1,1},{0,1,2}}; + var RoAI3 vl_wrong_values := {{0,1,3},{1,1,3}, {0,2,3}, {1,3,3} }; + f_checkMatchingValues_ai3(tspt_array_i3_v3vl,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_vl() runs on MC { + log(tspt_array_i3_vl); + var RoAI3 vl_good_values := { {0,1,2},{9,10,11}}; + var RoAI3 vl_wrong_values := {{0,1,3},{1,1,2}, {0,2,2}, {9,10,12},{9,11,11},{4,4,4} }; + f_checkMatchingValues_ai3(tspt_array_i3_vl,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_v3r() runs on MC { + log(tspt_array_i3_v3r); + var RoAI3 vl_good_values := { {0,1,1},{0,1,2},{0,1,3} }; + var RoAI3 vl_wrong_values := {{0,1,4},{0,1,0}, {0,2,2}, {9,10,12},{9,11,11},{4,4,4} }; + f_checkMatchingValues_ai3(tspt_array_i3_v3r,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_v3mix() runs on MC { + log(tspt_array_i3_v3mix); + var RoAI3 vl_good_values := { {0,1,1},{0,1,2},{0,1,3},{1,1,1},{1,1,2},{1,1,3} }; + var RoAI3 vl_wrong_values := {{0,1,4},{0,1,0}, {0,2,2},{1,1,4},{1,1,4},{1,1,0}, {9,10,12},{9,11,11},{4,4,4} }; + f_checkMatchingValues_ai3(tspt_array_i3_v3mix,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_v3c() runs on MC { + log(tspt_array_i3_v3c); + var RoAI3 vl_good_values := { {0,1,1},{0,1,4},{0,1,5},{1,1,1},{1,1,4},{1,1,5}, {1,1,-1} , {1,1,-100}}; + var RoAI3 vl_wrong_values := {{0,1,2},{0,1,3}, {1,1,2},{1,1,3},{1,2,4},{1,2,0}, {9,10,12},{9,11,11},{4,4,4} }; + f_checkMatchingValues_ai3(tspt_array_i3_v3c,vl_good_values,vl_wrong_values); +} +// +testcase tc_array_i_mod4a() runs on MC { + log(tspt_array_i3_mod4a); + var RoAI3 vl_good_values := { {1,1,3}, {1,2,3}, {1,3,3}, {1,4,3}, {1,9999,3} }; + var RoAI3 vl_wrong_values := { }; + f_checkMatchingValues_ai3(tspt_array_i3_mod4a,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4q() runs on MC { + log(tspt_array_i3_mod4q); + var RoAI3 vl_good_values := { {1,1,3}, {1,2,3}, {1,3,3}, {1,4,3}, {1,9999,3} }; + var RoAI3 vl_wrong_values := { }; + f_checkMatchingValues_ai3(tspt_array_i3_mod4q,vl_good_values,vl_wrong_values); +} + + +testcase tc_array_i_mod4v0() runs on MC { + log(tspt_array_i3_mod4v0); + var RoAI3 vl_good_values := {{1,2,3} }; + var RoAI3 vl_wrong_values := { {0,1,2} } // compilation error for {1},{1,2} TODO: put into negative test + f_checkMatchingValues_ai3(tspt_array_i3_mod4v0,vl_good_values,vl_wrong_values,true); +} + +testcase tc_array_i_mod4v1() runs on MC { + log(tspt_array_i3_mod4v1); + var RoAI3 vl_good_values := {{1,2,3}};//TODO: put {{1}} into the negative test + var RoAI3 vl_wrong_values := { {0,1,2} } // compilation error for {1},{1,2} TODO: put into neg test + f_checkMatchingValues_ai3(tspt_array_i3_mod4v1,vl_good_values,vl_wrong_values,true); +} + +testcase tc_array_i_mod4v2() runs on MC { + log(tspt_array_i3_mod4v2); + var RoAI3 vl_good_values := {{1,2,3}};//TODO: put {{1,2}} into the negative test + var RoAI3 vl_wrong_values := { {0,1,2} } // compilation error for {1},{1,2} TODO: put into neg test + f_checkMatchingValues_ai3(tspt_array_i3_mod4v2,vl_good_values,vl_wrong_values,true); +} + + +testcase tc_array_i_mod4v3v() runs on MC { + log(tspt_array_i3_mod4v3v); + var RoAI3 vl_good_values := { {0,1,2} }; + var RoAI3 vl_wrong_values := {{0,1,3},{0,2,2},{0,3,2},{0,-1,2},{0,-,2},{1,1,3}, {1,2,3}, {1,3,3}, {1,4,3}, {1,9999,3} }; + f_checkMatchingValues_ai3(tspt_array_i3_mod4v3v,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v3a() runs on MC { + log(tspt_array_i3_mod4v3a); + var RoAI3 vl_good_values := { {0,1,2},{0,2,2},{0,3,2},{0,-1,2},{0,-,2}}; + var RoAI3 vl_wrong_values := {{0,1,3},{1,1,3}, {1,2,3}, {1,3,3}, {1,4,3}, {1,9999,3} }; + f_checkMatchingValues_ai3(tspt_array_i3_mod4v3a,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v3q() runs on MC { + log(tspt_array_i3_mod4v3q); + var RoAI3 vl_good_values := { {0,1,2},{0,2,2},{0,3,2},{0,-1,2},{0,-,2}}; + var RoAI3 vl_wrong_values := {{0,1,3},{1,1,3}, {0,2,3}, {1,3,3}, {0,4,9}, {1,9999,2} }; + f_checkMatchingValues_ai3(tspt_array_i3_mod4v3a,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v3vl() runs on MC { + log(tspt_array_i3_mod4v3vl); + var RoAI3 vl_good_values := { {0,1,1},{0,1,2}}; + var RoAI3 vl_wrong_values := {{0,1,3},{1,1,3}, {0,2,3}, {1,3,3} }; + f_checkMatchingValues_ai3(tspt_array_i3_mod4v3vl,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4vl() runs on MC { + log(tspt_array_i3_mod4vl); + var RoAI3 vl_good_values := { {0,1,2},{9,10,11}}; + var RoAI3 vl_wrong_values := {{0,1,3},{1,1,2}, {0,2,2}, {9,10,12},{9,11,11},{4,4,4} }; + f_checkMatchingValues_ai3(tspt_array_i3_mod4vl,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v3r() runs on MC { + log(tspt_array_i3_mod4v3r); + var RoAI3 vl_good_values := { {0,1,1},{0,1,2},{0,1,3} }; + var RoAI3 vl_wrong_values := {{0,1,4},{0,1,0}, {0,2,2}, {9,10,12},{9,11,11},{4,4,4} }; + f_checkMatchingValues_ai3(tspt_array_i3_mod4v3r,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v3mix() runs on MC { + log(tspt_array_i3_mod4v3mix); + var RoAI3 vl_good_values := { {0,1,1},{0,1,2},{0,1,3},{1,1,1},{1,1,2},{1,1,3} }; + var RoAI3 vl_wrong_values := {{0,1,4},{0,1,0}, {0,2,2},{1,1,4},{1,1,4},{1,1,0}, {9,10,12},{9,11,11},{4,4,4} }; + f_checkMatchingValues_ai3(tspt_array_i3_mod4v3mix,vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v3c() runs on MC { + log(tspt_array_i3_mod4v3c); + var RoAI3 vl_good_values := { {0,1,1},{0,1,4},{0,1,5},{1,1,1},{1,1,4},{1,1,5}, {1,1,-1} , {1,1,-100}}; + var RoAI3 vl_wrong_values := {{0,1,2},{0,1,3}, {1,1,2},{1,1,3},{1,2,4},{1,2,0}, {9,10,12},{9,11,11},{4,4,4} }; + f_checkMatchingValues_ai3(tspt_array_i3_mod4v3c,vl_good_values,vl_wrong_values); +} + +//{ (0, 1), 1, (1 .. 3) } -{0, -, -}--> { 1, 1, (1 .. 3) } +testcase tc_array_i_mod4field1() runs on MC { + log(tspt_array_i3_mod4field1); + var RoAI3 vl_good_values := { {0,1,1},{0,1,2},{0,1,3}}; + var RoAI3 vl_wrong_values := {{0,1,4},{0,1,5}, {1,1,1},{1,1,2},{1,1,3},{1,1,4}, {9,10,12} }; + f_checkMatchingValues_ai3(tspt_array_i3_mod4field1,vl_good_values,vl_wrong_values); +} +//==== + +testcase tc_array_i_mod4aifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4aifp)); + var RoRAI3 vl_good_values := { {omit},{{1,1,3}}, {{1,2,3}}, {{1,3,3}}, {{1,4,3}}, {{1,9999,3}} }; + var RoRAI3 vl_wrong_values := {{}}; + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4aifp),vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4qifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4qifp)); + var RoRAI3 vl_good_values := { {omit},{{1,1,3}}, {{1,2,3}}, {{1,3,3}}, {{1,4,3}}, {{1,9999,3}} }; + var RoRAI3 vl_wrong_values := {{} }; + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4qifp),vl_good_values,vl_wrong_values); +} +testcase tc_array_i_mod4v0ifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4v0ifp)); + var RoRAI3 vl_good_values := {{omit},{}}; //TODO: put {{}} into the negative test + var RoRAI3 vl_wrong_values := { {{0,1,2}} } // compilation error for {1},{1,2} TODO: put into negative test + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4v0ifp),vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v1ifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4v1ifp)); + var RoRAI3 vl_good_values := {{omit},{}};//TODO: put {{1}} into the negative test + var RoRAI3 vl_wrong_values := { {{0,1,2}} } // compilation error for {1},{1,2} TODO: put into neg test + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4v1ifp),vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v2ifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4v2ifp)); + var RoRAI3 vl_good_values := {{omit},{}};//TODO: put {{1,2}} into the negative test + var RoRAI3 vl_wrong_values := { {{0,1,2}} } // compilation error for {1},{1,2} TODO: put into neg test + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4v2ifp),vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v3vifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4v3vifp)); + var RoRAI3 vl_good_values := {{omit}, {{0,1,2}} }; + var RoRAI3 vl_wrong_values := { {{0,1,3}},{{0,2,2}},{{0,3,2}},{{0,-1,2}},{{0,-,2}},{{1,1,3}},{{1,2,3}},{{1,3,3}},{{1,4,3}},{{1,9999,3}} }; + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4v3vifp),vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v3aifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4v3aifp)); + var RoRAI3 vl_good_values := { {omit},{{0,1,2}},{{0,2,2}},{{0,3,2}},{{0,-1,2}},{{0,-,2}}}; + var RoRAI3 vl_wrong_values := { {{0,1,3}},{{1,1,3}},{{1,2,3}}, {{1,3,3}},{{1,4,3}},{{1,9999,3}} }; + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4v3aifp),vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v3qifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4v3qifp)); + var RoRAI3 vl_good_values := { {omit},{{0,1,2}},{{0,2,2}},{{0,3,2}},{{0,-1,2}},{{0,-,2}} }; + var RoRAI3 vl_wrong_values :={ {{0,1,3}},{{1,1,3}},{{0,2,3}},{{1,3,3}},{{0,4,9}},{{1,9999,2}} }; + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4v3aifp),vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v3vlifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4v3vlifp)); + var RoRAI3 vl_good_values := { {omit},{{0,1,1}},{{0,1,2}} }; + var RoRAI3 vl_wrong_values :={ {{0,1,3}},{{1,1,3}},{{0,2,3}},{{1,3,3}} }; + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4v3vlifp),vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4vlifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4vlifp)); + var RoRAI3 vl_good_values := { {omit},{{0,1,2}}, {{9,10,11}} }; + var RoRAI3 vl_wrong_values :={ {{0,1,3}}, {{1,1,2}}, {{0,2,2}}, {{9,10,12}}, {{9,11,11}}, {{4,4,4}} }; + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4vlifp),vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v3rifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4v3rifp)); + var RoRAI3 vl_good_values := { {omit},{{0,1,1}}, {{0,1,2}}, {{0,1,3}} }; + var RoRAI3 vl_wrong_values := { {{0,1,4}}, {{0,1,0}}, {{0,2,2}}, {{9,10,12}}, {{9,11,11}}, {{4,4,4}} }; + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4v3rifp),vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v3mixifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4v3mixifp)); + var RoRAI3 vl_good_values := { {omit},{{0,1,1}},{{0,1,2}},{{0,1,3}},{{1,1,1}},{{1,1,2}},{{1,1,3}} } ; + var RoRAI3 vl_wrong_values :={ {{0,1,4}}, {{0,1,0}}, {{0,2,2}}, {{1,1,4}}, {{1,1,4}}, {{1,1,0}}, {{9,10,12}}, {{9,11,11}}, {{4,4,4}} }; + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4v3mixifp),vl_good_values,vl_wrong_values); +} + +testcase tc_array_i_mod4v3cifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4v3cifp)); + var RoRAI3 vl_good_values := { {omit},{{0,1,1}},{{0,1,4}},{{0,1,5}},{{1,1,1}},{{1,1,4}},{{1,1,5}},{{1,1,-1}},{{1,1,-100}} }; + var RoRAI3 vl_wrong_values := { {{0,1,2}},{{0,1,3}},{{1,1,2}},{{1,1,3}},{{1,2,4}},{{1,2,0}},{{9,10,12}},{{9,11,11}},{{4,4,4}} }; + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4v3cifp),vl_good_values,vl_wrong_values); +} + +//{ (0, 1), 1, (1 .. 3) } -{0, -, -}--> { 1, 1, (1 .. 3) } +testcase tc_array_i_mod4field1ifp_emb() runs on MC { + log(t_rai3(tspt_array_i3_mod4field1ifp)); + var RoRAI3 vl_good_values := { {omit},{{0,1,1}}, {{0,1,2}}, {{0,1,3}} }; + var RoRAI3 vl_wrong_values :={ {{0,1,4}}, {{0,1,5}}, {{1,1,1}}, {{1,1,2}}, {{1,1,3}}, {{1,1,4}}, {{9,10,12}} }; + f_checkMatchingValues_rai3(t_rai3(tspt_array_i3_mod4field1ifp),vl_good_values,vl_wrong_values); +} + +//===== +testcase tc_array_i_emb() runs on MC { + log(t_array_bai3(true,tspt_array_i3_a)); + if( log2str(t_array_bai3(true,tspt_array_i3_a)) != "{ b := true, ai3 := * }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_q)); + if( log2str(t_array_bai3(true,tspt_array_i3_q)) != "{ b := true, ai3 := ? }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_v3v)); + if( log2str(t_array_bai3(true,tspt_array_i3_v3v)) != "{ b := true, ai3 := { 0, 1, 2 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_v3a)); + if( log2str(t_array_bai3(true,tspt_array_i3_v3a)) != "{ b := true, ai3 := { 0, *, 2 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_v3q)); + if( log2str(t_array_bai3(true,tspt_array_i3_v3q)) != "{ b := true, ai3 := { ?, 1, 2 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_v3vl)); + if( log2str(t_array_bai3(true,tspt_array_i3_v3vl)) != "{ b := true, ai3 := { 0, 1, (1, 2) } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_vl)); + if( log2str(t_array_bai3(true,tspt_array_i3_vl)) != "{ b := true, ai3 := ({ 0, 1, 2 }, { 9, 10, 11 }) }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_v3r)); + if( log2str(t_array_bai3(true,tspt_array_i3_v3r)) != "{ b := true, ai3 := { 0, 1, (1 .. 3) } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_v3mix)); + if( log2str(t_array_bai3(true,tspt_array_i3_v3mix)) != "{ b := true, ai3 := { (0, 1), 1, (1 .. 3) } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_v3c)); + if( log2str(t_array_bai3(true,tspt_array_i3_v3c)) != "{ b := true, ai3 := { (0, 1), 1, complement(2, 3) } }") {setverdict(fail)} else {setverdict(pass)} +} + +//array embedded in record, modified from cfg file +testcase tc_array_i_ModulePar_emb() runs on MC { + log(t_array_bai3(true,tspt_array_i3_mod4a)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4a)) != "{ b := true, ai3 := * }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4q)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4q)) != "{ b := true, ai3 := ? }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4o)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4o)) != "{ b := true, ai3 := omit }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v0)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v0)) != "{ b := true, ai3 := { 1, 2, 3 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v1)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v1)) != "{ b := true, ai3 := { 1, 2, 3 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v2)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v2)) != "{ b := true, ai3 := { 1, 2, 3 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3v)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3v)) != "{ b := true, ai3 := { 0, 1, 2 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3a)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3a)) != "{ b := true, ai3 := { 0, *, 2 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3q)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3q)) != "{ b := true, ai3 := { ?, 1, 2 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3vl)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3vl)) != "{ b := true, ai3 := { 0, 1, (1, 2) } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4vl)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4vl)) != "{ b := true, ai3 := ({ 0, 1, 2 }, { 9, 10, 11 }) }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3r)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3r)) != "{ b := true, ai3 := { 0, 1, (1 .. 3) } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3mix)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3mix)) != "{ b := true, ai3 := { (0, 1), 1, (1 .. 3) } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3c)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3c)) != "{ b := true, ai3 := { (0, 1), 1, complement(2, 3) } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4field1ifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4field1ifp)) != "{ b := true, ai3 := { 0, 1, (1 .. 3) } ifpresent }") {setverdict(fail)} else {setverdict(pass)} +} + +testcase tc_array_iifp_ModulePar_emb() runs on MC { + log(t_array_bai3(true,tspt_array_i3_mod4aifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4aifp)) != "{ b := true, ai3 := * ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4qifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4qifp)) != "{ b := true, ai3 := ? ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v0ifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v0ifp)) != "{ b := true, ai3 := omit ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v1ifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v1ifp)) != "{ b := true, ai3 := { 1 } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v2ifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v2ifp)) != "{ b := true, ai3 := { 1, 2 } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3aifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3aifp)) != "{ b := true, ai3 := { 0, *, 2 } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3qifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3qifp)) != "{ b := true, ai3 := { ?, 1, 2 } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3vlifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3vlifp)) != "{ b := true, ai3 := { 0, 1, (1, 2) } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4vlifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4vlifp)) != "{ b := true, ai3 := ({ 0, 1, 2 }, { 9, 10, 11 }) ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3rifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3rifp)) != "{ b := true, ai3 := { 0, 1, (1 .. 3) } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3mixifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3mixifp)) != "{ b := true, ai3 := { (0, 1), 1, (1 .. 3) } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true, tspt_array_i3_mod4field1ifp)); + if( log2str(t_array_bai3(true, tspt_array_i3_mod4field1ifp)) != "{ b := true, ai3 := { 0, 1, (1 .. 3) } ifpresent }") {setverdict(fail)} else {setverdict(pass)} +} + +//========================= +// ttcn2string testcases: +//========================= +testcase tc_array_i_ModulePar_emb_ttcn2string() runs on MC { + log(t_array_bai3(true,tspt_array_i3_mod4a)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4a)) != "{ b := true, ai3 := * }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4q)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4q)) != "{ b := true, ai3 := ? }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4o)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4o)) != "{ b := true, ai3 := omit }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v1)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4v1)) != "{ b := true, ai3 := { 1, 2, 3 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v2)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4v2)) != "{ b := true, ai3 := { 1, 2, 3 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3v)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4v3v)) != "{ b := true, ai3 := { 0, 1, 2 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3a)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4v3a)) != "{ b := true, ai3 := { 0, *, 2 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3q)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4v3q)) != "{ b := true, ai3 := { ?, 1, 2 } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3vl)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4v3vl)) != "{ b := true, ai3 := { 0, 1, (1, 2) } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4vl)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4vl)) != "{ b := true, ai3 := ({ 0, 1, 2 }, { 9, 10, 11 }) }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3r)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4v3r)) != "{ b := true, ai3 := { 0, 1, (1 .. 3) } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3mix)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4v3mix)) != "{ b := true, ai3 := { (0, 1), 1, (1 .. 3) } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3c)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4v3c)) != "{ b := true, ai3 := { (0, 1), 1, complement(2, 3) } }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4field1)); + if( ttcn2string(t_array_bai3(true,tspt_array_i3_mod4field1)) != "{ b := true, ai3 := { 0, 1, (1 .. 3) } }") {setverdict(fail)} else {setverdict(pass)} +} + +testcase tc_array_iifp_ModulePar_emb_ttcn2string() runs on MC { + log(t_array_bai3(true,tspt_array_i3_mod4aifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4aifp)) != "{ b := true, ai3 := * ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4qifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4qifp)) != "{ b := true, ai3 := ? ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v0ifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v0ifp)) != "{ b := true, ai3 := omit ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v1ifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v1ifp)) != "{ b := true, ai3 := { 1 } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v2ifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v2ifp)) != "{ b := true, ai3 := { 1, 2 } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3aifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3aifp)) != "{ b := true, ai3 := { 0, *, 2 } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3qifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3qifp)) != "{ b := true, ai3 := { ?, 1, 2 } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3vlifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3vlifp)) != "{ b := true, ai3 := { 0, 1, (1, 2) } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4vlifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4vlifp)) != "{ b := true, ai3 := ({ 0, 1, 2 }, { 9, 10, 11 }) ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3rifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3rifp)) != "{ b := true, ai3 := { 0, 1, (1 .. 3) } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true,tspt_array_i3_mod4v3mixifp)); + if( log2str(t_array_bai3(true,tspt_array_i3_mod4v3mixifp)) != "{ b := true, ai3 := { (0, 1), 1, (1 .. 3) } ifpresent }") {setverdict(fail)} else {setverdict(pass)} + log(t_array_bai3(true, tspt_array_i3_mod4field1ifp)); + if( log2str(t_array_bai3(true, tspt_array_i3_mod4field1ifp)) != "{ b := true, ai3 := { 0, 1, (1 .. 3) } ifpresent }") {setverdict(fail)} else {setverdict(pass)} +} + + + + +//========================= +// string2ttcn testcases: +//========================= + +//expected result: DTE +testcase tc_array_string2ttcn_DTE_test() runs on MC { + var REC_BAI3 vl_result; + @try { + string2ttcn("{ b := true, ai3 := * }", vl_result); + setverdict(fail) + } @catch(e) { + setverdict(pass, "Expected D T E") + } +} + +//template string-> template, template string-> value +testcase tc_array_string2ttcn_i3_mod4a() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := * }", t_array_bai3(true,tspt_array_i3_mod4a)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := * }", t_array_bai3(true,tspt_array_i3_mod4a),false) +} + +testcase tc_array_string2ttcn_i3_mod4q() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := ? }", t_array_bai3(true,tspt_array_i3_mod4q)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := ? }", t_array_bai3(true,tspt_array_i3_mod4q),false) +} + +testcase tc_array_string2ttcn_i3_mod4v0() runs on MC { + template REC_BAI3 tl_rec := { b:= true, ai3:= {-,-,-} }; + var REC_BAI3 vl_rec := { b:= true, ai3:= {-,-,-} }; + f_string2ttcn_REC_BAI3_t_str("{ b := true, ai3 := { -, -, - } }", "{ b := true, ai3 := { <uninitialized template>, <uninitialized template>, <uninitialized template> } }" ) + //f_string2ttcn_REC_BAI3_v_str("{ b := true, ai3 := { -, -, - } }", "{ b := true, ai3 := { <unbound>, <unbound>, <unbound> } }" , true) + // partial array values are currently deleted if the array is an optional field or a union alternative (see artf708493) + f_string2ttcn_REC_BAI3_v_str("{ b := true, ai3 := { -, -, - } }", "{ b := true, ai3 := <unbound> }" , true); + //TODO: Check if It is ok or not: log2str(tl_rec) gives back: "{ b := true, ai3 := <unbound> }" + log(tl_rec); + log(vl_rec); +} + +testcase tc_array_string2ttcn_i3_mod4v1() runs on MC { + template REC_BAI3 tl_rec := { b:= true, ai3:= {1,-,-} }; + var REC_BAI3 vl_rec := { b:= true, ai3:= {1,-,-} }; + f_string2ttcn_REC_BAI3_t_str("{ b := true, ai3 := { 1, -, - } }", "{ b := true, ai3 := { 1, <uninitialized template>, <uninitialized template> } }") + //f_string2ttcn_REC_BAI3_v_str("{ b := true, ai3 := { 1, -, - } }", log2str(vl_rec),true) + // partial array values are currently deleted if the array is an optional field or a union alternative (see artf708493) + f_string2ttcn_REC_BAI3_v_str("{ b := true, ai3 := { 1, -, - } }", "{ b := true, ai3 := { 1, <unbound>, <unbound> } }" , true); + log(tl_rec); + log(vl_rec); +} + +testcase tc_array_string2ttcn_i3_mod4v2() runs on MC { + template REC_BAI3 tl_rec := { b:= true, ai3:= {1,2,-} }; + var REC_BAI3 vl_rec := { b:= true, ai3:= {1,2,-} }; + f_string2ttcn_REC_BAI3_t_str("{ b := true, ai3 := { 1, 2, - } }", "{ b := true, ai3 := { 1, 2, <uninitialized template> } }") + //f_string2ttcn_REC_BAI3_v_str("{ b := true, ai3 := { 1, 2, - } }", log2str(vl_rec), true); + // partial array values are currently deleted if the array is an optional field or a union alternative (see artf708493) + f_string2ttcn_REC_BAI3_v_str("{ b := true, ai3 := { 1, 2, - } }", "{ b := true, ai3 := { 1, 2, <unbound> } }" , true); + log(tl_rec); + log(vl_rec); +} + +testcase tc_array_string2ttcn_i3_mod4v3v() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { 0, 1, 2 } }", t_array_bai3(true,tspt_array_i3_mod4v3v)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { 0, 1, 2 } }", t_array_bai3(true,tspt_array_i3_mod4v3v),true) +} + +testcase tc_array_string2ttcn_i3_mod4v3a() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { 0, *, 2 } }", t_array_bai3(true,tspt_array_i3_mod4v3a)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { 0, *, 2 } }", t_array_bai3(true,tspt_array_i3_mod4v3a),false) +} + +testcase tc_array_string2ttcn_i3_mod4v3q() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { ?, 1, 2 } }", t_array_bai3(true,tspt_array_i3_mod4v3q)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { ?, 1, 2 } }", t_array_bai3(true,tspt_array_i3_mod4v3q),false) +} + +testcase tc_array_string2ttcn_i3_mod4v3vl() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { 0, 1, (1, 2) } }", t_array_bai3(true,tspt_array_i3_mod4v3vl)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { 0, 1, (1, 2) } }", t_array_bai3(true,tspt_array_i3_mod4v3vl),false) +} + +testcase tc_array_string2ttcn_i3_mod4vl() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := ({ 0, 1, 2 }, { 9, 10, 11 }) }", t_array_bai3(true,tspt_array_i3_mod4vl)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := ({ 0, 1, 2 }, { 9, 10, 11 }) }", t_array_bai3(true,tspt_array_i3_mod4vl),false) +} + +testcase tc_array_string2ttcn_i3_mod4v3r() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { 0, 1, (1 .. 3) } }", t_array_bai3(true,tspt_array_i3_mod4v3r)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { 0, 1, (1 .. 3) } }", t_array_bai3(true,tspt_array_i3_mod4v3r),false) +} + +testcase tc_array_string2ttcn_i3_mod4v3mix() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { (0, 1), 1, (1 .. 3) } }", t_array_bai3(true,tspt_array_i3_mod4v3mix)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { (0, 1), 1, (1 .. 3) } }", t_array_bai3(true,tspt_array_i3_mod4v3mix),false) +} + +testcase tc_array_string2ttcn_i3_mod4v3c() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { (0, 1), 1, complement(2, 3) } }", t_array_bai3(true,tspt_array_i3_mod4v3c)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { (0, 1), 1, complement(2, 3) } }", t_array_bai3(true,tspt_array_i3_mod4v3c),false) +} + +testcase tc_array_string2ttcn_i3_mod4field1() runs on MC { + f_string2ttcn_REC_BAI3_t_str("{ b := true, ai3 := { 0, 1, (1 .. 3) } }", log2str(t_array_bai3(true,tspt_array_i3_mod4field1))); + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { 0, 1, (1 .. 3) } }", t_array_bai3(true,tspt_array_i3_mod4field1),false) +} + +//=== string2ttcn testcases with ifpresent: ===== + +//template string-> template, template string-> value +testcase tc_array_string2ttcn_i3_mod4aifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := * ifpresent }", t_array_bai3(true,tspt_array_i3_mod4aifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := * ifpresent }", t_array_bai3(true,tspt_array_i3_mod4aifp),false) +} + +testcase tc_array_string2ttcn_i3_mod4qifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := ? ifpresent }", t_array_bai3(true,tspt_array_i3_mod4qifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := ? ifpresent }", t_array_bai3(true,tspt_array_i3_mod4qifp),false) +} + +// ???? is it acceptable ????? +testcase tc_array_string2ttcn_i3_mod4v0ifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := omit ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v0ifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := omit ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v0ifp),false) +} + +testcase tc_array_string2ttcn_i3_mod4v1ifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { 1 } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v1ifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { 1 } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v1ifp),false) +} + +testcase tc_array_string2ttcn_i3_mod4v2ifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { 1, 2 } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v2ifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { 1, 2 } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v2ifp),false) +} + +testcase tc_array_string2ttcn_i3_mod4v3vifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { 0, 1, 2 } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3vifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { 0, 1, 2 } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3vifp),false) +} + +testcase tc_array_string2ttcn_i3_mod4v3aifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { 0, *, 2 } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3aifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { 0, *, 2 } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3aifp),false) +} + +testcase tc_array_string2ttcn_i3_mod4v3qifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { ?, 1, 2 } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3qifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { ?, 1, 2 } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3qifp),false) +} + +testcase tc_array_string2ttcn_i3_mod4v3vlifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { 0, 1, (1, 2) } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3vlifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { 0, 1, (1, 2) } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3vlifp),false) +} + +testcase tc_array_string2ttcn_i3_mod4vlifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := ({ 0, 1, 2 }, { 9, 10, 11 }) ifpresent }", t_array_bai3(true,tspt_array_i3_mod4vlifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := ({ 0, 1, 2 }, { 9, 10, 11 }) ifpresent }", t_array_bai3(true,tspt_array_i3_mod4vlifp),false) +} + +testcase tc_array_string2ttcn_i3_mod4v3rifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { 0, 1, (1 .. 3) } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3rifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { 0, 1, (1 .. 3) } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3rifp),false) +} + +testcase tc_array_string2ttcn_i3_mod4v3mixifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { (0, 1), 1, (1 .. 3) } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3mixifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { (0, 1), 1, (1 .. 3) } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3mixifp),false) +} + +testcase tc_array_string2ttcn_i3_mod4v3cifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { (0, 1), 1, complement(2, 3) } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3cifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { (0, 1), 1, complement(2, 3) } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4v3cifp),false) +} + +testcase tc_array_string2ttcn_i3_mod4field1ifp() runs on MC { + f_string2ttcn_REC_BAI3_t("{ b := true, ai3 := { 0, 1, (1 .. 3) } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4field1ifp)) + f_string2ttcn_REC_BAI3_v("{ b := true, ai3 := { 0, 1, (1 .. 3) } ifpresent }", t_array_bai3(true,tspt_array_i3_mod4field1ifp),false) +} + +testcase tc_array_allfrom_perm1() runs on MyComp_CT { + var template AI3 vl_tcAI3literal, vl_tcAI3allFrom; + log ("component var v_AI3literal: ", v_AI3literal); + log ("component var v_AI3allfrom: ", v_AI3allfrom); + vl_tcAI3literal := { permutation(1,*,3) }; + log ("TC() local var vl_tcAI3literal: ", vl_tcAI3literal); + + var RoAI3 vl_goodValues := { {1,2,3}, {1,3,2},{2,1,3},{2,3,1},{3,1,2},{3,2,1}, {1,5,3}, {5,3,1}, + {1,5,3}, {0,1,3},{3,1,-99}} + var RoAI3 vl_badValues := { {1,2,4}, {1,5,6},{20,10,30},{3,5,6}, {5,3,6}}; + f_checkMatchingValues_ai3(vl_tcAI3literal, vl_goodValues, vl_badValues); + + vl_tcAI3allFrom := { permutation(all from tt) } + log ("TC() local var vl_tcAI3allFrom: ", vl_tcAI3allFrom); + vl_goodValues := { {1,2,3}, {1,3,2},{2,1,3},{2,3,1},{3,1,2},{3,2,1}, {1,5,2}, {5,2,1}, + {1,5,2}, {0,1,2},{2,1,-99}} + vl_badValues := { {1,3,4}, {1,5,6},{20,10,30},{2,5,6}, {5,2,6}} + f_checkMatchingValues_ai3(vl_tcAI3allFrom,vl_goodValues, vl_badValues); +} + +testcase tc_array_allfrom_perm2() runs on MyComp_CT { + var template AI2x3 vl_t24 := { {permutation(all from tt1x3)}, {permutation(all from ttx45) } }; + var RoAI2x3 vl_goodValues := { { {1,2,3},{4,4,5}}, {{1,3,2},{5,4,1}}} + var RoAI2x3 vl_badValues := {{ {1,2,2},{4,4,5}}, {{1,3,2},{5,5,1}} } + f_check_AI2x3( vl_t24, vl_goodValues,vl_badValues); +} +testcase tc_array_perm() runs on MyComp_CT { + var template AI2x3 vl_t24 := { {permutation(1,*,3)}, {permutation(*,4,5) } }; + var RoAI2x3 vl_goodValues := { { {1,2,3},{4,4,5}}, {{1,3,2},{5,4,1}}} + var RoAI2x3 vl_badValues := {{ {1,2,2},{4,4,5}}, {{1,3,2},{5,5,1}} } + f_check_AI2x3( vl_t24, vl_goodValues,vl_badValues); +} + +testcase tc_array_compl() runs on MyComp_CT { + var RoAI3 vl_goodValues := { {0,1,1}, {0,1,3},{0,1,5}, {0,1,-500}, {1,1,1}, {1,1,3},{1,1,5}, {1,1,-500} } + var RoAI3 vl_badValues := { {2,1,1}, {0,2,3},{0,1,2}, {0,1,4}, {2,1,1}, {1,2,3},{1,1,2}, {1,1,4} } + f_checkMatchingValues_ai3( t_array_i3_v3cr, vl_goodValues,vl_badValues); +} + +//========================================================================= +// Control +//========================================================================= + +control { + //array + log("***array tests *******"); + execute(tc_array_string2ttcn_DTE_test()); + execute(tc_array_i_NoModulePar()); + execute(tc_array_i_ModulePar()); + execute(tc_array_i_v3p()); + execute(tc_array_i_v3pa()); + execute(tc_array_i_a()); + execute(tc_array_i_q()); + execute(tc_array_i_v3v()); + execute(tc_array_i_v3a()); + execute(tc_array_i_v3q()); + execute(tc_array_i_v3vl()); + execute(tc_array_i_vl()); + execute(tc_array_i_v3r()); + execute(tc_array_i_v3mix()); + execute(tc_array_i_v3c()); + + execute(tc_array_i_mod4a()); + execute(tc_array_i_mod4q()); + execute(tc_array_i_mod4v0()); + execute(tc_array_i_mod4v1()); + execute(tc_array_i_mod4v2()); + execute(tc_array_i_mod4v3v()); + execute(tc_array_i_mod4v3a()); + execute(tc_array_i_mod4v3q()); + execute(tc_array_i_mod4v3vl()); + execute(tc_array_i_mod4vl()); + execute(tc_array_i_mod4v3r()); + execute(tc_array_i_mod4v3mix()); + execute(tc_array_i_mod4v3c()); + execute(tc_array_i_mod4field1()); + + execute(tc_array_i_mod4aifp_emb()); + execute(tc_array_i_mod4qifp_emb()); + execute(tc_array_i_mod4v0ifp_emb()); + execute(tc_array_i_mod4v1ifp_emb()); + execute(tc_array_i_mod4v2ifp_emb()); + execute(tc_array_i_mod4v3vifp_emb()); + execute(tc_array_i_mod4v3aifp_emb()); + execute(tc_array_i_mod4v3qifp_emb()); + execute(tc_array_i_mod4v3vlifp_emb()); + execute(tc_array_i_mod4vlifp_emb()); + execute(tc_array_i_mod4v3rifp_emb()); + execute(tc_array_i_mod4v3mixifp_emb()); + execute(tc_array_i_mod4v3cifp_emb()); + execute(tc_array_i_mod4field1ifp_emb()); + + execute(tc_array_i_emb()); + execute(tc_array_i_ModulePar_emb()); + execute(tc_array_iifp_ModulePar_emb()); + execute(tc_array_i_ModulePar_emb_ttcn2string()); + execute(tc_array_iifp_ModulePar_emb_ttcn2string()); + + execute(tc_array_string2ttcn_i3_mod4a()); + execute(tc_array_string2ttcn_i3_mod4q()); + execute(tc_array_string2ttcn_i3_mod4v0()); + execute(tc_array_string2ttcn_i3_mod4v1()); + execute(tc_array_string2ttcn_i3_mod4v2()); + execute(tc_array_string2ttcn_i3_mod4v3v()); + execute(tc_array_string2ttcn_i3_mod4v3a()); + execute(tc_array_string2ttcn_i3_mod4v3q()); + execute(tc_array_string2ttcn_i3_mod4v3vl()); + execute(tc_array_string2ttcn_i3_mod4vl()); + execute(tc_array_string2ttcn_i3_mod4v3r()); + execute(tc_array_string2ttcn_i3_mod4v3mix()); + execute(tc_array_string2ttcn_i3_mod4v3c()); + execute(tc_array_string2ttcn_i3_mod4field1()); + + execute(tc_array_string2ttcn_i3_mod4aifp()); + execute(tc_array_string2ttcn_i3_mod4qifp()); + execute(tc_array_string2ttcn_i3_mod4v0ifp()); //TODO: check it! + execute(tc_array_string2ttcn_i3_mod4v1ifp()); + execute(tc_array_string2ttcn_i3_mod4v2ifp()); + execute(tc_array_string2ttcn_i3_mod4v3vifp()); + execute(tc_array_string2ttcn_i3_mod4v3aifp()); + execute(tc_array_string2ttcn_i3_mod4v3qifp()); + execute(tc_array_string2ttcn_i3_mod4v3vlifp()); + execute(tc_array_string2ttcn_i3_mod4vlifp()); + execute(tc_array_string2ttcn_i3_mod4v3rifp()); + execute(tc_array_string2ttcn_i3_mod4v3mixifp()); + execute(tc_array_string2ttcn_i3_mod4v3cifp()); + execute(tc_array_string2ttcn_i3_mod4field1ifp()); + + execute(tc_array_allfrom_perm1()); //TODO: temporarily commented out (java compilation error) + execute(tc_array_allfrom_perm2()); + execute(tc_array_perm()); + execute(tc_array_compl()); +} + +} // end of module diff --git a/Regression_Test_java/src/text2ttcn_nolegacy/bitstring_test.ttcn b/Regression_Test_java/src/text2ttcn_nolegacy/bitstring_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..01bb53f3a4a60b85ba208ccffa630b69cb3ef6d6 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn_nolegacy/bitstring_test.ttcn @@ -0,0 +1,487 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +module bitstring_test { + +//========================================================================= +// Import Part +//========================================================================= +import from types2 all; +//import from functions2 all; +//========================================================================= +// Module Parameters +//========================================================================= +modulepar template boolean tspt_b_t := true; + +modulepar { + //modulepar bitstrings not modified from cfg file + template bitstring tspt_bs_v := '01101'B; + template bitstring tspt_bs_o := omit; + template bitstring tspt_bs_a := *; + template bitstring tspt_bs_q := ?; + template bitstring tspt_bs_al1 := * length(2); //length restriction + template bitstring tspt_bs_al2 := * length(2..4); + template bitstring tspt_bs_ql1 := ? length(2); + template bitstring tspt_bs_ql2 := ? length(2..4); + template bitstring tspt_bs_vl1 := ('01101'B); + template bitstring tspt_bs_vl2 := ('01101'B,'1010'B); + template bitstring tspt_bs_vl3 := ('01101'B,'1010'B,'101'B); + template bitstring tspt_bs_c1 := complement('01101'B) + template bitstring tspt_bs_c2 := complement('01101'B,'1010'B); + template bitstring tspt_bs_c3 := complement('01101'B,'1010'B,'101'B); + //template bitstring tspt_bs_r1 := ('A'B..'B'B); //range not allowed + //template bitstring tspt_bs_r2 := ('a'B..'c'B); + template bitstring tspt_bs_pa := '000*111'B + template bitstring tspt_bs_pq := '000?111'B + + template bitstring tspt_bs_vifp := '01101'B ifpresent; + template bitstring tspt_bs_oifp := omit ifpresent; + template bitstring tspt_bs_aifp := * ifpresent; + template bitstring tspt_bs_qifp := ? ifpresent; + template bitstring tspt_bs_al1ifp := * length(2) ifpresent; //length restriction + template bitstring tspt_bs_al2ifp := * length(2..4) ifpresent; + template bitstring tspt_bs_ql1ifp := ? length(2) ifpresent; + template bitstring tspt_bs_ql2ifp := ? length(2..4) ifpresent; + template bitstring tspt_bs_vl1ifp := ('01101'B) ifpresent; + template bitstring tspt_bs_vl2ifp := ('01101'B,'1010'B) ifpresent; + template bitstring tspt_bs_vl3ifp := ('01101'B,'1010'B,'101'B) ifpresent; + template bitstring tspt_bs_c1ifp := complement('01101'B) ifpresent + template bitstring tspt_bs_c2ifp := complement('01101'B,'1010'B) ifpresent; + template bitstring tspt_bs_c3ifp := complement('01101'B,'1010'B,'101'B) ifpresent; + //template bitstring tspt_bs_r1ifp := ('A'B..'B'B) ifpresent; //range not allowed + //template bitstring tspt_bs_r2ifp := ('a'B..'c'B) ifpresent; //range not allowed + template bitstring tspt_bs_paifp := '000*111'B ifpresent + template bitstring tspt_bs_pqifp := '000?111'B ifpresent + + //modulepar bitstrings modified from cfg file + template bitstring tspt_bs_mod4v := * //after mod:'01101'; + template bitstring tspt_bs_mod4o := * //omit; + template bitstring tspt_bs_mod4a := '0'B //*; + template bitstring tspt_bs_mod4q := ''B //?; + template bitstring tspt_bs_mod4al1 := '1'B //* length(2); //length restriction + template bitstring tspt_bs_mod4al2 := '1010010001'B //mofified for: * length(2..4); + template bitstring tspt_bs_mod4ql1 := '1010010001'B //mofified for:? length(2); + template bitstring tspt_bs_mod4ql2 := '1010010001'B //mofified for:? length(2..4); + template bitstring tspt_bs_mod4vl1 := ('01101'B) //TODO: Adam //It should be mofified for: ('01101'B); + template bitstring tspt_bs_mod4vl2 := '1010010001'B //mofified for:('01101'B,'1010'B); + template bitstring tspt_bs_mod4vl3 := '1010010001'B //mofified for:('01101'B,'1010'B,'B12'B); + template bitstring tspt_bs_mod4c1 := '1010010001'B //mofified for:complement('01101') + template bitstring tspt_bs_mod4c2 := '1010010001'B //mofified for:complement('01101','1010'); + template bitstring tspt_bs_mod4c3 := '1010010001'B //mofified for:complement('01101','1010','101'); + template bitstring tspt_bs_mod4r1 := '1010010001'B //mofified for:('A'..'B'); //range + template bitstring tspt_bs_mod4r2 := '1010010001'B //mofified for:('a'..'c'); + template bitstring tspt_bs_mod4pa := '1010010001'B //mofified for:pattern 'abc*123' + template bitstring tspt_bs_mod4pq := '1010010001'B //mofified for:pattern 'abc?123' + + template bitstring tspt_bs_mod4vifp := '1010010001'B //mofified for:'01101' ifpresent; + template bitstring tspt_bs_mod4oifp := '1010010001'B //mofified for:omit ifpresent; + template bitstring tspt_bs_mod4aifp := '1010010001'B //mofified for:* ifpresent; + template bitstring tspt_bs_mod4qifp := '1010010001'B //mofified for:? ifpresent; + template bitstring tspt_bs_mod4al1ifp := '1010010001'B //mofified for:* length(2) ifpresent; //length restriction + template bitstring tspt_bs_mod4al2ifp := '1010010001'B //mofified for:* length(2..4) ifpresent; + template bitstring tspt_bs_mod4ql1ifp := '1010010001'B //mofified for:? length(2) ifpresent; + template bitstring tspt_bs_mod4ql2ifp := '1010010001'B //mofified for:? length(2..4) ifpresent; + template bitstring tspt_bs_mod4vl1ifp := ('01101'B) ifpresent //TODO: Adam //It should be mofified for: ('01101'B); + template bitstring tspt_bs_mod4vl2ifp := '1010010001'B //mofified for:('01101','1010') ifpresent; + template bitstring tspt_bs_mod4vl3ifp := '1010010001'B //mofified for:('01101','1010','B12') ifpresent; + template bitstring tspt_bs_mod4c1ifp := '1010010001'B //mofified for:complement('01101') ifpresent + template bitstring tspt_bs_mod4c2ifp := '1010010001'B //mofified for:complement('01101','1010') ifpresent; + template bitstring tspt_bs_mod4c3ifp := '1010010001'B //mofified for:complement('01101','1010','101') ifpresent; + //template bitstring tspt_bs_mod4r1ifp := '1010010001'B //mofified for:('0'B..'1'B) ifpresent; //range + //template bitstring tspt_bs_mod4r2ifp := '1010010001'B //mofified for:('0'B..'1'B) ifpresent; + template bitstring tspt_bs_mod4paifp := '1010010001'B //mofified for:pattern 'abc*xyz'B ifpresent + template bitstring tspt_bs_mod4pqifp := '1010010001'B //mofified for:pattern 'abc?xyz'B ifpresent + +} + +//========================================================================= +// Functions +//========================================================================= + +function f_string2ttcn_RBS_t(in charstring pl_rbs, in template RBS pl_expected_result) { + var template RBS vl_result; + @try { + string2ttcn(pl_rbs,vl_result); + setverdict(pass) + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + log(pl_expected_result); + log(vl_result); + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +function f_string2ttcn_RBS_t_str(in charstring pl_rec, in charstring pl_expected_result) { + var template RBS vl_result; + @try { + string2ttcn(pl_rec,vl_result); + setverdict(pass) + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + log("Expected result: ", pl_expected_result); + log("Result: ", vl_result); + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +//template string -> variable conversion +//expected result: error +function f_string2ttcn_RBS_v(in charstring pl_cs, in template RBS pl_expected_result, in boolean pl_ok_expected) { + var RBS vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("string2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ",pl_expected_result ); + log("Result: ", vl_result); +} + +//this function is the same but uses +function f_string2ttcn_RBS_v_str(in charstring pl_cs, charstring pl_expected_result, in boolean pl_ok_expected) { + var RBS vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("str2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ", pl_expected_result ); + log("Result: ", vl_result); +} + +//========================================================================= +// Testcases +//========================================================================= + + +testcase tc_bs_1() runs on MC { + var template BitStrings_1_2 vlt_bs := ?; + log(vlt_bs); +} + +testcase tc_bs_ModulePar_emb() runs on MC { + log(t_rbs(tspt_bs_mod4v)); + if(log2str(t_rbs(tspt_bs_mod4v)) != "{ bs := \'01101\'B }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4o)); + if(log2str(t_rbs(tspt_bs_mod4o)) != "{ bs := omit }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4a)); + if(log2str(t_rbs(tspt_bs_mod4a)) != "{ bs := * }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4q)); + if(log2str(t_rbs(tspt_bs_mod4q)) != "{ bs := ? }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4al1)); + if(log2str(t_rbs(tspt_bs_mod4al1)) != "{ bs := * length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4al2)); + if(log2str(t_rbs(tspt_bs_mod4al2)) != "{ bs := * length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4ql1)); + if(log2str(t_rbs(tspt_bs_mod4ql1)) != "{ bs := ? length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4ql2)); + if(log2str(t_rbs(tspt_bs_mod4ql2)) != "{ bs := ? length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(">",t_rbs(tspt_bs_mod4vl1),"<"); + if(log2str(t_rbs(tspt_bs_mod4vl1)) != "{ bs := \'01101\'B }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4vl2)); + if(log2str(t_rbs(tspt_bs_mod4vl2)) != "{ bs := (\'01101\'B, \'1010\'B) }") {setverdict(fail)} else {setverdict(pass)}; + + log(t_rbs(tspt_bs_mod4vl3)); + if(log2str(t_rbs(tspt_bs_mod4vl3)) != "{ bs := (\'01101\'B, \'1010\'B, \'101\'B) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4c1)); + if(log2str(t_rbs(tspt_bs_mod4c1)) != "{ bs := complement(\'01101\'B) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4c2)); + if(log2str(t_rbs(tspt_bs_mod4c2)) != "{ bs := complement(\'01101\'B, \'1010\'B) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4c3)); + if(log2str(t_rbs(tspt_bs_mod4c3)) != "{ bs := complement(\'01101\'B, \'1010\'B, \'101\'B) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4pa)); + if(log2str(t_rbs(tspt_bs_mod4pa)) != "{ bs := \'000*111\'B }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4pq)); + if(log2str(t_rbs(tspt_bs_mod4pq)) != "{ bs := \'000?111\'B }") {setverdict(fail)} else {setverdict(pass)}; + //== + log(t_rbs(tspt_bs_mod4vifp)); + if(log2str(t_rbs(tspt_bs_mod4vifp)) != "{ bs := \'01101\'B ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4oifp)); + if(log2str(t_rbs(tspt_bs_mod4oifp)) != "{ bs := omit ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4aifp)); + if(log2str(t_rbs(tspt_bs_mod4aifp)) != "{ bs := * ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4qifp)); + if(log2str(t_rbs(tspt_bs_mod4qifp)) != "{ bs := ? ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4al1ifp)); + if(log2str(t_rbs(tspt_bs_mod4al1ifp)) != "{ bs := * length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4al2ifp)); + if(log2str(t_rbs(tspt_bs_mod4al2ifp)) != "{ bs := * length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4ql1ifp)); + if(log2str(t_rbs(tspt_bs_mod4ql1ifp)) != "{ bs := ? length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4ql2ifp)); + if(log2str(t_rbs(tspt_bs_mod4ql2ifp)) != "{ bs := ? length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4vl1ifp)); + if(log2str(t_rbs(tspt_bs_mod4vl1ifp)) != "{ bs := \'01101\'B ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4vl2ifp)); + if(log2str(t_rbs(tspt_bs_mod4vl2ifp)) != "{ bs := (\'01101\'B, \'1010\'B) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4vl3ifp)); + if(log2str(t_rbs(tspt_bs_mod4vl3ifp)) != "{ bs := (\'01101\'B, \'1010\'B, \'101\'B) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4c1ifp)); + if(log2str(t_rbs(tspt_bs_mod4c1ifp)) != "{ bs := complement(\'01101\'B) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4c2ifp)); + if(log2str(t_rbs(tspt_bs_mod4c2ifp)) != "{ bs := complement(\'01101\'B, \'1010\'B) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4c3ifp)); + if(log2str(t_rbs(tspt_bs_mod4c3ifp)) != "{ bs := complement(\'01101\'B, \'1010\'B, \'101\'B) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4paifp)); + if(log2str(t_rbs(tspt_bs_mod4paifp)) != "{ bs := \'000*111'B ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4pqifp)); + if(log2str(t_rbs(tspt_bs_mod4pqifp)) != "{ bs := \'000?111\'B ifpresent }") {setverdict(fail)} else {setverdict(pass)}; +} + +testcase tc_bs_ttcn2string_emb() runs on MC { + log(t_rbs(tspt_bs_mod4v)); + if(ttcn2string(t_rbs(tspt_bs_mod4v)) != "{ bs := \'01101\'B }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4o)); + if(ttcn2string(t_rbs(tspt_bs_mod4o)) != "{ bs := omit }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4a)); + if(ttcn2string(t_rbs(tspt_bs_mod4a)) != "{ bs := * }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4q)); + if(ttcn2string(t_rbs(tspt_bs_mod4q)) != "{ bs := ? }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4al1)); + if(ttcn2string(t_rbs(tspt_bs_mod4al1)) != "{ bs := * length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4al2)); + if(ttcn2string(t_rbs(tspt_bs_mod4al2)) != "{ bs := * length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4ql1)); + if(ttcn2string(t_rbs(tspt_bs_mod4ql1)) != "{ bs := ? length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4ql2)); + if(ttcn2string(t_rbs(tspt_bs_mod4ql2)) != "{ bs := ? length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(">",t_rbs(tspt_bs_mod4vl1),"<"); + if(ttcn2string(t_rbs(tspt_bs_mod4vl1)) != "{ bs := \'01101\'B }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4vl2)); + if(ttcn2string(t_rbs(tspt_bs_mod4vl2)) != "{ bs := (\'01101\'B, \'1010\'B) }") {setverdict(fail)} else {setverdict(pass)}; + + log(t_rbs(tspt_bs_mod4vl3)); + if(ttcn2string(t_rbs(tspt_bs_mod4vl3)) != "{ bs := (\'01101\'B, \'1010\'B, \'101\'B) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4c1)); + if(ttcn2string(t_rbs(tspt_bs_mod4c1)) != "{ bs := complement(\'01101\'B) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4c2)); + if(ttcn2string(t_rbs(tspt_bs_mod4c2)) != "{ bs := complement(\'01101\'B, \'1010\'B) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4c3)); + if(ttcn2string(t_rbs(tspt_bs_mod4c3)) != "{ bs := complement(\'01101\'B, \'1010\'B, \'101\'B) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4pa)); + if(ttcn2string(t_rbs(tspt_bs_mod4pa)) != "{ bs := \'000*111\'B }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4pq)); + if(ttcn2string(t_rbs(tspt_bs_mod4pq)) != "{ bs := \'000?111\'B }") {setverdict(fail)} else {setverdict(pass)}; + //== + log(t_rbs(tspt_bs_mod4vifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4vifp)) != "{ bs := \'01101\'B ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4oifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4oifp)) != "{ bs := omit ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4aifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4aifp)) != "{ bs := * ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4qifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4qifp)) != "{ bs := ? ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4al1ifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4al1ifp)) != "{ bs := * length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4al2ifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4al2ifp)) != "{ bs := * length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4ql1ifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4ql1ifp)) != "{ bs := ? length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4ql2ifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4ql2ifp)) != "{ bs := ? length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4vl1ifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4vl1ifp)) != "{ bs := \'01101\'B ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4vl2ifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4vl2ifp)) != "{ bs := (\'01101\'B, \'1010\'B) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4vl3ifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4vl3ifp)) != "{ bs := (\'01101\'B, \'1010\'B, \'101\'B) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4c1ifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4c1ifp)) != "{ bs := complement(\'01101\'B) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4c2ifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4c2ifp)) != "{ bs := complement(\'01101\'B, \'1010\'B) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4c3ifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4c3ifp)) != "{ bs := complement(\'01101\'B, \'1010\'B, \'101\'B) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4paifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4paifp)) != "{ bs := \'000*111'B ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rbs(tspt_bs_mod4pqifp)); + if(ttcn2string(t_rbs(tspt_bs_mod4pqifp)) != "{ bs := \'000?111\'B ifpresent }") {setverdict(fail)} else {setverdict(pass)}; +} + +//=============== string2ttcn ============================== + +testcase tc_bs_string2ttcn_mod4v() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4v)),t_rbs(tspt_bs_mod4v)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4v)),t_rbs(tspt_bs_mod4v),true) +} + +testcase tc_bs_string2ttcn_mod4o() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4o)),t_rbs(tspt_bs_mod4o)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4o)),t_rbs(tspt_bs_mod4o),true) +} + +testcase tc_bs_string2ttcn_mod4a() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4a)),t_rbs(tspt_bs_mod4a)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4a)),t_rbs(tspt_bs_mod4a),false) +} + +testcase tc_bs_string2ttcn_mod4q() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4q)),t_rbs(tspt_bs_mod4q)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4q)),t_rbs(tspt_bs_mod4q),false) +} + +testcase tc_bs_string2ttcn_mod4al1() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4al1)),t_rbs(tspt_bs_mod4al1)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4al1)),t_rbs(tspt_bs_mod4al1),false) +} + +testcase tc_bs_string2ttcn_mod4al2() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4al2)),t_rbs(tspt_bs_mod4al2)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4al2)),t_rbs(tspt_bs_mod4al2),false) +} + + +testcase tc_bs_string2ttcn_mod4ql1() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4ql1)),t_rbs(tspt_bs_mod4ql1)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4ql1)),t_rbs(tspt_bs_mod4ql1),false) +} + +testcase tc_bs_string2ttcn_mod4ql2() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4ql2)),t_rbs(tspt_bs_mod4ql2)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4ql2)),t_rbs(tspt_bs_mod4ql2),false) +} + +testcase tc_bs_string2ttcn_mod4vl1() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4vl1)),t_rbs(tspt_bs_mod4vl1)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4vl1)),t_rbs(tspt_bs_mod4vl1),true) +} + +testcase tc_bs_string2ttcn_mod4vl2() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4vl2)),t_rbs(tspt_bs_mod4vl2)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4vl2)),t_rbs(tspt_bs_mod4vl2),false) +} + + +testcase tc_bs_string2ttcn_mod4vifp() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4vifp)),t_rbs(tspt_bs_mod4vifp)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4vifp)),t_rbs(tspt_bs_mod4vifp),false) +} + +testcase tc_bs_string2ttcn_mod4oifp() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4oifp)),t_rbs(tspt_bs_mod4oifp)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4oifp)),t_rbs(tspt_bs_mod4oifp),false) +} + +testcase tc_bs_string2ttcn_mod4aifp() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4aifp)),t_rbs(tspt_bs_mod4aifp)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4aifp)),t_rbs(tspt_bs_mod4aifp),false) +} + +testcase tc_bs_string2ttcn_mod4qifp() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4qifp)),t_rbs(tspt_bs_mod4qifp)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4qifp)),t_rbs(tspt_bs_mod4qifp),false) +} + +testcase tc_bs_string2ttcn_mod4al1ifp() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4al1ifp)),t_rbs(tspt_bs_mod4al1ifp)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4al1ifp)),t_rbs(tspt_bs_mod4al1ifp),false) +} + +testcase tc_bs_string2ttcn_mod4al2ifp() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4al2ifp)),t_rbs(tspt_bs_mod4al2ifp)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4al2ifp)),t_rbs(tspt_bs_mod4al2ifp),false) +} + + +testcase tc_bs_string2ttcn_mod4ql1ifp() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4ql1ifp)),t_rbs(tspt_bs_mod4ql1ifp)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4ql1ifp)),t_rbs(tspt_bs_mod4ql1ifp),false) +} + +testcase tc_bs_string2ttcn_mod4ql2ifp() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4ql2ifp)),t_rbs(tspt_bs_mod4ql2ifp)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4ql2ifp)),t_rbs(tspt_bs_mod4ql2ifp),false) +} + +testcase tc_bs_string2ttcn_mod4vl1ifp() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4vl1ifp)),t_rbs(tspt_bs_mod4vl1ifp)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4vl1ifp)),t_rbs(tspt_bs_mod4vl1ifp),false) +} + +testcase tc_bs_string2ttcn_mod4vl2ifp() runs on MC { + f_string2ttcn_RBS_t(ttcn2string(t_rbs(tspt_bs_mod4vl2ifp)),t_rbs(tspt_bs_mod4vl2ifp)) + f_string2ttcn_RBS_v(ttcn2string(t_rbs(tspt_bs_mod4vl2ifp)),t_rbs(tspt_bs_mod4vl2ifp),false) +} + +//========================================================================= +// Control +//========================================================================= + + +control { + log("***bitstring tests****"); + execute(tc_bs_ModulePar_emb()); + execute(tc_bs_ttcn2string_emb()); + execute(tc_bs_string2ttcn_mod4v()); + execute(tc_bs_string2ttcn_mod4o()); + execute(tc_bs_string2ttcn_mod4a()); + execute(tc_bs_string2ttcn_mod4q()); + execute(tc_bs_string2ttcn_mod4al1()); + execute(tc_bs_string2ttcn_mod4al2()); + execute(tc_bs_string2ttcn_mod4ql1()); + execute(tc_bs_string2ttcn_mod4ql2()); + execute(tc_bs_string2ttcn_mod4vl1()); + execute(tc_bs_string2ttcn_mod4vl2()); + //execute(tc_bs_string2ttcn_mod4vl3()); + + execute(tc_bs_string2ttcn_mod4vifp()); + execute(tc_bs_string2ttcn_mod4oifp()); + execute(tc_bs_string2ttcn_mod4aifp()); + execute(tc_bs_string2ttcn_mod4qifp()); + execute(tc_bs_string2ttcn_mod4al1ifp()); + execute(tc_bs_string2ttcn_mod4al2ifp()); + execute(tc_bs_string2ttcn_mod4ql1ifp()); + execute(tc_bs_string2ttcn_mod4ql2ifp()); + execute(tc_bs_string2ttcn_mod4vl1ifp()); + execute(tc_bs_string2ttcn_mod4vl2ifp()); +} + +} + diff --git a/Regression_Test_java/src/text2ttcn_nolegacy/boolean_test.ttcn b/Regression_Test_java/src/text2ttcn_nolegacy/boolean_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..eb9087e2d3e7916c80d8d0de9fd7feaa01658be4 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn_nolegacy/boolean_test.ttcn @@ -0,0 +1,371 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +/* +//AUTHOR: +//DATE: +//VERSION: +*/ +module boolean_test +{ + +//========================================================================= +// Import Part +//========================================================================= +import from types2 all; +import from functions2 all; + +//========================================================================= +// Module Parameters +//========================================================================= + +modulepar { + template boolean tspt_b_t := true; + template boolean tspt_b_f := false; + template boolean tspt_b_o := omit; + template boolean tspt_b_a := *; + template boolean tspt_b_q := ? ; + template boolean tspt_b_tifp := true ifpresent; + template boolean tspt_b_fifp := false ifpresent; + template boolean tspt_b_oifp := omit ifpresent; // omit ifpresent is meaningless!!!! => Should be comp error!!! TODO: put into neg test!!! + template boolean tspt_b_aifp := * ifpresent; // ?????? only "? ispresent" acceptable + template boolean tspt_b_qifp := ? ifpresent; + template boolean tspt_b_c := complement(true); //complemented list + template boolean tspt_b_tl := (true,false); //template list + //template boolean tspt_b_n := not(true); + + //boolean template modification tests: + template boolean tspt_b_a1 := *; //modified for true + template boolean tspt_b_a2 := *; //modified for false + template boolean tspt_b_a3 := *; //modified for omit + template boolean tspt_b_a4 := *; //modified for * + template boolean tspt_b_a5 := ?; //modified for ? + template boolean tspt_b_a6 := ?; //modified for true ifpresent + template boolean tspt_b_a7 := true; //modified for false ifpresent + template boolean tspt_b_a8 := false; //modified for * ifpresent + template boolean tspt_b_a9 := false; //modified for * ifpresent + template boolean tspt_b_a10:= false; //modified for * ifpresent + template boolean tspt_b_a11:= false; //modified for complement(true) + template boolean tspt_b_err:= *; //wrong mod in cfg file +} + +//========================================================================= +// Data Types +//========================================================================= + +//========================================================================= +// Constants +//========================================================================= + +// Insert constants here if applicable! +// You can use the constant skeleton! + +//========================================================================= +// Templates +//========================================================================= + + template boolean t_b_t := true; + template boolean t_b_f := false; + template boolean t_b_o := omit; + template boolean t_b_a := *; + template boolean t_b_q := ? ; + template boolean t_b_tifp := true ifpresent; + template boolean t_b_fifp := false ifpresent; + template boolean t_b_oifp := omit ifpresent; // omit ifpresent is meaningless!!!! => Should be comp error!!! TODO: put into neg test!!! + template boolean t_b_aifp := * ifpresent; // ?????? only "? ispresent" acceptable + template boolean t_b_qifp := ? ifpresent; + template boolean t_b_c := complement(true); + + template REC_BOH t_rec_b(template boolean pl_b) := { + b:= pl_b, + o:= omit, + h:= omit + } + +//========================================================================= +// Altsteps +//========================================================================= + +//========================================================================= +// Functions +//========================================================================= + +// Insert functions here if applicable! +// You can use the function skeleton! + +//========================================================================= +// Testcases +//========================================================================= + + //not modulepar template - template string check + testcase tc_boolean_NoModulePar() runs on MC { + log( t_rec_b(t_b_t) ); + if( log2str( t_rec_b(t_b_t) ) != "{ b := true, o := omit, h := omit }" ) { setverdict(fail) } else {setverdict(pass) } + if( log2str( t_rec_b(t_b_f) ) != "{ b := false, o := omit, h := omit }") { setverdict(fail) }; + if( log2str( t_rec_b(t_b_o) ) != "{ b := omit, o := omit, h := omit }" ) { setverdict(fail) }; + if( log2str( t_rec_b(t_b_a) ) != "{ b := *, o := omit, h := omit }" ) { setverdict(fail) }; + if( log2str( t_rec_b(t_b_q) ) != "{ b := ?, o := omit, h := omit }" ) { setverdict(fail) }; + if( log2str( t_rec_b(t_b_tifp) ) != "{ b := true ifpresent, o := omit, h := omit }" ) { setverdict(fail) }; + if( log2str( t_rec_b(t_b_fifp) ) != "{ b := false ifpresent, o := omit, h := omit }" ) { setverdict(fail) }; + if( log2str( t_rec_b(t_b_oifp) ) != "{ b := omit ifpresent, o := omit, h := omit }" ) { setverdict(fail) }; + if( log2str( t_rec_b(t_b_aifp) ) != "{ b := * ifpresent, o := omit, h := omit }" ) { setverdict(fail) }; + if( log2str( t_rec_b(t_b_qifp) ) != "{ b := ? ifpresent, o := omit, h := omit }" ) { setverdict(fail) }; + //log(t_rec_b(t_b_c)); + if( log2str( t_rec_b(t_b_c) ) != "{ b := complement(true), o := omit, h := omit }" ) { setverdict(fail) }; + } + + //modulepar template - template string check + testcase tc_boolean_Embedded() runs on MC { + log(tspt_b_t); + //embedded in record: + log( "template value:", t_rec_b(tspt_b_t) ); + if( log2str( t_rec_b(tspt_b_t) ) != "{ b := true, o := omit, h := omit }" ) { setverdict(fail) } else {setverdict(pass) } + log( "template value:", t_rec_b(tspt_b_f) ); + if( log2str( t_rec_b(tspt_b_f) ) != "{ b := false, o := omit, h := omit }") { setverdict(fail) }; + log( "template value:", t_rec_b(tspt_b_o) ); + if( log2str( t_rec_b(tspt_b_o) ) != "{ b := omit, o := omit, h := omit }" ) { setverdict(fail) }; + log( "template value:", t_rec_b(tspt_b_a) ); + if( log2str( t_rec_b(tspt_b_a) ) != "{ b := *, o := omit, h := omit }" ) { setverdict(fail) }; + log( "template value:", t_rec_b(tspt_b_q) ); + if( log2str( t_rec_b(tspt_b_q) ) != "{ b := ?, o := omit, h := omit }" ) { setverdict(fail) }; + log( "template value:", t_rec_b(tspt_b_tifp) ); + if( log2str( t_rec_b(tspt_b_tifp) ) != "{ b := true ifpresent, o := omit, h := omit }" ) { setverdict(fail) }; + log( "template value:", t_rec_b(tspt_b_fifp) ); + if( log2str( t_rec_b(tspt_b_fifp) ) != "{ b := false ifpresent, o := omit, h := omit }" ) { setverdict(fail) }; + log( "template value:", t_rec_b(tspt_b_aifp) ); + if( log2str( t_rec_b(tspt_b_aifp) ) != "{ b := * ifpresent, o := omit, h := omit }" ) { setverdict(fail) }; + log( "template value:", t_rec_b(tspt_b_qifp) ); + if( log2str( t_rec_b(tspt_b_qifp) ) != "{ b := ? ifpresent, o := omit, h := omit }" ) { setverdict(fail) }; + log( "template value:", t_rec_b(tspt_b_c) ); + if( log2str( t_rec_b(tspt_b_c) ) != "{ b := complement(true), o := omit, h := omit }" ) { setverdict(fail) }; + } + + //true + testcase tc_boolean_t() runs on MC { + log(tspt_b_t); + if( log2str( tspt_b_t) != "true" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true} + var RoB vl_wrong_values := {false} + f_checkMatchingValues_bool(tspt_b_t,vl_good_values,vl_wrong_values); + } + + //false + testcase tc_boolean_f() runs on MC { + log(tspt_b_f); + if( log2str( tspt_b_f) != "false" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {false}; + var RoB vl_wrong_values := {true}; + f_checkMatchingValues_bool(tspt_b_f,vl_good_values,vl_wrong_values); + } + + //omit + testcase tc_boolean_o() runs on MC { + log(tspt_b_o); + if( log2str( tspt_b_o) != "omit" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {}; + var RoB vl_wrong_values := {true,false}; + f_checkMatchingValues_bool(tspt_b_o,vl_good_values,vl_wrong_values); + } + + //asterix + testcase tc_boolean_a() runs on MC { + log(tspt_b_a); + if( log2str( tspt_b_a) != "*" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true,false}; + var RoB vl_wrong_values := {}; + f_checkMatchingValues_bool(tspt_b_a,vl_good_values,vl_wrong_values); + } + + //question mark + testcase tc_boolean_q() runs on MC { + log(tspt_b_q); + if( log2str( tspt_b_q) != "?" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true,false}; + var RoB vl_wrong_values := {};//omit cannot be checked here + f_checkMatchingValues_bool(tspt_b_q,vl_good_values,vl_wrong_values); + } + + //true ifpresent + testcase tc_boolean_tifp() runs on MC { + log(tspt_b_tifp); + if( log2str( tspt_b_tifp) != "true ifpresent" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true} + var RoB vl_wrong_values := {false}; //omit cannot be checked here + f_checkMatchingValues_bool(tspt_b_tifp,vl_good_values,vl_wrong_values); + } + + //false ifpresent + testcase tc_boolean_fifp() runs on MC { + log(tspt_b_fifp); + if( log2str( tspt_b_fifp) != "false ifpresent" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {false}; + var RoB vl_wrong_values := {true}; + f_checkMatchingValues_bool(tspt_b_fifp,vl_good_values,vl_wrong_values); + } + //* ifpresent + testcase tc_boolean_aifp() runs on MC { + log(tspt_b_aifp); + if( log2str( tspt_b_aifp) != "* ifpresent" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true,false} + var RoB vl_wrong_values := {}; //omit cannot be checked here + f_checkMatchingValues_bool(tspt_b_aifp,vl_good_values,vl_wrong_values); + } + + //? ifpresent + testcase tc_boolean_qifp() runs on MC { + log(tspt_b_qifp); + if( log2str( tspt_b_qifp) != "? ifpresent" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true,false}; + var RoB vl_wrong_values := {}; + f_checkMatchingValues_bool(tspt_b_qifp,vl_good_values,vl_wrong_values); + } + + testcase tc_boolean_c() runs on MC { + log(tspt_b_c); + if( log2str( tspt_b_c) != "complement(true)" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {false}; + var RoB vl_wrong_values := {true}; + f_checkMatchingValues_bool(tspt_b_c,vl_good_values,vl_wrong_values); + } + + testcase tc_boolean_tl() runs on MC { + log(tspt_b_tl); + if( log2str( tspt_b_tl) != "(true, false)" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true,false}; + var RoB vl_wrong_values := {}; + f_checkMatchingValues_bool(tspt_b_tl,vl_good_values,vl_wrong_values); + } + + //modulepar modified in cfg file + testcase tc_boolean_modified4t() runs on MC { + log(tspt_b_a1); + if( log2str( tspt_b_a1) != "true" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true} + var RoB vl_wrong_values := {false} + f_checkMatchingValues_bool(tspt_b_a1,vl_good_values,vl_wrong_values); + } + + testcase tc_boolean_modified4f() runs on MC { + log(tspt_b_a2); + if( log2str( tspt_b_a2) != "false" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {false}; + var RoB vl_wrong_values := {true}; + f_checkMatchingValues_bool(tspt_b_a2,vl_good_values,vl_wrong_values); + } + + testcase tc_boolean_modified4o() runs on MC { + log(tspt_b_a3); + if( log2str( tspt_b_a3) != "omit" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {}; + var RoB vl_wrong_values := {true,false}; + f_checkMatchingValues_bool(tspt_b_a3,vl_good_values, vl_wrong_values); + } + + testcase tc_boolean_modified4a() runs on MC { + log(tspt_b_a4); + if( log2str( tspt_b_a4) != "*" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true,false}; + var RoB vl_wrong_values := {}; + f_checkMatchingValues_bool(tspt_b_a4,vl_good_values,vl_wrong_values); + } + + testcase tc_boolean_modified4q() runs on MC { + log(tspt_b_a5); + if( log2str( tspt_b_a5) != "?" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true,false}; + var RoB vl_wrong_values := {}; + f_checkMatchingValues_bool(tspt_b_a5,vl_good_values,vl_wrong_values); + } + + testcase tc_boolean_modified4tifp() runs on MC { + log(tspt_b_a6); + if( log2str( tspt_b_a6) != "true ifpresent" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true}; + var RoB vl_wrong_values := {false}; + f_checkMatchingValues_bool(tspt_b_a6,vl_good_values,vl_wrong_values); + } + + testcase tc_boolean_modified4fifp() runs on MC { + log(tspt_b_a7); + if( log2str( tspt_b_a7) != "false ifpresent" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {false}; + var RoB vl_wrong_values := {true}; + f_checkMatchingValues_bool(tspt_b_a7,vl_good_values,vl_wrong_values); + } + + testcase tc_boolean_modified4aifp() runs on MC { + log(tspt_b_a8); + if( log2str( tspt_b_a8) != "* ifpresent" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true,false}; + var RoB vl_wrong_values := {}; + f_checkMatchingValues_bool(tspt_b_a8,vl_good_values,vl_wrong_values); + } + + testcase tc_boolean_modified4qifp() runs on MC { + log(tspt_b_a9); + if( log2str( tspt_b_a9) != "? ifpresent" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true,false}; + var RoB vl_wrong_values := {}; + f_checkMatchingValues_bool(tspt_b_a9,vl_good_values,vl_wrong_values); + } + + testcase tc_boolean_modified4tf() runs on MC { + log(tspt_b_a10); + if( log2str( tspt_b_a10) != "(true, false)" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {true,false}; + var RoB vl_wrong_values := {}; + f_checkMatchingValues_bool(tspt_b_a10,vl_good_values,vl_wrong_values); + } + + //modified for complement(true) + testcase tc_boolean_modified4ct() runs on MC { + log(tspt_b_a11); + if( log2str( tspt_b_a11) != "complement(true)" ) { setverdict(fail) } else {setverdict(pass) } + var RoB vl_good_values := {false}; + var RoB vl_wrong_values := {true}; + f_checkMatchingValues_bool(tspt_b_a11,vl_good_values,vl_wrong_values); + } + + +//========================================================================= +// Control +//========================================================================= + +control { + log("****Boolean tests****") + execute(tc_boolean_NoModulePar()); + execute(tc_boolean_Embedded()); + execute(tc_boolean_t()); + execute(tc_boolean_f()); + execute(tc_boolean_o()); + execute(tc_boolean_a()); + execute(tc_boolean_tifp()); + execute(tc_boolean_fifp()); + execute(tc_boolean_aifp()); + execute(tc_boolean_qifp()); + execute(tc_boolean_c()); + execute(tc_boolean_tl()); + //boolean template, modified from cfg file: + execute(tc_boolean_modified4t()); + execute(tc_boolean_modified4f()); + execute(tc_boolean_modified4o()); + execute(tc_boolean_modified4a()); + execute(tc_boolean_modified4q()); + execute(tc_boolean_modified4tifp()); + execute(tc_boolean_modified4fifp()); + execute(tc_boolean_modified4aifp()); + execute(tc_boolean_modified4qifp()); + execute(tc_boolean_modified4tf()); + execute(tc_boolean_modified4ct()); +} + + +} // end of module diff --git a/Regression_Test_java/src/text2ttcn_nolegacy/charstring_test.ttcn b/Regression_Test_java/src/text2ttcn_nolegacy/charstring_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..87d50f6aae9e43ee8842a826075abbc03c9fc108 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn_nolegacy/charstring_test.ttcn @@ -0,0 +1,1417 @@ +/****************************************************************************** + * 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 + * Baranyi, Botond + * + ******************************************************************************/ +module charstring_test { + +//========================================================================= +// Import Part +//========================================================================= + +import from types2 all; +import from functions2 all; + +//========================================================================= +// Module Parameters +//========================================================================= +modulepar { + + //modulepar charstrings not modified from cfg file + template charstring tspt_cs_v := "ABBA"; + template charstring tspt_cs_o := omit; + template charstring tspt_cs_a := *; + template charstring tspt_cs_q := ?; + template charstring tspt_cs_al1 := * length(2); //length restriction + template charstring tspt_cs_al2 := * length(2..4); + template charstring tspt_cs_ql1 := ? length(2); + template charstring tspt_cs_ql2 := ? length(2..4); + template charstring tspt_cs_vl1 := ("ABBA"); + template charstring tspt_cs_vl2 := ("ABBA","baba"); + template charstring tspt_cs_vl3 := ("ABBA","baba","Bye"); + template charstring tspt_cs_c1 := complement("ABBA") + template charstring tspt_cs_c2 := complement("ABBA","baba"); + template charstring tspt_cs_c3 := complement("ABBA","baba","Bye"); + template charstring tspt_cs_r1 := ("A".."B"); //range + template charstring tspt_cs_r2 := ("a".."c"); + template charstring tspt_cs_pa := pattern "abc*xyz" + template charstring tspt_cs_pq := pattern "abc?xyz" + + template charstring tspt_cs_vifp := "ABBA" ifpresent; + template charstring tspt_cs_oifp := omit ifpresent; + template charstring tspt_cs_aifp := * ifpresent; + template charstring tspt_cs_qifp := ? ifpresent; + template charstring tspt_cs_al1ifp := * length(2) ifpresent; //length restriction + template charstring tspt_cs_al2ifp := * length(2..4) ifpresent; + template charstring tspt_cs_ql1ifp := ? length(2) ifpresent; + template charstring tspt_cs_ql2ifp := ? length(2..4) ifpresent; + template charstring tspt_cs_vl1ifp := ("ABBA") ifpresent; + template charstring tspt_cs_vl2ifp := ("ABBA","baba") ifpresent; + template charstring tspt_cs_vl3ifp := ("ABBA","baba","Bye") ifpresent; + template charstring tspt_cs_c1ifp := complement("ABBA") ifpresent + template charstring tspt_cs_c2ifp := complement("ABBA","baba") ifpresent; + template charstring tspt_cs_c3ifp := complement("ABBA","baba","Bye") ifpresent; + template charstring tspt_cs_r1ifp := ("A".."B") ifpresent; //range + template charstring tspt_cs_r2ifp := ("a".."c") ifpresent; + template charstring tspt_cs_paifp := pattern "abc*xyz" ifpresent + template charstring tspt_cs_pqifp := pattern "abc?xyz" ifpresent + + //modulepar charstrings modified from cfg file + template charstring tspt_cs_mod4v := * //after mod:"ABBA"; + template charstring tspt_cs_mod4o := * //omit; + template charstring tspt_cs_mod4ol := * //omit; + template charstring tspt_cs_mod4a := "A" //*; + template charstring tspt_cs_mod4q := "" //?; + template charstring tspt_cs_mod4al1 := "A" //* length(2); //length restriction + template charstring tspt_cs_mod4al2 := "Original" //mofified for: * length(2..4); + template charstring tspt_cs_mod4ql1 := "Original" //mofified for:? length(2); + template charstring tspt_cs_mod4ql2 := "Original" //mofified for:? length(2..4); + template charstring tspt_cs_mod4vl1 := ("ABBA") //TODO: Adam //It should be mofified for: ("ABBA"); + template charstring tspt_cs_mod4vl2 := "Original" //mofified for:("ABBA","baba"); + template charstring tspt_cs_mod4vl3 := "Original" //mofified for:("ABBA","baba","Bye"); + template charstring tspt_cs_mod4c1 := "Original" //mofified for:complement("ABBA") + template charstring tspt_cs_mod4c2 := "Original" //mofified for:complement("ABBA","baba"); + template charstring tspt_cs_mod4c3 := "Original" //mofified for:complement("ABBA","baba","Bye"); + template charstring tspt_cs_mod4r1 := "Original" //mofified for:("A".."B"); //range + template charstring tspt_cs_mod4r2 := "Original" //mofified for:("a".."c"); + template charstring tspt_cs_mod4pa := "Original" //mofified for:pattern "abc*xyz" + template charstring tspt_cs_mod4pq := "Original" //mofified for:pattern "abc?xyz" + + template charstring tspt_cs_mod4vifp := "Original" //mofified for:"ABBA" ifpresent; + template charstring tspt_cs_mod4oifp := "Original" //mofified for:omit ifpresent; + template charstring tspt_cs_mod4aifp := "Original" //mofified for:* ifpresent; + template charstring tspt_cs_mod4qifp := "Original" //mofified for:? ifpresent; + template charstring tspt_cs_mod4al1ifp := "Original" //mofified for:* length(2) ifpresent; //length restriction + template charstring tspt_cs_mod4al2ifp := "Original" //mofified for:* length(2..4) ifpresent; + template charstring tspt_cs_mod4ql1ifp := "Original" //mofified for:? length(2) ifpresent; + template charstring tspt_cs_mod4ql2ifp := "Original" //mofified for:? length(2..4) ifpresent; + template charstring tspt_cs_mod4vl1ifp := ("ABBA") ifpresent //TODO: Adam //It should be mofified for: ("ABBA"); + template charstring tspt_cs_mod4vl2ifp := "Original" //mofified for:("ABBA","baba") ifpresent; + template charstring tspt_cs_mod4vl3ifp := "Original" //mofified for:("ABBA","baba","Bye") ifpresent; + template charstring tspt_cs_mod4c1ifp := "Original" //mofified for:complement("ABBA") ifpresent + template charstring tspt_cs_mod4c2ifp := "Original" //mofified for:complement("ABBA","baba") ifpresent; + template charstring tspt_cs_mod4c3ifp := "Original" //mofified for:complement("ABBA","baba","Bye") ifpresent; + template charstring tspt_cs_mod4r1ifp := "Original" //mofified for:("A".."B") ifpresent; //range + template charstring tspt_cs_mod4r2ifp := "Original" //mofified for:("a".."c") ifpresent; + template charstring tspt_cs_mod4paifp := "Original" //mofified for:pattern "abc*xyz" ifpresent + template charstring tspt_cs_mod4pqifp := "Original" //mofified for:pattern "abc?xyz" ifpresent + +} + +//========================================================================= +// Templates +//========================================================================= +// not modulepars +template charstring t_cs_v := "ABBA"; +template charstring t_cs_o := omit; +template charstring t_cs_a := *; +template charstring t_cs_q := ?; +template charstring t_cs_al1 := * length(2); //length restriction +template charstring t_cs_al2 := * length(2..4); +template charstring t_cs_ql1 := ? length(2); +template charstring t_cs_ql2 := ? length(2..4); +template charstring t_cs_vl1 := ("ABBA"); +template charstring t_cs_vl2 := ("ABBA","baba"); +template charstring t_cs_vl3 := ("ABBA","baba","Bye"); +template charstring t_cs_c1 := complement("ABBA") +template charstring t_cs_c2 := complement("ABBA","baba"); +template charstring t_cs_c3 := complement("ABBA","baba","Bye"); +template charstring t_cs_r1 := ("A".."B"); //range +template charstring t_cs_r2 := ("a".."c"); +template charstring t_cs_pa := pattern "abc*xyz" +template charstring t_cs_pq := pattern "abc?xyz" + +template charstring t_cs_vifp := "ABBA" ifpresent; +template charstring t_cs_oifp := omit ifpresent; +template charstring t_cs_aifp := * ifpresent; +template charstring t_cs_qifp := ? ifpresent; +template charstring t_cs_al1ifp := * length(2) ifpresent; //length restriction +template charstring t_cs_al2ifp := * length(2..4) ifpresent; +template charstring t_cs_ql1ifp := ? length(2) ifpresent; +template charstring t_cs_ql2ifp := ? length(2..4) ifpresent; +template charstring t_cs_vl1ifp := ("ABBA") ifpresent; +template charstring t_cs_vl2ifp := ("ABBA","baba") ifpresent; +template charstring t_cs_vl3ifp := ("ABBA","baba","Bye") ifpresent; +template charstring t_cs_c1ifp := complement("ABBA") ifpresent +template charstring t_cs_c2ifp := complement("ABBA","baba") ifpresent; +template charstring t_cs_c3ifp := complement("ABBA","baba","Bye") ifpresent; +template charstring t_cs_r1ifp := ("A".."B") ifpresent; //range +template charstring t_cs_r2ifp := ("a".."c") ifpresent; +template charstring t_cs_paifp := pattern "abc*xyz" ifpresent +template charstring t_cs_pqifp := pattern "abc?xyz" ifpresent + +//========================================================================= +// Functions +//========================================================================= +function f_string2ttcn_cs_t(in charstring pl_cs, in template charstring pl_expected_result) { + var template charstring vl_result; + @try { + string2ttcn(pl_cs,vl_result); + setverdict(pass) + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + log(pl_expected_result); + log(vl_result); + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +function f_string2ttcn_cs_t_str(in charstring pl_cs, in charstring pl_expected_result) { + var template charstring vl_result; + @try { + string2ttcn(pl_cs,vl_result); + setverdict(pass) + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + log("Expected result: ", pl_expected_result); + log("Result: ", vl_result); + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +//template string -> variable conversion +//expected result: error +function f_string2ttcn_cs_v(in charstring pl_cs, in template charstring pl_expected_result, in boolean pl_ok_expected) { + var charstring vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("string2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ",pl_expected_result ); + log("Result: ", vl_result); +} + +//this function is the same but uses +function f_string2ttcn_cs_v_str(in charstring pl_cs, charstring pl_expected_result, in boolean pl_ok_expected) { + var charstring vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("str2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ", pl_expected_result ); + log("Result: ", vl_result); +} + +//rrec + +function f_string2ttcn_rcs_t(in charstring pl_rcs, in template RCS pl_expected_result) { + var template RCS vl_result; + @try { + string2ttcn(pl_rcs,vl_result); + setverdict(pass) + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + log(pl_expected_result); + log(vl_result); + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +function f_string2ttcn_rcs_t_str(in charstring pl_cs, in charstring pl_expected_result) { + var template RCS vl_result; + @try { + string2ttcn(pl_cs,vl_result); + setverdict(pass) + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + log("Expected result: ", pl_expected_result); + log("Result: ", vl_result); + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +//template string -> variable conversion +//expected result: error +function f_string2ttcn_rcs_v(in charstring pl_cs, in template RCS pl_expected_result, in boolean pl_ok_expected) { + var RCS vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("string2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ",pl_expected_result ); + log("Result: ", vl_result); +} + +//this function is the same but uses +function f_string2ttcn_rcs_v_str(in charstring pl_cs, charstring pl_expected_result, in boolean pl_ok_expected) { + var RCS vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("str2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ", pl_expected_result ); + log("Result: ", vl_result); +} + +//========================================================================= +// Testcases +//========================================================================= + +testcase tc_cs_v() runs on MC { + var RoCS vl_good_values := {"ABBA"} + var RoCS vl_wrong_values := {"","A","AB","ABB","ABBAB","abba","anything","XXXX","ABCDE"} + f_checkMatchingValues_cs(t_cs_v, vl_good_values,vl_wrong_values); +} + +testcase tc_cs_o() runs on MC { + var RoCS vl_good_values := {} + var RoCS vl_wrong_values := {"","A","AB","ABB","ABBAB","abba","anything","XXXX","ABCDE"} + f_checkMatchingValues_cs(t_cs_o, vl_good_values,vl_wrong_values); +} + +testcase tc_cs_a() runs on MC { + var RoCS vl_good_values := {"","A","AB","ABB","ABBAB","abba","anything","XXXX","ABCDE"} + var RoCS vl_wrong_values := {} + f_checkMatchingValues_cs(t_cs_a, vl_good_values,vl_wrong_values); +} + +testcase tc_cs_q() runs on MC { + var RoCS vl_good_values := {"","A","AB","ABB","ABBAB","abba","anything","XXXX","ABCDE"} + var RoCS vl_wrong_values := {} + f_checkMatchingValues_cs(t_cs_q, vl_good_values,vl_wrong_values); +} + +// t_cs_al1 := * length(2); //length restriction +testcase tc_cs_al1() runs on MC { + var RoCS vl_good_values := {"AB", "ab","ba","12","A1"," "} + var RoCS vl_wrong_values := {"","A","ABB","ABBAB","abba","anything","XXXX","ABCDE","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} + f_checkMatchingValues_cs(t_cs_al1, vl_good_values,vl_wrong_values); +} + +// t_cs_al1 := * length(2..4); //length restriction +testcase tc_cs_al2() runs on MC { + var RoCS vl_good_values := {"AB", "ab","ba","12","A1"," ","123", "ABC","abc","ABBA"} + var RoCS vl_wrong_values := {"","A", "ABBAB","anything","XXXXX","ABCDE","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} + f_checkMatchingValues_cs(t_cs_al2, vl_good_values,vl_wrong_values); +} + +// t_cs_al1 := ? length(2); //length restriction +testcase tc_cs_ql1() runs on MC { + var RoCS vl_good_values := {"AB", "ab","ba","12","A1"," "} + var RoCS vl_wrong_values := {"","A","ABB","ABBAB","abba","anything","XXXX","ABCDE","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} + f_checkMatchingValues_cs(t_cs_ql1, vl_good_values,vl_wrong_values); +} + +// t_cs_al1 := ? length(2..4); //length restriction +testcase tc_cs_ql2() runs on MC { + var RoCS vl_good_values := {"AB", "ab","ba","12","A1"," ","123", "ABC","abc","ABBA"} + var RoCS vl_wrong_values := {"","A", "ABBAB","anything","XXXXX","ABCDE","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} + f_checkMatchingValues_cs(t_cs_ql2, vl_good_values,vl_wrong_values); +} + +testcase tc_cs_vl1() runs on MC { + var RoCS vl_good_values := {"ABBA"} + var RoCS vl_wrong_values := {"AB", "ab","ba","12","A1"," ""","A","ABB","ABBAB","abba","anything","XXXX","ABCDE","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} + f_checkMatchingValues_cs(t_cs_vl1, vl_good_values,vl_wrong_values); +} + +testcase tc_cs_vl2() runs on MC { + var RoCS vl_good_values := {"ABBA","baba"} + var RoCS vl_wrong_values := {"AB", "ab","ba","12","A1"," ""","A","ABB","ABBAB","abba","anything","XXXX","ABCDE","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} + f_checkMatchingValues_cs(t_cs_vl2, vl_good_values,vl_wrong_values); +} + +testcase tc_cs_vl3() runs on MC { + var RoCS vl_good_values := {"ABBA","baba","Bye"} + var RoCS vl_wrong_values := {"AB", "ab","ba","12","A1"," ""","A","ABB","ABBAB","abba","anything","XXXX","ABCDE","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} + f_checkMatchingValues_cs(t_cs_vl3, vl_good_values,vl_wrong_values); +} + +testcase tc_cs_c1() runs on MC { + var RoCS vl_good_values := {"AB", "ab","ba","12","A1"," ""","A","ABB","ABBAB","abba","anything","XXXX","ABCDE","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} + var RoCS vl_wrong_values := {"ABBA"} + f_checkMatchingValues_cs(t_cs_c1, vl_good_values,vl_wrong_values); +} + +testcase tc_cs_c2() runs on MC { + var RoCS vl_good_values :={"AB", "ab","ba","12","A1"," ""","A","ABB","ABBAB","abba","anything","XXXX","ABCDE","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} + var RoCS vl_wrong_values := {"ABBA","baba"} + f_checkMatchingValues_cs(t_cs_c2, vl_good_values,vl_wrong_values); +} + +testcase tc_cs_c3() runs on MC { + var RoCS vl_good_values := {"AB", "ab","ba","12","A1"," ""","A","ABB","ABBAB","abba","anything","XXXX","ABCDE","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} + var RoCS vl_wrong_values := {"ABBA","baba","Bye"} + f_checkMatchingValues_cs(t_cs_c3, vl_good_values,vl_wrong_values); +} + +//("A".."B") +testcase tc_cs_r1() runs on MC { + var RoCS vl_good_values := {"A","B","ABBA","AB","AAAAAA","BBBBB","ABBABABA"} + var RoCS vl_wrong_values := { "ab","ba","Bye","12","A1"," ","abba","anything","XXXX","ABCDE","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} + f_checkMatchingValues_cs(t_cs_r1, vl_good_values,vl_wrong_values); +} +//"a".."c" +testcase tc_cs_r2() runs on MC { + var RoCS vl_good_values := {"","a","b","c","ab","cba","abbac","abbababa","cabacccc"} + var RoCS vl_wrong_values := {"A","B","ABBA","AB","AAAAAAc","BBBBB","ABBABABAc", "Bye","12","abcA1"," ","anything","XXXX","ABCDE","XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"} + f_checkMatchingValues_cs(t_cs_r2, vl_good_values,vl_wrong_values); +} + +testcase tc_cs_pa() runs on MC { + var RoCS vl_good_values := { "abcxyz","abcAxyz","abc45xyz" } + var RoCS vl_wrong_values := { "ab","ba","Bye", "abcyz"} + f_checkMatchingValues_cs(t_cs_pa, vl_good_values,vl_wrong_values); +} + +testcase tc_cs_pq() runs on MC { + var RoCS vl_good_values := {"abcAxyz","abc4xyz" } + var RoCS vl_wrong_values := { "ab","ba","Bye", "abcxyz","abc45xyz"} + f_checkMatchingValues_cs(t_cs_pq, vl_good_values,vl_wrong_values); +} + +//=== charstring embedded in record ==== + +testcase tc_cs_v_emb() runs on MC { + var RoRCS vl_good_values := {{cs:="ABBA"}} + var RoRCS vl_wrong_values := {{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_v), vl_good_values,vl_wrong_values); +} + +testcase tc_cs_o_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{cs:=omit}}; + var RoRCS vl_wrong_values := {{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_o), vl_good_values,vl_wrong_values); +} + +testcase tc_cs_a_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"}} + var RoRCS vl_wrong_values := {{}} + f_checkMatchingValues_rcs(t_rcs(t_cs_a), vl_good_values,vl_wrong_values); +} + +testcase tc_cs_q_emb() runs on MC { + var RoRCS vl_good_values := {{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"}} + var RoRCS vl_wrong_values := {{omit}} + f_checkMatchingValues_rcs(t_rcs(t_cs_q), vl_good_values,vl_wrong_values); +} + +// t_rcs(t_cs_al1 := * length(2); //length restriction +testcase tc_cs_al1_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "}} + var RoRCS vl_wrong_values := {{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_al1), vl_good_values,vl_wrong_values); +} + +// t_rcs(t_cs_al1 := * length(2..4); //length restriction +testcase tc_cs_al2_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{"123"},{ "ABC"},{"abc"},{"ABBA"}} + var RoRCS vl_wrong_values := {{""},{"A"},{ "ABBAB"},{"anything"},{"XXXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_al2), vl_good_values,vl_wrong_values); +} + +// t_rcs(t_cs_al1 := ? length(2); //length restriction +testcase tc_cs_ql1_emb() runs on MC { + var RoRCS vl_good_values := {{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "}} + var RoRCS vl_wrong_values := {{omit},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_ql1), vl_good_values,vl_wrong_values); +} + +// t_rcs(t_cs_al1 := ? length(2..4); //length restriction +testcase tc_cs_ql2_emb() runs on MC { + var RoRCS vl_good_values := {{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{"123"},{ "ABC"},{"abc"},{"ABBA"}} + var RoRCS vl_wrong_values := {{omit},{""},{"A"},{ "ABBAB"},{"anything"},{"XXXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_ql2), vl_good_values,vl_wrong_values); +} +//("ABBA") +testcase tc_cs_vl1_emb() runs on MC { + var RoRCS vl_good_values := {{"ABBA"}} + var RoRCS vl_wrong_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_vl1), vl_good_values,vl_wrong_values); +} +//("ABBA","baba") +testcase tc_cs_vl2_emb() runs on MC { + var RoRCS vl_good_values := {{"ABBA"},{"baba"}} + var RoRCS vl_wrong_values := {{omit},{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_vl2), vl_good_values,vl_wrong_values); +} +//("ABBA","baba","Bye") +testcase tc_cs_vl3_emb() runs on MC { + var RoRCS vl_good_values := {{"ABBA"},{"baba"},{"Bye"}} + var RoRCS vl_wrong_values := {{omit},{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_vl3), vl_good_values,vl_wrong_values); +} + +// Note: this tests legacy behavior and requires the -M compiler option! +//complement("ABBA") +testcase tc_cs_c1_emb() runs on MC { + var RoRCS vl_good_values := {{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" """},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + var RoRCS vl_wrong_values := {{omit},{"ABBA"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_c1), vl_good_values,vl_wrong_values); +} +// Note: this tests legacy behavior and requires the -M compiler option! +//complement("ABBA","baba"); +testcase tc_cs_c2_emb() runs on MC { + var RoRCS vl_good_values :={{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + var RoRCS vl_wrong_values := {{omit},{"ABBA"},{"baba"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_c2), vl_good_values,vl_wrong_values); +} +// Note: this tests legacy behavior and requires the -M compiler option! +//complement("ABBA","baba","Bye"); +testcase tc_cs_c3_emb() runs on MC { + var RoRCS vl_good_values := {{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + var RoRCS vl_wrong_values := {{omit},{"ABBA"},{"baba"},{"Bye"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_c3), vl_good_values,vl_wrong_values); +} + +//("A".."B") +testcase tc_cs_r1_emb() runs on MC { + var RoRCS vl_good_values := {{"A"},{"B"},{"ABBA"},{"AB"},{"AAAAAA"},{"BBBBB"},{"ABBABABA"}} + var RoRCS vl_wrong_values := {{omit},{"ab"},{"ba"},{"Bye"},{"12"},{"A1"},{" "},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_r1),vl_good_values,vl_wrong_values); +} +//"a".."c" +testcase tc_cs_r2_emb() runs on MC { + var RoRCS vl_good_values := {{""},{"a"},{"b"},{"c"},{"ab"},{"cba"},{"abbac"},{"abbababa"},{"cabacccc"}} + var RoRCS vl_wrong_values := {{omit},{"A"},{"B"},{"ABBA"},{"AB"},{"AAAAAAc"},{"BBBBB"},{"ABBABABAc"},{ "Bye"},{"12"},{"abcA1"},{" "},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_r2), vl_good_values,vl_wrong_values); +} +//pattern "abc*xyz" +testcase tc_cs_pa_emb() runs on MC { + var RoRCS vl_good_values := {{ "abcxyz"},{"abcAxyz"},{"abc45xyz" }} + var RoRCS vl_wrong_values := {{""},{"ab"},{"ba"},{"Bye"},{"abcyz"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_pa), vl_good_values,vl_wrong_values); +} +//pattern "abc?xyz" +testcase tc_cs_pq_emb() runs on MC { + var RoRCS vl_good_values := {{"abcAxyz"},{"abc4xyz" }} + var RoRCS vl_wrong_values := {{ "ab"},{"ba"},{"Bye"},{ "abcxyz"},{"abc45xyz"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_pq), vl_good_values,vl_wrong_values); +} + +//=========== Charstring Tests without Module Params and with "ifpresent" clause +//=== charstring embedded in record ==== + +testcase tc_cs_vifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{cs:="ABBA"}} + var RoRCS vl_wrong_values := {{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_vifp), vl_good_values,vl_wrong_values); +} + +testcase tc_cs_oifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{cs:=omit}}; + var RoRCS vl_wrong_values := {{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_oifp), vl_good_values,vl_wrong_values); +} + +testcase tc_cs_aifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"}} + var RoRCS vl_wrong_values := {{}} + f_checkMatchingValues_rcs(t_rcs(t_cs_aifp), vl_good_values,vl_wrong_values); +} + +testcase tc_cs_qifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"}} + var RoRCS vl_wrong_values := {} + f_checkMatchingValues_rcs(t_rcs(t_cs_qifp), vl_good_values,vl_wrong_values); +} + +// t_rcs(t_cs_al1 := * length(2); //length restriction +testcase tc_cs_al1ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "}} + var RoRCS vl_wrong_values := {{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_al1ifp), vl_good_values,vl_wrong_values); +} + +// t_rcs(t_cs_al1 := * length(2..4); //length restriction +testcase tc_cs_al2ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{"123"},{ "ABC"},{"abc"},{"ABBA"}} + var RoRCS vl_wrong_values := {{""},{"A"},{ "ABBAB"},{"anything"},{"XXXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_al2ifp), vl_good_values,vl_wrong_values); +} + +// t_rcs(t_cs_al1 := ? length(2); //length restriction +testcase tc_cs_ql1ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "}} + var RoRCS vl_wrong_values := {{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_ql1ifp), vl_good_values,vl_wrong_values); +} + +// t_rcs(t_cs_al1ifp := ? length(2..4); //length restriction +testcase tc_cs_ql2ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{"123"},{ "ABC"},{"abc"},{"ABBA"}} + var RoRCS vl_wrong_values := {{""},{"A"},{ "ABBAB"},{"anything"},{"XXXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_ql2ifp), vl_good_values,vl_wrong_values); +} +//("ABBA") +testcase tc_cs_vl1ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"ABBA"}} + var RoRCS vl_wrong_values := {{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_vl1ifp), vl_good_values,vl_wrong_values); +} +//("ABBA","baba") +testcase tc_cs_vl2ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"ABBA"},{"baba"}} + var RoRCS vl_wrong_values := {{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_vl2ifp), vl_good_values,vl_wrong_values); +} +//("ABBA","baba","Bye") +testcase tc_cs_vl3ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"ABBA"},{"baba"},{"Bye"}} + var RoRCS vl_wrong_values := {{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_vl3ifp), vl_good_values,vl_wrong_values); +} +//complement("ABBA") +testcase tc_cs_c1ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" """},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + var RoRCS vl_wrong_values := {{"ABBA"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_c1ifp), vl_good_values,vl_wrong_values); +} +//complement("ABBA","baba"); +testcase tc_cs_c2ifp_emb() runs on MC { + var RoRCS vl_good_values :={{omit},{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + var RoRCS vl_wrong_values := {{"ABBA"},{"baba"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_c2ifp), vl_good_values,vl_wrong_values); +} +//complement("ABBA","baba","Bye"); +testcase tc_cs_c3ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + var RoRCS vl_wrong_values := {{"ABBA"},{"baba"},{"Bye"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_c3ifp), vl_good_values,vl_wrong_values); +} + +//("A".."B") +testcase tc_cs_r1ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"A"},{"B"},{"ABBA"},{"AB"},{"AAAAAA"},{"BBBBB"},{"ABBABABA"}} + var RoRCS vl_wrong_values := {{"ab"},{"ba"},{"Bye"},{"12"},{"A1"},{" "},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_r1ifp),vl_good_values,vl_wrong_values); +} +//"a".."c" +testcase tc_cs_r2ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{""},{"a"},{"b"},{"c"},{"ab"},{"cba"},{"abbac"},{"abbababa"},{"cabacccc"}} + var RoRCS vl_wrong_values := {{"A"},{"B"},{"ABBA"},{"AB"},{"AAAAAAc"},{"BBBBB"},{"ABBABABAc"},{ "Bye"},{"12"},{"abcA1"},{" "},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_r2ifp), vl_good_values,vl_wrong_values); +} +//pattern "abc*xyz" +testcase tc_cs_paifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"abcxyz"},{"abcAxyz"},{"abc45xyz" }} + var RoRCS vl_wrong_values := {{""},{"ab"},{"ba"},{"Bye"},{"abcyz"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_paifp), vl_good_values,vl_wrong_values); +} +//pattern "abc?xyz" +testcase tc_cs_pqifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"abcAxyz"},{"abc4xyz" }} + var RoRCS vl_wrong_values := {{"ab"},{"ba"},{"Bye"},{ "abcxyz"},{"abc45xyz"}} + f_checkMatchingValues_rcs(t_rcs(t_cs_pqifp), vl_good_values,vl_wrong_values); +} + + +//=========== Charstring Tests with Module Parameters ====== +testcase tc_cs_ModulePar_emb() runs on MC { + log(t_rcs(tspt_cs_mod4v)); + if(log2str(t_rcs(tspt_cs_mod4v)) != "{ cs := \"ABBA\" }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4o)); + if(log2str(t_rcs(tspt_cs_mod4o)) != "{ cs := omit }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4a)); + if(log2str(t_rcs(tspt_cs_mod4a)) != "{ cs := * }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4q)); + if(log2str(t_rcs(tspt_cs_mod4q)) != "{ cs := ? }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4al1)); + if(log2str(t_rcs(tspt_cs_mod4al1)) != "{ cs := * length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4al2)); + if(log2str(t_rcs(tspt_cs_mod4al2)) != "{ cs := * length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4ql1)); + if(log2str(t_rcs(tspt_cs_mod4ql1)) != "{ cs := ? length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4ql2)); + if(log2str(t_rcs(tspt_cs_mod4ql2)) != "{ cs := ? length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(">",t_rcs(tspt_cs_mod4vl1),"<"); + if(log2str(t_rcs(tspt_cs_mod4vl1)) != "{ cs := \"ABBA\" }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4vl2)); + if(log2str(t_rcs(tspt_cs_mod4vl2)) != "{ cs := (\"ABBA\", \"baba\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4vl3)); + if(log2str(t_rcs(tspt_cs_mod4vl3)) != "{ cs := (\"ABBA\", \"baba\", \"Bye\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4c1)); + if(log2str(t_rcs(tspt_cs_mod4c1)) != "{ cs := complement(\"ABBA\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4c2)); + if(log2str(t_rcs(tspt_cs_mod4c2)) != "{ cs := complement(\"ABBA\", \"baba\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4c3)); + if(log2str(t_rcs(tspt_cs_mod4c3)) != "{ cs := complement(\"ABBA\", \"baba\", \"Bye\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4r1)); + if(log2str(t_rcs(tspt_cs_mod4r1)) != "{ cs := (\"A\" .. \"B\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4r2)); + if(log2str(t_rcs(tspt_cs_mod4r2)) != "{ cs := (\"a\" .. \"c\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4pa)); + if(log2str(t_rcs(tspt_cs_mod4pa)) != "{ cs := pattern \"abc*xyz\" }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4pq)); + if(log2str(t_rcs(tspt_cs_mod4pq)) != "{ cs := pattern \"abc?xyz\" }") {setverdict(fail)} else {setverdict(pass)}; + //== + log(t_rcs(tspt_cs_mod4vifp)); + if(log2str(t_rcs(tspt_cs_mod4vifp)) != "{ cs := \"ABBA\" ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4oifp)); + if(log2str(t_rcs(tspt_cs_mod4oifp)) != "{ cs := omit ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4aifp)); + if(log2str(t_rcs(tspt_cs_mod4aifp)) != "{ cs := * ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4qifp)); + if(log2str(t_rcs(tspt_cs_mod4qifp)) != "{ cs := ? ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4al1ifp)); + if(log2str(t_rcs(tspt_cs_mod4al1ifp)) != "{ cs := * length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4al2ifp)); + if(log2str(t_rcs(tspt_cs_mod4al2ifp)) != "{ cs := * length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4ql1ifp)); + if(log2str(t_rcs(tspt_cs_mod4ql1ifp)) != "{ cs := ? length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4ql2ifp)); + if(log2str(t_rcs(tspt_cs_mod4ql2ifp)) != "{ cs := ? length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4vl1ifp)); + if(log2str(t_rcs(tspt_cs_mod4vl1ifp)) != "{ cs := \"ABBA\" ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4vl2ifp)); + if(log2str(t_rcs(tspt_cs_mod4vl2ifp)) != "{ cs := (\"ABBA\", \"baba\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4vl3ifp)); + if(log2str(t_rcs(tspt_cs_mod4vl3ifp)) != "{ cs := (\"ABBA\", \"baba\", \"Bye\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4c1ifp)); + if(log2str(t_rcs(tspt_cs_mod4c1ifp)) != "{ cs := complement(\"ABBA\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4c2ifp)); + if(log2str(t_rcs(tspt_cs_mod4c2ifp)) != "{ cs := complement(\"ABBA\", \"baba\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4c3ifp)); + if(log2str(t_rcs(tspt_cs_mod4c3ifp)) != "{ cs := complement(\"ABBA\", \"baba\", \"Bye\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4r1ifp)); + if(log2str(t_rcs(tspt_cs_mod4r1ifp)) != "{ cs := (\"A\" .. \"B\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4r2ifp)); + if(log2str(t_rcs(tspt_cs_mod4r2ifp)) != "{ cs := (\"a\" .. \"c\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4paifp)); + if(log2str(t_rcs(tspt_cs_mod4paifp)) != "{ cs := pattern \"abc*xyz\" ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4pqifp)); + if(log2str(t_rcs(tspt_cs_mod4pqifp)) != "{ cs := pattern \"abc?xyz\" ifpresent }") {setverdict(fail)} else {setverdict(pass)}; +} + + +testcase tc_cs_mod4v_emb() runs on MC { + var RoRCS vl_good_values := {{cs:="ABBA"}} + var RoRCS vl_wrong_values := {{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4v), vl_good_values,vl_wrong_values); +} + +testcase tc_cs_mod4o_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{cs:=omit}}; + var RoRCS vl_wrong_values := {{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4o), vl_good_values,vl_wrong_values); +} + +testcase tc_cs_mod4a_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"}} + var RoRCS vl_wrong_values := {{}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4a), vl_good_values,vl_wrong_values); +} + +testcase tc_cs_mod4q_emb() runs on MC { + var RoRCS vl_good_values := {{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"}} + var RoRCS vl_wrong_values := {{omit}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4q), vl_good_values,vl_wrong_values); +} + +// t_rcs(tspt_cs_mod4al1 := * length(2); //length restriction +testcase tc_cs_mod4al1_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "}} + var RoRCS vl_wrong_values := {{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4al1), vl_good_values,vl_wrong_values); +} + +// t_rcs(tspt_cs_mod4al2 := * length(2..4); //length restriction +testcase tc_cs_mod4al2_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{"123"},{ "ABC"},{"abc"},{"ABBA"}} + var RoRCS vl_wrong_values := {{""},{"A"},{ "ABBAB"},{"anything"},{"XXXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4al2), vl_good_values,vl_wrong_values); +} + +// t_rcs(tspt_cs_mod4ql1 := ? length(2); //length restriction +testcase tc_cs_mod4ql1_emb() runs on MC { + var RoRCS vl_good_values := {{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "}} + var RoRCS vl_wrong_values := {{omit},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4ql1), vl_good_values,vl_wrong_values); +} + +// t_rcs(tspt_cs_mod4ql2 := ? length(2..4); //length restriction +testcase tc_cs_mod4ql2_emb() runs on MC { + var RoRCS vl_good_values := {{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{"123"},{ "ABC"},{"abc"},{"ABBA"}} + var RoRCS vl_wrong_values := {{omit},{""},{"A"},{ "ABBAB"},{"anything"},{"XXXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4ql2), vl_good_values,vl_wrong_values); +} +//("ABBA") +/* TODO:Adam*/ +testcase tc_cs_mod4vl1_emb() runs on MC { + var RoRCS vl_good_values := {{"ABBA"}} + var RoRCS vl_wrong_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4vl1), vl_good_values,vl_wrong_values); +} + +//("ABBA", "baba") +testcase tc_cs_mod4vl2_emb() runs on MC { + var RoRCS vl_good_values := {{"ABBA"},{"baba"}} + var RoRCS vl_wrong_values := {{omit},{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4vl2), vl_good_values,vl_wrong_values); +} +//("ABBA","baba","Bye") +testcase tc_cs_mod4vl3_emb() runs on MC { + var RoRCS vl_good_values := {{"ABBA"},{"baba"},{"Bye"}} + var RoRCS vl_wrong_values := {{omit},{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4vl3), vl_good_values,vl_wrong_values); +} +// Note: this tests legacy behavior and requires the -M compiler option! +//complement("ABBA") +testcase tc_cs_mod4c1_emb() runs on MC { + var RoRCS vl_good_values := {{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" """},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + var RoRCS vl_wrong_values := {{omit},{"ABBA"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4c1), vl_good_values,vl_wrong_values); +} +// Note: this tests legacy behavior and requires the -M compiler option! +//complement("ABBA","baba"); +testcase tc_cs_mod4c2_emb() runs on MC { + var RoRCS vl_good_values :={{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + var RoRCS vl_wrong_values := {{omit},{"ABBA"},{"baba"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4c2), vl_good_values,vl_wrong_values); +} +// Note: this tests legacy behavior and requires the -M compiler option! +//complement("ABBA","baba","Bye"); +testcase tc_cs_mod4c3_emb() runs on MC { + var RoRCS vl_good_values := {{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + var RoRCS vl_wrong_values := {{omit},{"ABBA"},{"baba"},{"Bye"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4c3), vl_good_values,vl_wrong_values); +} + +//("A".."B") +testcase tc_cs_mod4r1_emb() runs on MC { + var RoRCS vl_good_values := {{"A"},{"B"},{"ABBA"},{"AB"},{"AAAAAA"},{"BBBBB"},{"ABBABABA"}} + var RoRCS vl_wrong_values := {{omit},{"ab"},{"ba"},{"Bye"},{"12"},{"A1"},{" "},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4r1),vl_good_values,vl_wrong_values); +} +//"a".."c" +testcase tc_cs_mod4r2_emb() runs on MC { + var RoRCS vl_good_values := {{""},{"a"},{"b"},{"c"},{"ab"},{"cba"},{"abbac"},{"abbababa"},{"cabacccc"}} + var RoRCS vl_wrong_values := {{omit},{"A"},{"B"},{"ABBA"},{"AB"},{"AAAAAAc"},{"BBBBB"},{"ABBABABAc"},{ "Bye"},{"12"},{"abcA1"},{" "},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4r2), vl_good_values,vl_wrong_values); +} +//pattern "abc*xyz" +testcase tc_cs_mod4pa_emb() runs on MC { + var RoRCS vl_good_values := {{ "abcxyz"},{"abcAxyz"},{"abc45xyz" }} + var RoRCS vl_wrong_values := {{""},{"ab"},{"ba"},{"Bye"},{"abcyz"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4pa), vl_good_values,vl_wrong_values); +} +//pattern "abc?xyz" +testcase tc_cs_mod4pq_emb() runs on MC { + var RoRCS vl_good_values := {{"abcAxyz"},{"abc4xyz" }} + var RoRCS vl_wrong_values := {{omit},{ "ab"},{"ba"},{"Bye"},{ "abcxyz"},{"abc45xyz"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4pq), vl_good_values,vl_wrong_values); +} + +//=== +testcase tc_cs_mod4vifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{cs:="ABBA"}} + var RoRCS vl_wrong_values := {{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4vifp), vl_good_values,vl_wrong_values); +} + +testcase tc_cs_mod4oifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{cs:=omit}}; + var RoRCS vl_wrong_values := {{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4oifp), vl_good_values,vl_wrong_values); +} + +testcase tc_cs_mod4aifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"}} + var RoRCS vl_wrong_values := {{}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4aifp), vl_good_values,vl_wrong_values); +} + +testcase tc_cs_mod4qifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{""},{"A"},{"AB"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"}} + var RoRCS vl_wrong_values := {} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4qifp), vl_good_values,vl_wrong_values); +} + +// t_rcs(tspt_cs_mod4al1 := * length(2); //length restriction +testcase tc_cs_mod4al1ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "}} + var RoRCS vl_wrong_values := {{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4al1ifp), vl_good_values,vl_wrong_values); +} + +// t_rcs(tspt_cs_mod4al1 := * length(2..4); //length restriction +testcase tc_cs_mod4al2ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{"123"},{ "ABC"},{"abc"},{"ABBA"}} + var RoRCS vl_wrong_values := {{""},{"A"},{ "ABBAB"},{"anything"},{"XXXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4al2ifp), vl_good_values,vl_wrong_values); +} + +// t_rcs(tspt_cs_mod4al1 := ? length(2); //length restriction +testcase tc_cs_mod4ql1ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "}} + var RoRCS vl_wrong_values := {{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4ql1ifp), vl_good_values,vl_wrong_values); +} + +// t_rcs(tspt_cs_mod4al1ifp := ? length(2..4); //length restriction +testcase tc_cs_mod4ql2ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{"123"},{ "ABC"},{"abc"},{"ABBA"}} + var RoRCS vl_wrong_values := {{""},{"A"},{ "ABBAB"},{"anything"},{"XXXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4ql2ifp), vl_good_values,vl_wrong_values); +} +//("ABBA") +/* TODO:Adam*/ +testcase tc_cs_mod4vl1ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"ABBA"}} + var RoRCS vl_wrong_values := {{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4vl1ifp), vl_good_values,vl_wrong_values); +} + +//("ABBA","baba") //TR: HR98602, 'Matching fault in case of template ("A","B") ifpresent' +testcase tc_cs_mod4vl2ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"ABBA"},{"baba"}} + var RoRCS vl_wrong_values := {{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4vl2ifp), vl_good_values,vl_wrong_values); +} +//("ABBA","baba","Bye") +testcase tc_cs_mod4vl3ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"ABBA"},{"baba"},{"Bye"}} + var RoRCS vl_wrong_values := {{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4vl3ifp), vl_good_values,vl_wrong_values); +} +//complement("ABBA") +testcase tc_cs_mod4c1ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" """},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + var RoRCS vl_wrong_values := {{"ABBA"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4c1ifp), vl_good_values,vl_wrong_values); +} +//complement("ABBA","baba"); +testcase tc_cs_mod4c2ifp_emb() runs on MC { + var RoRCS vl_good_values :={{omit},{"AB"},{"ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + var RoRCS vl_wrong_values := {{"ABBA"},{"baba"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4c2ifp), vl_good_values,vl_wrong_values); +} +//complement("ABBA","baba","Bye"); +testcase tc_cs_mod4c3ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"AB"},{ "ab"},{"ba"},{"12"},{"A1"},{" "},{""},{"A"},{"ABB"},{"ABBAB"},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + var RoRCS vl_wrong_values := {{"ABBA"},{"baba"},{"Bye"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4c3ifp), vl_good_values,vl_wrong_values); +} + +//("A".."B") +testcase tc_cs_mod4r1ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"A"},{"B"},{"ABBA"},{"AB"},{"AAAAAA"},{"BBBBB"},{"ABBABABA"}} + var RoRCS vl_wrong_values := {{"ab"},{"ba"},{"Bye"},{"12"},{"A1"},{" "},{"abba"},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4r1ifp),vl_good_values,vl_wrong_values); +} +//"a".."c" +testcase tc_cs_mod4r2ifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{""},{"a"},{"b"},{"c"},{"ab"},{"cba"},{"abbac"},{"abbababa"},{"cabacccc"}} + var RoRCS vl_wrong_values := {{"A"},{"B"},{"ABBA"},{"AB"},{"AAAAAAc"},{"BBBBB"},{"ABBABABAc"},{ "Bye"},{"12"},{"abcA1"},{" "},{"anything"},{"XXXX"},{"ABCDE"},{"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4r2ifp), vl_good_values,vl_wrong_values); +} +//pattern "abc*xyz" +testcase tc_cs_mod4paifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"abcxyz"},{"abcAxyz"},{"abc45xyz" }} + var RoRCS vl_wrong_values := {{""},{"ab"},{"ba"},{"Bye"},{"abcyz"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4paifp), vl_good_values,vl_wrong_values); +} +//pattern "abc?xyz" +testcase tc_cs_mod4pqifp_emb() runs on MC { + var RoRCS vl_good_values := {{omit},{"abcAxyz"},{"abc4xyz" }} + var RoRCS vl_wrong_values := {{"ab"},{"ba"},{"Bye"},{ "abcxyz"},{"abc45xyz"}} + f_checkMatchingValues_rcs(t_rcs(tspt_cs_mod4pqifp), vl_good_values,vl_wrong_values); +} + +//= +testcase tc_cs_ttcn2string_emb() runs on MC { + log(t_rcs(tspt_cs_mod4v)); + if(ttcn2string(t_rcs(tspt_cs_mod4v)) != "{ cs := \"ABBA\" }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4o)); + if(ttcn2string(t_rcs(tspt_cs_mod4o)) != "{ cs := omit }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4a)); + if(ttcn2string(t_rcs(tspt_cs_mod4a)) != "{ cs := * }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4q)); + if(ttcn2string(t_rcs(tspt_cs_mod4q)) != "{ cs := ? }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4al1)); + if(ttcn2string(t_rcs(tspt_cs_mod4al1)) != "{ cs := * length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4al2)); + if(ttcn2string(t_rcs(tspt_cs_mod4al2)) != "{ cs := * length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4ql1)); + if(ttcn2string(t_rcs(tspt_cs_mod4ql1)) != "{ cs := ? length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4ql2)); + if(ttcn2string(t_rcs(tspt_cs_mod4ql2)) != "{ cs := ? length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(">",t_rcs(tspt_cs_mod4vl1),"<"); + if(ttcn2string(t_rcs(tspt_cs_mod4vl1)) != "{ cs := \"ABBA\" }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4vl2)); + if(ttcn2string(t_rcs(tspt_cs_mod4vl2)) != "{ cs := (\"ABBA\", \"baba\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4vl3)); + if(ttcn2string(t_rcs(tspt_cs_mod4vl3)) != "{ cs := (\"ABBA\", \"baba\", \"Bye\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4c1)); + if(ttcn2string(t_rcs(tspt_cs_mod4c1)) != "{ cs := complement(\"ABBA\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4c2)); + if(ttcn2string(t_rcs(tspt_cs_mod4c2)) != "{ cs := complement(\"ABBA\", \"baba\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4c3)); + if(ttcn2string(t_rcs(tspt_cs_mod4c3)) != "{ cs := complement(\"ABBA\", \"baba\", \"Bye\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4r1)); + if(ttcn2string(t_rcs(tspt_cs_mod4r1)) != "{ cs := (\"A\" .. \"B\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4r2)); + if(ttcn2string(t_rcs(tspt_cs_mod4r2)) != "{ cs := (\"a\" .. \"c\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4pa)); + if(ttcn2string(t_rcs(tspt_cs_mod4pa)) != "{ cs := pattern \"abc*xyz\" }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4pq)); + if(ttcn2string(t_rcs(tspt_cs_mod4pq)) != "{ cs := pattern \"abc?xyz\" }") {setverdict(fail)} else {setverdict(pass)}; + //== + log(t_rcs(tspt_cs_mod4vifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4vifp)) != "{ cs := \"ABBA\" ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4oifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4oifp)) != "{ cs := omit ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4aifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4aifp)) != "{ cs := * ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4qifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4qifp)) != "{ cs := ? ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4al1ifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4al1ifp)) != "{ cs := * length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4al2ifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4al2ifp)) != "{ cs := * length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4ql1ifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4ql1ifp)) != "{ cs := ? length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4ql2ifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4ql2ifp)) != "{ cs := ? length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4vl1ifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4vl1ifp)) != "{ cs := \"ABBA\" ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4vl2ifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4vl2ifp)) != "{ cs := (\"ABBA\", \"baba\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4vl3ifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4vl3ifp)) != "{ cs := (\"ABBA\", \"baba\", \"Bye\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4c1ifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4c1ifp)) != "{ cs := complement(\"ABBA\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4c2ifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4c2ifp)) != "{ cs := complement(\"ABBA\", \"baba\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4c3ifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4c3ifp)) != "{ cs := complement(\"ABBA\", \"baba\", \"Bye\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4r1ifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4r1ifp)) != "{ cs := (\"A\" .. \"B\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4r2ifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4r2ifp)) != "{ cs := (\"a\" .. \"c\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4paifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4paifp)) != "{ cs := pattern \"abc*xyz\" ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rcs(tspt_cs_mod4pqifp)); + if(ttcn2string(t_rcs(tspt_cs_mod4pqifp)) != "{ cs := pattern \"abc?xyz\" ifpresent }") {setverdict(fail)} else {setverdict(pass)}; +} + +//==== string2ttcn testcases =============================================================== +//These testcases tests if +// 1. string2ttcn can generate the expected template +// 2. string2ttcn can generate the expected value, if possible/required (=true the third arg) +//=========================================================================================== +testcase tc_cs_string2ttcn_mod4v() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4v)),t_rcs(tspt_cs_mod4v)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4v)),t_rcs(tspt_cs_mod4v),true); +} + +testcase tc_cs_string2ttcn_mod4o() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4o)),t_rcs(tspt_cs_mod4o)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4o)),t_rcs(tspt_cs_mod4o),true); +} + +//omit length +testcase tc_cs_string2ttcn_mod4ol() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4ol)),t_rcs(tspt_cs_mod4ol)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4ol)),t_rcs(tspt_cs_mod4ol),false); +} + +testcase tc_cs_string2ttcn_mod4a() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4a)),t_rcs(tspt_cs_mod4a)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4a)),t_rcs(tspt_cs_mod4a),false); +} + +testcase tc_cs_string2ttcn_mod4q() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4q)),t_rcs(tspt_cs_mod4q)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4q)),t_rcs(tspt_cs_mod4q),false); +} + +testcase tc_cs_string2ttcn_mod4al1() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4al1)),t_rcs(tspt_cs_mod4al1)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4al1)),t_rcs(tspt_cs_mod4al1),false); +} + +testcase tc_cs_string2ttcn_mod4al2() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4al2)),t_rcs(tspt_cs_mod4al2)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4al2)),t_rcs(tspt_cs_mod4al2),false); +} + +testcase tc_cs_string2ttcn_mod4ql1() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4ql1)),t_rcs(tspt_cs_mod4ql1)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4ql1)),t_rcs(tspt_cs_mod4ql1),false); +} + +testcase tc_cs_string2ttcn_mod4ql2() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4ql2)),t_rcs(tspt_cs_mod4ql2)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4ql2)),t_rcs(tspt_cs_mod4ql2),false); +} + +testcase tc_cs_string2ttcn_mod4vl1() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4vl1)),t_rcs(tspt_cs_mod4vl1)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4vl1)),t_rcs(tspt_cs_mod4vl1),true); +} + +testcase tc_cs_string2ttcn_mod4vl2() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4vl2)),t_rcs(tspt_cs_mod4vl2)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4vl2)),t_rcs(tspt_cs_mod4vl2),false); +} + +testcase tc_cs_string2ttcn_mod4vl3() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4vl3)),t_rcs(tspt_cs_mod4vl3)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4vl3)),t_rcs(tspt_cs_mod4vl3),false); +} + +testcase tc_cs_string2ttcn_mod4c1() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4c1)),t_rcs(tspt_cs_mod4c1)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4c1)),t_rcs(tspt_cs_mod4c1),false); +} + +testcase tc_cs_string2ttcn_mod4c2() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4c2)),t_rcs(tspt_cs_mod4c2)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4c2)),t_rcs(tspt_cs_mod4c2),false); +} + +testcase tc_cs_string2ttcn_mod4c3() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4c3)),t_rcs(tspt_cs_mod4c3)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4c3)),t_rcs(tspt_cs_mod4c3),false); +} + +testcase tc_cs_string2ttcn_mod4r1() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4r1)),t_rcs(tspt_cs_mod4r1)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4r1)),t_rcs(tspt_cs_mod4r1),false); +} + +testcase tc_cs_string2ttcn_mod4r2() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4r2)),t_rcs(tspt_cs_mod4r2)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4r2)),t_rcs(tspt_cs_mod4r2),false); +} + +testcase tc_cs_string2ttcn_mod4pa() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4pa)),t_rcs(tspt_cs_mod4pa)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4pa)),t_rcs(tspt_cs_mod4pa),false); +} + +testcase tc_cs_string2ttcn_mod4pq() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4pq)),t_rcs(tspt_cs_mod4pq)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4pq)),t_rcs(tspt_cs_mod4pq),false); +} + +// ifp + +testcase tc_cs_string2ttcn_mod4vifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4vifp)),t_rcs(tspt_cs_mod4vifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4vifp)),t_rcs(tspt_cs_mod4vifp),false); +} + +testcase tc_cs_string2ttcn_mod4oifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4oifp)),t_rcs(tspt_cs_mod4oifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4oifp)),t_rcs(tspt_cs_mod4oifp),false); +} + +testcase tc_cs_string2ttcn_mod4aifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4aifp)),t_rcs(tspt_cs_mod4aifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4aifp)),t_rcs(tspt_cs_mod4aifp),false); +} + +testcase tc_cs_string2ttcn_mod4qifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4qifp)),t_rcs(tspt_cs_mod4qifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4qifp)),t_rcs(tspt_cs_mod4qifp),false); +} + +testcase tc_cs_string2ttcn_mod4al1ifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4al1ifp)),t_rcs(tspt_cs_mod4al1ifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4al1ifp)),t_rcs(tspt_cs_mod4al1ifp),false); +} + +testcase tc_cs_string2ttcn_mod4al2ifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4al2ifp)),t_rcs(tspt_cs_mod4al2ifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4al2ifp)),t_rcs(tspt_cs_mod4al2ifp),false); +} + +testcase tc_cs_string2ttcn_mod4ql1ifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4ql1ifp)),t_rcs(tspt_cs_mod4ql1ifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4ql1ifp)),t_rcs(tspt_cs_mod4ql1ifp),false); +} + +testcase tc_cs_string2ttcn_mod4ql2ifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4ql2ifp)),t_rcs(tspt_cs_mod4ql2ifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4ql2ifp)),t_rcs(tspt_cs_mod4ql2ifp),false); +} + +testcase tc_cs_string2ttcn_mod4vl1ifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4vl1ifp)),t_rcs(tspt_cs_mod4vl1ifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4vl1ifp)),t_rcs(tspt_cs_mod4vl1ifp),false); +} + +testcase tc_cs_string2ttcn_mod4vl2ifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4vl2ifp)),t_rcs(tspt_cs_mod4vl2ifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4vl2ifp)),t_rcs(tspt_cs_mod4vl2ifp),false); +} + +testcase tc_cs_string2ttcn_mod4vl3ifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4vl3ifp)),t_rcs(tspt_cs_mod4vl3ifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4vl3ifp)),t_rcs(tspt_cs_mod4vl3ifp),false); +} + +testcase tc_cs_string2ttcn_mod4c1ifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4c1ifp)),t_rcs(tspt_cs_mod4c1ifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4c1ifp)),t_rcs(tspt_cs_mod4c1ifp),false); +} + +testcase tc_cs_string2ttcn_mod4c2ifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4c2ifp)),t_rcs(tspt_cs_mod4c2ifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4c2ifp)),t_rcs(tspt_cs_mod4c2ifp),false); +} + +testcase tc_cs_string2ttcn_mod4c3ifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4c3ifp)),t_rcs(tspt_cs_mod4c3ifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4c3ifp)),t_rcs(tspt_cs_mod4c3ifp),false); +} + +testcase tc_cs_string2ttcn_mod4r1ifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4r1ifp)),t_rcs(tspt_cs_mod4r1ifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4r1ifp)),t_rcs(tspt_cs_mod4r1ifp),false); +} + +testcase tc_cs_string2ttcn_mod4r2ifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4r2ifp)),t_rcs(tspt_cs_mod4r2ifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4r2ifp)),t_rcs(tspt_cs_mod4r2ifp),false); +} + +testcase tc_cs_string2ttcn_mod4paifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4paifp)),t_rcs(tspt_cs_mod4paifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4paifp)),t_rcs(tspt_cs_mod4paifp),false); +} + +testcase tc_cs_string2ttcn_mod4pqifp() runs on MC { + f_string2ttcn_rcs_t(ttcn2string(t_rcs(tspt_cs_mod4pqifp)),t_rcs(tspt_cs_mod4pqifp)); + f_string2ttcn_rcs_v(ttcn2string(t_rcs(tspt_cs_mod4pqifp)),t_rcs(tspt_cs_mod4pqifp),false); +} + +control { + + log("***charstring tests****"); + execute(tc_cs_v()); + execute(tc_cs_o()); + execute(tc_cs_a()); + execute(tc_cs_q()); + execute(tc_cs_al1()); + execute(tc_cs_al2()); + execute(tc_cs_ql1()); + execute(tc_cs_ql2()); + //execute(tc_cs_c()); + execute(tc_cs_vl1()); + execute(tc_cs_vl2()); + execute(tc_cs_vl3()); + execute(tc_cs_c1()); + execute(tc_cs_c2()); + execute(tc_cs_c3()); + execute(tc_cs_r1()); + execute(tc_cs_r2()); + execute(tc_cs_pa()); + execute(tc_cs_pq()); + //=== charstring embedded in record ==== + execute(tc_cs_v_emb()); + execute(tc_cs_o_emb()); + execute(tc_cs_a_emb()); + execute(tc_cs_q_emb()); + execute(tc_cs_al1_emb()); + execute(tc_cs_al2_emb()); + execute(tc_cs_ql1_emb()); + execute(tc_cs_ql2_emb()); + //execute(tc_cs_c_emb()); + execute(tc_cs_vl1_emb()); + execute(tc_cs_vl2_emb()); + execute(tc_cs_vl3_emb()); + execute(tc_cs_c1_emb()); + execute(tc_cs_c2_emb()); + execute(tc_cs_c3_emb()); + execute(tc_cs_r1_emb()); + execute(tc_cs_r2_emb()); + execute(tc_cs_pa_emb()); + execute(tc_cs_pq_emb()); + //embedded + ifpresent + execute(tc_cs_vifp_emb()); + execute(tc_cs_oifp_emb()); + execute(tc_cs_aifp_emb()); + execute(tc_cs_qifp_emb()); + execute(tc_cs_al1ifp_emb()); + execute(tc_cs_al2ifp_emb()); + execute(tc_cs_ql1ifp_emb()); + execute(tc_cs_ql2ifp_emb()); + execute(tc_cs_vl1ifp_emb()); + //execute(tc_cs_vl2ifp_emb()); + execute(tc_cs_vl3ifp_emb()); + execute(tc_cs_c1ifp_emb()); + execute(tc_cs_c2ifp_emb()); + execute(tc_cs_c3ifp_emb()); + execute(tc_cs_r1ifp_emb()); + execute(tc_cs_r2ifp_emb()); + execute(tc_cs_paifp_emb()); + execute(tc_cs_pqifp_emb()); + + //======modified modulepar template wth type of charstring==== + execute(tc_cs_ModulePar_emb()); + execute(tc_cs_mod4v_emb()); + execute(tc_cs_mod4o_emb()); + execute(tc_cs_mod4a_emb()); + execute(tc_cs_mod4q_emb()); + execute(tc_cs_mod4al1_emb()); + execute(tc_cs_mod4al2_emb()); + execute(tc_cs_mod4ql1_emb()); + execute(tc_cs_mod4ql2_emb()); + execute(tc_cs_mod4vl1_emb()); + execute(tc_cs_mod4vl2_emb()); + execute(tc_cs_mod4vl3_emb()); + execute(tc_cs_mod4c1_emb()); + execute(tc_cs_mod4c2_emb()); + execute(tc_cs_mod4c3_emb()); + execute(tc_cs_mod4r1_emb()); + execute(tc_cs_mod4r2_emb()); + execute(tc_cs_mod4pa_emb()); + execute(tc_cs_mod4pq_emb()); + //embedded + ifpresent + execute(tc_cs_mod4vifp_emb()); + execute(tc_cs_mod4oifp_emb()); + execute(tc_cs_mod4aifp_emb()); + execute(tc_cs_mod4qifp_emb()); + execute(tc_cs_mod4al1ifp_emb()); + execute(tc_cs_mod4al2ifp_emb()); + execute(tc_cs_mod4ql1ifp_emb()); + execute(tc_cs_mod4ql2ifp_emb()); + execute(tc_cs_mod4vl1ifp_emb()); //Adam solved + execute(tc_cs_mod4vl2ifp_emb()); //Fixed: TR: HR98602, 'Matching fault in case of template ("A","B") ifpresent' + execute(tc_cs_mod4vl3ifp_emb()); + execute(tc_cs_mod4c1ifp_emb()); + execute(tc_cs_mod4c2ifp_emb()); + execute(tc_cs_mod4c3ifp_emb()); + execute(tc_cs_mod4r1ifp_emb()); + execute(tc_cs_mod4r2ifp_emb()); + execute(tc_cs_mod4paifp_emb()); + execute(tc_cs_mod4pqifp_emb()); + + //ttcn2string: + execute(tc_cs_ttcn2string_emb()); + execute(tc_cs_string2ttcn_mod4v()); + execute(tc_cs_string2ttcn_mod4o()); + execute(tc_cs_string2ttcn_mod4ol()); + execute(tc_cs_string2ttcn_mod4a()); + execute(tc_cs_string2ttcn_mod4q()); + execute(tc_cs_string2ttcn_mod4al1()); + execute(tc_cs_string2ttcn_mod4al2()); + execute(tc_cs_string2ttcn_mod4ql1()); + execute(tc_cs_string2ttcn_mod4ql2()); + execute(tc_cs_string2ttcn_mod4vl1()); + execute(tc_cs_string2ttcn_mod4vl2()); + execute(tc_cs_string2ttcn_mod4vl3()); + execute(tc_cs_string2ttcn_mod4c1()); + execute(tc_cs_string2ttcn_mod4c2()); + execute(tc_cs_string2ttcn_mod4c3()); + execute(tc_cs_string2ttcn_mod4r1()); + execute(tc_cs_string2ttcn_mod4r2()); + execute(tc_cs_string2ttcn_mod4pa()); + execute(tc_cs_string2ttcn_mod4pq()); + //ttcn2string with ifpresent + execute(tc_cs_string2ttcn_mod4vifp()); + execute(tc_cs_string2ttcn_mod4oifp()); + execute(tc_cs_string2ttcn_mod4aifp()); + execute(tc_cs_string2ttcn_mod4qifp()); + execute(tc_cs_string2ttcn_mod4al1ifp()); + execute(tc_cs_string2ttcn_mod4al2ifp()); + execute(tc_cs_string2ttcn_mod4ql1ifp()); + execute(tc_cs_string2ttcn_mod4ql2ifp()); + execute(tc_cs_string2ttcn_mod4vl1ifp()); + execute(tc_cs_string2ttcn_mod4vl2ifp()); + execute(tc_cs_string2ttcn_mod4vl3ifp()); + execute(tc_cs_string2ttcn_mod4c1ifp()); + execute(tc_cs_string2ttcn_mod4c2ifp()); + execute(tc_cs_string2ttcn_mod4c3ifp()); + execute(tc_cs_string2ttcn_mod4r1ifp()); + execute(tc_cs_string2ttcn_mod4r2ifp()); + execute(tc_cs_string2ttcn_mod4paifp()); + execute(tc_cs_string2ttcn_mod4pqifp()); + +} + +} diff --git a/Regression_Test_java/src/text2ttcn_nolegacy/component_test.ttcn b/Regression_Test_java/src/text2ttcn_nolegacy/component_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..3c6b1a5d02025478cee9555e932af4f7efbbd3d7 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn_nolegacy/component_test.ttcn @@ -0,0 +1,46 @@ +/****************************************************************************** + * 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 + * Baranyi, Botond + * + ******************************************************************************/ +module component_test +{ + +type component CT {} + +function f_test() runs on CT { + timer tt1:=2.0 + tt1.start + tt1.timeout +} + +testcase tc_component() runs on CT { + var CT a := CT.create("a b.c\t!@#$%^&*(1)[]{};'""\\/,|`~"); + var CT b; + @try { + string2ttcn(ttcn2string(a), b); + if (a != b) { + setverdict(fail, "string2ttcn() result: ", b, ", expected: ", a); + } + b.start(f_test()); + b.done; + setverdict(pass); + } + @catch (err_msg) { + setverdict(fail, "string2ttcn() failed: ", err_msg); + } +} + +control { + log("*** component tests ***"); + execute(tc_component()) +} + +} diff --git a/Regression_Test_java/src/text2ttcn_nolegacy/enum_test.ttcn b/Regression_Test_java/src/text2ttcn_nolegacy/enum_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..682d54987270b91c089b518744e4d64a81f978b9 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn_nolegacy/enum_test.ttcn @@ -0,0 +1,182 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +module enum_test +// [.objid{ itu_t(0) identified_organization(4) etsi(0) +// identified_organization(127) ericsson(5) testing(0) +// <put further nodes here if needed>}] +{ + +//========================================================================= +// Import Part +//========================================================================= +import from types2 all; +//import from functions2 all; +//========================================================================= +// Module Parameters +//========================================================================= +modulepar { + template MyEnum tspt_enum_mod4v := omit + template MyEnum tspt_enum_mod4a := first + template MyEnum tspt_enum_mod4q := first + template MyEnum tspt_enum_mod4o := first + template MyEnum tspt_enum_mod4c0 := first + template MyEnum tspt_enum_mod4c1 := first + template MyEnum tspt_enum_mod4c2 := first + template MyEnum tspt_enum_mod4vl1 := omit + template MyEnum tspt_enum_mod4vl2 := omit + //ifpresent version ( in cfg file): + template MyEnum tspt_enum_mod4vifp := omit + template MyEnum tspt_enum_mod4aifp := first + template MyEnum tspt_enum_mod4qifp := first + template MyEnum tspt_enum_mod4oifp := first + template MyEnum tspt_enum_mod4c0ifp := first + template MyEnum tspt_enum_mod4c1ifp := first + template MyEnum tspt_enum_mod4c2ifp := first + template MyEnum tspt_enum_mod4vl1ifp := omit + template MyEnum tspt_enum_mod4vl2ifp := omit +} + +//========================================================================= +// Testcases +//========================================================================= +testcase tc_enum_ModulePar() runs on MC { + log(log2str(tspt_enum_mod4v)); + if(log2str(tspt_enum_mod4v) == "first (0)" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4a)); + if(log2str(tspt_enum_mod4a) == "*" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4q)); + if(log2str(tspt_enum_mod4q) == "?" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4o)); + if(log2str(tspt_enum_mod4o) == "omit" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4c0)); + if(log2str(tspt_enum_mod4c0) == "?" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4c1)); + if(log2str(tspt_enum_mod4c1) == "complement(first (0))" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4c2)); + if(log2str(tspt_enum_mod4c2) == "complement(first (0), second (1))" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4vl1)); + if(log2str(tspt_enum_mod4vl1) == "first (0)" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4vl2)); + if(log2str(tspt_enum_mod4vl2) == "(first (0), second (1))" ) {setverdict(pass)} else {setverdict(fail)} + + log(log2str(tspt_enum_mod4vifp)); + if(log2str(tspt_enum_mod4vifp) == "first (0) ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4aifp)); + if(log2str(tspt_enum_mod4aifp) == "* ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4qifp)); + if(log2str(tspt_enum_mod4qifp) == "? ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4oifp)); + if(log2str(tspt_enum_mod4oifp) == "omit ifpresent") {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4c0ifp)); + if(log2str(tspt_enum_mod4c0ifp) == "complement(omit) ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4c1ifp)); + if(log2str(tspt_enum_mod4c1ifp) == "complement(first (0)) ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4c2ifp)); + if(log2str(tspt_enum_mod4c2ifp) == "complement(first (0), second (1)) ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4vl1ifp)); + if(log2str(tspt_enum_mod4vl1ifp) == "first (0) ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_enum_mod4vl2ifp)); + if(log2str(tspt_enum_mod4vl2ifp) == "(first (0), second (1)) ifpresent" ) {setverdict(pass)} else {setverdict(fail)} +} + +testcase tc_enum_ModulePar_emb() runs on MC { + log(log2str(t_renum(tspt_enum_mod4v))); + if(log2str(t_renum(tspt_enum_mod4v)) == "{ e := first (0) }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4a))); + if(log2str(t_renum(tspt_enum_mod4a)) == "{ e := * }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4q))); + if(log2str(t_renum(tspt_enum_mod4q)) == "{ e := ? }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4o))); + if(log2str(t_renum(tspt_enum_mod4o)) == "{ e := omit }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4c0))); + if(log2str(t_renum(tspt_enum_mod4c0)) == "{ e := ? }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4c1))); + if(log2str(t_renum(tspt_enum_mod4c1)) == "{ e := complement(first (0)) }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4c2))); + if(log2str(t_renum(tspt_enum_mod4c2)) == "{ e := complement(first (0), second (1)) }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4vl1))); + if(log2str(t_renum(tspt_enum_mod4vl1)) == "{ e := first (0) }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4vl2))); + if(log2str(t_renum(tspt_enum_mod4vl2)) == "{ e := (first (0), second (1)) }" ) {setverdict(pass)} else {setverdict(fail)} + + log(log2str(t_renum(tspt_enum_mod4vifp))); + if(log2str(t_renum(tspt_enum_mod4vifp)) == "{ e := first (0) ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4aifp))); + if(log2str(t_renum(tspt_enum_mod4aifp)) == "{ e := * ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4qifp))); + if(log2str(t_renum(tspt_enum_mod4qifp)) == "{ e := ? ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4oifp))); + if(log2str(t_renum(tspt_enum_mod4oifp)) == "{ e := omit ifpresent }") {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4c0ifp))); + if(log2str(t_renum(tspt_enum_mod4c0ifp)) == "{ e := complement(omit) ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4c1ifp))); + if(log2str(t_renum(tspt_enum_mod4c1ifp)) == "{ e := complement(first (0)) ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4c2ifp))); + if(log2str(t_renum(tspt_enum_mod4c2ifp)) == "{ e := complement(first (0), second (1)) ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4vl1ifp))); + if(log2str(t_renum(tspt_enum_mod4vl1ifp)) == "{ e := first (0) ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_renum(tspt_enum_mod4vl2ifp))); + if(log2str(t_renum(tspt_enum_mod4vl2ifp)) == "{ e := (first (0), second (1)) ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} +} + + +testcase tc_enum_ttcn2str_emb() runs on MC { + log(ttcn2string(t_renum(tspt_enum_mod4v))); + if(ttcn2string(t_renum(tspt_enum_mod4v)) == "{ e := first }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4a))); + if(ttcn2string(t_renum(tspt_enum_mod4a)) == "{ e := * }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4q))); + if(ttcn2string(t_renum(tspt_enum_mod4q)) == "{ e := ? }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4o))); + if(ttcn2string(t_renum(tspt_enum_mod4o)) == "{ e := omit }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4c0))); //DTE + if(ttcn2string(t_renum(tspt_enum_mod4c0)) == "{ e := ? }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4c1))); + if(ttcn2string(t_renum(tspt_enum_mod4c1)) == "{ e := complement(first) }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4c2))); + if(ttcn2string(t_renum(tspt_enum_mod4c2)) == "{ e := complement(first, second) }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4vl1))); + if(ttcn2string(t_renum(tspt_enum_mod4vl1)) == "{ e := first }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4vl2))); + if(ttcn2string(t_renum(tspt_enum_mod4vl2)) == "{ e := (first, second) }" ) {setverdict(pass)} else {setverdict(fail)} + + log(ttcn2string(t_renum(tspt_enum_mod4vifp))); + if(ttcn2string(t_renum(tspt_enum_mod4vifp)) == "{ e := first ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4aifp))); + if(ttcn2string(t_renum(tspt_enum_mod4aifp)) == "{ e := * ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4qifp))); + if(ttcn2string(t_renum(tspt_enum_mod4qifp)) == "{ e := ? ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4oifp))); + if(ttcn2string(t_renum(tspt_enum_mod4oifp)) == "{ e := omit ifpresent }") {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4c0ifp))); + if(ttcn2string(t_renum(tspt_enum_mod4c0ifp)) == "{ e := complement(omit) ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4c1ifp))); + if(ttcn2string(t_renum(tspt_enum_mod4c1ifp)) == "{ e := complement(first) ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4c2ifp))); + if(ttcn2string(t_renum(tspt_enum_mod4c2ifp)) == "{ e := complement(first, second) ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4vl1ifp))); + if(ttcn2string(t_renum(tspt_enum_mod4vl1ifp)) == "{ e := first ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(ttcn2string(t_renum(tspt_enum_mod4vl2ifp))); + if(ttcn2string(t_renum(tspt_enum_mod4vl2ifp)) == "{ e := (first, second) ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} +} +//========================================================================= +// Control +//========================================================================= + +control { + log("***enum tests ********"); + execute(tc_enum_ModulePar()); + execute(tc_enum_ModulePar_emb()); + execute(tc_enum_ttcn2str_emb()); +} + +} // end of module diff --git a/Regression_Test_java/src/text2ttcn_nolegacy/float_test.ttcn b/Regression_Test_java/src/text2ttcn_nolegacy/float_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..eff0b4b67f690e28df24655842b7118ea7d4b6d6 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn_nolegacy/float_test.ttcn @@ -0,0 +1,369 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +/* +//AUTHOR: ethbaat +//DATE: 2013-12-11 +//VERSION: 1.0 +*/ +module float_test +{ + +//========================================================================= +// Import Part +//========================================================================= +import from types2 all; +import from functions2 all; + +//========================================================================= +// Module Parameters +//========================================================================= + +modulepar { + template float tspt_f_v := 9.0; + template float tspt_f_o := omit; + template float tspt_f_a := *; + template float tspt_f_q := ?; + template float tspt_f_vl1 := (0.0) + template float tspt_f_vl2 := (0.0,1.2) + template float tspt_f_vl3 := (0.0,1.2,-1.9) + template float tspt_f_c1 := complement(0.0); + template float tspt_f_c3 := complement(0.0,1.2,-1.9); + template float tspt_f_r := (-1.9..3.1); + + template float tspt_f1 := *; //overwritten by cfg for value 9.0 + template float tspt_f2 := 4.0; //overwritten by cfg for omit + template float tspt_f3 := 5.0; //overwritten by cfg for * + template float tspt_f4 := *; //overwritten by cfg for ? + template float tspt_f_mod4vl1 := ?; //overwritten by cfg for value list (0.0) + template float tspt_f_mod4vl3 := ?; //overwritten by cfg for value list (0.0,1.2,-1.9) + template float tspt_f6 := *; //overwritten by cfg for 9.0 ifpresent + template float tspt_f7 := *; //overwritten by cfg for omit ifpresent + template float tspt_f8 := *; //overwritten by cfg for * ifpresent + template float tspt_f9 := 9.0; //overwritten by cfg for ? ifpresent + template float tspt_f10 := *; //overwritten by cfg for value list (0.0,1.2,-1.9) ifpresent + template float tspt_f11 := *; //overwritten by cfg for complement + template float tspt_f12 := *; //overwritten by cfg for complement(9.0) ifpresent + template float tspt_f13 := *; + template float tspt_f14 := *; +} + +//========================================================================= +// Data Types +//========================================================================= + +//========================================================================= +// Signatures +//========================================================================= + +//========================================================================= +// Constants +//========================================================================= + +//========================================================================= +// Templates +//========================================================================= + template float t_f_v := 9.0; + template float t_f_o := omit; + template float t_f_a := *; + template float t_f_q := ?; + template float t_f_vl := (0.0,1.2,-1.9) + template float t_f_c := complement(0.0,1.2,-1.9); + +//========================================================================= +// Altsteps +//========================================================================= + +// Insert altsteps here if applicable! +// You can use the altstep skeleton! + +//========================================================================= +// Functions +//========================================================================= + +// Insert functions here if applicable! +// You can use the function skeleton! + +//========================================================================= +// Testcases +//========================================================================= + + testcase tc_float_NoModulePar() runs on MC { + log(t_f_v); + if( log2str(t_f_v) != "9.000000") { setverdict(fail)} else { setverdict(pass) } + if( log2str(t_f_o) != "omit") { setverdict(fail)}; + if( log2str(t_f_a) != "*") { setverdict(fail)}; + if( log2str(t_f_q) != "?") { setverdict(fail)}; + if( log2str(t_f_vl) != "(0.000000, 1.200000, -1.900000)") { setverdict(fail) }; + if( log2str(t_f_c) != "complement(0.000000, 1.200000, -1.900000)") { setverdict(fail) }; + } + + testcase tc_float_ModulePar() runs on MC { + if( log2str(tspt_f_v) != "9.000000") { setverdict(fail)} else { setverdict(pass) } + if( log2str(tspt_f_o) != "omit") { setverdict(fail)}; + if( log2str(tspt_f_a) != "*") { setverdict(fail)}; + if( log2str(tspt_f_q) != "?") { setverdict(fail)}; + log(tspt_f_vl3); + if( log2str(tspt_f_vl1) != "0.000000") { setverdict(fail) }; + if( log2str(tspt_f_vl2) != "(0.000000, 1.200000)") { setverdict(fail) }; + if( log2str(tspt_f_vl3) != "(0.000000, 1.200000, -1.900000)") { setverdict(fail) }; + if( log2str(tspt_f_c1) != "complement(0.000000)") { setverdict(fail) }; + if( log2str(tspt_f_c3) != "complement(0.000000, 1.200000, -1.900000)") { setverdict(fail) }; + //log(tspt_f_r); + if( log2str(tspt_f_r) != "(-1.900000 .. 3.100000)") { setverdict(fail) }; + } + + testcase tc_float_Embedded() runs on MC { + log(t_rec(1,tspt_f_v,omit,omit)); + if( log2str(t_rec(1,tspt_f_v,omit,omit)) != "{ i := 1, f := 9.000000, cs := omit, bs := omit }") { setverdict(fail)} else { setverdict(pass) } + if( log2str(t_rec(1,tspt_f_o,omit,omit)) != "{ i := 1, f := omit, cs := omit, bs := omit }") { setverdict(fail)}; + if( log2str(t_rec(1,tspt_f_a,omit,omit)) != "{ i := 1, f := *, cs := omit, bs := omit }") { setverdict(fail)}; + if( log2str(t_rec(1,tspt_f_q,omit,omit)) != "{ i := 1, f := ?, cs := omit, bs := omit }"){ setverdict(fail)}; + //log(tspt_f_vl3); + if( log2str(t_rec(1,tspt_f_vl1,omit,omit)) != "{ i := 1, f := 0.000000, cs := omit, bs := omit }") { setverdict(fail) }; + if( log2str(t_rec(1,tspt_f_vl2,omit,omit)) != "{ i := 1, f := (0.000000, 1.200000), cs := omit, bs := omit }") { setverdict(fail) }; + if( log2str(t_rec(1,tspt_f_vl3,omit,omit)) != "{ i := 1, f := (0.000000, 1.200000, -1.900000), cs := omit, bs := omit }") { setverdict(fail) }; + if( log2str(t_rec(1,tspt_f_c1,omit,omit)) != "{ i := 1, f := complement(0.000000), cs := omit, bs := omit }") { setverdict(fail) }; + if( log2str(t_rec(1,tspt_f_c3,omit,omit)) != "{ i := 1, f := complement(0.000000, 1.200000, -1.900000), cs := omit, bs := omit }") { setverdict(fail) }; + //log(tspt_f_r); + if( log2str(t_rec(1,tspt_f_r,omit,omit)) != "{ i := 1, f := (-1.900000 .. 3.100000), cs := omit, bs := omit }" ) { setverdict(fail) }; + } + + //value + testcase tc_float_value() runs on MC { + log( tspt_f_v ); + if( log2str(tspt_f_v) != "9.000000" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := {9.0} + var RoF vl_wrong_values := {-1000000.0, 0.0, -1.0, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( tspt_f_v, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_omit() runs on MC { + log( tspt_f_o ); + if( log2str(tspt_f_o) != "omit" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := {} + var RoF vl_wrong_values := {9.0, -1000000.0, 0.0, -1.0, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( tspt_f_o, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_a() runs on MC { + log( tspt_f_a ); + if( log2str(tspt_f_a) != "*" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := {9.0, -1000000.0, 0.0, -1.0, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + var RoF vl_wrong_values := {} + f_checkMatchingValues_float( tspt_f_a, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_q() runs on MC { + log( tspt_f_q ); + if( log2str(tspt_f_q) != "?") { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := {9.0, -1000000.0, 0.0, -1.0, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + var RoF vl_wrong_values := {} + f_checkMatchingValues_float( tspt_f_a, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_vl() runs on MC { + log( tspt_f_vl3 ); + if( log2str(tspt_f_vl3) != "(0.000000, 1.200000, -1.900000)" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := { 0.0, 1.2, -1.9 } + var RoF vl_wrong_values := {9.0, -1000000.0, 0.01, -1.91, 8.99999, 9.0, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( tspt_f_vl3, vl_good_values, vl_wrong_values ); + } + + //range + testcase tc_float_r() runs on MC { + log( tspt_f_r ); + if( log2str(tspt_f_r) != "(-1.900000 .. 3.100000)" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := { -1.900000, -1.8999999, -1.0, 0.0, 1.2, -1.9, 3.1 } + var RoF vl_wrong_values := {3.10001, 9.0, -1000000.0, -1.91, 8.99999, 9.0, 9.0001, -2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( tspt_f_r, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_right_value() runs on MC { + var template float vlt := tspt_f_vl3; + log( vlt ); + if( log2str(vlt) != "(0.000000, 1.200000, -1.900000)" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := { 0.0, 1.2, -1.9 } + var RoF vl_wrong_values := {9.0, -1000000.0, 0.01, -1.91, 8.99999, 9.0, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( vlt, vl_good_values, vl_wrong_values ); + } + + // + //value + testcase tc_float_modified4v() runs on MC { + log( tspt_f1 ); + if( log2str(tspt_f1) != "9.000000" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := {9.0} + var RoF vl_wrong_values := {-1000000.0, 0.0, -1.0, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( tspt_f1, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_modified4o() runs on MC { + log( tspt_f2 ); + if( log2str(tspt_f2) != "omit" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := {} + var RoF vl_wrong_values := {9.0, -1000000.0, 0.0, -1.0, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( tspt_f2, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_modified4a() runs on MC { + log( tspt_f3 ); + if( log2str(tspt_f3) != "*" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := {9.0, -1000000.0, 0.0, -1.0, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + var RoF vl_wrong_values := {} + f_checkMatchingValues_float( tspt_f3, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_modified4q() runs on MC { + log( tspt_f4 ); + if( log2str(tspt_f4) != "?") { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := {9.0, -1000000.0, 0.0, -1.0, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + var RoF vl_wrong_values := {} + f_checkMatchingValues_float( tspt_f4, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_modified4vl1() runs on MC { + log( tspt_f_mod4vl1 ); + if( log2str(tspt_f_mod4vl1) != "0.000000" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := { 0.0 } + var RoF vl_wrong_values := {1.2, -1.9, 9.0, -1000000.0, 0.01, -1.91, 8.99999, 9.0, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( tspt_f_mod4vl1, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_modified4vl3() runs on MC { + log( tspt_f_mod4vl3 ); + if( log2str(tspt_f_mod4vl3) != "(0.000000, 1.200000, -1.900000)" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := { 0.0, 1.2, -1.9 } + var RoF vl_wrong_values := {9.0, -1000000.0, 0.01, -1.91, 8.99999, 9.0, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( tspt_f_mod4vl3, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_modified4c() runs on MC { + var template float vlt := tspt_f11; + log( vlt ); + if( log2str(vlt) != "complement(9.000000)" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := { -1000000.0, 0.01, -1.91, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + var RoF vl_wrong_values := { 9.0 } + f_checkMatchingValues_float( vlt, vl_good_values, vl_wrong_values ); + } + + // modified 4 range from cfg file + testcase tc_float_modified4r() runs on MC { + log( tspt_f13 ); + if( log2str(tspt_f13) != "(-1.900000 .. 3.100000)" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := { -1.900000, -1.8999999, -1.0, 0.0, 1.2, -1.9, 3.1 } + var RoF vl_wrong_values := {3.10001, 9.0, -1000000.0, -1.91, 8.99999, 9.0, 9.0001, -2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( tspt_f13, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_modified4vl_right_value() runs on MC { + var template float vlt := tspt_f_mod4vl3; + log( vlt ); + if( log2str(vlt) != "(0.000000, 1.200000, -1.900000)" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := { 0.0, 1.2, -1.9 } + var RoF vl_wrong_values := {9.0, -1000000.0, 0.01, -1.91, 8.99999, 9.0, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( vlt, vl_good_values, vl_wrong_values ); + } + + //value + testcase tc_float_modified4vifp() runs on MC { + log( tspt_f6 ); + if( log2str(tspt_f6) != "9.000000 ifpresent" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := {9.0} + var RoF vl_wrong_values := {-1000000.0, 0.0, -1.0, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( tspt_f6, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_modified4oifp() runs on MC { + log( tspt_f7 ); + if( log2str(tspt_f7) != "omit ifpresent" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := {} + var RoF vl_wrong_values := {9.0, -1000000.0, 0.0, -1.0, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( tspt_f7, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_modified4aifp() runs on MC { + log( tspt_f8 ); + if( log2str(tspt_f8) != "* ifpresent" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := {9.0, -1000000.0, 0.0, -1.0, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + var RoF vl_wrong_values := {} + f_checkMatchingValues_float( tspt_f8, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_modified4qifp() runs on MC { + log( tspt_f4 ); + if( log2str(tspt_f9) != "? ifpresent") { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := {9.0, -1000000.0, 0.0, -1.0, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + var RoF vl_wrong_values := {} + f_checkMatchingValues_float( tspt_f9, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_modified4vlifp() runs on MC { + log( tspt_f10 ); + if( log2str(tspt_f10) != "(0.000000, 1.200000, -1.900000) ifpresent" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := { 0.0, 1.2, -1.9 } + var RoF vl_wrong_values := {9.0, -1000000.0, 0.01, -1.91, 8.99999, 9.0, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( tspt_f10, vl_good_values, vl_wrong_values ); + } + + testcase tc_float_modified4cifp() runs on MC { + var template float vlt := tspt_f12; + log( vlt ); + if( log2str(vlt) != "complement(9.000000) ifpresent" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := { -1000000.0, 0.01, -1.91, 8.99999, 9.0001, 2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + var RoF vl_wrong_values := { 9.0 } + f_checkMatchingValues_float( vlt, vl_good_values, vl_wrong_values ); + } + + // modified 4 range from cfg file + testcase tc_float_modified4rifp() runs on MC { + log( tspt_f14 ); + if( log2str(tspt_f14) != "(-1.900000 .. 3.100000) ifpresent" ) { setverdict(fail) } else { setverdict(pass) } + var RoF vl_good_values := { -1.900000, -1.8999999, -1.0, 0.0, 1.2, -1.9, 3.1 } + var RoF vl_wrong_values := {3.10001, 9.0, -1000000.0, -1.91, 8.99999, 9.0, 9.0001, -2.0, 20001.0e9, 4294967296.0, 4294967296.0+1.0} + f_checkMatchingValues_float( tspt_f14, vl_good_values, vl_wrong_values ); + } + +//========================================================================= +// Control +//========================================================================= + +control { + log("****float tests****"); + execute(tc_float_NoModulePar()); + execute(tc_float_ModulePar()); + execute(tc_float_Embedded()); + execute(tc_float_value()); + execute(tc_float_omit()); + execute(tc_float_a()); + execute(tc_float_q()); + execute(tc_float_vl()); + execute(tc_float_r()); + execute(tc_float_right_value()); + execute(tc_float_modified4v()); + execute(tc_float_modified4o()); + execute(tc_float_modified4a()); + execute(tc_float_modified4q()); + execute(tc_float_modified4vl1()); + execute(tc_float_modified4vl3()); + execute(tc_float_modified4c()); + execute(tc_float_modified4r()); + execute(tc_float_modified4vl_right_value()); + execute(tc_float_modified4vifp()); + execute(tc_float_modified4oifp()); + execute(tc_float_modified4aifp()); + execute(tc_float_modified4qifp()); + execute(tc_float_modified4vlifp()); + execute(tc_float_modified4cifp()); + execute(tc_float_modified4rifp()); +} + +} // end of module diff --git a/Regression_Test_java/src/text2ttcn_nolegacy/functions2.ttcn b/Regression_Test_java/src/text2ttcn_nolegacy/functions2.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..339c88adf7bb42278a1d3016bebae019f6fb533d --- /dev/null +++ b/Regression_Test_java/src/text2ttcn_nolegacy/functions2.ttcn @@ -0,0 +1,575 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +module functions2 { + +import from types2 all; + + +group g_boolean { + + // setverdict is pass if every value is matching + function f_checkMatchingGoodValues_bool(template boolean pl_b, in RoB pl_rob) { + var integer s:=lengthof(pl_rob) + log("Template: ", pl_b, " values to be matched:", pl_rob) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rob[i],pl_b )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_rob[i],pl_b )); + } else { + setverdict(fail, int2str(i)&". nok"); log( match(pl_rob[i],pl_b )); + } + } + } with { extension "transparent" } + + function f_checkMatchingWrongValues_bool(template boolean pl_b, in RoB pl_rob) { + var integer s:=lengthof(pl_rob) + log("Template: ", pl_b, " values not to be matched:", pl_rob) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rob[i],pl_b )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_rob[i],pl_b )); + } else { + setverdict(pass, int2str(i)&". ok"); log( match(pl_rob[i],pl_b )); + } + } + } with { extension "transparent" } + + + function f_checkMatchingValues_bool(template boolean pl_b, in RoB pl_good_values, in RoB pl_wrong_values) { + f_checkMatchingGoodValues_bool(pl_b,pl_good_values); + f_checkMatchingWrongValues_bool(pl_b,pl_wrong_values); + } + +} + +group g_integer { + + // setverdict is pass if every value is matching + function f_checkMatchingGoodValues_int(template integer pl_i, in RoI pl_roi) { + var integer s:=lengthof(pl_roi) + log("Template: ", pl_i, " values to be matched:", pl_roi) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_roi[i],pl_i )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_roi[i],pl_i )); + } else { + setverdict(fail, int2str(i)&". nok"); log( match(pl_roi[i],pl_i )); + } + } + } with { extension "transparent" } + + function f_checkMatchingWrongValues_int(template integer pl_i, in RoI pl_roi) { + var integer s:=lengthof(pl_roi) + log("Template: ", pl_i, " values not to be matched:", pl_roi) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_roi[i],pl_i )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_roi[i],pl_i )); + } else { + setverdict(pass, int2str(i)&". ok"); log( match(pl_roi[i],pl_i )); + } + } + } with { extension "transparent" } + + function f_checkMatchingValues_int(template integer pl_i, in RoI pl_good_values, in RoI pl_wrong_values) { + f_checkMatchingGoodValues_int( pl_i, pl_good_values); + f_checkMatchingWrongValues_int( pl_i, pl_wrong_values); + } + +}//g_integer + +group g_float{ + + // setverdict is pass if every value is matching + function f_checkMatchingGoodValues_float(template float pl_f, in RoF pl_rof) { + var integer s:=lengthof(pl_rof) + log("Template: ", pl_f, " values to be matched:", pl_rof) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rof[i],pl_f )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_rof[i],pl_f )); + } else { + setverdict(fail, int2str(i)&". nok"); log( match(pl_rof[i],pl_f )); + } + } + } with { extension "transparent" } + + function f_checkMatchingWrongValues_float(template float pl_f, in RoF pl_rof) { + var integer s:=lengthof(pl_rof) + log("Template: ", pl_f, " values not to be matched:", pl_rof) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rof[i],pl_f )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_rof[i],pl_f )); + } else { + setverdict(pass, int2str(i)&". ok"); log( match(pl_rof[i],pl_f )); + } + } + } with { extension "transparent" } + + function f_checkMatchingValues_float(template float pl_f, in RoF pl_good_values, in RoF pl_wrong_values) { + f_checkMatchingGoodValues_float( pl_f, pl_good_values); + f_checkMatchingWrongValues_float( pl_f, pl_wrong_values); + } +} //g_float + +group g_bitstring { + +}//g_bitstring + +group g_octetstring { + + +}//g_octetstring + +group g_hexstring { + + +}//g_hexstring + +group g_charstring { + + function f_checkMatchingGoodValues_cs(template charstring pl_cs,in RoCS pl_rocs) { + var integer s:=lengthof(pl_rocs); + log("Template: ", pl_cs, " values to be matched:", pl_rocs); + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rocs[i],pl_cs )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_rocs[i],pl_cs )); + } else { + setverdict(fail); log(int2str(i)&". nok"); log( match(pl_rocs[i],pl_cs )); + } + } + } with { extension "transparent" } + + function f_checkMatchingWrongValues_cs(template charstring pl_cs, in RoCS pl_rocs) { + var integer s:=lengthof(pl_rocs) + log("Template: ", pl_cs, " values not to be matched:", pl_rocs) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rocs[i], pl_cs )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_rocs[i],pl_cs )); + } else { + setverdict(pass); log(int2str(i)&". ok"); log( match(pl_rocs[i],pl_cs )); + } + } + } with { extension "transparent" } + + function f_checkMatchingValues_cs(template charstring pl_cs,in RoCS pl_good_values, in RoCS pl_wrong_values) { + f_checkMatchingGoodValues_cs( pl_cs, pl_good_values); + f_checkMatchingWrongValues_cs( pl_cs, pl_wrong_values); + } + + function f_checkMatchingGoodValues_rcs(template RCS pl_rcs,in RoRCS pl_rorcs) { + var integer s:=lengthof(pl_rorcs); + log("Template: ", pl_rcs, " values to be matched:", pl_rorcs); + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorcs[i],pl_rcs )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_rorcs[i],pl_rcs )); + } else { + setverdict(fail); log(int2str(i)&". nok"); log( match(pl_rorcs[i],pl_rcs )); + } + } + } with { extension "transparent" } + + function f_checkMatchingWrongValues_rcs(template RCS pl_rcs, in RoRCS pl_rorcs) { + var integer s:=lengthof(pl_rorcs) + log("Template: ", pl_rcs, " values not to be matched:", pl_rorcs) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorcs[i], pl_rcs )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_rorcs[i],pl_rcs )); + } else { + setverdict(pass); log(int2str(i)&". ok"); log( match(pl_rorcs[i],pl_rcs )); + } + } + } with { extension "transparent" } + + function f_checkMatchingValues_rcs(template RCS pl_rcs,in RoRCS pl_good_values, in RoRCS pl_wrong_values) { + f_checkMatchingGoodValues_rcs( pl_rcs, pl_good_values); + f_checkMatchingWrongValues_rcs( pl_rcs, pl_wrong_values); + } +}//g_charstring + +group g_record { + + // setverdict is pass if every value is matching + function f_checkMatchingGoodValues_rec(template REC pl_rec,in RoREC pl_rorec) { + var integer s:=lengthof(pl_rorec); + log("Template: ", pl_rec, " values to be matched:", pl_rorec); + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorec[i],pl_rec )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_rorec[i],pl_rec )); + } else { + setverdict(fail); log(int2str(i)&". nok"); log( match(pl_rorec[i],pl_rec )); + } + } + } //with { extension "transparent" } + + function f_checkMatchingWrongValues_rec(template REC pl_rec, in RoREC pl_rorec) { + var integer s:=lengthof(pl_rorec) + log("Template: ", pl_rec, " values not to be matched:", pl_rorec) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorec[i], pl_rec )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_rorec[i],pl_rec )); + } else { + setverdict(pass); log(int2str(i)&". ok"); log( match(pl_rorec[i],pl_rec )); + } + } + } //with { extension "transparent" } + + function f_checkMatchingValues_rec(template REC pl_rec,in RoREC pl_good_values, in RoREC pl_wrong_values) { + f_checkMatchingGoodValues_rec( pl_rec, pl_good_values); + f_checkMatchingWrongValues_rec( pl_rec, pl_wrong_values); + } + + function f_checkMatchingGoodValues_rec2(template REC2 pl_rec,in RoREC2 pl_rorec) { + var integer s:=lengthof(pl_rorec); + log("Template: ", pl_rec, " values to be matched:", pl_rorec); + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorec[i],pl_rec )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_rorec[i],pl_rec )); + } else { + setverdict(fail); log(int2str(i)&". nok"); log( match(pl_rorec[i],pl_rec )); + } + } + } with { extension "transparent" } + + function f_checkMatchingWrongValues_rec2(template REC2 pl_rec, in RoREC2 pl_rorec) { + var integer s:=lengthof(pl_rorec) + log("Template: ", pl_rec, " values not to be matched:", pl_rorec) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorec[i], pl_rec )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_rorec[i],pl_rec )); + } else { + setverdict(pass); log(int2str(i)&". ok"); log( match(pl_rorec[i],pl_rec )); + } + } + } with { extension "transparent" } + +}//g_record + +group g_recordof { + + // ====record of integer:====== + // setverdict is pass if every value is matching + function f_checkMatchingGoodValues_roi(template RoI pl_roi,in RoRoI pl_roroi) { + var integer s:=lengthof(pl_roroi); + log("Template: ", pl_roi, " values to be matched:", pl_roroi); + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_roroi[i],pl_roi )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_roroi[i],pl_roi )); + } else { + setverdict(fail); log(int2str(i)&". nok"); log( match(pl_roroi[i],pl_roi )); + } + } + } with { extension "transparent" } + + function f_checkMatchingWrongValues_roi(template RoI pl_roi, in RoRoI pl_roroi) { + var integer s:=lengthof(pl_roroi) + log("Template: ", pl_roi, " values not to be matched:", pl_roroi) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_roroi[i], pl_roi )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_roroi[i],pl_roi )); + } else { + setverdict(pass); log(int2str(i)&". ok"); log( match(pl_roroi[i],pl_roi )); + } + } + } with { extension "transparent" } + + function f_checkMatchingValues_roi(template RoI pl_roi,in RoRoI pl_good_values, in RoRoI pl_wrong_values) { + f_checkMatchingGoodValues_roi( pl_roi, pl_good_values); + f_checkMatchingWrongValues_roi( pl_roi, pl_wrong_values); + } + + // ====record of float:====== + + // setverdict is pass if every value is matching + function f_checkMatchingGoodValues_rof(template RoF pl_rof,in RoRoF pl_rorof) { + var integer s:=lengthof(pl_rorof); + log("Template: ", pl_rof, " values to be matched:", pl_rorof); + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorof[i],pl_rof )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_rorof[i],pl_rof )); + } else { + setverdict(fail); log(int2str(i)&". nok"); log( match(pl_rorof[i],pl_rof )); + } + } + } with { extension "transparent" } + + function f_checkMatchingWrongValues_rof(template RoF pl_rof, in RoRoF pl_rorof) { + var integer s:=lengthof(pl_rorof) + log("Template: ", pl_rof, " values not to be matched:", pl_rorof) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorof[i], pl_rof )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_rorof[i],pl_rof )); + } else { + setverdict(pass); log(int2str(i)&". ok"); log( match(pl_rorof[i],pl_rof )); + } + } + } with { extension "transparent" } + + function f_checkMatchingValues_rof(template RoF pl_rof,in RoRoF pl_good_values, in RoRoF pl_wrong_values) { + f_checkMatchingGoodValues_rof( pl_rof, pl_good_values); + f_checkMatchingWrongValues_rof( pl_rof, pl_wrong_values); + } +}//g_recordof + +group g_array { + + //============ AI3 ============================= + // setverdict is pass if every value is matching + function f_checkMatchingGoodValues_ai3(template AI3 pl_ai3,in RoAI3 pl_rofai3, in boolean pl_successExpected:=true) { + var integer s:=lengthof(pl_rofai3); + log("Template: ", pl_ai3, " values to be matched:", pl_rofai3); + for( var integer i :=0; i<s;i:=i+1) { + if(pl_successExpected) { + if( match(pl_rofai3[i],pl_ai3 )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_rofai3[i],pl_ai3 )); + } else { + setverdict(fail); log(int2str(i)&". nok"); log( match(pl_rofai3[i],pl_ai3 )); + } + }else //not pl_successExpected + { + @try { + log(match(pl_rofai3[i], pl_ai3 )) + setverdict(fail); + } + @catch(err_str) { + log( "Expected error: ", err_str); + setverdict(pass) + } + } + } + } //with { extension "transparent" } + + function f_checkMatchingWrongValues_ai3(template AI3 pl_ai3, in RoAI3 pl_rofai3, in boolean pl_successExpected:=true) { + var integer s:=lengthof(pl_rofai3) + log("Template: ", pl_ai3, " values not to be matched:", pl_rofai3) + for( var integer i :=0; i<s;i:=i+1) { + if(pl_successExpected) { + if( match(pl_rofai3[i], pl_ai3 )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_rofai3[i],pl_ai3 )); + } else { + setverdict(pass); log(int2str(i)&". ok"); log( match(pl_rofai3[i],pl_ai3 )); + } + } else //not pl_successExpected + { + @try { + log(match(pl_rofai3[i], pl_ai3 )); + setverdict(fail); + } + @catch(err_str) { + log( "Expected error: ", err_str); + setverdict(pass) + } + } + } + } //with { extension "transparent" } + + function f_checkMatchingValues_ai3( template AI3 pl_ai3,in RoAI3 pl_good_values, in RoAI3 pl_wrong_values, in boolean pl_successExpected := true) { + f_checkMatchingGoodValues_ai3( pl_ai3, pl_good_values, pl_successExpected); + f_checkMatchingWrongValues_ai3( pl_ai3, pl_wrong_values, pl_successExpected); + } + + //=== AI2x3 ==== + +function f_check_AI2x3( template AI2x3 pl_t, RoAI2x3 pl_goodV, RoAI2x3 pl_badV) { + var integer NG := lengthof(pl_goodV); + var integer NB := lengthof(pl_badV); + for(var integer i:=0;i< NG;i:=i+1) { + if( match(pl_goodV[i],pl_t)) { + setverdict(pass) + } else { + setverdict(fail, pl_goodV[i], " should match with ", pl_t ); + } + } + + for(var integer i:=0;i< NB;i:=i+1) { + if( not match(pl_badV[i],pl_t)) { + setverdict(pass); + } else { + setverdict(fail, pl_badV[i], " must not match with ", pl_t ); + } + } +} with { extension "transparent" } + + //======= RAI3 ======== + + // setverdict is pass if every value is matching + function f_checkMatchingGoodValues_rai3(template RAI3 pl_rai3,in RoRAI3 pl_rorai3) { + var integer s:=lengthof(pl_rorai3); + log("Template: ", pl_rai3, " values to be matched:", pl_rorai3); + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorai3[i],pl_rai3 )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_rorai3[i],pl_rai3 )); + } else { + setverdict(fail); log(int2str(i)&". nok"); log( match(pl_rorai3[i],pl_rai3 )); + } + } + } with { extension "transparent" } + + function f_checkMatchingWrongValues_rai3(template RAI3 pl_rai3, in RoRAI3 pl_rorai3) { + var integer s:=lengthof(pl_rorai3) + log("Template: ", pl_rai3, " values not to be matched:", pl_rorai3) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorai3[i], pl_rai3 )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_rorai3[i],pl_rai3 )); + } else { + setverdict(pass); log(int2str(i)&". ok"); log( match(pl_rorai3[i],pl_rai3 )); + } + } + } with { extension "transparent" } + + function f_checkMatchingValues_rai3(template RAI3 pl_rai3,in RoRAI3 pl_good_values, in RoRAI3 pl_wrong_values) { + f_checkMatchingGoodValues_rai3( pl_rai3, pl_good_values); + f_checkMatchingWrongValues_rai3( pl_rai3, pl_wrong_values); + } + + // //============= REC_BAI3 ==================== + // // setverdict is pass if every value is matching + // function f_checkMatchingGoodValues_bai3(template AI3 pl_ai3,in RoAI3 pl_rofai3) { + // var integer s:=lengthof(pl_rofai3); + // log("Template: ", pl_ai3, " values to be matched:", pl_rofai3); + // for( var integer i :=0; i<s;i:=i+1) { + // if( match(pl_rofai3[i],pl_ai3 )) { + // setverdict(pass); log(int2str(i)&". ok");log( match(pl_rofai3[i],pl_ai3 )); + // } else { + // setverdict(fail); log(int2str(i)&". nok"); log( match(pl_rofai3[i],pl_ai3 )); + // } + // } + // } with { extension "transparent" } + // + // function f_checkMatchingWrongValues_bai3(template AI3 pl_ai3, in RoAI3 pl_rofai3) { + // var integer s:=lengthof(pl_rofai3) + // log("Template: ", pl_ai3, " values not to be matched:", pl_rofai3) + // for( var integer i :=0; i<s;i:=i+1) { + // if( match(pl_rofai3[i], pl_ai3 )) { + // setverdict(fail); log(int2str(i)&". nok");log( match(pl_rofai3[i],pl_ai3 )); + // } else { + // setverdict(pass); log(int2str(i)&". ok"); log( match(pl_rofai3[i],pl_ai3 )); + // } + // } + // } with { extension "transparent" } + // + // function f_checkMatchingValues_bai3(template AI3 pl_ai3,in RoAI3 pl_good_values, in RoAI3 pl_wrong_values) { + // f_checkMatchingGoodValues_ai3( pl_ai3, pl_good_values); + // f_checkMatchingWrongValues_ai3( pl_ai3, pl_wrong_values); + // } + +}//g_array + + +group g_set { + + //SET + // setverdict is pass if every value is matching + function f_checkMatchingGoodValues_set(template SET pl_set,in RoSET pl_roset) { + var integer s:=lengthof(pl_roset); + log("Template: ", pl_set, " values to be matched:", pl_roset); + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_roset[i],pl_set )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_roset[i],pl_set )); + } else { + setverdict(fail); log(int2str(i)&". nok"); log( match(pl_roset[i],pl_set )); + } + } + } with { extension "transparent" } + + function f_checkMatchingWrongValues_set(template SET pl_set, in RoSET pl_roset) { + var integer s:=lengthof(pl_roset) + log("Template: ", pl_set, " values not to be matched:", pl_roset) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_roset[i], pl_set )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_roset[i],pl_set )); + } else { + setverdict(pass); log(int2str(i)&". ok"); log( match(pl_roset[i],pl_set )); + } + } + } with { extension "transparent" } + + function f_checkMatchingValues_set(template SET pl_set,in RoSET pl_good_values, in RoSET pl_wrong_values) { + f_checkMatchingGoodValues_set( pl_set, pl_good_values); + f_checkMatchingWrongValues_set( pl_set, pl_wrong_values); + } + + //RSET + // setverdict is pass if every value is matching + function f_checkMatchingGoodValues_rset(template RSET pl_rset,in RoRSET pl_rorset) { + var integer s:=lengthof(pl_rorset); + log("Template: ", pl_rset, " values to be matched:", pl_rorset); + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorset[i],pl_rset )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_rorset[i],pl_rset )); + } else { + setverdict(fail); log(int2str(i)&". nok"); log( match(pl_rorset[i],pl_rset )); + } + } + } with { extension "transparent" } + + function f_checkMatchingWrongValues_rset(template RSET pl_rset, in RoRSET pl_rorset) { + var integer s:=lengthof(pl_rorset) + log("Template: ", pl_rset, " values not to be matched:", pl_rorset) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorset[i], pl_rset )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_rorset[i],pl_rset )); + } else { + setverdict(pass); log(int2str(i)&". ok"); log( match(pl_rorset[i],pl_rset )); + } + } + } with { extension "transparent" } + + function f_checkMatchingValues_rset(template RSET pl_rset,in RoRSET pl_good_values, in RoRSET pl_wrong_values) { + f_checkMatchingGoodValues_rset( pl_rset, pl_good_values); + f_checkMatchingWrongValues_rset( pl_rset, pl_wrong_values); + } + +}//g_set + +group g_setof { + //RSoCS = record of charstring + // setverdict is pass if every value is matching + function f_checkMatchingGoodValues_rsocs(template RSoCS pl_rsocs,in RoRSoCS pl_rorsocs) { + var integer s:=lengthof(pl_rorsocs); + log("Template: ", pl_rsocs, " values to be matched:", pl_rorsocs); + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorsocs[i],pl_rsocs )) { + setverdict(pass); log(int2str(i)&". ok");log( match(pl_rorsocs[i],pl_rsocs )); + } else { + setverdict(fail); log(int2str(i)&". nok"); log( match(pl_rorsocs[i],pl_rsocs )); + } + } + } with { extension "transparent" } + + function f_checkMatchingWrongValues_rsocs(template RSoCS pl_rsocs, in RoRSoCS pl_rorsocs) { + var integer s:=lengthof(pl_rorsocs) + log("Template: ", pl_rsocs, " values not to be matched:", pl_rorsocs) + for( var integer i :=0; i<s;i:=i+1) { + if( match(pl_rorsocs[i], pl_rsocs )) { + setverdict(fail); log(int2str(i)&". nok");log( match(pl_rorsocs[i],pl_rsocs )); + } else { + setverdict(pass); log(int2str(i)&". ok"); log( match(pl_rorsocs[i],pl_rsocs )); + } + } + } with { extension "transparent" } + + function f_checkMatchingValues_rsocs(template RSoCS pl_rsocs,in RoRSoCS pl_good_values, in RoRSoCS pl_wrong_values) { + f_checkMatchingGoodValues_rsocs( pl_rsocs, pl_good_values); + f_checkMatchingWrongValues_rsocs( pl_rsocs, pl_wrong_values); + } + +}//g_setof + +group g_enumerated { + +}//g_enumerated + +group g_union { + +}//g_union + +group g_anytype { + +}//g_anytype + +} diff --git a/Regression_Test_java/src/text2ttcn_nolegacy/hexstring_test.ttcn b/Regression_Test_java/src/text2ttcn_nolegacy/hexstring_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..d0039923699313e0fcf7c8ed850474d6a348de28 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn_nolegacy/hexstring_test.ttcn @@ -0,0 +1,257 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +/* +//AUTHOR: +//DATE: +//VERSION: +*/ +module hexstring_test +{ + +//========================================================================= +// Import Part +//========================================================================= +import from types2 all; +//import from functions all; + +//========================================================================= +// Module Parameters +//========================================================================= +modulepar { + + + //hexstring + //============================================================ + //================ Type: hexstring ========================== + //============================================================ + + //modulepar hexstrings not modified from cfg file + template hexstring tspt_hs_v := 'ABBA'H; + template hexstring tspt_hs_o := omit; + template hexstring tspt_hs_a := *; + template hexstring tspt_hs_q := ?; + template hexstring tspt_hs_al1 := * length(2); //length restriction + template hexstring tspt_hs_al2 := * length(2..4); + template hexstring tspt_hs_ql1 := ? length(2); + template hexstring tspt_hs_ql2 := ? length(2..4); + template hexstring tspt_hs_vl1 := ('ABBA'H); + template hexstring tspt_hs_vl2 := ('ABBA'H,'baba'H); + template hexstring tspt_hs_vl3 := ('ABBA'H,'baba'H,'B12'H); + template hexstring tspt_hs_c1 := complement('ABBA'H) + template hexstring tspt_hs_c2 := complement('ABBA'H,'baba'H); + template hexstring tspt_hs_c3 := complement('ABBA'H,'baba'H,'B12'H); + //template hexstring tspt_hs_r1 := ('A'H..'B'H); //range not allowed + //template hexstring tspt_hs_r2 := ('a'H..'c'H); + template hexstring tspt_hs_pa := 'abc*123'H + template hexstring tspt_hs_pq := 'abc?123'H + + template hexstring tspt_hs_vifp := 'ABBA'H ifpresent; + template hexstring tspt_hs_oifp := omit ifpresent; + template hexstring tspt_hs_aifp := * ifpresent; + template hexstring tspt_hs_qifp := ? ifpresent; + template hexstring tspt_hs_al1ifp := * length(2) ifpresent; //length restriction + template hexstring tspt_hs_al2ifp := * length(2..4) ifpresent; + template hexstring tspt_hs_ql1ifp := ? length(2) ifpresent; + template hexstring tspt_hs_ql2ifp := ? length(2..4) ifpresent; + template hexstring tspt_hs_vl1ifp := ('ABBA'H) ifpresent; + template hexstring tspt_hs_vl2ifp := ('ABBA'H,'baba'H) ifpresent; + template hexstring tspt_hs_vl3ifp := ('ABBA'H,'baba'H,'B12'H) ifpresent; + template hexstring tspt_hs_c1ifp := complement('ABBA'H) ifpresent + template hexstring tspt_hs_c2ifp := complement('ABBA'H,'baba'H) ifpresent; + template hexstring tspt_hs_c3ifp := complement('ABBA'H,'baba'H,'B12'H) ifpresent; + //template hexstring tspt_hs_r1ifp := ('A'H..'B'H) ifpresent; //range not allowed + //template hexstring tspt_hs_r2ifp := ('a'H..'c'H) ifpresent; //range not allowed + template hexstring tspt_hs_paifp := 'abc*123'H ifpresent + template hexstring tspt_hs_pqifp := 'abc?123'H ifpresent + + //modulepar hexstrings modified from cfg file + template hexstring tspt_hs_mod4v := * //after mod:'ABBA'; + template hexstring tspt_hs_mod4o := * //omit; + template hexstring tspt_hs_mod4a := 'A'H //*; + template hexstring tspt_hs_mod4q := ''H //?; + template hexstring tspt_hs_mod4al1 := 'A'H //* length(2); //length restriction + template hexstring tspt_hs_mod4al2 := '12345'H //mofified for: * length(2..4); + template hexstring tspt_hs_mod4ql1 := '12345'H //mofified for:? length(2); + template hexstring tspt_hs_mod4ql2 := '12345'H //mofified for:? length(2..4); + template hexstring tspt_hs_mod4vl1 := ('ABBA'H) //TODO: Adam //It should be mofified for: ('ABBA'H); + template hexstring tspt_hs_mod4vl2 := '12345'H //mofified for:('ABBA'H,'baba'H); + template hexstring tspt_hs_mod4vl3 := '12345'H //mofified for:('ABBA'H,'baba'H,'B12'H); + template hexstring tspt_hs_mod4c1 := '12345'H //mofified for:complement('ABBA') + template hexstring tspt_hs_mod4c2 := '12345'H //mofified for:complement('ABBA','baba'); + template hexstring tspt_hs_mod4c3 := '12345'H //mofified for:complement('ABBA','baba','Bye'); + template hexstring tspt_hs_mod4r1 := '12345'H //mofified for:('A'..'B'); //range + template hexstring tspt_hs_mod4r2 := '12345'H //mofified for:('a'..'c'); + template hexstring tspt_hs_mod4pa := '12345'H //mofified for:pattern 'abc*123' + template hexstring tspt_hs_mod4pq := '12345'H //mofified for:pattern 'abc?123' + + template hexstring tspt_hs_mod4vifp := '12345'H //mofified for:'ABBA' ifpresent; + template hexstring tspt_hs_mod4oifp := '12345'H //mofified for:omit ifpresent; + template hexstring tspt_hs_mod4aifp := '12345'H //mofified for:* ifpresent; + template hexstring tspt_hs_mod4qifp := '12345'H //mofified for:? ifpresent; + template hexstring tspt_hs_mod4al1ifp := '12345'H //mofified for:* length(2) ifpresent; //length restriction + template hexstring tspt_hs_mod4al2ifp := '12345'H //mofified for:* length(2..4) ifpresent; + template hexstring tspt_hs_mod4ql1ifp := '12345'H //mofified for:? length(2) ifpresent; + template hexstring tspt_hs_mod4ql2ifp := '12345'H //mofified for:? length(2..4) ifpresent; + template hexstring tspt_hs_mod4vl1ifp := ('ABBA'H) ifpresent //TODO: Adam //It should be mofified for: ('ABBA'H); + template hexstring tspt_hs_mod4vl2ifp := '12345'H //mofified for:('ABBA','baba') ifpresent; + template hexstring tspt_hs_mod4vl3ifp := '12345'H //mofified for:('ABBA','baba','B12') ifpresent; + template hexstring tspt_hs_mod4c1ifp := '12345'H //mofified for:complement('ABBA') ifpresent + template hexstring tspt_hs_mod4c2ifp := '12345'H //mofified for:complement('ABBA','baba') ifpresent; + template hexstring tspt_hs_mod4c3ifp := '12345'H //mofified for:complement('ABBA','baba','Bye') ifpresent; + //template hexstring tspt_hs_mod4r1ifp := '12345'H //mofified for:('A'H..'B'H) ifpresent; //range + //template hexstring tspt_hs_mod4r2ifp := '12345'H //mofified for:('a'H..'c'H) ifpresent; + template hexstring tspt_hs_mod4paifp := '12345'H //mofified for:pattern 'abc*xyz'H ifpresent + template hexstring tspt_hs_mod4pqifp := '12345'H //mofified for:pattern 'abc?xyz'H ifpresent + +} + +//========================================================================= +// Data Types +//========================================================================= + +// Insert data type defintions here if applicable! +// You can use the data_type skeleton! + +//========================================================================= +// Signatures +//========================================================================= + +// Insert signature definitions here if applicable! +// You can use the signature skeleton! + +//========================================================================= +//Port Types +//========================================================================= + +// Insert port type defintions here if applicable! +// You can use the port_type skeleton! + +//========================================================================= +//Component Types +//========================================================================= + +// Insert component type defintions here if applicable! +// You can use the component_type skeleton! + +//========================================================================= +// Constants +//========================================================================= + +// Insert constants here if applicable! +// You can use the constant skeleton! + +//========================================================================= +// Templates +//========================================================================= + +// Insert templates here if applicable! +// You can use the template skeleton! + +//========================================================================= +// Altsteps +//========================================================================= + +// Insert altsteps here if applicable! +// You can use the altstep skeleton! + +//========================================================================= +// Functions +//========================================================================= + +// Insert functions here if applicable! +// You can use the function skeleton! + +//========================================================================= +// Testcases +//========================================================================= + + testcase tc_hs_ModulePar_emb() runs on MC { + log(t_rhs(tspt_hs_mod4v)); + if(log2str(t_rhs(tspt_hs_mod4v)) != "{ hs := \'ABBA\'H }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4o)); + if(log2str(t_rhs(tspt_hs_mod4o)) != "{ hs := omit }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4a)); + if(log2str(t_rhs(tspt_hs_mod4a)) != "{ hs := * }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4q)); + if(log2str(t_rhs(tspt_hs_mod4q)) != "{ hs := ? }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4al1)); + if(log2str(t_rhs(tspt_hs_mod4al1)) != "{ hs := * length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4al2)); + if(log2str(t_rhs(tspt_hs_mod4al2)) != "{ hs := * length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4ql1)); + if(log2str(t_rhs(tspt_hs_mod4ql1)) != "{ hs := ? length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4ql2)); + if(log2str(t_rhs(tspt_hs_mod4ql2)) != "{ hs := ? length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(">",t_rhs(tspt_hs_mod4vl1),"<"); + if(log2str(t_rhs(tspt_hs_mod4vl1)) != "{ hs := \'ABBA\'H }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4vl2)); + if(log2str(t_rhs(tspt_hs_mod4vl2)) != "{ hs := (\'ABBA\'H, \'BABA\'H) }") {setverdict(fail)} else {setverdict(pass)}; + log(">{ hs := (\'ABBA\'H, \'BABA\'H) }<"); + log(t_rhs(tspt_hs_mod4vl3)); + if(log2str(t_rhs(tspt_hs_mod4vl3)) != "{ hs := (\'ABBA\'H, \'BABA\'H, \'B12\'H) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4c1)); + if(log2str(t_rhs(tspt_hs_mod4c1)) != "{ hs := complement(\'ABBA\'H) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4c2)); + if(log2str(t_rhs(tspt_hs_mod4c2)) != "{ hs := complement(\'ABBA\'H, \'BABA\'H) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4c3)); + if(log2str(t_rhs(tspt_hs_mod4c3)) != "{ hs := complement(\'ABBA\'H, \'BABA\'H, \'B12\'H) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4pa)); + if(log2str(t_rhs(tspt_hs_mod4pa)) != "{ hs := \'ABC*123\'H }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4pq)); + if(log2str(t_rhs(tspt_hs_mod4pq)) != "{ hs := \'ABC?123\'H }") {setverdict(fail)} else {setverdict(pass)}; + //== + log(t_rhs(tspt_hs_mod4vifp)); + if(log2str(t_rhs(tspt_hs_mod4vifp)) != "{ hs := \'ABBA\'H ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4oifp)); + if(log2str(t_rhs(tspt_hs_mod4oifp)) != "{ hs := omit ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4aifp)); + if(log2str(t_rhs(tspt_hs_mod4aifp)) != "{ hs := * ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4qifp)); + if(log2str(t_rhs(tspt_hs_mod4qifp)) != "{ hs := ? ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4al1ifp)); + if(log2str(t_rhs(tspt_hs_mod4al1ifp)) != "{ hs := * length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4al2ifp)); + if(log2str(t_rhs(tspt_hs_mod4al2ifp)) != "{ hs := * length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4ql1ifp)); + if(log2str(t_rhs(tspt_hs_mod4ql1ifp)) != "{ hs := ? length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4ql2ifp)); + if(log2str(t_rhs(tspt_hs_mod4ql2ifp)) != "{ hs := ? length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4vl1ifp)); + if(log2str(t_rhs(tspt_hs_mod4vl1ifp)) != "{ hs := \'ABBA\'H ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4vl2ifp)); + if(log2str(t_rhs(tspt_hs_mod4vl2ifp)) != "{ hs := (\'ABBA\'H, \'BABA\'H) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4vl3ifp)); + if(log2str(t_rhs(tspt_hs_mod4vl3ifp)) != "{ hs := (\'ABBA\'H, \'BABA\'H, \'B12\'H) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4c1ifp)); + if(log2str(t_rhs(tspt_hs_mod4c1ifp)) != "{ hs := complement(\'ABBA\'H) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4c2ifp)); + if(log2str(t_rhs(tspt_hs_mod4c2ifp)) != "{ hs := complement(\'ABBA\'H, \'BABA\'H) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4c3ifp)); + if(log2str(t_rhs(tspt_hs_mod4c3ifp)) != "{ hs := complement(\'ABBA\'H, \'BABA\'H, \'B12\'H) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4paifp)); + if(log2str(t_rhs(tspt_hs_mod4paifp)) != "{ hs := \'ABC*123'H ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rhs(tspt_hs_mod4pqifp)); + if(log2str(t_rhs(tspt_hs_mod4pqifp)) != "{ hs := \'ABC?123\'H ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + } + + +//========================================================================= +// Control +//========================================================================= + +control { + log("***hexstring tests****"); + execute(tc_hs_ModulePar_emb()); +} + + +} // end of module diff --git a/Regression_Test_java/src/text2ttcn_nolegacy/integer_test.ttcn b/Regression_Test_java/src/text2ttcn_nolegacy/integer_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..7f501259ec5f4f1c03fc92e63b574cadbd2eddb1 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn_nolegacy/integer_test.ttcn @@ -0,0 +1,371 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +/* +//AUTHOR: ethbaat +//DATE: 2013-12-11 +//VERSION: 1.0 +*/ +module integer_test +{ + +//========================================================================= +// Import Part +//========================================================================= + +import from types2 all; +import from functions2 all; + +//========================================================================= +// Module Parameters +//========================================================================= +modulepar { + //integer + integer tsp_j := 0; + template integer tspt_i_v := 9; + template integer tspt_i_o := omit; + template integer tspt_i_a := *; + template integer tspt_i_q := ?; + template integer tspt_i_vl1 := (1); + template integer tspt_i_vl2 := (0,1); + template integer tspt_i_vl3 := (0,1,-1); + template integer tspt_i_c := complement(0,1,-1); + template integer tspt_i_r := (1..4); //range + + //templates overwritten: + template integer tspt_i1 := *; //overwritten by cfg for value 9 + template integer tspt_i2 := 4; //overwritten by cfg for omit + template integer tspt_i3 := 5; //overwritten by cfg for * + template integer tspt_i4 := *; //overwritten by cfg for ? + template integer tspt_i5 := ?; //overwritten by cfg for value list (0,1,-1) + template integer tspt_i6 := *; //overwritten by cfg for 9 ifpresent + template integer tspt_i7 := *; //overwritten by cfg for omit + template integer tspt_i8 := *; //overwritten by cfg for * + template integer tspt_i9 := *; //overwritten by cfg for ? + template integer tspt_i10 := *; //overwritten by cfg for value list (0,1,-1) + template integer tspt_i11 := *; //overwritten by cfg for complement +} + +//========================================================================= +// Data Types +//========================================================================= + +// Insert data type defintions here if applicable! +// You can use the data_type skeleton! + +//========================================================================= +// Signatures +//========================================================================= + +// Insert signature definitions here if applicable! +// You can use the signature skeleton! + +//========================================================================= +//Port Types +//========================================================================= + +// Insert port type defintions here if applicable! +// You can use the port_type skeleton! + +//========================================================================= +//Component Types +//========================================================================= + +// Insert component type defintions here if applicable! +// You can use the component_type skeleton! + +//========================================================================= +// Constants +//========================================================================= + +// Insert constants here if applicable! +// You can use the constant skeleton! + +//========================================================================= +// Templates +//========================================================================= + + template REC t_rec(template integer pl_i, template float pl_f, template charstring pl_cs, template bitstring pl_bs) := { + i:= pl_i, + f:= pl_f, + cs:=pl_cs, + bs:=pl_bs + } + + template integer t_i_v := 9; + template integer t_i_o := omit; + template integer t_i_a := *; + template integer t_i_q := ?; + template integer t_i_vl := (0,1,-1) + template integer t_i_c := complement(0,1,-1); +//========================================================================= +// Functions +//========================================================================= + +// Insert functions here if applicable! +// You can use the function skeleton! + +//========================================================================= +// Testcases +//========================================================================= + + //Goal: simple integer template is accepted as modulepar and it can be used + testcase tc_integer_NoModulePar() runs on MC { + if( log2str(t_i_v) != "9") { setverdict(fail)} else { setverdict(pass) } + if( log2str(t_i_o) != "omit") { setverdict(fail)}; + if( log2str(t_i_a) != "*") { setverdict(fail)}; + if( log2str(t_i_q) != "?") { setverdict(fail)}; + //log(t_i_vl); + if( log2str(t_i_vl) != "(0, 1, -1)") { setverdict(fail) }; + if( log2str(t_i_c) != "complement(0, 1, -1)") { setverdict(fail) }; + } + + testcase tc_integer_NoModulePar_Embedded() runs on MC { + log(t_rec(t_i_v,omit,omit,omit)); + if( log2str(t_rec(t_i_v,omit,omit,omit)) != "{ i := 9, f := omit, cs := omit, bs := omit }") { setverdict(fail)} else { setverdict(pass) } + log(t_rec(t_i_o,omit,omit,omit)); + if( log2str(t_rec(t_i_o,omit,omit,omit)) != "{ i := omit, f := omit, cs := omit, bs := omit }" ) { setverdict(fail)}; + log(t_rec(t_i_a,omit,omit,omit)); + if( log2str(t_rec(t_i_a,omit,omit,omit)) != "{ i := *, f := omit, cs := omit, bs := omit }" ) { setverdict(fail)}; + log(t_rec(t_i_q,omit,omit,omit)); + if( log2str(t_rec(t_i_q,omit,omit,omit)) != "{ i := ?, f := omit, cs := omit, bs := omit }") { setverdict(fail)}; + log( t_rec(t_i_vl,omit,omit,omit)); + if( log2str(t_rec(t_i_vl,omit,omit,omit)) != "{ i := (0, 1, -1), f := omit, cs := omit, bs := omit }") { setverdict(fail) }; + log( t_rec(t_i_c,omit,omit,omit)); + if( log2str(t_rec(t_i_c,omit,omit,omit)) != "{ i := complement(0, 1, -1), f := omit, cs := omit, bs := omit }") { setverdict(fail) }; + } + + testcase tc_integer_Embedded() runs on MC { + log(t_rec(tspt_i_v,omit,omit,omit)); + if( log2str(t_rec(tspt_i_v,omit,omit,omit)) != "{ i := 9, f := omit, cs := omit, bs := omit }") { setverdict(fail)} else { setverdict(pass) } + log(t_rec(tspt_i_o,omit,omit,omit)); + if( log2str(t_rec(tspt_i_o,omit,omit,omit)) != "{ i := omit, f := omit, cs := omit, bs := omit }" ) { setverdict(fail)}; + log(t_rec(tspt_i_a,omit,omit,omit)); + if( log2str(t_rec(tspt_i_a,omit,omit,omit)) != "{ i := *, f := omit, cs := omit, bs := omit }" ) { setverdict(fail)}; + log(t_rec(tspt_i_q,omit,omit,omit)); + if( log2str(t_rec(tspt_i_q,omit,omit,omit)) != "{ i := ?, f := omit, cs := omit, bs := omit }") { setverdict(fail)}; + log( t_rec(tspt_i_vl1,omit,omit,omit)); + if( log2str(t_rec(tspt_i_vl1,omit,omit,omit)) != "{ i := 1, f := omit, cs := omit, bs := omit }") { setverdict(fail) }; + log( t_rec(tspt_i_vl2,omit,omit,omit)); + if( log2str(t_rec(tspt_i_vl2,omit,omit,omit)) != "{ i := (0, 1), f := omit, cs := omit, bs := omit }") { setverdict(fail) }; + log( t_rec(tspt_i_vl3,omit,omit,omit)); + if( log2str(t_rec(tspt_i_vl3,omit,omit,omit)) != "{ i := (0, 1, -1), f := omit, cs := omit, bs := omit }") { setverdict(fail) }; + log( t_rec(tspt_i_c,omit,omit,omit)); + if( log2str(t_rec(tspt_i_c,omit,omit,omit)) != "{ i := complement(0, 1, -1), f := omit, cs := omit, bs := omit }") { setverdict(fail) }; + } + + testcase tc_integer_Embedded_value() runs on MC { + template REC vlt:=t_rec(tspt_i_v,omit,omit,omit); + var RoREC vl_good_values := {{ 9,omit,omit,omit}}; + var RoREC vl_wrong_values := { { 10,omit,omit,omit}, { 9,1.0,omit,omit},{ 9,1.0,"lambada",'01'B}, { 10000,1.0,"lambada",'01'B} }; + f_checkMatchingValues_rec( vlt, vl_good_values, vl_wrong_values ); + } + + testcase tc_integer_Embedded_complement() runs on MC { + template REC vlt:=t_rec(tspt_i_c,omit,omit,omit); + var RoREC vl_good_values := { {2,omit,omit,omit},{3,omit,omit,omit},{4,omit,omit,omit},{-2,omit,omit,omit}}; + var RoREC vl_wrong_values := { {1,omit,omit,omit},{-1,omit,omit,omit},{0,omit,omit,omit},{ 9,1.0,omit,omit},{ 9,1.0,"lambada",'01'B}, { 10000,1.0,"lambada",'01'B} }; + f_checkMatchingValues_rec( vlt, vl_good_values, vl_wrong_values ); + } + + testcase tc_integer_Embedded_range() runs on MC { + template REC vlt:=t_rec(tspt_i_r,omit,omit,omit); + var RoREC vl_good_values := {{1,omit,omit,omit},{2,omit,omit,omit},{3,omit,omit,omit},{4,omit,omit,omit}}; + var RoREC vl_wrong_values := { {-1,omit,omit,omit},{5,omit,omit,omit},{9,omit,omit,omit},{ 10,omit,omit,omit}, { 9,1.0,omit,omit},{ 9,1.0,"lambada",'01'B}, { 10000,1.0,"lambada",'01'B} }; + f_checkMatchingValues_rec( vlt, vl_good_values, vl_wrong_values ); + } + + //value + testcase tc_integer_value() runs on MC { + log( tspt_i_v ); + if( log2str(tspt_i_v) != "9" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {9} + var RoI vl_wrong_values := {-1000000, 0, -1,2,20001, 4294967296, 4294967296+1} + f_checkMatchingValues_int( tspt_i_v, vl_good_values, vl_wrong_values ); + } + + //omit + testcase tc_integer_omit() runs on MC { + log( tspt_i_o ); + if( log2str(tspt_i_o) != "omit" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {} + var RoI vl_wrong_values := { -100000, -1, 0,1,9, 4294967296, 4294967296+1} + f_checkMatchingValues_int( tspt_i_o, vl_good_values, vl_wrong_values ); + } + + //asterix + testcase tc_integer_a() runs on MC { + log( tspt_i_a ); + if( log2str(tspt_i_a) != "*" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {-100000, -1, 0,1,9, 4294967296, 4294967296+1} + var RoI vl_wrong_values := {} + f_checkMatchingValues_int( tspt_i_a, vl_good_values, vl_wrong_values ); + } + + testcase tc_integer_q() runs on MC { + log( tspt_i_q ); + if( log2str(tspt_i_q) != "?" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {-100000, -1, 0,1, 4294967296, 4294967296+1} + var RoI vl_wrong_values := {} + f_checkMatchingValues_int( tspt_i_q, vl_good_values, vl_wrong_values ); + } + //Goal: to test if integer template is modified from cfg file: + //value list + testcase tc_integer_vl() runs on MC { + log( tspt_i_vl3 ); + if( log2str(tspt_i_vl3) != "(0, 1, -1)" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {-1,0,1} + var RoI vl_wrong_values := {-1000000,2,9,20001} + f_checkMatchingValues_int(tspt_i_vl3, vl_good_values,vl_wrong_values); + } + + //goal: to test if template modulepar can be a right value + testcase tc_integer_vl_right_value() runs on MC { + var template integer vlt := tspt_i_vl3; + log( tspt_i_vl3 ); + if( log2str(vlt) != "(0, 1, -1)" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {-1,0,1} + var RoI vl_wrong_values := {-1000000,2,20001} + f_checkMatchingValues_int(vlt, vl_good_values,vl_wrong_values); + } + + //integer modulepar templates modified from cfg file: + + // for value + testcase tc_integer_modified4v() runs on MC { + log( tspt_i1 ); + if( log2str(tspt_i1) != "9" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {9} + var RoI vl_wrong_values := {-1000000, 0, -1,2,20001, 4294967296, 4294967296+1} + f_checkMatchingValues_int( tspt_i1, vl_good_values, vl_wrong_values ); + } + + //for omit + testcase tc_integer_modified4o() runs on MC { + log( tspt_i2 ); + if( log2str(tspt_i2) != "omit" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {} + var RoI vl_wrong_values := { -100000, -1, 0,1,9, 4294967296, 4294967296+1} + f_checkMatchingValues_int( tspt_i2, vl_good_values, vl_wrong_values ); + } + + //asterix + testcase tc_integer_modified4a() runs on MC { + log( tspt_i3 ); + if( log2str(tspt_i3) != "*" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {-100000, -1, 0,1,9, 4294967296, 4294967296+1} + var RoI vl_wrong_values := {} + f_checkMatchingValues_int( tspt_i3, vl_good_values, vl_wrong_values ); + } + + testcase tc_integer_modified4q() runs on MC { + log( tspt_i4 ); + if( log2str(tspt_i4) != "?" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {-100000, -1, 0,1,9, 4294967296, 4294967296+1} + var RoI vl_wrong_values := {} + f_checkMatchingValues_int( tspt_i4, vl_good_values, vl_wrong_values ); + } + + //value list + testcase tc_integer_modified4vl() runs on MC { + log( tspt_i5 ); + if( log2str(tspt_i5) != "(0, 1, -1)" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {-1,0,1} + var RoI vl_wrong_values := {-1000000,2,20001} + f_checkMatchingValues_int(tspt_i5, vl_good_values,vl_wrong_values); + } + + // for value + testcase tc_integer_modified4vifp() runs on MC { + log( tspt_i6 ); + if( log2str(tspt_i6) != "9 ifpresent" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {9} + var RoI vl_wrong_values := {-1000000, 0, -1,2,20001, 4294967296, 4294967296+1} + f_checkMatchingValues_int( tspt_i6, vl_good_values, vl_wrong_values ); + } + //for omit + testcase tc_integer_modified4oifp() runs on MC { + log( tspt_i7 ); + if( log2str(tspt_i7) != "omit ifpresent" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {} + var RoI vl_wrong_values := { -100000, -1, 0,1,9, 4294967296, 4294967296+1} + f_checkMatchingValues_int( tspt_i7, vl_good_values, vl_wrong_values ); + } + + //asterix + testcase tc_integer_modified4aifp() runs on MC { + log( tspt_i8 ); + if( log2str(tspt_i8) != "* ifpresent" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {-100000, -1, 0,1,9, 4294967296, 4294967296+1} + var RoI vl_wrong_values := {} + f_checkMatchingValues_int( tspt_i8, vl_good_values, vl_wrong_values ); + } + + testcase tc_integer_modified4qifp() runs on MC { + log( tspt_i9 ); + if( log2str(tspt_i9) != "? ifpresent" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {-100000, -1, 0,1,9, 4294967296, 4294967296+1} + var RoI vl_wrong_values := {} + f_checkMatchingValues_int( tspt_i9, vl_good_values, vl_wrong_values ); + } + + //value list + testcase tc_integer_modified4vlifp() runs on MC { + log( tspt_i10 ); + if( log2str(tspt_i10) != "(0, 1, -1) ifpresent" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {-1,0,1} + var RoI vl_wrong_values := {-1000000,2,20001} + f_checkMatchingValues_int(tspt_i10, vl_good_values,vl_wrong_values); + } + + //complement + testcase tc_integer_modified4c() runs on MC { + log( tspt_i11); + if( log2str(tspt_i11) != "complement(9)" ) { setverdict(fail) } else { setverdict(pass) } + var RoI vl_good_values := {-100000, -1, 0,1, 4294967296, 4294967296+1} + var RoI vl_wrong_values := {9} + f_checkMatchingValues_int( tspt_i11, vl_good_values, vl_wrong_values ); + } + + + +//========================================================================= +// Control +//========================================================================= +control { + log("****Integer tests****") + execute(tc_integer_NoModulePar()); + execute(tc_integer_NoModulePar_Embedded()); //with template record containing template argument + execute(tc_integer_Embedded()); + execute(tc_integer_Embedded_value()); + execute(tc_integer_Embedded_complement()); + execute(tc_integer_Embedded_range()); + execute(tc_integer_value()); + execute(tc_integer_omit()); + execute(tc_integer_a()); + execute(tc_integer_q()); + execute(tc_integer_vl()); + execute(tc_integer_vl_right_value()); + //integer templates modified from cfg file" + execute(tc_integer_modified4v()); + execute(tc_integer_modified4o()); + execute(tc_integer_modified4a()); + execute(tc_integer_modified4q()); + execute(tc_integer_modified4vl()); + execute(tc_integer_modified4vifp()); + execute(tc_integer_modified4oifp()); + execute(tc_integer_modified4aifp()); + execute(tc_integer_modified4qifp()); + execute(tc_integer_modified4vlifp()); + execute(tc_integer_modified4c()); +} + +} // end of module diff --git a/Regression_Test_java/src/text2ttcn_nolegacy/objid_test.ttcn b/Regression_Test_java/src/text2ttcn_nolegacy/objid_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..39c0856e5863f20ca9cbe9b3df9770d01f1996ae --- /dev/null +++ b/Regression_Test_java/src/text2ttcn_nolegacy/objid_test.ttcn @@ -0,0 +1,38 @@ +/****************************************************************************** + * 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 + * Baranyi, Botond + * + ******************************************************************************/ +module objid_test +{ + +type component CT {} + +testcase tc_objid() runs on CT { + const objid a := objid { itu_t(0) identified_organization(4) etsi(0) }; + var objid b; + @try { + string2ttcn(ttcn2string(a), b); + if (a != b) { + setverdict(fail, "string2ttcn() result: ", b, ", expected: ", a); + } + setverdict(pass); + } + @catch (err_msg) { + setverdict(fail, "string2ttcn() failed: ", err_msg); + } +} + +control { + log("*** objid tests ***"); + execute(tc_objid()) +} + +} diff --git a/Regression_Test_java/src/text2ttcn_nolegacy/octetstring_test.ttcn b/Regression_Test_java/src/text2ttcn_nolegacy/octetstring_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..4eb14793ccb46de4a0bdd78b9a6fc4ca07f629c0 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn_nolegacy/octetstring_test.ttcn @@ -0,0 +1,247 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +/* +//AUTHOR: +//DATE: +//VERSION: +*/ +module octetstring_test +{ + +//========================================================================= +// Import Part +//========================================================================= +import from types2 all; +//import from functions2 all; +//========================================================================= +// Module Parameters +//========================================================================= + +modulepar { + //modulepar octetstrings not modified from cfg file + template octetstring tspt_os_v := 'ABBA'O; + template octetstring tspt_os_o := omit; + template octetstring tspt_os_a := *; + template octetstring tspt_os_q := ?; + template octetstring tspt_os_al1 := * length(2); //length restriction + template octetstring tspt_os_al2 := * length(2..4); + template octetstring tspt_os_ql1 := ? length(2); + template octetstring tspt_os_ql2 := ? length(2..4); + template octetstring tspt_os_vl1 := ('ABBA'O); + template octetstring tspt_os_vl2 := ('ABBA'O,'baba'O); + template octetstring tspt_os_vl3 := ('ABBA'O,'baba'O,'B120'O); + template octetstring tspt_os_c1 := complement('ABBA'O) + template octetstring tspt_os_c2 := complement('ABBA'O,'baba'O); + template octetstring tspt_os_c3 := complement('ABBA'O,'baba'O,'B120'O); + //template octetstring tspt_os_r1 := ('A'O..'B'O); //range not allowed + //template octetstring tspt_os_r2 := ('a'O..'c'O); + template octetstring tspt_os_pa := 'abcd*1234'O + template octetstring tspt_os_pq := 'abcd?1234'O + + template octetstring tspt_os_vifp := 'ABBA'O ifpresent; + template octetstring tspt_os_oifp := omit ifpresent; + template octetstring tspt_os_aifp := * ifpresent; + template octetstring tspt_os_qifp := ? ifpresent; + template octetstring tspt_os_al1ifp := * length(2) ifpresent; //length restriction + template octetstring tspt_os_al2ifp := * length(2..4) ifpresent; + template octetstring tspt_os_ql1ifp := ? length(2) ifpresent; + template octetstring tspt_os_ql2ifp := ? length(2..4) ifpresent; + template octetstring tspt_os_vl1ifp := ('ABBA'O) ifpresent; + template octetstring tspt_os_vl2ifp := ('ABBA'O,'baba'O) ifpresent; + template octetstring tspt_os_vl3ifp := ('ABBA'O,'baba'O,'B120'O) ifpresent; + template octetstring tspt_os_c1ifp := complement('ABBA'O) ifpresent + template octetstring tspt_os_c2ifp := complement('ABBA'O,'baba'O) ifpresent; + template octetstring tspt_os_c3ifp := complement('ABBA'O,'baba'O,'B120'O) ifpresent; + //template octetstring tspt_os_r1ifp := ('A'O..'B'O) ifpresent; //range not allowed + //template octetstring tspt_os_r2ifp := ('a'O..'c'O) ifpresent; //range not allowed + template octetstring tspt_os_paifp := 'abcd*1234'O ifpresent + template octetstring tspt_os_pqifp := 'abcd?1234'O ifpresent + + //modulepar octetstrings modified from cfg file + template octetstring tspt_os_mod4v := * //after mod:'ABBA'; + template octetstring tspt_os_mod4o := * //omit; + template octetstring tspt_os_mod4a := 'AB'O //*; + template octetstring tspt_os_mod4q := ''O //?; + template octetstring tspt_os_mod4al1 := 'AB'O //* length(2); //length restriction + template octetstring tspt_os_mod4al2 := '1234'O //mofified for: * length(2..4); + template octetstring tspt_os_mod4ql1 := '1234'O //mofified for:? length(2); + template octetstring tspt_os_mod4ql2 := '1234'O //mofified for:? length(2..4); + template octetstring tspt_os_mod4vl1 := ('ABBA'O) //TODO: Adam //It should be mofified for: ('ABBA'O); + template octetstring tspt_os_mod4vl2 := '1234'O //mofified for:('ABBA'O,'baba'O); + template octetstring tspt_os_mod4vl3 := '1234'O //mofified for:('ABBA'O,'baba'O,'B12'O); + template octetstring tspt_os_mod4c1 := '1234'O //mofified for:complement('ABBA') + template octetstring tspt_os_mod4c2 := '1234'O //mofified for:complement('ABBA','baba'); + template octetstring tspt_os_mod4c3 := '1234'O //mofified for:complement('ABBA','baba','Bye'); + template octetstring tspt_os_mod4r1 := '1234'O //mofified for:('A'..'B'); //range + template octetstring tspt_os_mod4r2 := '1234'O //mofified for:('a'..'c'); + template octetstring tspt_os_mod4pa := '1234'O //mofified for:pattern 'abc*123' + template octetstring tspt_os_mod4pq := '1234'O //mofified for:pattern 'abc?123' + + template octetstring tspt_os_mod4vifp := '1234'O //mofified for:'ABBA' ifpresent; + template octetstring tspt_os_mod4oifp := '1234'O //mofified for:omit ifpresent; + template octetstring tspt_os_mod4aifp := '1234'O //mofified for:* ifpresent; + template octetstring tspt_os_mod4qifp := '1234'O //mofified for:? ifpresent; + template octetstring tspt_os_mod4al1ifp := '1234'O //mofified for:* length(2) ifpresent; //length restriction + template octetstring tspt_os_mod4al2ifp := '1234'O //mofified for:* length(2..4) ifpresent; + template octetstring tspt_os_mod4ql1ifp := '1234'O //mofified for:? length(2) ifpresent; + template octetstring tspt_os_mod4ql2ifp := '1234'O //mofified for:? length(2..4) ifpresent; + template octetstring tspt_os_mod4vl1ifp := ('ABBA'O) ifpresent //TODO: Adam //It should be mofified for: ('ABBA'O); + template octetstring tspt_os_mod4vl2ifp := '1234'O //mofified for:('ABBA','baba') ifpresent; + template octetstring tspt_os_mod4vl3ifp := '1234'O //mofified for:('ABBA','baba','B12') ifpresent; + template octetstring tspt_os_mod4c1ifp := '1234'O //mofified for:complement('ABBA') ifpresent + template octetstring tspt_os_mod4c2ifp := '1234'O //mofified for:complement('ABBA','baba') ifpresent; + template octetstring tspt_os_mod4c3ifp := '1234'O //mofified for:complement('ABBA','baba','Bye') ifpresent; + //template octetstring tspt_os_mod4r1ifp := '1234'O //mofified for:('A'O..'B'O) ifpresent; //range + //template octetstring tspt_os_mod4r2ifp := '1234'O //mofified for:('a'O..'c'O) ifpresent; + template octetstring tspt_os_mod4paifp := '1234'O //mofified for:pattern 'abc*xyz'O ifpresent + template octetstring tspt_os_mod4pqifp := '1234'O //mofified for:pattern 'abc?xyz'O ifpresent + +} + +//========================================================================= +// Data Types +//========================================================================= + +// Insert data type defintions here if applicable! +// You can use the data_type skeleton! + +//========================================================================= +// Signatures +//========================================================================= + +// Insert signature definitions here if applicable! +// You can use the signature skeleton! + +//========================================================================= +//Port Types +//========================================================================= + +// Insert port type defintions here if applicable! +// You can use the port_type skeleton! + +//========================================================================= +//Component Types +//========================================================================= + +// Insert component type defintions here if applicable! +// You can use the component_type skeleton! + +//========================================================================= +// Constants +//========================================================================= + +// Insert constants here if applicable! +// You can use the constant skeleton! + +//========================================================================= +// Templates +//========================================================================= + +// Insert templates here if applicable! +// You can use the template skeleton! + +//========================================================================= +// Altsteps +//========================================================================= + +// Insert altsteps here if applicable! +// You can use the altstep skeleton! + +//========================================================================= +// Functions +//========================================================================= + +// Insert functions here if applicable! +// You can use the function skeleton! + +//========================================================================= +// Testcases +//========================================================================= + + testcase tc_os_ModulePar_emb() runs on MC { + log(t_ros(tspt_os_mod4v)); + if(log2str(t_ros(tspt_os_mod4v)) != "{ os := \'ABBA\'O }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4o)); + if(log2str(t_ros(tspt_os_mod4o)) != "{ os := omit }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4a)); + if(log2str(t_ros(tspt_os_mod4a)) != "{ os := * }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4q)); + if(log2str(t_ros(tspt_os_mod4q)) != "{ os := ? }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4al1)); + if(log2str(t_ros(tspt_os_mod4al1)) != "{ os := * length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4al2)); + if(log2str(t_ros(tspt_os_mod4al2)) != "{ os := * length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4ql1)); + if(log2str(t_ros(tspt_os_mod4ql1)) != "{ os := ? length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4ql2)); + if(log2str(t_ros(tspt_os_mod4ql2)) != "{ os := ? length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(">",t_ros(tspt_os_mod4vl1),"<"); + if(log2str(t_ros(tspt_os_mod4vl1)) != "{ os := \'ABBA\'O }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4vl2)); + if(log2str(t_ros(tspt_os_mod4vl2)) != "{ os := (\'ABBA\'O, \'BABA\'O) }") {setverdict(fail)} else {setverdict(pass)}; + log(">{ os := (\'ABBA\'O, \'BABA\'O) }<"); + log(t_ros(tspt_os_mod4vl3)); + if(log2str(t_ros(tspt_os_mod4vl3)) != "{ os := (\'ABBA\'O, \'BABA\'O, \'B120\'O) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4c1)); + if(log2str(t_ros(tspt_os_mod4c1)) != "{ os := complement(\'ABBA\'O) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4c2)); + if(log2str(t_ros(tspt_os_mod4c2)) != "{ os := complement(\'ABBA\'O, \'BABA\'O) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4c3)); + if(log2str(t_ros(tspt_os_mod4c3)) != "{ os := complement(\'ABBA\'O, \'BABA\'O, \'B120\'O) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4pa)); + if(log2str(t_ros(tspt_os_mod4pa)) != "{ os := \'ABCD*1234\'O }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4pq)); + if(log2str(t_ros(tspt_os_mod4pq)) != "{ os := \'ABCD?1234\'O }") {setverdict(fail)} else {setverdict(pass)}; + //== + log(t_ros(tspt_os_mod4vifp)); + if(log2str(t_ros(tspt_os_mod4vifp)) != "{ os := \'ABBA\'O ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4oifp)); + if(log2str(t_ros(tspt_os_mod4oifp)) != "{ os := omit ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4aifp)); + if(log2str(t_ros(tspt_os_mod4aifp)) != "{ os := * ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4qifp)); + if(log2str(t_ros(tspt_os_mod4qifp)) != "{ os := ? ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4al1ifp)); + if(log2str(t_ros(tspt_os_mod4al1ifp)) != "{ os := * length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4al2ifp)); + if(log2str(t_ros(tspt_os_mod4al2ifp)) != "{ os := * length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4ql1ifp)); + if(log2str(t_ros(tspt_os_mod4ql1ifp)) != "{ os := ? length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4ql2ifp)); + if(log2str(t_ros(tspt_os_mod4ql2ifp)) != "{ os := ? length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4vl1ifp)); + if(log2str(t_ros(tspt_os_mod4vl1ifp)) != "{ os := \'ABBA\'O ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4vl2ifp)); + if(log2str(t_ros(tspt_os_mod4vl2ifp)) != "{ os := (\'ABBA\'O, \'BABA\'O) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4vl3ifp)); + if(log2str(t_ros(tspt_os_mod4vl3ifp)) != "{ os := (\'ABBA\'O, \'BABA\'O, \'B120\'O) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4c1ifp)); + if(log2str(t_ros(tspt_os_mod4c1ifp)) != "{ os := complement(\'ABBA\'O) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4c2ifp)); + if(log2str(t_ros(tspt_os_mod4c2ifp)) != "{ os := complement(\'ABBA\'O, \'BABA\'O) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4c3ifp)); + if(log2str(t_ros(tspt_os_mod4c3ifp)) != "{ os := complement(\'ABBA\'O, \'BABA\'O, \'B120\'O) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4paifp)); + if(log2str(t_ros(tspt_os_mod4paifp)) != "{ os := \'ABCD*1234'O ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_ros(tspt_os_mod4pqifp)); + if(log2str(t_ros(tspt_os_mod4pqifp)) != "{ os := \'ABCD?1234\'O ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + } + + //========================================================================= + // Control + //========================================================================= + control { + log("***octetstring tests****"); + execute(tc_os_ModulePar_emb()); + } + +} // end of module diff --git a/Regression_Test_java/src/text2ttcn_nolegacy/record_test.ttcn b/Regression_Test_java/src/text2ttcn_nolegacy/record_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..d5bfcc60d75bf39b04324af5771445b10f296772 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn_nolegacy/record_test.ttcn @@ -0,0 +1,1270 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +/* +//AUTHOR: +//DATE: +//VERSION: +*/ +module record_test +{ + +//========================================================================= +// Import Part +//========================================================================= +import from types2 all; +import from functions2 all; + +//========================================================================= +// Module Parameters +//========================================================================= +modulepar { + + //============= Type: REC ========================================= + // + template REC tspt_rec_mod4empty := {} + template RREC tspt_rrec_mod4empty := { rec:={} } + template REC tspt_rec_v := {1,1.0,"ABBA",'0100'B} + template REC tspt_rec_a := *; + template REC tspt_rec_q := ?; + template REC tspt_rec_o := omit; + template REC tspt_rec_v_omitx4 := {omit,omit,omit,omit} ; + template REC tspt_rec_r := ({1,1.0,"ABBA",'0100'B}, {2,2.0,"baba",'01001'B}) + template REC tspt_rec_vr := {1,1.0,("ABBA","baba"),'0100'B} + template REC tspt_rec_c := complement( {1,1.0,("ABBA","baba"),'0100'B} ) + + template REC tspt_rec_mod4v := {-,-,-,omit} + template REC tspt_rec_mod4a := {-,-,-,omit} + template REC tspt_rec_mod4q := {-,-,-,omit} + template REC tspt_rec_mod4o := {-,-,-,omit} + template REC tspt_rec_mod4vl2x2 := omit + template REC tspt_rec_mod4omitx4 := *; + template REC tspt_rec_mod4r := {omit,omit,omit,omit} ; + template REC tspt_rec_mod4vr := {omit,omit,omit,omit} ; + template REC tspt_rec_mod4c := complement( {1,1.0,("ABBA","baba"),'0100'B} ) + + template REC tspt_rec_mod4vl := {9,1.0,"NABBA",'0100'B}; //overwritten by cfg + template REC tspt_rec_mod4vq:= { i := ?, f := 1.0, cs:= pattern "abc*xyz", bs:= '01'B } // not overwritten by cfg + + template REC tspt_rec_mod4cspattern:= { i := 2, f := 1.0, cs:= "ABBA",bs:= '01'B} //overwritten by cfg + template REC tspt_rec_mod4cspatternbs:= { i := ?, f := 1.0, cs:= "ABBA",bs:= '01'B} //overwritten by cfg + template REC tspt_rec_mod4cspatternbs2:= { i := ?, f := 1.0, cs:= "ABBA",bs:= '01'B} //overwritten by cfg + template REC tspt_mod4pattern_mixed_order:= { i := ?, f := 1.0, cs:= "ABBA",bs:= '01'B} //overwritten by cfg + + //=== + template REC tspt_rec_mod4emptyifp := {} ifpresent + template RREC tspt_rrec_mod4emptyifp := { rec:= {} ifpresent } + template REC tspt_rec_mod4vifp := {omit,omit,omit,omit} ; + template REC tspt_rec_mod4aifp := {1,1.0,"ABBA",'0100'B} + template REC tspt_rec_mod4qifp := {1,1.0,"ABBA",'0100'B} + template REC tspt_rec_mod4oifp := {1,1.0,"ABBA",'0100'B} + template REC tspt_rec_mod4vl2x2ifp := omit + template REC tspt_rec_mod4omitx4ifp := *; + template REC tspt_rec_mod4rifp := {omit,omit,omit,omit} ; + template REC tspt_rec_mod4vrifp := {omit,omit,omit,omit} ; + template REC tspt_rec_mod4vrifp2 := {omit,omit,omit,omit} ; + template REC tspt_rec_mod4cifp := complement( {1,1.0,("ABBA","baba"),'0100'B} ) + + template REC tspt_rec_mod4vlifp := {9,1.0 ifpresent,"NABBA",'0100'B ifpresent}; //overwritten by cfg + template REC tspt_rec_mod4vqifp := { i := ?, f := 1.0, cs:= pattern "abc*xyz", bs:= '01'B } // not overwritten by cfg + + template REC tspt_rec_mod4cspatternifp := { i := 2, f := 1.0 ifpresent, cs:= "ABBA",bs:= '01'B} //overwritten by cfg + template REC tspt_rec_mod4cspatternbsifp:= { i := ?, f := 1.0 ifpresent, cs:= "ABBA",bs:= '01'B} //overwritten by cfg + template REC tspt_rec_mod4cspatternbs2ifp:= { i := ?, f := 1.0 ifpresent, cs:= "ABBA",bs:= '01'B} //overwritten by cfg + template REC tspt_mod4pattern_mixed_orderifp:= { i := ?, f := 1.0 ifpresent, cs:= "ABBA",bs:= '01'B} //overwritten by cfg + + template REC tspt_rec_empty := { } + template REC tspt_rec_emptyifp := { } ifpresent + //template REC tspt_rec_a := * + + template RREC tspt_rrec_empty := { rec := {} } + template RREC tspt_rrec_emptyifp := { rec:= {} ifpresent } + template RREC tspt_rrec_a := { rec := * } + //=== + //not accepted: + /* template REC tspt_rec_mod4vq(in template integer pl_i1) := { + i := pl_i1, + f := 1.0, + cs:= pattern "abc*xyz" + bs:= '01'B + } // cannot be overwritten by cfg + */ + //Type:REC2 + template REC2 tspt_REC2_1 := { b := true ifpresent, cs := omit, i:= omit } //not overwritten by cfg + template REC2 tspt_REC2_2 := { b := true ifpresent, cs := omit, i:= 2 ifpresent } //overwritten by cfg, but not really + template REC2 tspt_REC2_3 := { b := true ifpresent, cs := omit, i:= omit } //overwritten by cfg, b:= * + template REC2 tspt_REC2_4 := { b := true ifpresent, cs := omit, i:= omit } //overwritten by cfg, b:= * + template REC2 tspt_REC2_5 := { b := true ifpresent, cs := omit, i:= omit } //overwritten by cfg, +} + + +//========================================================================= +// Templates +//========================================================================= +template REC t_rec_v_par( template integer pl_i1) := { + i := pl_i1, + f := 1.0, + cs:= pattern "abc*xyz", + bs:= '0100'B +} // not overwritten by cfg + +template REC tspt_rec_mod4vq_BUG(template integer pl_i1) := { + i := pl_i1, + f := 1.0, + cs:= pattern "abc*xyz", + bs:= '01'B +} ; // not overwritten by cfg + +//========================================================================= +// Altsteps +//========================================================================= + +// Insert altsteps here if applicable! +// You can use the altstep skeleton! + +//========================================================================= +// Functions +//========================================================================= + +function f_string2ttcn_REC_t(in charstring pl_rec, in template REC pl_expected_result, in boolean pl_ok_expected := true) { + var template REC vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_rec,vl_result); + setverdict(pass) + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + + log(pl_expected_result); + log(vl_result); + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_rec, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("string2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } +} + +function f_string2ttcn_REC_t_str(in charstring pl_rec, in charstring pl_expected_result) { + var template REC vl_result; + @try { + string2ttcn(pl_rec,vl_result); + setverdict(pass) + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + log("Expected result: ", pl_expected_result); + log("Result: ", vl_result); + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +//template string -> variable conversion +//expected result: error +function f_string2ttcn_REC_v(in charstring pl_cs, in template REC pl_expected_result, in boolean pl_ok_expected) { + var REC vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("string2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ",pl_expected_result ); + log("Result: ", vl_result); +} + +//this function is the same but uses +function f_string2ttcn_REC_v_str(in charstring pl_cs, charstring pl_expected_result, in boolean pl_ok_expected) { + var REC vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("str2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ", pl_expected_result ); + log("Result: ", vl_result); +} + +//rrec + +function f_string2ttcn_RREC_t(in charstring pl_rrec, in template RREC pl_expected_result, in boolean pl_ok_expected := true) { + var template RREC vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_rrec,vl_result); + setverdict(pass) + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_rrec, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("string2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + } + log(pl_expected_result); + log(vl_result); +} + +function f_cs_transparent_in(in charstring pl_rrec) return charstring { + return pl_rrec; +} + +function f_cs_transparent_inout(in charstring pl_rrec) return charstring { + return pl_rrec; +} + +function f_cs_transparent_inout_t(in template charstring pl_rrec) return template charstring { + return pl_rrec; +} + +function f_rrec_transparent_in_t(in template RREC pl_rrec) return template RREC { + return pl_rrec; +} + +function f_rrec_transparent_inout_t(inout template RREC pl_rrec) return template RREC { + return pl_rrec; +} + +//with input argumentum of string2ttcn is a reurn value of a function +function f_string2ttcn_RREC_t_retval_in(in charstring pl_rrec, in template RREC pl_expected_result) { + var template RREC vl_result; + @try { + string2ttcn(f_cs_transparent_in(pl_rrec),vl_result); + setverdict(pass) + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + log(pl_expected_result); + log(vl_result); + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +function f_string2ttcn_RREC_t_retval_inout(in charstring pl_rrec, in template RREC pl_expected_result) { + var template RREC vl_result; + @try { + string2ttcn(f_cs_transparent_inout(pl_rrec),vl_result); + setverdict(pass) + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + log(pl_expected_result); + log(vl_result); + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +function f_string2ttcn_RREC_t_str(in charstring pl_rec, in charstring pl_expected_result) { + var template RREC vl_result; + @try { + string2ttcn(pl_rec,vl_result); + setverdict(pass) + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + log("Expected result: ", pl_expected_result); + log("Result: ", vl_result); + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +//template string -> variable conversion +//expected result: error +function f_string2ttcn_RREC_v(in charstring pl_cs, in template RREC pl_expected_result, in boolean pl_ok_expected) { + var RREC vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("string2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ",pl_expected_result ); + log("Result: ", vl_result); +} + +//this function is the same but uses +function f_string2ttcn_RREC_v_str(in charstring pl_cs, charstring pl_expected_result, in boolean pl_ok_expected) { + var RREC vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("str2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ", pl_expected_result ); + log("Result: ", vl_result); +} + + +//========================================================================= +// Testcases +//========================================================================= + +testcase tc_rec_v() runs on MC { + var RoREC vl_good_values := { {1,1.0,"ABBA",'0100'B} } + var RoREC vl_wrong_values := { {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, {1,1.0,"ABBA",'0101'B}, {2,-99.9,"ABBA",'0100'B} } + f_checkMatchingValues_rec(tspt_rec_v, vl_good_values,vl_wrong_values); +} + +testcase tc_rec_a() runs on MC { + var RoREC vl_good_values := { {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, {1,1.0,"ABBA",'0100'B}, {2,-99.9,"ABBA",'0100'B} } + f_checkMatchingGoodValues_rec(tspt_rec_a, vl_good_values); +} + +testcase tc_rec_q() runs on MC { + var RoREC vl_good_values := { {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, {1,1.0,"ABBA",'0100'B}, {2,-99.9,"ABBA",'0100'B} } + f_checkMatchingGoodValues_rec(tspt_rec_q, vl_good_values); +} + +testcase tc_rec_o() runs on MC { + var RoREC vl_good_values := {}; + var RoREC vl_wrong_values := {{omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit},{3,1.0,"ABBA",'0100'B},{3,omit,omit,omit},{omit,1.0,omit,omit},{omit,omit,"anything",omit},{omit,omit,omit,'01'B} } + f_checkMatchingValues_rec(tspt_rec_o, vl_good_values, vl_wrong_values); +} + + +testcase tc_rec_v_omitx4() runs on MC { + var RoREC vl_good_values := {{omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit} }; + var RoREC vl_wrong_values := {{3,1.0,"ABBA",'0100'B},{3,omit,omit,omit},{omit,1.0,omit,omit},{omit,omit,"anything",omit},{omit,omit,omit,'01'B} } + f_checkMatchingValues_rec(tspt_rec_v_omitx4, vl_good_values, vl_wrong_values); +} + +testcase tc_rec_r() runs on MC { + var RoREC vl_good_values := {{1,1.0,"ABBA",'0100'B}, {2,2.0,"baba",'01001'B}} + var RoREC vl_wrong_values := { + {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, + {2,2.0,"ABBA",'0100'B},{3,1.0,"ABBA",'0100'B},{3,omit,omit,omit}, + {omit,1.0,omit,omit},{omit,omit,"anything",omit},{omit,omit,omit,'01'B} + } + f_checkMatchingValues_rec(tspt_rec_r, vl_good_values, vl_wrong_values); +} + + + +testcase tc_rec_vr() runs on MC { + var RoREC vl_good_values := {{1,1.0,"ABBA",'0100'B}, {1,1.0,"baba",'0100'B}} + var RoREC vl_wrong_values := { + {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, + {2,2.0,"ABBA",'0100'B},{3,1.0,"ABBA",'0100'B},{3,omit,omit,omit}, + {omit,1.0,omit,omit},{omit,omit,"anything",omit},{omit,omit,omit,'01'B} + } + f_checkMatchingValues_rec(tspt_rec_vr, vl_good_values, vl_wrong_values); +} + +testcase tc_rec_v_par() runs on MC { + var RoREC vl_good_values := { {1,1.0,"abcAxyz",'0100'B}, {1,1.0,"abcxyz",'0100'B},{1,1.0,"abc5xyz",'0100'B} } + var RoREC vl_wrong_values := { {3,1.0,"abcAxyz",'0100'B}, {1,2.0,"abdXxyz",'0100'B}} + f_checkMatchingValues_rec(t_rec_v_par(1), vl_good_values, vl_wrong_values); +} + +testcase tc_rec_c() runs on MC { + var RoREC vl_good_values := { + {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, + {3,1.0,"ABBA",'0100'B},{3,omit,omit,omit},{omit,1.0,omit,omit},{omit,omit,"anything",omit},{omit,omit,omit,'01'B} } + var RoREC vl_wrong_values := {{1,1.0,"ABBA",'0100'B}, {1,1.0,"baba",'0100'B}} + f_checkMatchingValues_rec(tspt_rec_c, vl_good_values, vl_wrong_values); +} + +//========================== +//=== modified templates === +//========================== +//==== Goal: to test if record template is modified from cfg file:=== +// tc_rec_mod4* + +testcase tc_rec_mod4v() runs on MC { + var RoREC vl_good_values := { {1,1.0,"ABBA",'0100'B} } + var RoREC vl_wrong_values := { {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, {1,1.0,"ABBA",'0101'B}, {2,-99.9,"ABBA",'0100'B} } + f_checkMatchingValues_rec(tspt_rec_mod4v, vl_good_values,vl_wrong_values); +} + +testcase tc_rec_mod4a() runs on MC { + var RoREC vl_good_values := { {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, {1,1.0,"ABBA",'0100'B}, {2,-99.9,"ABBA",'0100'B} } + f_checkMatchingGoodValues_rec(tspt_rec_mod4a, vl_good_values); +} + +testcase tc_rec_mod4q() runs on MC { + var RoREC vl_good_values := { {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, {1,1.0,"ABBA",'0100'B}, {2,-99.9,"ABBA",'0100'B} } + f_checkMatchingGoodValues_rec(tspt_rec_mod4q, vl_good_values); +} + +testcase tc_rec_mod4o() runs on MC { + var RoREC vl_good_values := {}; + var RoREC vl_wrong_values := {{omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit},{3,1.0,"ABBA",'0100'B},{3,omit,omit,omit},{omit,1.0,omit,omit},{omit,omit,"anything",omit},{omit,omit,omit,'01'B} } + f_checkMatchingValues_rec(tspt_rec_mod4o, vl_good_values, vl_wrong_values); +} + +//goal: to test if template modulepar can be a right value + all fields are omit +testcase tc_rec_mod4omitx4() runs on MC { + var template REC vlt := tspt_rec_mod4omitx4; + var RoREC vl_good_values := {{omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}}; + var RoREC vl_wrong_values := {{1,1.0,"ABBA",'0100'B}}; + f_checkMatchingValues_rec(vlt, vl_good_values, vl_wrong_values); +} +testcase tc_rec_mod4r() runs on MC { + var RoREC vl_good_values := {{1,1.0,"ABBA",'0100'B}, {2,2.0,"baba",'01001'B}} + var RoREC vl_wrong_values := { + {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, + {2,2.0,"ABBA",'0100'B},{3,1.0,"ABBA",'0100'B},{3,omit,omit,omit}, + {omit,1.0,omit,omit},{omit,omit,"anything",omit},{omit,omit,omit,'01'B} + } + f_checkMatchingValues_rec(tspt_rec_mod4r, vl_good_values, vl_wrong_values); +} + +testcase tc_rec_mod4vr() runs on MC { + var RoREC vl_good_values := {{1,1.0,"ABBA",'0100'B}, {1,1.0,"baba",'0100'B}} + var RoREC vl_wrong_values :={ + {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, + {2,2.0,"ABBA",'0100'B},{3,1.0,"ABBA",'0100'B},{3,omit,omit,omit}, + {omit,1.0,omit,omit},{omit,omit,"anything",omit},{omit,omit,omit,'01'B} } + f_checkMatchingGoodValues_rec(tspt_rec_mod4vr, vl_good_values); + +} + +testcase tc_rec_mod4c() runs on MC { + var RoREC vl_good_values := { + {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, + {3,1.0,"ABBA",'0100'B},{3,omit,omit,omit},{omit,1.0,omit,omit},{omit,omit,"anything",omit},{omit,omit,omit,'01'B} } + var RoREC vl_wrong_values := {{1,1.0,"ABBA",'0100'B}, {1,1.0,"baba",'0100'B}} + f_checkMatchingValues_rec(tspt_rec_mod4c, vl_good_values, vl_wrong_values); +} + +testcase tc_rec_mod4vl2x2() runs on MC { + var RoREC vl_good_values := { {1,1.0,"ABBA",'0100'B}, {1,1.0,"ABBA",'01001'B},{1,1.0,"baba",'0100'B},{1,1.0,"baba",'01001'B} } + var RoREC vl_wrong_values := {{3,1.0,"ABBA",'0100'B},{1,2.0,"baba",'0100'B}, {1,1.0,"wrong",'0100'B},{1,1.0,"ABBA",'010010'B},{9,9.9,"wrong",'010010'B} } + f_checkMatchingValues_rec(tspt_rec_mod4vl2x2, vl_good_values, vl_wrong_values); +} + +//modified template: {1,1.0,("ABBA","baba"),'0100'B} +testcase tc_rec_mod4vl() runs on MC { + var template REC vlt := tspt_rec_mod4vl; + var RoREC vl_good_values := {{1,1.0,"ABBA",'0100'B},{1,1.0,"baba",'0100'B} } + var RoREC vl_wrong_values := {{2,1.1,"ABBA",'0100'B}, {2,1.0,"ABBA",'01001'B}, {2,1.0,"blabla",'01001'B}} + f_checkMatchingValues_rec(vlt, vl_good_values, vl_wrong_values); +} + +//modified for { i := ?, f := 1.0, cs:= pattern "abc*xyz", bs:= '0100'B } +testcase tc_rec_mod4vq() runs on MC { + var template REC vlt := tspt_rec_mod4vq; + var RoREC vl_good_values := {{1,1.0,"abc xyz",'0100'B},{112345678,1.0,"abcXxyz",'0100'B} } + var RoREC vl_wrong_values := {{2,1.0,"ABBA",'01'B}, {2,1.0,"ABBA",'0100'B},{3,4.0,"abcxyzz",'011'B}} + f_checkMatchingValues_rec(vlt, vl_good_values, vl_wrong_values); +} + + +//goal: to test modification like this: { ?, -,pattern "abc*xyz", '0100'B} +testcase tc_rec_mod4cspattern() runs on MC { + var RoREC vl_good_values := { {1,1.0,"abcAxyz",'0100'B}, {9,1.0,"abcxyz",'0100'B},{1,1.0,"abc5xyz",'0100'B}, {omit,1.0,"abc5xyz",'0100'B} } + var RoREC vl_wrong_values := { {1,1.0,"ABBA",'0100'B}, {1,2.0,"abdXxyz",'0100'B},{2,3.0,"oh",'00'B}} + f_checkMatchingValues_rec(tspt_rec_mod4cspattern, vl_good_values, vl_wrong_values); +} + +//template as argument of altstep + +altstep as_rec(template REC pl_rec, in RoREC pl_good_values, in RoREC pl_wrong_values, timer t) { + + [] t.timeout { + f_checkMatchingValues_rec(pl_rec, pl_good_values, pl_wrong_values); + } +} + +//test if altstep is cooperate with modulepar +testcase tc_rec_mod4cspattern_as() runs on MC { + var RoREC vl_good_values := { {1,1.0,"abcAxyz",'0100'B}, {9,1.0,"abcxyz",'0100'B},{1,1.0,"abc5xyz",'0100'B}, {omit,1.0,"abc5xyz",'0100'B} } + var RoREC vl_wrong_values := { {1,1.0,"ABBA",'0100'B}, {1,2.0,"abdXxyz",'0100'B},{2,3.0,"oh",'00'B}}; + timer t:=0.1; t.start; + as_rec(tspt_rec_mod4cspattern, vl_good_values,vl_wrong_values, t); + if( log2str(tspt_rec_mod4cspattern) != "{ i := *, f := 1.000000, cs := pattern \"abc*xyz\", bs := '0100'B }") { setverdict(fail) } +} + +//modify template field: +testcase tc_rec_mod4cspatternbs() runs on MC { + var RoREC vl_good_values := { {1,1.0,"abcAxyz",'0100'B}, {9,1.0,"abcxyz",'0100'B},{1,1.0,"abc5xyz",'0100'B} } + var RoREC vl_wrong_values := { {1,1.0,"ABBA",'0100'B}, {1,2.0,"abdXxyz",'0100'B},{2,3.0,"oh",'00'B}} + f_checkMatchingValues_rec(tspt_rec_mod4cspatternbs, vl_good_values, vl_wrong_values); + if( log2str(tspt_rec_mod4cspatternbs) != "{ i := ?, f := 1.000000, cs := pattern \"abc*xyz\", bs := '0100'B }") { setverdict(fail) } +} + +//value list notation test: +//tspt_rec_mod4cspatternbs2: { i := ?, f := 1.0,cs:= "ABBA", bs:= '01'B} -> { i := ?, f := 1.0,cs:= pattern "abc*xyz", bs:= '01'B} +testcase tc_rec_mod4cspatternbs2() runs on MC { + var RoREC vl_good_values := { {1,1.0,"abcAxyz",'0100'B}, {9,1.0,"abcxyz",'0100'B},{1,1.0,"abc5xyz",'0100'B} } + var RoREC vl_wrong_values := { {1,1.0,"ABBA",'0100'B}, {1,2.0,"abdXxyz",'0100'B},{2,3.0,"oh",'00'B}} + f_checkMatchingValues_rec(tspt_rec_mod4cspatternbs2, vl_good_values,vl_wrong_values ); + if( log2str(tspt_rec_mod4cspatternbs2) != "{ i := ?, f := 1.000000, cs := pattern \"abc*xyz\", bs := '0100'B }") { setverdict(fail) } +} + +//mixed fields in cfg file: +testcase tc_mod4pattern_mixed_order() runs on MC { + var RoREC vl_good_values := { {1,1.0,"abcAxyz",'0100'B}, {9,1.0,"abcxyz",'0100'B},{1,1.0,"abc5xyz",'0100'B} } + var RoREC vl_wrong_values := { {1,1.0,"ABBA",'0100'B}, {1,2.0,"abdXxyz",'0100'B},{2,3.0,"oh",'00'B}} + f_checkMatchingGoodValues_rec(tspt_mod4pattern_mixed_order, vl_good_values); + f_checkMatchingWrongValues_rec(tspt_mod4pattern_mixed_order, vl_wrong_values); + if( log2str(tspt_mod4pattern_mixed_order) != "{ i := ?, f := 1.000000, cs := pattern \"abc*xyz\", bs := '0100'B }") { setverdict(fail) } + log(tspt_mod4pattern_mixed_order); +} + +//=== + +testcase tc_rec_mod4vifp() runs on MC { + var RoREC vl_good_values := { {1,1.0,"ABBA",'0100'B}, {omit,1.0,"ABBA",'0100'B},{omit,omit,omit,omit} } + var RoREC vl_wrong_values := { {1,1.0,"ABBA",'0101'B}, {2,-99.9,"ABBA",'0100'B} } + f_checkMatchingValues_rec(tspt_rec_mod4vifp, vl_good_values,vl_wrong_values); + if(log2str(tspt_rec_mod4vifp)!="{ i := 1 ifpresent, f := 1.000000 ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent }") {setverdict(fail);} +} + +testcase tc_rec_mod4aifp() runs on MC { + var RoREC vl_good_values := { {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, {1,1.0,"ABBA",'0100'B}, {2,-99.9,"ABBA",'0100'B} } + f_checkMatchingGoodValues_rec(tspt_rec_mod4aifp, vl_good_values); +} + +testcase tc_rec_mod4qifp() runs on MC { + var RoREC vl_good_values := { {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, {1,1.0,"ABBA",'0100'B}, {2,-99.9,"ABBA",'0100'B} } + f_checkMatchingGoodValues_rec(tspt_rec_mod4qifp, vl_good_values); +} + +testcase tc_rec_mod4oifp() runs on MC { + var RoREC vl_good_values := {}; + var RoREC vl_wrong_values := {{omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit},{3,1.0,"ABBA",'0100'B},{3,omit,omit,omit},{omit,1.0,omit,omit},{omit,omit,"anything",omit},{omit,omit,omit,'01'B} } + f_checkMatchingValues_rec(tspt_rec_mod4oifp, vl_good_values, vl_wrong_values); +} + +//goal: to test if template modulepar can be a right value + all fields are omit +testcase tc_rec_mod4omitx4ifp() runs on MC { + var template REC vlt := tspt_rec_mod4omitx4ifp; + var RoREC vl_good_values := {{omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}}; + var RoREC vl_wrong_values := {{1,1.0,"ABBA",'0100'B}}; + f_checkMatchingValues_rec(vlt, vl_good_values, vl_wrong_values); +} +testcase tc_rec_mod4rifp() runs on MC { + var RoREC vl_good_values := { + {1,1.0,"ABBA",'0100'B}, {2,2.0,"baba",'01001'B}, {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit},{omit,1.0,omit,omit}} + var RoREC vl_wrong_values := { + {2,2.0,"ABBA",'0100'B},{3,1.0,"ABBA",'0100'B},{3,omit,omit,omit}, + {omit,omit,"anything",omit},{omit,omit,omit,'01'B} + } + f_checkMatchingValues_rec(tspt_rec_mod4rifp, vl_good_values, vl_wrong_values); +} + +testcase tc_rec_mod4vrifp() runs on MC { + var RoREC vl_good_values := {{1,1.0,"ABBA",'0100'B}, {2,1.0,"ABBA",'0100'B}, {2,-9.0,"ABBA",'0100'B},{2,2.0,"ABBA",'0100'B}, + {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit},{omit,1.0,omit,omit},{omit,omit,omit,'0100'B},{omit,omit,"ABBA",'0100'B} + } + var RoREC vl_wrong_values :={ + {3,1.0,"ABBA",'0100'B},{3,omit,omit,omit}, + {omit,omit,"anything",omit},{omit,omit,omit,'01'B} } + f_checkMatchingValues_rec(tspt_rec_mod4vrifp, vl_good_values,vl_wrong_values ); + +} + +testcase tc_rec_mod4cifp() runs on MC { + var RoREC vl_good_values := { + {3,1.0,"ABBA",'0100'B},{3,omit,omit,omit},{omit,1.1,omit,omit},{omit,omit,"anything",omit},{omit,omit,omit,'01'B} } + var RoREC vl_wrong_values := { {omit,omit,omit,omit},{i:=omit,f:=omit,cs:=omit, bs:=omit}, + {1,1.0,"ABBA",'0100'B}, {1,1.0,"baba",'0100'B},{1,omit,omit,omit},{omit,1.0,omit,omit},{omit,omit,"ABBA",omit},{omit,omit,"baba",omit},{omit,omit,omit,'0100'B}} + f_checkMatchingValues_rec(tspt_rec_mod4cifp, vl_good_values, vl_wrong_values); +} + +testcase tc_rec_mod4vl2x2ifp() runs on MC { + var RoREC vl_good_values := { {1,1.0,"ABBA",'0100'B}, {1,1.0,"ABBA",'01001'B},{1,1.0,"baba",'0100'B},{1,1.0,"baba",'01001'B} } + var RoREC vl_wrong_values := {{3,1.0,"ABBA",'0100'B},{1,2.0,"baba",'0100'B}, {1,1.0,"wrong",'0100'B},{1,1.0,"ABBA",'010010'B},{9,9.9,"wrong",'010010'B} } + f_checkMatchingValues_rec(tspt_rec_mod4vl2x2ifp, vl_good_values, vl_wrong_values); +} + +//modified template: {1 ifpresent,1.0 ifpresent,("ABBA","baba") ifpresent,'0100'B} +//failed: if cs:=omit, it failes +testcase tc_rec_mod4vlifp() runs on MC { + var template REC vlt := tspt_rec_mod4vlifp; + var RoREC vl_good_values := {{1,1.0,"ABBA",'0100'B},{1,1.0,"baba",'0100'B}, {omit,omit,omit,'0100'B}, {i:=1,f:=1.0,cs:=omit,bs:='0100'B} } + var RoREC vl_wrong_values := {{2,1.1,"ABBA",'0100'B}, {2,1.0,"ABBA",'01001'B}, {2,1.0,"blabla",'01001'B}} + f_checkMatchingValues_rec(vlt, vl_good_values, vl_wrong_values); +} + +//modified for { i := ?, f := 1.0, cs:= pattern "abc*xyz", bs:= '0100'B } +testcase tc_rec_mod4vqifp() runs on MC { + var template REC vlt := tspt_rec_mod4vqifp; + var RoREC vl_good_values := {{1,1.0,"abc xyz",'0100'B},{112345678,1.0,"abcXxyz",'0100'B} } + var RoREC vl_wrong_values := {{2,1.0,"ABBA",'01'B}, {2,1.0,"ABBA",'0100'B},{3,4.0,"abcxyzz",'011'B}} + f_checkMatchingValues_rec(vlt, vl_good_values, vl_wrong_values); +} + + +//goal: to test modification like this: { ?, -,pattern "abc*xyz", '0100'B} +testcase tc_rec_mod4cspatternifp() runs on MC { + var RoREC vl_good_values := { {1,1.0,"abcAxyz",'0100'B}, {9,1.0,"abcxyz",'0100'B},{1,1.0,"abc5xyz",'0100'B}, {omit,1.0,"abc5xyz",'0100'B} } + var RoREC vl_wrong_values := { {1,1.0,"ABBA",'0100'B}, {1,2.0,"abdXxyz",'0100'B},{2,3.0,"oh",'00'B}} + f_checkMatchingValues_rec(tspt_rec_mod4cspatternifp, vl_good_values, vl_wrong_values); +} + +//test if altstep is cooperate with modulepar +testcase tc_rec_mod4cspattern_asifp() runs on MC { + var RoREC vl_good_values := { {1,1.0,"abcAxyz",'0100'B}, {9,1.0,"abcxyz",'0100'B},{1,1.0,"abc5xyz",'0100'B}, + {omit,1.0,"abc5xyz",'0100'B},{omit,omit,omit,omit} } + var RoREC vl_wrong_values := { {1,1.0,"ABBA",'0100'B}, {1,2.0,"abdXxyz",'0100'B},{2,3.0,"oh",'00'B}}; + timer t:=0.1; t.start; + as_rec(tspt_rec_mod4cspatternifp, vl_good_values,vl_wrong_values, t); + //log(">>>Test1: { i := * ifpresent, f := 1.000000 ifpresent, cs := pattern \"abc*xyz\" ifpresent, bs := '0100'B ifpresent }") + //log(">>>Test2:", tspt_rec_mod4cspatternifp); + if( log2str(tspt_rec_mod4cspatternifp) != "{ i := * ifpresent, f := 1.000000 ifpresent, cs := pattern \"abc*xyz\" ifpresent, bs := '0100'B ifpresent }") { setverdict(fail) } +} + +//modify template field: +testcase tc_rec_mod4cspatternbsifp() runs on MC { + var RoREC vl_good_values := { {1,1.0,"abcAxyz",'0100'B}, {9,1.0,"abcxyz",'0100'B},{1,1.0,"abc5xyz",'0100'B}, {13,omit,omit,omit} } + var RoREC vl_wrong_values := { {1,1.0,"ABBA",'0100'B}, {1,2.0,"abdXxyz",'0100'B},{2,3.0,"oh",'00'B}, {omit,omit,omit,omit} } + f_checkMatchingValues_rec(tspt_rec_mod4cspatternbsifp, vl_good_values, vl_wrong_values); + //log(">>>Test3: { i := ?, f := 1.000000 ifpresent, cs := pattern \"abc*xyz\" ifpresent, bs := '0100'B ifpresent }"); + //log(">>>Test4: ",tspt_rec_mod4cspatternbsifp); + if( log2str(tspt_rec_mod4cspatternbsifp) != "{ i := ?, f := 1.000000 ifpresent, cs := pattern \"abc*xyz\" ifpresent, bs := '0100'B ifpresent }") { setverdict(fail) } +} + +//value list notation test: +//tspt_rec_mod4cspatternbs2: { i := ?, f := 1.0,cs:= "ABBA", bs:= '01'B} -> { i := ?, f := 1.0,cs:= pattern "abc*xyz", bs:= '01'B} +testcase tc_rec_mod4cspatternbs2ifp() runs on MC { + var RoREC vl_good_values := { {1,1.0,"abcAxyz",'0100'B}, {9,1.0,"abcxyz",'0100'B},{1,1.0,"abc5xyz",'0100'B}, {13,omit,omit,omit} } + var RoREC vl_wrong_values := { {1,1.0,"ABBA",'0100'B}, {1,2.0,"abdXxyz",'0100'B},{2,3.0,"oh",'00'B}} + + f_checkMatchingValues_rec(tspt_rec_mod4cspatternbs2ifp, vl_good_values,vl_wrong_values ); + //if( log2str(tspt_rec_mod4cspatternbs2ifp) != "{ i := ? ifpresent, f := 1.000000 ifpresent, cs := pattern \"abc*xyz\" ifpresent, bs := '0100'B ifpresent }") { setverdict(fail) } +} + +//mixed fields in cfg file: +testcase tc_mod4pattern_mixed_orderifp() runs on MC { + var RoREC vl_good_values := { {1,1.0,"abcAxyz",'0100'B}, {9,1.0,"abcxyz",'0100'B},{1,1.0,"abc5xyz",'0100'B} } + var RoREC vl_wrong_values := { {1,1.0,"ABBA",'0100'B}, {1,2.0,"abdXxyz",'0100'B},{2,3.0,"oh",'00'B}} + f_checkMatchingGoodValues_rec(tspt_mod4pattern_mixed_order, vl_good_values); + f_checkMatchingWrongValues_rec(tspt_mod4pattern_mixed_orderifp, vl_wrong_values); + if( log2str(tspt_mod4pattern_mixed_orderifp) != "{ i := ?, f := 1.000000 ifpresent, cs := pattern \"abc*xyz\" ifpresent, bs := '0100'B ifpresent }") { setverdict(fail) } + log(tspt_mod4pattern_mixed_orderifp); +} + +//== +template REC2 t_REC2_1 := { + b := true ifpresent, + cs := omit, + i := omit +} + +//Goal: to test if a normal template checking is ok for "ifpresent" and "omit" +testcase tc_REC2_0() runs on MC { + var RoREC2 vl_good_values := { {omit,omit,omit},{true,omit,omit} } + var RoREC2 vl_wrong_values := { {false,omit,omit}, {false,"a",1}, { false, "_anything_else*",1}, { true, "_anything_else*",1}, {omit, "b",1} } + f_checkMatchingGoodValues_rec2( t_REC2_1, vl_good_values ); + f_checkMatchingWrongValues_rec2( t_REC2_1, vl_wrong_values ); + log(t_REC2_1); + if( log2str(t_REC2_1) != "{ b := true ifpresent, cs := omit, i := omit }" ) { setverdict(fail) } +} + +testcase tc_REC2_1() runs on MC { + var RoREC2 vl_good_values := { {omit,omit,omit},{true,omit,omit} } + var RoREC2 vl_wrong_values := { {false,omit,1}, {false,"a",2}, { false, "_anything_else*",2}, { true, "_anything_else*",2}, {omit, "b",omit} } + f_checkMatchingGoodValues_rec2( tspt_REC2_1, vl_good_values ); + f_checkMatchingWrongValues_rec2( tspt_REC2_1, vl_wrong_values ); + log(tspt_REC2_1); + if( log2str(tspt_REC2_1) != "{ b := true ifpresent, cs := omit, i := omit }" ) { setverdict(fail) } +} + +testcase tc_REC2_2() runs on MC { + var RoREC2 vl_good_values := { {omit,omit,omit},{true,omit,omit},{omit,omit,2},{true,omit,2} } + var RoREC2 vl_wrong_values := { {false,omit,omit}, {false,"a",1}, { false, "_anything_else*",2}, { true, "_anything_else*", omit}, {omit,"b",1} } + f_checkMatchingGoodValues_rec2( tspt_REC2_2, vl_good_values ); + f_checkMatchingWrongValues_rec2( tspt_REC2_2, vl_wrong_values ); + log(tspt_REC2_2); + if( log2str(tspt_REC2_2) != "{ b := true ifpresent, cs := omit, i := 2 ifpresent }" ) { setverdict(fail) } +} + +//template modification check +testcase tc_REC2_3() runs on MC { + var RoREC2 vl_good_values := { {omit,omit,omit},{true,omit,omit}, {false,omit,omit},{omit,omit,2},{true,omit,2},{false,omit,2}} + var RoREC2 vl_wrong_values := { {false,"a",omit}, { false, "_anything_else*",1}, { true, "_anything_else*",2}, {omit, "b",2} } + f_checkMatchingGoodValues_rec2( tspt_REC2_3, vl_good_values ); + f_checkMatchingWrongValues_rec2( tspt_REC2_3, vl_wrong_values ); + log("The modified template is: ",tspt_REC2_3); + if( log2str(tspt_REC2_3) != "{ b := *, cs := omit, i := 2 ifpresent }" ) { setverdict(fail) } +} +//template modification check, explicit name-value notation: +testcase tc_REC2_4() runs on MC { + var RoREC2 vl_good_values := { {true,omit,omit},{false,omit,omit} } + var RoREC2 vl_wrong_values := { {omit,omit,omit},{false,"a",1}, { false, "_anything_else*",2}, { true, "_anything_else*",2}, {omit, "b", 2} } + f_checkMatchingGoodValues_rec2( tspt_REC2_4, vl_good_values ); + f_checkMatchingWrongValues_rec2( tspt_REC2_4, vl_wrong_values ); + log("The modified template is: ",tspt_REC2_4); + if( log2str(tspt_REC2_4) != "{ b := ?, cs := omit, i := omit }" ) { setverdict(fail) } +} + +//template modification check, explicit name-value notation: +testcase tc_REC2_5() runs on MC { + var RoREC2 vl_good_values := { { true,"a", omit },{ false,"b",omit }, { true,"c", 1 }, { false, "b", 2 }} + var RoREC2 vl_wrong_values := { { omit,omit,omit },{ false,"al",1 }, { false, "_anything_else*", 2 }, { true, "_anything_else*",2 }, { omit,"babe", 1} } + f_checkMatchingGoodValues_rec2( tspt_REC2_5, vl_good_values ); + f_checkMatchingWrongValues_rec2( tspt_REC2_5, vl_wrong_values ); + log("The modified template is: ",tspt_REC2_5); + if( log2str(tspt_REC2_5) != "{ b := ?, cs := ? length (1), i := * }" ) { setverdict(fail) } +} + +//==== String comparison testcases === +testcase tc_REC_log2str() runs on MC { + log(tspt_rec_empty); + if(log2str(tspt_rec_empty) == "<uninitialized template>") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4v); + if(log2str(tspt_rec_mod4v) == "{ i := 1, f := 1.000000, cs := \"ABBA\", bs := '0100'B }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4a); + if(log2str(tspt_rec_mod4a) == "*") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4q); + if(log2str(tspt_rec_mod4q) == "?") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4o); + if(log2str(tspt_rec_mod4o) == "omit") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vr); + if(log2str(tspt_rec_mod4vr) == "{ i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vl2x2); + if(log2str(tspt_rec_mod4vl2x2) == "{ i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := ('0100'B, '01001'B) }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4omitx4); + if(log2str(tspt_rec_mod4omitx4) == "{ i := omit, f := omit, cs := omit, bs := omit }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4r); + if(log2str(tspt_rec_mod4r) == "({ i := 1, f := 1.000000, cs := \"ABBA\", bs := '0100'B }, { i := 2, f := 2.000000, cs := \"baba\", bs := '01001'B })") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vr); + if(log2str(tspt_rec_mod4vr) == "{ i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4c); + if(log2str(tspt_rec_mod4c) == "complement({ i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B })") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vl); + if(log2str(tspt_rec_mod4vl) == "{ i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vq); + if(log2str(tspt_rec_mod4vq) == "{ i := ?, f := 1.000000, cs := pattern \"abc*xyz\", bs := '0100'B }") { setverdict(pass) } else {setverdict(fail)} +} + +testcase tc_REC_ifp_log2str() runs on MC { + log(tspt_rec_empty); + if(log2str(tspt_rec_empty) == "<uninitialized template>") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vifp); + if(log2str(tspt_rec_mod4vifp) == "{ i := 1 ifpresent, f := 1.000000 ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4aifp); + if(log2str(tspt_rec_mod4aifp) == "* ifpresent") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4qifp); + if(log2str(tspt_rec_mod4qifp) == "? ifpresent") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4oifp); + if(log2str(tspt_rec_mod4oifp) == "omit ifpresent") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vl2x2ifp); + if(log2str(tspt_rec_mod4vl2x2ifp) == "{ i := 1 ifpresent, f := 1.000000 ifpresent, cs := (\"ABBA\" ifpresent, \"baba\" ifpresent), bs := ('0100'B, '01001'B) ifpresent }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4omitx4ifp); + if(log2str(tspt_rec_mod4omitx4ifp) == "{ i := omit, f := omit, cs := omit, bs := omit } ifpresent" ) { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4rifp); + if(log2str(tspt_rec_mod4rifp) == "({ i := 1 ifpresent, f := 1.000000 ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent }, { i := 2, f := 2.000000, cs := \"baba\", bs := '01001'B })") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vrifp); + if(log2str(tspt_rec_mod4vrifp) == "{ i := (1 .. 2) ifpresent, f := ? ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent }" ) { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4cifp); + if(log2str(tspt_rec_mod4cifp) == "complement({ i := 1 ifpresent, f := 1.000000 ifpresent, cs := (\"ABBA\", \"baba\") ifpresent, bs := '0100'B ifpresent })") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vlifp); + if(log2str(tspt_rec_mod4vlifp) == "{ i := 1 ifpresent, f := 1.000000 ifpresent, cs := (\"ABBA\", \"baba\") ifpresent, bs := '0100'B ifpresent }" ) { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vqifp); + if(log2str(tspt_rec_mod4vqifp) == "{ i := ?, f := 1.000000, cs := pattern \"abc*xyz\", bs := '0100'B ifpresent }" ) { setverdict(pass) } else {setverdict(fail)} +} + + +//=== + +// Embedded templates +testcase tc_REC_log2str_emb() runs on MC { + log(tspt_rec_empty); + if(log2str(tspt_rec_empty) == "<uninitialized template>") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4v)); + if(log2str(t_rrec(tspt_rec_mod4v)) == "{ rec := { i := 1, f := 1.000000, cs := \"ABBA\", bs := '0100'B } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4a)); + if(log2str(t_rrec(tspt_rec_mod4a)) == "{ rec := * }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4q)); + if(log2str(t_rrec(tspt_rec_mod4q)) == "{ rec := ? }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4o)); + if(log2str(t_rrec(tspt_rec_mod4o)) == "{ rec := omit }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vr)); + if(log2str(t_rrec(tspt_rec_mod4vr)) == "{ rec := { i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vl2x2)); + if(log2str(t_rrec(tspt_rec_mod4vl2x2)) == "{ rec := { i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := ('0100'B, '01001'B) } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4omitx4)); + if(log2str(t_rrec(tspt_rec_mod4omitx4)) == "{ rec := { i := omit, f := omit, cs := omit, bs := omit } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4r)); + if(log2str(t_rrec(tspt_rec_mod4r)) == "{ rec := ({ i := 1, f := 1.000000, cs := \"ABBA\", bs := '0100'B }, { i := 2, f := 2.000000, cs := \"baba\", bs := '01001'B }) }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vr)); + if(log2str(t_rrec(tspt_rec_mod4vr)) == "{ rec := { i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4c)); + if(log2str(t_rrec(tspt_rec_mod4c)) == "{ rec := complement({ i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B }) }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vl)); + if(log2str(t_rrec(tspt_rec_mod4vl)) == "{ rec := { i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vq)); + if(log2str(t_rrec(tspt_rec_mod4vq)) == "{ rec := { i := ?, f := 1.000000, cs := pattern \"abc*xyz\", bs := '0100'B } }") { setverdict(pass) } else {setverdict(fail)} +} + +testcase tc_REC_ifp_log2str_emb() runs on MC { + log(tspt_rec_empty); + if(log2str(tspt_rec_empty) == "<uninitialized template>") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vifp)); + if(log2str(t_rrec(tspt_rec_mod4vifp)) == "{ rec := { i := 1 ifpresent, f := 1.000000 ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4aifp)); + if(log2str(t_rrec(tspt_rec_mod4aifp)) == "{ rec := * ifpresent }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4qifp)); + if(log2str(t_rrec(tspt_rec_mod4qifp)) == "{ rec := ? ifpresent }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4oifp)); + if(log2str(t_rrec(tspt_rec_mod4oifp)) == "{ rec := omit ifpresent }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vl2x2ifp)); + if(log2str(t_rrec(tspt_rec_mod4vl2x2ifp)) == "{ rec := { i := 1 ifpresent, f := 1.000000 ifpresent, cs := (\"ABBA\" ifpresent, \"baba\" ifpresent), bs := ('0100'B, '01001'B) ifpresent } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4omitx4ifp)); + if(log2str(t_rrec(tspt_rec_mod4omitx4ifp)) == "{ rec := { i := omit, f := omit, cs := omit, bs := omit } ifpresent }" ) { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4rifp)); + if(log2str(t_rrec(tspt_rec_mod4rifp)) == "{ rec := ({ i := 1 ifpresent, f := 1.000000 ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent }, { i := 2, f := 2.000000, cs := \"baba\", bs := '01001'B }) }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vrifp)); + if(log2str(t_rrec(tspt_rec_mod4vrifp)) == "{ rec := { i := (1 .. 2) ifpresent, f := ? ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent } }" ) { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4cifp)); + if(log2str(t_rrec(tspt_rec_mod4cifp)) == "{ rec := complement({ i := 1 ifpresent, f := 1.000000 ifpresent, cs := (\"ABBA\", \"baba\") ifpresent, bs := '0100'B ifpresent }) }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vlifp)); + if(log2str(t_rrec(tspt_rec_mod4vlifp)) == "{ rec := { i := 1 ifpresent, f := 1.000000 ifpresent, cs := (\"ABBA\", \"baba\") ifpresent, bs := '0100'B ifpresent } }" ) { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vqifp)); + if(log2str(t_rrec(tspt_rec_mod4vqifp)) == "{ rec := { i := ?, f := 1.000000, cs := pattern \"abc*xyz\", bs := '0100'B ifpresent } }" ) { setverdict(pass) } else {setverdict(fail)} +} + +//====================================== +//=========== ttcn2str ================= +//====================================== + +//==== String comparison testcases === +testcase tc_REC_ttcn2string() runs on MC { + log(ttcn2string(tspt_rec_empty)); + if(ttcn2string(tspt_rec_empty) == "-") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4v); + if(ttcn2string(tspt_rec_mod4v) == "{ i := 1, f := 1.000000, cs := \"ABBA\", bs := '0100'B }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4a); + if(ttcn2string(tspt_rec_mod4a) == "*") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4q); + if(ttcn2string(tspt_rec_mod4q) == "?") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4o); + if(ttcn2string(tspt_rec_mod4o) == "omit") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vr); + if(ttcn2string(tspt_rec_mod4vr) == "{ i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vl2x2); + if(ttcn2string(tspt_rec_mod4vl2x2) == "{ i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := ('0100'B, '01001'B) }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4omitx4); + if(ttcn2string(tspt_rec_mod4omitx4) == "{ i := omit, f := omit, cs := omit, bs := omit }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4r); + if(ttcn2string(tspt_rec_mod4r) == "({ i := 1, f := 1.000000, cs := \"ABBA\", bs := '0100'B }, { i := 2, f := 2.000000, cs := \"baba\", bs := '01001'B })") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vr); + if(ttcn2string(tspt_rec_mod4vr) == "{ i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4c); + if(ttcn2string(tspt_rec_mod4c) == "complement({ i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B })") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vl); + if(ttcn2string(tspt_rec_mod4vl) == "{ i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vq); + if(ttcn2string(tspt_rec_mod4vq) == "{ i := ?, f := 1.000000, cs := pattern \"abc*xyz\", bs := '0100'B }") { setverdict(pass) } else {setverdict(fail)} +} + +testcase tc_REC_ifp_ttcn2string() runs on MC { + log(ttcn2string(tspt_rec_emptyifp)); + if(ttcn2string(tspt_rec_emptyifp) == "- ifpresent") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vifp); + if(ttcn2string(tspt_rec_mod4vifp) == "{ i := 1 ifpresent, f := 1.000000 ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4aifp); + if(ttcn2string(tspt_rec_mod4aifp) == "* ifpresent") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4qifp); + if(ttcn2string(tspt_rec_mod4qifp) == "? ifpresent") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4oifp); + if(ttcn2string(tspt_rec_mod4oifp) == "omit ifpresent") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vl2x2ifp); + if(ttcn2string(tspt_rec_mod4vl2x2ifp) == "{ i := 1 ifpresent, f := 1.000000 ifpresent, cs := (\"ABBA\" ifpresent, \"baba\" ifpresent), bs := ('0100'B, '01001'B) ifpresent }") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4omitx4ifp); + if(ttcn2string(tspt_rec_mod4omitx4ifp) == "{ i := omit, f := omit, cs := omit, bs := omit } ifpresent" ) { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4rifp); + if(ttcn2string(tspt_rec_mod4rifp) == "({ i := 1 ifpresent, f := 1.000000 ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent }, { i := 2, f := 2.000000, cs := \"baba\", bs := '01001'B })") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vrifp); + if(ttcn2string(tspt_rec_mod4vrifp) == "{ i := (1 .. 2) ifpresent, f := ? ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent }" ) { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4cifp); + if(ttcn2string(tspt_rec_mod4cifp) == "complement({ i := 1 ifpresent, f := 1.000000 ifpresent, cs := (\"ABBA\", \"baba\") ifpresent, bs := '0100'B ifpresent })") { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vlifp); + if(ttcn2string(tspt_rec_mod4vlifp) == "{ i := 1 ifpresent, f := 1.000000 ifpresent, cs := (\"ABBA\", \"baba\") ifpresent, bs := '0100'B ifpresent }" ) { setverdict(pass) } else {setverdict(fail)} + log(tspt_rec_mod4vqifp); + if(ttcn2string(tspt_rec_mod4vqifp) == "{ i := ?, f := 1.000000, cs := pattern \"abc*xyz\", bs := '0100'B ifpresent }" ) { setverdict(pass) } else {setverdict(fail)} +} + +// Embedded templates +testcase tc_REC_ttcn2string_emb() runs on MC { + log(ttcn2string(tspt_rrec_empty)); + if(ttcn2string(tspt_rrec_empty) == "-") { setverdict(pass) } else {setverdict(fail)} + log(ttcn2string(tspt_rrec_mod4empty)); + if(ttcn2string(tspt_rrec_mod4empty) == "-") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4v)); + if(ttcn2string(t_rrec(tspt_rec_mod4v)) == "{ rec := { i := 1, f := 1.000000, cs := \"ABBA\", bs := '0100'B } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4a)); + if(ttcn2string(t_rrec(tspt_rec_mod4a)) == "{ rec := * }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4q)); + if(ttcn2string(t_rrec(tspt_rec_mod4q)) == "{ rec := ? }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4o)); + if(ttcn2string(t_rrec(tspt_rec_mod4o)) == "{ rec := omit }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vr)); + if(ttcn2string(t_rrec(tspt_rec_mod4vr)) == "{ rec := { i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vl2x2)); + if(ttcn2string(t_rrec(tspt_rec_mod4vl2x2)) == "{ rec := { i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := ('0100'B, '01001'B) } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4omitx4)); + if(ttcn2string(t_rrec(tspt_rec_mod4omitx4)) == "{ rec := { i := omit, f := omit, cs := omit, bs := omit } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4r)); + if(ttcn2string(t_rrec(tspt_rec_mod4r)) == "{ rec := ({ i := 1, f := 1.000000, cs := \"ABBA\", bs := '0100'B }, { i := 2, f := 2.000000, cs := \"baba\", bs := '01001'B }) }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vr)); + if(ttcn2string(t_rrec(tspt_rec_mod4vr)) == "{ rec := { i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4c)); + if(ttcn2string(t_rrec(tspt_rec_mod4c)) == "{ rec := complement({ i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B }) }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vl)); + if(ttcn2string(t_rrec(tspt_rec_mod4vl)) == "{ rec := { i := 1, f := 1.000000, cs := (\"ABBA\", \"baba\"), bs := '0100'B } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vq)); + if(ttcn2string(t_rrec(tspt_rec_mod4vq)) == "{ rec := { i := ?, f := 1.000000, cs := pattern \"abc*xyz\", bs := '0100'B } }") { setverdict(pass) } else {setverdict(fail)} +} + +testcase tc_REC_ifp_ttcn2string_emb() runs on MC { + log(ttcn2string(tspt_rrec_emptyifp)); + if(ttcn2string(tspt_rrec_emptyifp) == "{ rec := - ifpresent }") { setverdict(pass) } else {setverdict(fail)} + log(ttcn2string(tspt_rrec_mod4emptyifp)); + if(ttcn2string(tspt_rrec_mod4emptyifp) == "{ rec := - ifpresent }") { setverdict(pass) } else {setverdict(fail)} + + log(t_rrec(tspt_rec_mod4vifp)); + if(ttcn2string(t_rrec(tspt_rec_mod4vifp)) == "{ rec := { i := 1 ifpresent, f := 1.000000 ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent } }") { setverdict(pass) } else {setverdict(fail)} + + log(ttcn2string(f_rrec_transparent_in_t(t_rrec(tspt_rec_mod4vifp)))); + if(ttcn2string(f_rrec_transparent_in_t(t_rrec(tspt_rec_mod4vifp))) == "{ rec := { i := 1 ifpresent, f := 1.000000 ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent } }") { setverdict(pass) } else {setverdict(fail)} + + var template RREC vlt_rrec:= t_rrec(tspt_rec_mod4vifp) + log(ttcn2string(f_rrec_transparent_inout_t(vlt_rrec))); + if(ttcn2string(f_rrec_transparent_inout_t(vlt_rrec)) == "{ rec := { i := 1 ifpresent, f := 1.000000 ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent } }") { setverdict(pass) } else {setverdict(fail)} + + log(t_rrec(tspt_rec_mod4aifp)); + if(ttcn2string(t_rrec(tspt_rec_mod4aifp)) == "{ rec := * ifpresent }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4qifp)); + if(ttcn2string(t_rrec(tspt_rec_mod4qifp)) == "{ rec := ? ifpresent }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4oifp)); + if(ttcn2string(t_rrec(tspt_rec_mod4oifp)) == "{ rec := omit ifpresent }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vl2x2ifp)); + if(ttcn2string(t_rrec(tspt_rec_mod4vl2x2ifp)) == "{ rec := { i := 1 ifpresent, f := 1.000000 ifpresent, cs := (\"ABBA\" ifpresent, \"baba\" ifpresent), bs := ('0100'B, '01001'B) ifpresent } }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4omitx4ifp)); + if(ttcn2string(t_rrec(tspt_rec_mod4omitx4ifp)) == "{ rec := { i := omit, f := omit, cs := omit, bs := omit } ifpresent }" ) { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4rifp)); + if(ttcn2string(t_rrec(tspt_rec_mod4rifp)) == "{ rec := ({ i := 1 ifpresent, f := 1.000000 ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent }, { i := 2, f := 2.000000, cs := \"baba\", bs := '01001'B }) }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vrifp)); + if(ttcn2string(t_rrec(tspt_rec_mod4vrifp)) == "{ rec := { i := (1 .. 2) ifpresent, f := ? ifpresent, cs := \"ABBA\" ifpresent, bs := '0100'B ifpresent } }" ) { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4cifp)); + if(ttcn2string(t_rrec(tspt_rec_mod4cifp)) == "{ rec := complement({ i := 1 ifpresent, f := 1.000000 ifpresent, cs := (\"ABBA\", \"baba\") ifpresent, bs := '0100'B ifpresent }) }") { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vlifp)); + if(ttcn2string(t_rrec(tspt_rec_mod4vlifp)) == "{ rec := { i := 1 ifpresent, f := 1.000000 ifpresent, cs := (\"ABBA\", \"baba\") ifpresent, bs := '0100'B ifpresent } }" ) { setverdict(pass) } else {setverdict(fail)} + log(t_rrec(tspt_rec_mod4vqifp)); + if(ttcn2string(t_rrec(tspt_rec_mod4vqifp)) == "{ rec := { i := ?, f := 1.000000, cs := pattern \"abc*xyz\", bs := '0100'B ifpresent } }" ) { setverdict(pass) } else {setverdict(fail)} +} + +testcase tc_REC_string2ttcn_empty() runs on MC { + f_string2ttcn_REC_t(ttcn2string(tspt_rec_empty),tspt_rec_empty); + f_string2ttcn_REC_v(ttcn2string(tspt_rec_empty),tspt_rec_empty,true); +} + +testcase tc_REC_string2ttcn_v() runs on MC { + f_string2ttcn_REC_t(ttcn2string(tspt_rec_v), tspt_rec_v); + f_string2ttcn_REC_v(ttcn2string(tspt_rec_v),tspt_rec_v,true); + + var charstring vl_cs := ttcn2string(tspt_rec_v); + f_string2ttcn_REC_t(vl_cs, tspt_rec_v); + f_string2ttcn_REC_v(vl_cs, tspt_rec_v,true); +} + +testcase tc_REC_string2ttcn_a() runs on MC { + f_string2ttcn_REC_t(ttcn2string(tspt_rec_a), tspt_rec_a); + f_string2ttcn_REC_v(ttcn2string(tspt_rec_a),tspt_rec_a,false); +} + +testcase tc_REC_string2ttcn_q() runs on MC { + f_string2ttcn_REC_t(ttcn2string(tspt_rec_q), tspt_rec_q); + f_string2ttcn_REC_v(ttcn2string(tspt_rec_q),tspt_rec_q,false); +} + + +testcase tc_REC_string2ttcn_o() runs on MC { + f_string2ttcn_REC_t(ttcn2string(tspt_rec_o), tspt_rec_o); + f_string2ttcn_REC_v(ttcn2string(tspt_rec_o),tspt_rec_o,false); +} + +testcase tc_REC_string2ttcn_v_omitx4() runs on MC { + f_string2ttcn_REC_t(ttcn2string(tspt_rec_v_omitx4), tspt_rec_v_omitx4); + f_string2ttcn_REC_v(ttcn2string(tspt_rec_v_omitx4),tspt_rec_v_omitx4,true); +} + +testcase tc_REC_string2ttcn_r() runs on MC { + f_string2ttcn_REC_t(ttcn2string(tspt_rec_r), tspt_rec_r); + f_string2ttcn_REC_v(ttcn2string(tspt_rec_r),tspt_rec_r,false); +} + +//==rrec - the embedded case === + +testcase tc_RREC_string2ttcn_empty() runs on MC { + f_string2ttcn_RREC_t(ttcn2string(tspt_rrec_empty),tspt_rrec_empty); + f_string2ttcn_RREC_v(ttcn2string(tspt_rrec_empty),tspt_rrec_empty,true); +} + +testcase tc_RREC_string2ttcn_v() runs on MC { + f_string2ttcn_RREC_t(ttcn2string(t_rrec(tspt_rec_mod4v)), t_rrec(tspt_rec_mod4v)); + f_string2ttcn_RREC_v(ttcn2string(t_rrec(tspt_rec_mod4v)),t_rrec(tspt_rec_mod4v),true); + + f_string2ttcn_RREC_t_retval_in(ttcn2string(t_rrec(tspt_rec_mod4v)), t_rrec(tspt_rec_mod4v)); + f_string2ttcn_RREC_t_retval_inout(ttcn2string(t_rrec(tspt_rec_mod4v)), t_rrec(tspt_rec_mod4v)); +} + +testcase tc_RREC_string2ttcn_a() runs on MC { + f_string2ttcn_RREC_t(ttcn2string(t_rrec(tspt_rec_mod4a)), t_rrec(tspt_rec_mod4a)); + f_string2ttcn_RREC_v(ttcn2string(t_rrec(tspt_rec_mod4a)),t_rrec(tspt_rec_mod4a),false); +} + +testcase tc_RREC_string2ttcn_q() runs on MC { + f_string2ttcn_RREC_t(ttcn2string(t_rrec(tspt_rec_mod4q)), t_rrec(tspt_rec_mod4q)); + f_string2ttcn_RREC_v(ttcn2string(t_rrec(tspt_rec_mod4q)),t_rrec(tspt_rec_mod4q),false); +} + + +testcase tc_RREC_string2ttcn_o() runs on MC { + f_string2ttcn_RREC_t(ttcn2string(t_rrec(tspt_rec_mod4o)), t_rrec(tspt_rec_mod4o)); + f_string2ttcn_RREC_v(ttcn2string(t_rrec(tspt_rec_mod4o)),t_rrec(tspt_rec_mod4o),true); +} + +testcase tc_RREC_string2ttcn_omitx4() runs on MC { + f_string2ttcn_RREC_t(ttcn2string(t_rrec(tspt_rec_mod4omitx4)), t_rrec(tspt_rec_mod4omitx4)); + f_string2ttcn_RREC_v(ttcn2string(t_rrec(tspt_rec_mod4omitx4)), t_rrec(tspt_rec_mod4omitx4),true); +} + +testcase tc_RREC_string2ttcn_r() runs on MC { + f_string2ttcn_RREC_t(ttcn2string(t_rrec(tspt_rec_mod4r)), t_rrec(tspt_rec_mod4r)); + f_string2ttcn_RREC_v(ttcn2string(t_rrec(tspt_rec_mod4r)), t_rrec(tspt_rec_mod4r),false); +} + +//ifpresent +testcase tc_RREC_string2ttcn_vifp() runs on MC { + f_string2ttcn_RREC_t(ttcn2string(t_rrec(tspt_rec_mod4vifp)), t_rrec(tspt_rec_mod4vifp)); + f_string2ttcn_RREC_v(ttcn2string(t_rrec(tspt_rec_mod4vifp)),t_rrec(tspt_rec_mod4vifp),false); +} + +testcase tc_RREC_string2ttcn_aifp() runs on MC { + f_string2ttcn_RREC_t(ttcn2string(t_rrec(tspt_rec_mod4aifp)), t_rrec(tspt_rec_mod4aifp)); + f_string2ttcn_RREC_v(ttcn2string(t_rrec(tspt_rec_mod4aifp)),t_rrec(tspt_rec_mod4aifp),false); +} + +testcase tc_RREC_string2ttcn_qifp() runs on MC { + f_string2ttcn_RREC_t(ttcn2string(t_rrec(tspt_rec_mod4qifp)), t_rrec(tspt_rec_mod4qifp)); + f_string2ttcn_RREC_v(ttcn2string(t_rrec(tspt_rec_mod4qifp)),t_rrec(tspt_rec_mod4qifp),false); +} + + +testcase tc_RREC_string2ttcn_oifp() runs on MC { + f_string2ttcn_RREC_t(ttcn2string(t_rrec(tspt_rec_mod4oifp)), t_rrec(tspt_rec_mod4oifp)); + f_string2ttcn_RREC_v(ttcn2string(t_rrec(tspt_rec_mod4oifp)),t_rrec(tspt_rec_mod4oifp),false); //failed !!! +} + +testcase tc_RREC_string2ttcn_omitx4ifp() runs on MC { + f_string2ttcn_RREC_t(ttcn2string(t_rrec(tspt_rec_mod4omitx4ifp)), t_rrec(tspt_rec_mod4omitx4ifp)); + f_string2ttcn_RREC_v(ttcn2string(t_rrec(tspt_rec_mod4omitx4ifp)), t_rrec(tspt_rec_mod4omitx4ifp),false); +} + +testcase tc_RREC_string2ttcn_rifp() runs on MC { + f_string2ttcn_RREC_t(ttcn2string(t_rrec(tspt_rec_mod4rifp)), t_rrec(tspt_rec_mod4rifp)); + f_string2ttcn_RREC_v(ttcn2string(t_rrec(tspt_rec_mod4rifp)), t_rrec(tspt_rec_mod4rifp),false); +} + +//=== Negative tests ==== + +testcase tc_RREC_string2ttcn_neg1() runs on MC { + f_string2ttcn_RREC_t("{ rec := ? ifpresent }", t_rrec(tspt_rec_mod4qifp),true); + f_string2ttcn_RREC_t("{ recfalse := ? ifpresent }", t_rrec(tspt_rec_mod4qifp),false); + f_string2ttcn_RREC_t("{ rec := ifpresent }", t_rrec(tspt_rec_mod4qifp),false); + f_string2ttcn_RREC_t("{ rec := x ifpresent }", t_rrec(tspt_rec_mod4qifp),false);// TODO: wrong error message + f_string2ttcn_RREC_t("{ rec := {x:=1 ifpresent }}", t_rrec(tspt_rec_mod4qifp),false); + f_string2ttcn_RREC_t("{ rec := {x:=1 ifpresent }", t_rrec(tspt_rec_mod4qifp),false); + f_string2ttcn_RREC_v("{ recfalse := { i := 1, f := 1.000000, cs := \"ABBA\", bs := '0100'B } }" , t_rrec(tspt_rec_v),false); +} + +//========================================================================= +// Control +//========================================================================= +control { + log("****record tests****"); + execute(tc_rec_v()); + execute(tc_rec_a()); + execute(tc_rec_q()); + execute(tc_rec_o()); + execute(tc_rec_v_omitx4()); + execute(tc_rec_r()); + execute(tc_rec_vr()); + execute(tc_rec_v_par()); + execute(tc_rec_c()); + //=== modified templates === + execute(tc_rec_mod4v()); + execute(tc_rec_mod4a()); + execute(tc_rec_mod4q()); + execute(tc_rec_mod4o()); + execute(tc_rec_mod4omitx4()); + execute(tc_rec_mod4r()); + execute(tc_rec_mod4vr()); + execute(tc_rec_mod4c()); + execute(tc_rec_mod4vl2x2()); + execute(tc_rec_mod4vl()); + execute(tc_rec_mod4vq()); + execute(tc_rec_mod4cspattern()); + execute(tc_rec_mod4cspattern_as()); + execute(tc_rec_mod4cspatternbs()); + execute(tc_mod4pattern_mixed_order()); + //==modified ispresent templates ==== + execute(tc_rec_mod4vifp()); + execute(tc_rec_mod4aifp()); + execute(tc_rec_mod4qifp()); + execute(tc_rec_mod4oifp()); + execute(tc_rec_mod4omitx4ifp()); + execute(tc_rec_mod4rifp()); + execute(tc_rec_mod4vrifp()); + execute(tc_rec_mod4cifp()); + execute(tc_rec_mod4vl2x2ifp()); + execute(tc_rec_mod4vlifp()); + execute(tc_rec_mod4vqifp()); + execute(tc_rec_mod4cspatternifp()); + execute(tc_rec_mod4cspattern_asifp()); + execute(tc_rec_mod4cspatternbsifp()); + execute(tc_rec_mod4cspatternbs2ifp()); + execute(tc_mod4pattern_mixed_orderifp()); + + execute(tc_REC2_0()); + execute(tc_REC2_1()); + execute(tc_REC2_2()); + execute(tc_REC2_3()); + execute(tc_REC2_4()); + execute(tc_REC2_5()); + + //==== String comparison testcases === + execute(tc_REC_log2str()); + execute(tc_REC_ifp_log2str()); + execute(tc_REC_log2str_emb()); + execute(tc_REC_ifp_log2str_emb()); + + execute(tc_REC_ttcn2string()); + execute(tc_REC_ifp_ttcn2string()); + execute(tc_REC_ttcn2string_emb()); + execute(tc_REC_ifp_ttcn2string_emb()); + + //execute(tc_REC_string2ttcn_empty()); //TODO: Adam, correct the two bugs. --NOT solved, + execute(tc_REC_string2ttcn_v()); + execute(tc_REC_string2ttcn_a()); + execute(tc_REC_string2ttcn_q()); + execute(tc_REC_string2ttcn_o()); + execute(tc_REC_string2ttcn_v_omitx4()); + execute(tc_REC_string2ttcn_r()); //TODO: check the error message "Error while setting parameter field '': Type mismatch: ..." + + execute(tc_RREC_string2ttcn_v()); + execute(tc_RREC_string2ttcn_a()); + execute(tc_RREC_string2ttcn_q()); + execute(tc_RREC_string2ttcn_o()); + execute(tc_RREC_string2ttcn_omitx4()); + execute(tc_RREC_string2ttcn_r()); //TODO: check the error message ""Error while setting parameter field '.rec': ..." + + execute(tc_RREC_string2ttcn_vifp()); + execute(tc_RREC_string2ttcn_aifp()); + execute(tc_RREC_string2ttcn_qifp()); + execute(tc_RREC_string2ttcn_oifp()); //fixed by Adam: string2ttcn: { rec := omit ifpresent } -> { rec := omit } /value/, it should be reported as an error!!!! + execute(tc_RREC_string2ttcn_omitx4ifp()); + execute(tc_RREC_string2ttcn_rifp()); //TODO: check the error message ""Error while setting parameter field '.rec': ..." + execute(tc_RREC_string2ttcn_neg1()); + +} +} // end of module diff --git a/Regression_Test_java/src/text2ttcn_nolegacy/recordof_test.ttcn b/Regression_Test_java/src/text2ttcn_nolegacy/recordof_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..b2e7c2960a099b7bd42ae8016ca0f4d1c1274df0 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn_nolegacy/recordof_test.ttcn @@ -0,0 +1,772 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +/* +//AUTHOR: +//DATE: +//VERSION: +*/ +module recordof_test +{ + +//========================================================================= +// Import Part +//========================================================================= +import from types2 all; +import from functions2 all; + +//========================================================================= +// Module Parameters +//========================================================================= +modulepar { + //record of + template RoI tspt_recof_i_v0 := {}; + template RoI tspt_recof_i_v1 := {1}; + template RoI tspt_recof_i_v2 := {1,2}; + //template RoI tspt_recof_i_v2 := {omit,2}; //not allowed + template RoI tspt_recof_i_v3 := {1,2,3}; + template RoI tspt_recof_i_v3a := {1,*,3}; + template RoI tspt_recof_i_v3q := {1,?,3}; + template RoI tspt_recof_i_vl3 := {(1,2),2,(3,4)}; //value list + template RoI tspt_recof_i_vl := ( {1,2,3}, {2,2,4} ) + template RoI tspt_recof_i_v10 := {1,2,3,4,5,6,7,8,9,10}; + template RoI tspt_recof_i_o := omit; + template RoI tspt_recof_i_a := *; + template RoI tspt_recof_i_q := ?; + template RoI tspt_recof_i_r := {1,(1..3)}; //range + //template RoI tspt_recof_i_c := complement {1,2}; //range + template RoI tspt_recof_i_c := {1,complement(1,2,3)} + //template RoI tspt_recof_i_cr := {1,complement(1..3)} + template RoI tspt_recof_i_lv := ? length(3) + template RoI tspt_recof_i_lr := ? length(3..5) //length range + template RoI tspt_recof_i_p := { permutation (1,2,3),10 } + + //it will modified for sth in cfg file: + template RoI tspt_recof_i_mod4v0 := ? + template RoI tspt_recof_i_mod4v1 := ? + template RoI tspt_recof_i_mod4v2 := ?; + template RoI tspt_recof_i_mod4v3 := ?; + template RoI tspt_recof_i_mod4v3a := ?; + template RoI tspt_recof_i_mod4v3q := ?; + template RoI tspt_recof_i_mod4vl3 := ({1},{(1,2),2,(3,4)}); //value list + template RoI tspt_recof_i_mod4vl := ? + template RoI tspt_recof_i_mod4v10 := ? + template RoI tspt_recof_i_mod4o := {1,2,3,4,5,6,7,8,9,10}; + template RoI tspt_recof_i_mod4a := {1,2,3,4,5,6,7,8,9,10}; + template RoI tspt_recof_i_mod4q := {1,2,3,4,5,6,7,8,9,10}; + template RoI tspt_recof_i_mod4r := {2}; + template RoI tspt_recof_i_mod4cu := { permutation (1,2,3),10 }; ///almost bug + template RoI tspt_recof_i_mod4c := { permutation (1,2,3),10 }; ///almost bug + template RoI tspt_recof_i_mod4cm1 := { permutation (1,2,3) }; + template RoI tspt_recof_i_mod4cm2 := { permutation (1,2,3),10 }; + template RoI tspt_recof_i_mod4lv := ? + template RoI tspt_recof_i_mod4lr := * + template RoI tspt_recof_i_mod4p := {12,34} + template RoI tspt_recof_i_mod4rifp := {12,34} //will be changed for range + template RoI tspt_recof_i_mod4vlifp := * //will be changed + //rec of float + template RoF tspt_recof_f_v0 := {}; + template RoF tspt_recof_f_v1 := {1.0}; + template RoF tspt_recof_f_v2 := {1.0,2.0}; + //template RoF tspt_recof_f_v2 := {omit,2.0}; //not allowed + template RoF tspt_recof_f_v3 := {1.0,2.0,3.0}; + template RoF tspt_recof_f_v3a := {1.0,*,3.0}; + template RoF tspt_recof_f_v3q := {1.0,?,3.0}; + template RoF tspt_recof_f_vl3 := {(1.0,2.0),2.0,(3.0,4.0)}; //value list + template RoF tspt_recof_f_vl := ( {1.0,2.0,3.0}, {2.0,2.0,4.0} ) + template RoF tspt_recof_f_v10 := {1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0}; + template RoF tspt_recof_f_o := omit; + template RoF tspt_recof_f_a := *; + template RoF tspt_recof_f_q := ?; + template RoF tspt_recof_f_r := {1.0,(1.0..3.0)}; //range + //template RoF tspt_recof_f_c := complement {1.0,2.0}; //range + template RoF tspt_recof_f_c := {1.0,complement(1.0,2.0,3.0)} + //template RoF tspt_recof_f_cr := {1,complement(1.0..3.0)} + template RoF tspt_recof_f_lv := ? length(3) + template RoF tspt_recof_f_lr := ? length(3..5) //length range + template RoF tspt_recof_f_p := { permutation (1.0,2.0,3.0),10.0 } + + //it will modified for sth in cfg file: + template RoF tspt_recof_f_mod4v0 := ? + template RoF tspt_recof_f_mod4v1 := ? + template RoF tspt_recof_f_mod4v2 := ?; + template RoF tspt_recof_f_mod4v3 := ?; + template RoF tspt_recof_f_mod4v3a := ?; + template RoF tspt_recof_f_mod4v3q := ?; + template RoF tspt_recof_f_mod4vl3 := ({1.0},{(1.0,2.0),2.0,(3.0,4.0)}); //value list + template RoF tspt_recof_f_mod4vl := ? + template RoF tspt_recof_f_mod4v10 := ? + template RoF tspt_recof_f_mod4o := {1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0}; + template RoF tspt_recof_f_mod4a := {1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0}; + template RoF tspt_recof_f_mod4q := {1.0,2.0,3.0,4.0,5.0,6.0,7.0,8.0,9.0,10.0}; + template RoF tspt_recof_f_mod4r := {2.0}; + template RoF tspt_recof_f_mod4cu := { permutation (1.0,2.0,3.0),10.0 }; ///almost bug + template RoF tspt_recof_f_mod4c := { permutation (1.0,2.0,3.0),10.0 }; ///almost bug + template RoF tspt_recof_f_mod4cm1 := { permutation (1.0,2.0,3.0) }; + template RoF tspt_recof_f_mod4cm2 := { permutation (1.0,2.0,3.0),10.0 }; + template RoF tspt_recof_f_mod4lv := ? + template RoF tspt_recof_f_mod4lr := * + template RoF tspt_recof_f_mod4p := {12.0,34.0} + template RoF tspt_recof_f_mod4rifp := {12.0,34.0} //will be changed for range +} +//========================================================================= +// Data Types +//========================================================================= + +// Insert data type defintions here if applicable! +// You can use the data_type skeleton! + +//========================================================================= +// Signatures +//========================================================================= + +// Insert signature definitions here if applicable! +// You can use the signature skeleton! + +//========================================================================= +//Port Types +//========================================================================= + +// Insert port type defintions here if applicable! +// You can use the port_type skeleton! + +//========================================================================= +//Component Types +//========================================================================= + +// Insert component type defintions here if applicable! +// You can use the component_type skeleton! + +//========================================================================= +// Constants +//========================================================================= + +// Insert constants here if applicable! +// You can use the constant skeleton! + +//========================================================================= +// Templates +//========================================================================= + //record of + template RoI t_recof_i_v0 := {}; + template RoI t_recof_i_v1 := {1}; + template RoI t_recof_i_v2 := {1,2}; + //template RoI t_recof_i_v2 := {omit,2}; //not allowed + template RoI t_recof_i_v3 := {1,2,3}; + template RoI t_recof_i_v3a := {1,*,3}; + template RoI t_recof_i_v3q := {1,?,3}; + template RoI t_recof_i_vl3 := {(1,2),2,(3,4)}; //value list + template RoI t_recof_i_v10 := {1,2,3,4,5,6,7,8,9,10}; + template RoI t_recof_i_o := omit; + template RoI t_recof_i_a := *; + template RoI t_recof_i_q := ?; + template RoI t_recof_i_r := {1,(1..3)}; //range + //template RoI t_recof_i_c := complement {1,2}; + template RoI t_recof_i_c := {1,complement(1,2,3)} + //template RoI t_recof_i_cr := {1,complement(1..3)} //TODO: check why it is not accepted + template RoI t_recof_i_lv := ? length(3) + template RoI t_recof_i_lr := ? length(3..5) //length range + template RoI t_recof_i_p := { permutation (1,2,3),10 } + +//========================================================================= +// Altsteps +//========================================================================= + +// Insert altsteps here if applicable! +// You can use the altstep skeleton! + +//========================================================================= +// Functions +//========================================================================= + +// Insert functions here if applicable! +// You can use the function skeleton! + +//========================================================================= +// Testcases +//========================================================================= + + testcase tc_recordof_i_NoModulePar() runs on MC { + + log(t_recof_i_v0); + if( log2str(t_recof_i_v0) != "{ }") { setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_v1); + if( log2str(t_recof_i_v1) != "{ 1 }") {setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_v2); + if( log2str(t_recof_i_v2) != "{ 1, 2 }") {setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_v3); + if( log2str(t_recof_i_v3) != "{ 1, 2, 3 }") {setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_v3a); + if( log2str(t_recof_i_v3a) != "{ 1, *, 3 }") {setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_v3q); + if( log2str(t_recof_i_v3q) != "{ 1, ?, 3 }") {setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_vl3); + if( log2str(t_recof_i_vl3) != "{ (1, 2), 2, (3, 4) }") {setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_v10); + if( log2str(t_recof_i_v10) != "{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }") {setverdict(fail) }; + log(t_recof_i_o); + if( log2str(t_recof_i_o) != "omit") { setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_a); + if( log2str(t_recof_i_a) != "*") { setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_q); + if( log2str(t_recof_i_q) != "?") { setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_r); + if( log2str(t_recof_i_r) != "{ 1, (1 .. 3) }") { setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_c); + if( log2str(t_recof_i_c) != "{ 1, complement(1, 2, 3) }") { setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_lv); + if( log2str(t_recof_i_lv) != "? length (3)") { setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_lr); + if( log2str(t_recof_i_lr) != "? length (3 .. 5)") { setverdict(fail) } else { setverdict(pass) }; + log(t_recof_i_p); + if( log2str(t_recof_i_p) != "{ permutation(1, 2, 3), 10 }") { setverdict(fail) } else { setverdict(pass) }; + } + + + testcase tc_recordof_i_ModulePar() runs on MC { + + log(tspt_recof_i_v0); + if( log2str(tspt_recof_i_v0) != "{ }") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_v1); + if( log2str(tspt_recof_i_v1) != "{ 1 }") {setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_v2); + if( log2str(tspt_recof_i_v2) != "{ 1, 2 }") {setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_v3); + if( log2str(tspt_recof_i_v3) != "{ 1, 2, 3 }") {setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_v3a); + if( log2str(tspt_recof_i_v3a) != "{ 1, *, 3 }") {setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_v3q); + if( log2str(tspt_recof_i_v3q) != "{ 1, ?, 3 }") {setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_vl3); + if( log2str(tspt_recof_i_vl3) != "{ (1, 2), 2, (3, 4) }") {setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_v10); + if( log2str(tspt_recof_i_v10) != "{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }") {setverdict(fail) }; + log(tspt_recof_i_o); + if( log2str(tspt_recof_i_o) != "omit") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_a); + if( log2str(tspt_recof_i_a) != "*") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_q); + if( log2str(tspt_recof_i_q) != "?") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_r); + if( log2str(tspt_recof_i_r) != "{ 1, (1 .. 3) }") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_c); + if( log2str(tspt_recof_i_c) != "{ 1, complement(1, 2, 3) }") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_lv); + if( log2str(tspt_recof_i_lv) != "? length (3)") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_lr); + if( log2str(tspt_recof_i_lr) != "? length (3 .. 5)") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_i_p); + if( log2str(tspt_recof_i_p) != "{ permutation(1, 2, 3), 10 }") { setverdict(fail) } else { setverdict(pass) }; + } + + testcase tc_recordof_i_Embedded() runs on MC { //TODO + //TODO + } + //===== + testcase tc_recordof_i_v0() runs on MC { + log(tspt_recof_i_v0); + var RoI vl_long :={}; //to stress test + for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i } + var RoRoI vl_good_values := { {} } + var RoRoI vl_wrong_values := { {1},{2},{1,2,3},{1,2,3,4,1000}, vl_long } + f_checkMatchingValues_roi(tspt_recof_i_v0,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_v1() runs on MC { + log(tspt_recof_i_v1); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1} }; + var RoRoI vl_wrong_values := { {2},{1,2},{1,2,3},{1,2,3,4,1000} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_v1,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_v2() runs on MC { + log(tspt_recof_i_v2); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,2} }; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,3},{1,2,3,4,1000} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_v2,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_v3() runs on MC { + log(tspt_recof_i_v3); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,2,3} }; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,4},{1,2,3,4,1000} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_v3,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_v3a() runs on MC { + log(tspt_recof_i_v3a); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,1,3}, {1,2,3}, {1,3,3}, {1,4,3}, {1,9999,3} }; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,4},{1,2,3,4,1000} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_v3a,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_v3q() runs on MC { + log(tspt_recof_i_v3q); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,1,3}, {1,2,3}, {1,3,3}, {1,4,3}, {1,9999,3} }; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,4},{1,2,3,4,1000} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_v3q,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_vl3() runs on MC { + log(tspt_recof_i_vl3); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,2,3}, {2,2,3}, {1,2,4}, {2,2,4} }; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,5},{1,2,3,4,1000} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_vl3,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_vl() runs on MC { + log(tspt_recof_i_vl); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,2,3}, {2,2,4} }; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,4},{1,2,3,4,1000}, {2,2,3}, {1,2,4} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_vl,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_v10() runs on MC { + log(tspt_recof_i_v10); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,2,3,4,5,6,7,8,9,10} }; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11}} //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_v10,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_o() runs on MC { + log(tspt_recof_i_o); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := {}; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_o,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_a() runs on MC { + log(tspt_recof_i_a); + var RoRoI vl_good_values := {{}, {2},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + var RoRoI vl_wrong_values := {}; + f_checkMatchingValues_roi(tspt_recof_i_a,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_q() runs on MC { + log(tspt_recof_i_q); + var RoRoI vl_good_values := { {}, {2},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + var RoRoI vl_wrong_values := {}; + f_checkMatchingValues_roi(tspt_recof_i_q,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_r() runs on MC { + log(tspt_recof_i_r); + var RoRoI vl_good_values := { {1,1},{1,2},{1,3} } + var RoRoI vl_wrong_values := { {}, {2},{1,4},{-1,4},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + f_checkMatchingValues_roi(tspt_recof_i_r,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_c() runs on MC { + log(tspt_recof_i_c); + var RoRoI vl_good_values := { {1,0},{1,4},{1,5}} + var RoRoI vl_wrong_values := { {}, {2},{1,1},{1,2},{1,3}, {2,4},{-1,4},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + f_checkMatchingValues_roi(tspt_recof_i_c,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_lv() runs on MC { + log(tspt_recof_i_lv); + var RoRoI vl_good_values := { {0,1,0},{1,4,5},{1,5,-1},{1000,6000,700},{11,5,-3},{1,2,4}} + var RoRoI vl_wrong_values := { {}, {2},{1,1},{1,2},{1,3},{2,4},{-1,4},{2,3},{1,2,3,4,1000},{1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + f_checkMatchingValues_roi(tspt_recof_i_lv,vl_good_values,vl_wrong_values); + } + + //length range + testcase tc_recordof_i_lr() runs on MC { + log(tspt_recof_i_lr); + var RoRoI vl_good_values := { {1,0,1},{1,2,3,4},{1,2,3,4,5},{-5,4,3,2,1}, {0,0,0} } + var RoRoI vl_wrong_values := { {}, {2},{1,1},{1,2},{1,3},{2,4},{-1,4},{2,3}, {1,2,3,4,1000,1001}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + f_checkMatchingValues_roi(tspt_recof_i_lr,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_p() runs on MC { + log(tspt_recof_i_p); + var RoRoI vl_good_values := { {1,2,3,10},{1,3,2,10},{2,1,3,10},{2,3,1,10},{3,1,2,10},{3,2,1,10} } + var RoRoI vl_wrong_values := { {}, {2},{1,1},{1,2},{1,3},{2,4},{-1,4},{2,3},{11,5,-3},{1,2,4},{1,2,3,11}, {4,2,3,10},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + f_checkMatchingValues_roi(tspt_recof_i_p,vl_good_values,vl_wrong_values); + } + + //====recordof templates modified from cfg file===== + + testcase tc_recordof_i_mod4v0() runs on MC { + log(tspt_recof_i_mod4v0); + var RoI vl_long :={}; //to stress test + for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i } + var RoRoI vl_good_values := { {} } + var RoRoI vl_wrong_values := { {1},{2},{1,2,3},{1,2,3,4,1000}, vl_long } + f_checkMatchingValues_roi(tspt_recof_i_mod4v0,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4v1() runs on MC { + log(tspt_recof_i_mod4v1); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1} }; + var RoRoI vl_wrong_values := { {},{2},{1,2},{1,2,3},{1,2,3,4,1000} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_mod4v1,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4v2() runs on MC { + log(tspt_recof_i_mod4v2); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,2} }; + var RoRoI vl_wrong_values := { {},{1},{2},{2,3},{1,2,3},{1,2,3,4,1000} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_mod4v2,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4v3() runs on MC { + log(tspt_recof_i_mod4v3); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,2,3} }; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,4},{1,2,3,4,1000} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_mod4v3,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4v3a() runs on MC { + log(tspt_recof_i_mod4v3a); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,1,3}, {1,2,3}, {1,3,3}, {1,4,3}, {1,9999,3} }; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,4},{1,2,3,4,1000} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_mod4v3a,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4v3q() runs on MC { + log(tspt_recof_i_mod4v3q); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,1,3}, {1,2,3}, {1,3,3}, {1,4,3}, {1,9999,3} }; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,4},{1,2,3,4,1000} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_mod4v3q,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4vl3() runs on MC { + log(tspt_recof_i_mod4vl3); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,2,3}, {2,2,3}, {1,2,4}, {2,2,4} }; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,5},{1,2,3,4,1000} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_mod4vl3,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4vl() runs on MC { + log(tspt_recof_i_mod4vl); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,2,3}, {2,2,4} }; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,4},{1,2,3,4,1000}, {2,2,3}, {1,2,4} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_mod4vl,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4v10() runs on MC { + log(tspt_recof_i_mod4v10); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := { {1,2,3,4,5,6,7,8,9,10} }; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11}} //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_mod4v10,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4o() runs on MC { + log(tspt_recof_i_mod4o); + //var RoI vl_long :={}; //to stress test + //for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= i }; + var RoRoI vl_good_values := {}; + var RoRoI vl_wrong_values := { {2},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } //, vl_long }; + f_checkMatchingValues_roi(tspt_recof_i_mod4o,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4a() runs on MC { + log(tspt_recof_i_mod4a); + var RoRoI vl_good_values := {{}, {2},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + var RoRoI vl_wrong_values := {}; + f_checkMatchingValues_roi(tspt_recof_i_mod4a,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4q() runs on MC { + log(tspt_recof_i_mod4q); + var RoRoI vl_good_values := { {}, {2},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + var RoRoI vl_wrong_values := {}; + f_checkMatchingValues_roi(tspt_recof_i_mod4q,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4r() runs on MC { + log(tspt_recof_i_mod4r); + var RoRoI vl_good_values := { {1,1},{1,2},{1,3} } + var RoRoI vl_wrong_values := { {}, {2},{1,4},{-1,4},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + f_checkMatchingValues_roi(tspt_recof_i_mod4r,vl_good_values,vl_wrong_values); + } + + //fails + testcase tc_recordof_i_cu_noconfig() runs on MC { + var template RoI vlt := { permutation (1,2,3),10 } + log("Before mod: ",vlt); //Before mod: { permutation(1, 2, 3), 10 } + vlt := { 1, complement(1,2,3),3,4 } ; + log("after mod: ",vlt); //after mod: { permutation(1, complement(1, 2, 3), 3), 4 } but it should be { 1, complement(1,2,3),3,4 } + var RoRoI vl_good_values := {{1,0,3,4},{1,4,3,4},{1,5,3,4},{1,-1,3,4}} + var RoRoI vl_wrong_values := { {}, {2},{1,1,3,4},{1,2,3,4},{1,3,3,4},{1,2,3,4},{1,3},{3,1,1,4} } + f_checkMatchingValues_roi(vlt,vl_good_values,vl_wrong_values); + } + + //fails + testcase tc_recordof_i_mod4c_undefined() runs on MC { + //original: + log(tspt_recof_i_mod4cu); //expected: { 1, complement(1,2,3),3,4 } , got: { permutation(1, complement(1, 2, 3), 3), 4 } + var RoRoI vl_good_values := {{1,0,3,4},{1,4,3,4},{1,5,3,4},{1,-1,3,4}} + var RoRoI vl_wrong_values := { {}, {2},{1,1,3,4},{1,2,3,4},{1,3,3,4},{1,2,3,4},{1,3},{3,1,1,4} } + f_checkMatchingValues_roi(tspt_recof_i_mod4cu,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4c() runs on MC { + log(tspt_recof_i_mod4c); + var RoRoI vl_good_values := {{1,0,1,1},{1,4,1,1},{1,5,1,1}} + var RoRoI vl_wrong_values := { {}, {2},{1,1},{1,2},{1,3}, {2,4},{-1,4},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + f_checkMatchingValues_roi(tspt_recof_i_mod4c,vl_good_values,vl_wrong_values); + } + + //3->3 elements + testcase tc_recordof_i_mod4cm1() runs on MC { + log(tspt_recof_i_mod4cm1); + var RoRoI vl_good_values := {{1,0,1},{1,4,1},{1,5,1}} + var RoRoI vl_wrong_values := { {}, {2},{1,1},{1,2},{1,3}, {2,4},{-1,4},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + f_checkMatchingValues_roi(tspt_recof_i_mod4cm1,vl_good_values,vl_wrong_values); + } + //3->5 elements + testcase tc_recordof_i_mod4cm2() runs on MC { + log(tspt_recof_i_mod4cm2); + var RoRoI vl_good_values := {{1,0,1,1,1},{1,4,1,1,1},{1,5,1,1,1}} + var RoRoI vl_wrong_values := { {}, {2},{1,1},{1,2},{1,3}, {2,4},{-1,4},{2,3},{1,2,4},{1,2,3,10}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + f_checkMatchingValues_roi(tspt_recof_i_mod4cm2,vl_good_values,vl_wrong_values); + } + testcase tc_recordof_i_mod4lv() runs on MC { + log(tspt_recof_i_mod4lv); + var RoRoI vl_good_values := { {0,1,0},{1,4,5},{1,5,-1},{1000,6000,700},{11,5,-3},{1,2,4},{2,3,4}} + var RoRoI vl_wrong_values := { {}, {2},{1,1},{1,2},{1,3},{2,4},{-1,4},{1,2,3,4,1000},{1,2,3,4,5,6,7,8,9,11}} + f_checkMatchingValues_roi(tspt_recof_i_mod4lv,vl_good_values,vl_wrong_values); + } + + //length range + testcase tc_recordof_i_mod4lr() runs on MC { + log(tspt_recof_i_mod4lr); + var RoRoI vl_good_values := { {1,0,1},{1,2,3,4},{1,2,3,4,5},{-5,4,3,2,1}, {0,0,0} } + var RoRoI vl_wrong_values := { {}, {2},{1,1},{1,2},{1,3},{2,4},{-1,4},{2,3}, {1,2,3,4,1000,1001}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + f_checkMatchingValues_roi(tspt_recof_i_mod4lr,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4p() runs on MC { + log(tspt_recof_i_mod4p); + var RoRoI vl_good_values := { {1,2,3,10},{1,3,2,10},{2,1,3,10},{2,3,1,10},{3,1,2,10},{3,2,1,10} } + var RoRoI vl_wrong_values := { {}, {2},{1,1},{1,2},{1,3},{2,4},{-1,4},{2,3},{11,5,-3},{1,2,4},{1,2,3,11}, {4,2,3,10},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + f_checkMatchingValues_roi(tspt_recof_i_mod4p,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4rifp() runs on MC { + log(tspt_recof_i_mod4rifp); + var RoRoI vl_good_values := { {1,1},{1,2},{1,3} } + var RoRoI vl_wrong_values := { {}, {2},{1,4},{-1,4},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + f_checkMatchingValues_roi(tspt_recof_i_mod4rifp,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_i_mod4vlifp() runs on MC { + log(tspt_recof_i_mod4vlifp); + var RoRoI vl_good_values := { {1,2,3},{2,2,4} } + var RoRoI vl_wrong_values := { {}, {2},{1,4},{-1,4},{2,3},{1,2,4},{1,2,3,4,1000}, {1,2,3,4,5,6,7,8,9,11},{1,2,3,4,5,6,7,8,9,10} } + f_checkMatchingValues_roi(tspt_recof_i_mod4vlifp,vl_good_values,vl_wrong_values); + } + + //record of floats + testcase tc_recordof_f_ModulePar() runs on MC { + + log(tspt_recof_f_v0); + if( log2str(tspt_recof_f_v0) != "{ }") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_v1); + if( log2str(tspt_recof_f_v1) != "{ 1.000000 }") {setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_v2); + if( log2str(tspt_recof_f_v2) != "{ 1.000000, 2.000000 }") {setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_v3); + if( log2str(tspt_recof_f_v3) != "{ 1.000000, 2.000000, 3.000000 }") {setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_v3a); + if( log2str(tspt_recof_f_v3a) != "{ 1.000000, *, 3.000000 }") {setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_v3q); + if( log2str(tspt_recof_f_v3q) != "{ 1.000000, ?, 3.000000 }") {setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_vl3); + if( log2str(tspt_recof_f_vl3) != "{ (1.000000, 2.000000), 2.000000, (3.000000, 4.000000) }") {setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_v10); + if( log2str(tspt_recof_f_v10) != "{ 1.000000, 2.000000, 3.000000, 4.000000, 5.000000, 6.000000, 7.000000, 8.000000, 9.000000, 10.000000 }") {setverdict(fail) }; + log(tspt_recof_f_o); + if( log2str(tspt_recof_f_o) != "omit") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_a); + if( log2str(tspt_recof_f_a) != "*") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_q); + if( log2str(tspt_recof_f_q) != "?") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_r); + if( log2str(tspt_recof_f_r) != "{ 1.000000, (1.000000 .. 3.000000) }") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_c); + if( log2str(tspt_recof_f_c) != "{ 1.000000, complement(1.000000, 2.000000, 3.000000) }") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_lv); + if( log2str(tspt_recof_f_lv) != "? length (3)") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_lr); + if( log2str(tspt_recof_f_lr) != "? length (3 .. 5)") { setverdict(fail) } else { setverdict(pass) }; + log(tspt_recof_f_p); + if( log2str(tspt_recof_f_p) != "{ permutation(1.000000, 2.000000, 3.000000), 10.000000 }") { setverdict(fail) } else { setverdict(pass) }; + } + + testcase tc_recordof_f_v0() runs on MC { + log(tspt_recof_f_v0); + var RoF vl_long :={}; //to stress test + for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= int2float(i) } + var RoRoF vl_good_values := { {} } + var RoRoF vl_wrong_values := { {1.0},{2.0},{1.0,2.0,3.0},{1.0,2.0,3.0,4.0,1.0000}, vl_long } + f_checkMatchingValues_rof(tspt_recof_f_v0,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_f_v1() runs on MC { + log(tspt_recof_f_v1); + var RoF vl_long :={}; //to stress test + for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= int2float(i) } + var RoRoF vl_good_values := { {1.0} } + var RoRoF vl_wrong_values := { {},{2.0},{1.0,2.0,3.0},{1.0,2.0,3.0,4.0,1.0000}, vl_long } + f_checkMatchingValues_rof(tspt_recof_f_v1,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_f_v2() runs on MC { + log(tspt_recof_f_v2); + var RoF vl_long :={}; //to stress test + for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= int2float(i) } + var RoRoF vl_good_values := { {1.0,2.0} } + var RoRoF vl_wrong_values := { {},{2.0},{2.0,1.0},{1.0,2.0,3.0},{1.0,2.0,3.0,4.0,1.0000}, vl_long } + f_checkMatchingValues_rof(tspt_recof_f_v2,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_f_v3() runs on MC { + log(tspt_recof_f_v3); + var RoF vl_long :={}; //to stress test + for( var integer i:=0;i<1000;i:=i+1) { vl_long[i]:= int2float(i) } + var RoRoF vl_good_values := { {1.0,2.0,3.0} } + var RoRoF vl_wrong_values := { {},{2.0},{2.0,1.0},{1.0,2.0}, {1.0,3.0,2.0}, {1.0,2.0,4.0},{1.0,2.0,3.0, -4.9},{1.0,2.0,3.0,4.0,1.0000}, vl_long } + f_checkMatchingValues_rof(tspt_recof_f_v3,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_f_v3a() runs on MC { + log(tspt_recof_f_v3a); + var RoRoF vl_good_values := { {1.0,2.0,3.0}, {1.0,29.9,3.0}, {1.0,-29.9,3.0} } + var RoRoF vl_wrong_values := { {},{2.0},{2.0,1.0},{1.0,2.0}, {1.0,3.0,2.0}, {1.0,2.0,4.0},{1.0,2.0,3.0, -4.9},{1.0,2.0,3.0,4.0,1.0000}} + f_checkMatchingValues_rof(tspt_recof_f_v3a,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_f_v3q() runs on MC { + log(tspt_recof_f_v3q); + var RoRoF vl_good_values := { {1.0,2.0,3.0}, {1.0,29.9,3.0}, {1.0,-29.9,3.0} } + var RoRoF vl_wrong_values := { {},{2.0},{2.0,1.0},{1.0,2.0}, {1.0,3.0,2.0}, {1.0,2.0,4.0},{1.0,2.0,3.0, -4.9},{1.0,2.0,3.0,4.0,1.0000}} + f_checkMatchingValues_rof(tspt_recof_f_v3q,vl_good_values,vl_wrong_values); + } + testcase tc_recordof_f_vl3() runs on MC { + log(tspt_recof_f_vl3); + var RoRoF vl_good_values := { {1.0,2.0,3.0}, {2.0,2.0,3.0}, {1.0,2.0,4.0}, {2.0,2.0,4.0} } + var RoRoF vl_wrong_values := { {},{2.0},{2.0,1.0},{1.0,2.0}, {1.0,3.0,2.0}, {1.0,2.0,5.0},{1.0,2.0,3.0, -4.9},{1.0,2.0,3.0,4.0,1.0000}} + f_checkMatchingValues_rof(tspt_recof_f_vl3,vl_good_values,vl_wrong_values); + } + + testcase tc_recordof_f_vl() runs on MC { + log(tspt_recof_f_vl); + var RoRoF vl_good_values := { {1.0,2.0,3.0}, {2.0,2.0,4.0} } + var RoRoF vl_wrong_values := { {},{2.0},{2.0,1.0},{1.0,2.0},{1.0,2.0,4.0}, {2.0,3.0,4.0},{1.0,3.0,2.0}, {1.0,2.0,4.0},{1.0,2.0,3.0, -4.9},{1.0,2.0,3.0,4.0,1.0000}} + f_checkMatchingValues_rof(tspt_recof_f_vl,vl_good_values,vl_wrong_values); + } + testcase tc_recordof_f_v10() runs on MC { + log(tspt_recof_f_v10); + var RoRoF vl_good_values := { {1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0, 9.0, 10.0} } + var RoRoF vl_wrong_values := { {},{2.0},{2.0,1.0},{1.0,2.0},{1.0,2.0,4.0}, {2.0,3.0,4.0},{1.0,3.0,2.0}, {1.0,2.0,4.0},{1.0,2.0,3.0, -4.9},{1.0,2.0,3.0,4.0,1.0000}} + f_checkMatchingValues_rof(tspt_recof_f_v10,vl_good_values,vl_wrong_values); + } + //TODO: record of charstring, bitstring etc + rec of type + +//========================================================================= +// Control +//========================================================================= + +control { + log("***record of tests****"); + execute(tc_recordof_i_NoModulePar()); + execute(tc_recordof_i_ModulePar()); + execute(tc_recordof_i_v0()); + execute(tc_recordof_i_v1()); + execute(tc_recordof_i_v2()); + execute(tc_recordof_i_v3()); + execute(tc_recordof_i_v3a()); + execute(tc_recordof_i_v3q()); + execute(tc_recordof_i_vl3()); + execute(tc_recordof_i_vl()); + execute(tc_recordof_i_v10()); + execute(tc_recordof_i_o()); + execute(tc_recordof_i_a()); + execute(tc_recordof_i_q()); + execute(tc_recordof_i_r()); + execute(tc_recordof_i_c()); + execute(tc_recordof_i_lv()); + execute(tc_recordof_i_lr()); + execute(tc_recordof_i_p()); + + execute(tc_recordof_i_mod4v0()); + execute(tc_recordof_i_mod4v1()); + execute(tc_recordof_i_mod4v2()); + execute(tc_recordof_i_mod4v3()); + execute(tc_recordof_i_mod4v3a()); + execute(tc_recordof_i_mod4v3q()); + execute(tc_recordof_i_mod4vl3()); + execute(tc_recordof_i_mod4vl()); + execute(tc_recordof_i_mod4v10()); + execute(tc_recordof_i_mod4o()); + execute(tc_recordof_i_mod4a()); + execute(tc_recordof_i_mod4q()); + execute(tc_recordof_i_mod4r()); + //execute(tc_recordof_i_cu_noconfig()); //fails, TR: HS10984 + //execute(tc_recordof_i_mod4c_undefined()); //fails, TR: HS10984 + execute(tc_recordof_i_mod4c()); + execute(tc_recordof_i_mod4cm1()); + execute(tc_recordof_i_mod4cm2()); + execute(tc_recordof_i_mod4lv()); + execute(tc_recordof_i_mod4lr()); + execute(tc_recordof_i_mod4p()); + execute(tc_recordof_i_mod4rifp()); + execute(tc_recordof_i_mod4vlifp()); + + execute(tc_recordof_f_ModulePar()); + execute(tc_recordof_f_v0()); + execute(tc_recordof_f_v1()); + execute(tc_recordof_f_v2()); + execute(tc_recordof_f_v3()); + execute(tc_recordof_f_v3a()); + execute(tc_recordof_f_v3q()); + execute(tc_recordof_f_vl3()); + execute(tc_recordof_f_vl()); + execute(tc_recordof_f_v10()); +} +} // end of module diff --git a/Regression_Test_java/src/text2ttcn_nolegacy/set_test.ttcn b/Regression_Test_java/src/text2ttcn_nolegacy/set_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..8be17f2a336add4b42c137e90473e074fffeec55 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn_nolegacy/set_test.ttcn @@ -0,0 +1,327 @@ +/****************************************************************************** + * 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 + * Baranyi, Botond + * + ******************************************************************************/ +/* +//AUTHOR: +//DATE: +//VERSION: +*/ +module set_test +{ + +//========================================================================= +// Import Part +//========================================================================= +import from types2 all; +import from functions2 all; + +//========================================================================= +// Module Parameters +//========================================================================= + +modulepar { + //set + template SET tspt_set_v0; + template SET tspt_set_v1:= { b:=true }; + template SET tspt_set_v2:= { b:=true, cs:= "sth" } + template SET tspt_set_v3:= { b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=99} + // these will be overwritten from cfg file: + template SET tspt_set_mod4v1 := omit; + template SET tspt_set_mod4v2 := omit; + template SET tspt_set_mod4v3 := omit; + template SET tspt_set_mod4a := omit; + template SET tspt_set_mod4q := omit; + template SET tspt_set_mod4o := *; + template SET tspt_set_mod4c0 := *; + template SET tspt_set_mod4c1 := *; + template SET tspt_set_mod4c2 := *; + template SET tspt_set_mod4c3 := *; +} +//========================================================================= +// Data Types +//========================================================================= + +// Insert data type defintions here if applicable! +// You can use the data_type skeleton! + +//========================================================================= +// Signatures +//========================================================================= + +// Insert signature definitions here if applicable! +// You can use the signature skeleton! + +//========================================================================= +//Port Types +//========================================================================= + +// Insert port type defintions here if applicable! +// You can use the port_type skeleton! + +//========================================================================= +//Component Types +//========================================================================= + +// Insert component type defintions here if applicable! +// You can use the component_type skeleton! + +//========================================================================= +// Constants +//========================================================================= + +// Insert constants here if applicable! +// You can use the constant skeleton! + +//========================================================================= +// Templates +//========================================================================= + +// Insert templates here if applicable! +// You can use the template skeleton! + +//========================================================================= +// Altsteps +//========================================================================= + +// Insert altsteps here if applicable! +// You can use the altstep skeleton! + +//========================================================================= +// Functions +//========================================================================= + +// Insert functions here if applicable! +// You can use the function skeleton! + +//========================================================================= +// Testcases +//========================================================================= +testcase tc_set_ModulePar() runs on MC { + //values: + log(tspt_set_v0); + if(log2str(tspt_set_v0) != "<uninitialized template>") {setverdict(fail) } else {setverdict(pass)} + log(tspt_set_v1); + if(log2str(tspt_set_v1) != "{ b := true, i := <uninitialized template>, f := <uninitialized template>, bs := <uninitialized template>, os := <uninitialized template>, hs := <uninitialized template>, cs := <uninitialized template> }") {setverdict(fail) } else {setverdict(pass)} + log(tspt_set_v2); + if(log2str(tspt_set_v2) != "{ b := true, i := <uninitialized template>, f := <uninitialized template>, bs := <uninitialized template>, os := <uninitialized template>, hs := <uninitialized template>, cs := \"sth\" }") {setverdict(fail) } else {setverdict(pass)} + log(tspt_set_v3); + if(log2str(tspt_set_v3) != "{ b := true, i := 99, f := 0.000000, bs := omit, os := ?, hs := ?, cs := \"sth\" }") {setverdict(fail) } else {setverdict(pass)} + //jokers + if(log2str(tspt_set_mod4v1) != "{ b := true, i := <uninitialized template>, f := <uninitialized template>, bs := <uninitialized template>, os := <uninitialized template>, hs := <uninitialized template>, cs := <uninitialized template> }") {setverdict(fail) } else {setverdict(pass)} + if(log2str(tspt_set_mod4v2) != "{ b := true, i := <uninitialized template>, f := <uninitialized template>, bs := <uninitialized template>, os := <uninitialized template>, hs := <uninitialized template>, cs := \"sth\" }") {setverdict(fail) } else {setverdict(pass)} + if(log2str(tspt_set_mod4v3) != "{ b := true, i := 99, f := 0.000000, bs := omit, os := ?, hs := ?, cs := \"sth\" }") {setverdict(fail) } else {setverdict(pass)} + if(log2str(tspt_set_mod4a) != "*") {setverdict(fail) } else {setverdict(pass)}; + if(log2str(tspt_set_mod4q) != "?") {setverdict(fail) } else {setverdict(pass)}; + if(log2str(tspt_set_mod4o) != "omit") {setverdict(fail) } else {setverdict(pass)}; +} + +testcase tc_set_ModulePar_emb() runs on MC { + @try { + log(t_rset(tspt_set_v0)); + } + @catch( dte_message) { + if( match(dte_message, pattern "*Copying an uninitialized/unsupported template*" )) {setverdict(pass)} else {setverdict(fail)}; + } + log(tspt_set_v1); + @try { + log(t_rset(tspt_set_v1)); + } + @catch( dte_message) { + if( match(dte_message, pattern "*Copying an uninitialized/unsupported template*" )) {setverdict(pass)} else {setverdict(fail)}; + log("Hi"); + } + log("Bye"); + //jokers: + log(t_rset(tspt_set_mod4v1)); + if(log2str(t_rset(tspt_set_mod4v1)) == "{ s := { b := true, i := <uninitialized template>, f := <uninitialized template>, bs := <uninitialized template>, os := <uninitialized template>, hs := <uninitialized template>, cs := <uninitialized template> } }") {setverdict(pass)} else {setverdict(fail)}; + log(t_rset(tspt_set_mod4v2)); + if(log2str(t_rset(tspt_set_mod4v2)) == "{ s := { b := true, i := <uninitialized template>, f := <uninitialized template>, bs := <uninitialized template>, os := <uninitialized template>, hs := <uninitialized template>, cs := \"sth\" } }" ) {setverdict(pass)} else {setverdict(fail)}; + log(t_rset(tspt_set_mod4a)); + if(log2str(t_rset(tspt_set_mod4a)) == "{ s := * }") {setverdict(pass)} else {setverdict(fail)}; + log(t_rset(tspt_set_mod4q)); + if(log2str(t_rset(tspt_set_mod4q)) == "{ s := ? }") {setverdict(pass)} else {setverdict(fail)}; + log(t_rset(tspt_set_mod4o)); + if(log2str(t_rset(tspt_set_mod4o)) == "{ s := omit }") {setverdict(pass)} else {setverdict(fail)}; + log(t_rset(tspt_set_mod4c1)); + if(log2str(t_rset(tspt_set_mod4c1)) == "{ s := complement({ b := true, i := 99, f := 0.000000, bs := omit, os := ?, hs := ?, cs := \"sth\" }) }") {setverdict(pass)} else {setverdict(fail)}; + log(t_rset(tspt_set_mod4c2)); + if(log2str(t_rset(tspt_set_mod4c2)) == "{ s := complement({ b := true, i := 99, f := 0.000000, bs := omit, os := ?, hs := ?, cs := \"sth\" }) ifpresent }") {setverdict(pass)} else {setverdict(fail)}; + log(t_rset(tspt_set_mod4c3)); + if(log2str(t_rset(tspt_set_mod4c3)) == "{ s := complement({ b := true, i := 0, f := 0.000000, bs := omit, os := ?, hs := ?, cs := \"sth\" }, { b := true, i := 1, f := 0.000000, bs := omit, os := ?, hs := ?, cs := \"sth\" }, { b := true, i := 2, f := 0.000000, bs := omit, os := ?, hs := ?, cs := \"sth\" }) }") {setverdict(pass)} else {setverdict(fail)}; +} + +//rset +//cfg: tspt_set_mod4v3 := { b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=99} +testcase tc_set_mod4v3_emb() runs on MC { + log(t_rset(tspt_set_mod4v3)); + var RoRSET vl_good_values := { + {{ b:=true, i:=99, f:=0.0, bs:=omit, os:='FF'O,hs:='0'H, cs:="sth" }}, + {{ i:=99, b:=true, f:=0.0, bs:=omit, os:='ABBA'O, hs:='ABC11'H,cs:="sth" }}, + {{ b:=true, i:=99, f:=0.0, bs:=omit, os:='EF'O, hs:='D'H, cs:="sth" }}, + {{ b:=true, i:=99, f:=0.0, bs:=omit, os:='ABBA'O,hs:='A'H, cs:="sth" }} + } + var RoRSET vl_wrong_values := { + {omit}, + {{ b:=true, i:=omit, f:=0.0, bs:=omit, os:='FF'O, hs:='0'H, cs:="sth" }}, + {{ b:=true, i:=99, f:=0.0, bs:=omit, os:=omit, hs:=omit, cs:="sth" }}, + {{b:=true, i:=99, f:=0.0, bs:='0110'B, os:='ABBA'O,hs:='A'H, cs:="sth" }} + + } + f_checkMatchingValues_rset(t_rset(tspt_set_mod4v3),vl_good_values,vl_wrong_values); +} + +testcase tc_set_mod4a_emb() runs on MC { + log(t_rset(tspt_set_mod4a)); + var RoRSET vl_good_values := { + {omit}, + {{ b:=omit, i:=omit, f:=omit, bs:=omit, os:=omit,hs:=omit,cs:=omit}}, + {{ b:=true, i:=omit, f:=omit, bs:=omit, os:=omit,hs:=omit,cs:=omit}}, + {{ b:=true, i:=99, f:=0.0, bs:=omit, os:='FF'O,hs:='0'H,cs:="sth" }}, + {{ i:=99, b:=true, f:=0.0, bs:=omit, os:='ABBA'O,hs:='ABC11'H,cs:="sth" }} + } + var RoRSET vl_wrong_values := { } + f_checkMatchingValues_rset(t_rset(tspt_set_mod4a),vl_good_values,vl_wrong_values); +} + +testcase tc_set_mod4q_emb() runs on MC { + log(t_rset(tspt_set_mod4q)); + var RoRSET vl_good_values := { + {{ b:=omit, i:=omit, f:=omit, bs:=omit, os:=omit,hs:=omit,cs:=omit}}, + {{ b:=true, i:=omit, f:=omit, bs:=omit, os:=omit,hs:=omit,cs:=omit}}, + {{ b:=true, i:=99, f:=0.0, bs:=omit, os:='FF'O,hs:='0'H,cs:="sth" }}, + {{ i:=99, b:=true, f:=0.0, bs:=omit, os:='ABBA'O,hs:='ABC11'H,cs:="sth" }}, + {{ b:=true, i:=99, f:=0.0, bs:=omit, os:=omit,hs:=omit,cs:="sth" }}, + {{ b:=true, i:=99, f:=0.0, bs:='0110'B, os:='ABBA'O,hs:='A'H,cs:="sth" }} + } + var RoRSET vl_wrong_values := { + {omit} + } + f_checkMatchingValues_rset(t_rset(tspt_set_mod4q),vl_good_values,vl_wrong_values); +} + +testcase tc_set_mod4o_emb() runs on MC { + log(t_rset(tspt_set_mod4o)); + var RoRSET vl_good_values := { + {omit} + } + var RoRSET vl_wrong_values := { + {{ b:=omit, i:=omit, f:=omit, bs:=omit, os:=omit,hs:=omit,cs:=omit}}, + {{ b:=true, i:=omit, f:=omit, bs:=omit, os:=omit,hs:=omit,cs:=omit}}, + {{ b:=true, i:=99, f:=0.0, bs:=omit, os:='FF'O,hs:='0'H,cs:="sth" }}, + {{ i:=99, b:=true, f:=0.0, bs:=omit, os:='ABBA'O,hs:='ABC11'H,cs:="sth" }}, + {{ b:=true, i:=99, f:=0.0, bs:=omit, os:=omit,hs:=omit,cs:="sth" }}, + {{ b:=true, i:=99, f:=0.0, bs:='0110'B, os:='ABBA'O,hs:='A'H,cs:="sth" }} + } + f_checkMatchingValues_rset(t_rset(tspt_set_mod4o),vl_good_values,vl_wrong_values); +} +// Note: this tests legacy behavior and requires the -M compiler option! +//tspt_set_mod4c1 := complement({ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=99}) +testcase tc_set_mod4c1_emb() runs on MC { + log(t_rset(tspt_set_mod4c1)); + var RoRSET vl_good_values := { + {{ b:=false, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "noth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.1, bs:=omit, os:='00'O,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=omit,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:=omit,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=100}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:=omit,i:=100}}, + {{ b:=false, cs:= "no", f:=1.0, bs:='01'B, os:=omit,hs:=omit,i:=100}} + } + var RoRSET vl_wrong_values := { + {omit}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=99}} + } + f_checkMatchingValues_rset(t_rset(tspt_set_mod4c1),vl_good_values,vl_wrong_values); +} + +//tspt_set_mod4c2 := complement({ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=99}) ifpresent +testcase tc_set_mod4c2_emb() runs on MC { + log(t_rset(tspt_set_mod4c2)); + var RoRSET vl_good_values := { + { s:= omit }, + { s:= { b:=false, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "noth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.1, bs:=omit, os:='00'O,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=omit,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:=omit,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=100}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:=omit,i:=100}}, + {{ b:=false, cs:= "no", f:=1.0, bs:='01'B, os:=omit,hs:=omit,i:=100}} + } + var RoRSET vl_wrong_values := { + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=99}} + } + f_checkMatchingValues_rset(t_rset(tspt_set_mod4c2),vl_good_values,vl_wrong_values); +} +//complement(omit) +testcase tc_set_mod4c0_emb() runs on MC { + log(t_rset(tspt_set_mod4c0)); + var RoRSET vl_good_values := { + {{ b:=false, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "noth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.1, bs:=omit, os:='00'O,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=omit,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:=omit,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=100}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:=omit,i:=100}}, + {{ b:=false, cs:= "no", f:=1.0, bs:='01'B, os:=omit,hs:=omit,i:=100}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=99}} + } + var RoRSET vl_wrong_values := { + { omit } + } + f_checkMatchingValues_rset(t_rset(tspt_set_mod4c0),vl_good_values,vl_wrong_values); +} +//tspt_set_mod4c3 := +//complement({ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=0}, +//{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=1},{ b:=true,i:=2, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?}) + +testcase tc_set_mod4c3_emb() runs on MC { + log(t_rset(tspt_set_mod4c3)); + var RoRSET vl_good_values := { + {{ b:=false, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=98}}, + {{ b:=true, cs:= "noth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.1, bs:=omit, os:='00'O,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=omit,hs:='F'H,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:=omit,i:=99}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=100}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:=omit,i:=100}}, + {{ b:=false, cs:= "no", f:=1.0, bs:='01'B, os:=omit,hs:=omit,i:=100}} + } + var RoRSET vl_wrong_values := { + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=0}}, + {{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:='00'O,hs:='F'H,i:=1}}, + {{ b:=true,i:=2, cs:= "sth", f:=0.0, bs:=omit, os:='01'O,hs:='A'H}} + } + f_checkMatchingValues_rset(t_rset(tspt_set_mod4c3),vl_good_values,vl_wrong_values); +} + +//========================================================================= +// Control +//========================================================================= + +control { + log("***set tests *********"); + execute(tc_set_ModulePar()); + execute(tc_set_ModulePar_emb()); + execute(tc_set_mod4v3_emb()); + execute(tc_set_mod4a_emb()); + execute(tc_set_mod4q_emb()); + execute(tc_set_mod4o_emb()); + execute(tc_set_mod4c1_emb()); + execute(tc_set_mod4c2_emb()); + execute(tc_set_mod4c0_emb()); + execute(tc_set_mod4c3_emb()); +} + +} // end of module diff --git a/Regression_Test_java/src/text2ttcn_nolegacy/setof_test.ttcn b/Regression_Test_java/src/text2ttcn_nolegacy/setof_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..1e71400e24afb8c0fb8659f1fbda93dca3c1988f --- /dev/null +++ b/Regression_Test_java/src/text2ttcn_nolegacy/setof_test.ttcn @@ -0,0 +1,314 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +/* +//AUTHOR: +//DATE: +//VERSION: +*/ +module setof_test +{ + +//========================================================================= +// Import Part +//========================================================================= +import from types2 all; +import from functions2 all; +//========================================================================= +// Module Parameters +//========================================================================= +modulepar { + + //set of + template SoCS tspt_setof_mod4v1 := omit; + template SoCS tspt_setof_mod4v2 := omit; + template SoCS tspt_setof_mod4v3 := omit; + template SoCS tspt_setof_mod4a := omit; + template SoCS tspt_setof_mod4q := omit; + template SoCS tspt_setof_mod4o := *; + template SoCS tspt_setof_mod4c0 := *; + template SoCS tspt_setof_mod4c1 := *; + template SoCS tspt_setof_mod4c2 := *; + template SoCS tspt_setof_mod4c3 := *; + template SoCS tspt_setof_mod4vl := *; + + template SoCS tspt_setof_mod4v1ifp := omit; + template SoCS tspt_setof_mod4v2ifp := omit; + template SoCS tspt_setof_mod4v3ifp := omit; + template SoCS tspt_setof_mod4aifp := omit; + template SoCS tspt_setof_mod4qifp := omit; + template SoCS tspt_setof_mod4oifp := *; + template SoCS tspt_setof_mod4c0ifp := *; + template SoCS tspt_setof_mod4c1ifp := *; + template SoCS tspt_setof_mod4c2ifp := *; + template SoCS tspt_setof_mod4c3ifp := *; + template SoCS tspt_setof_mod4vlifp := *; + template SoCS tspt_setof_mod4superset := *; + template SoCS tspt_setof_mod4supersetifp := *; + template SoCS tspt_setof_mod4supersetl3 := *; + template SoCS tspt_setof_mod4supersetl1_3 := *; + template SoCS tspt_setof_mod4supersetl3ifp := *; + template SoCS tspt_setof_mod4subset := *; + template SoCS tspt_setof_mod4subsetifp := *; +} + +//========================================================================= +// Data Types +//========================================================================= + +// Insert data type defintions here if applicable! +// You can use the data_type skeleton! + +//========================================================================= +// Signatures +//========================================================================= + +// Insert signature definitions here if applicable! +// You can use the signature skeleton! + +//========================================================================= +//Port Types +//========================================================================= + +// Insert port type defintions here if applicable! +// You can use the port_type skeleton! + +//========================================================================= +//Component Types +//========================================================================= + +// Insert component type defintions here if applicable! +// You can use the component_type skeleton! + +//========================================================================= +// Constants +//========================================================================= + +// Insert constants here if applicable! +// You can use the constant skeleton! + +//========================================================================= +// Templates +//========================================================================= + +// Insert templates here if applicable! +// You can use the template skeleton! + +//========================================================================= +// Altsteps +//========================================================================= + +// Insert altsteps here if applicable! +// You can use the altstep skeleton! + +//========================================================================= +// Functions +//========================================================================= + +// Insert functions here if applicable! +// You can use the function skeleton! + +//========================================================================= +// Testcases +//========================================================================= +testcase tc_setof_ModulePar() runs on MC { + log(log2str(tspt_setof_mod4v1)); + if( log2str(tspt_setof_mod4v1) == "{ \"a\" }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4v2)); + if( log2str(tspt_setof_mod4v2) == "{ \"a\", \"b\" }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4v3)); + if( log2str(tspt_setof_mod4v3) == "{ \"a\", \"b\", \"c\" }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4a)); + if( log2str(tspt_setof_mod4a) == "*") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4q)); + if( log2str(tspt_setof_mod4q) == "?") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4o)); + if( log2str(tspt_setof_mod4o) == "omit") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4c0)); + if( log2str(tspt_setof_mod4c0) == "{ complement(omit) }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4c1)); + if( log2str(tspt_setof_mod4c1) == "{ complement(\"a\"), \"b\" }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4c2)); + if( log2str(tspt_setof_mod4c2) == "{ complement(\"a\", \"b\"), \"c\" }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4c3)); + if( log2str(tspt_setof_mod4c3) == "complement({ \"a\" }, { \"a\", \"b\" }, { \"c\" })") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4vl)); + if( log2str(tspt_setof_mod4vl) == "{ (\"a\", \"b\"), (\"cica\", \"macska\", \"cat\") }") { setverdict(pass)} else { setverdict(fail) }; + log(log2str(tspt_setof_mod4superset)); + if( log2str(tspt_setof_mod4superset) == "superset(\"a\", \"b\")") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4supersetl3)); + if( log2str(tspt_setof_mod4supersetl3) == "superset(\"a\", \"b\") length (3)") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4supersetl1_3)); + if( log2str(tspt_setof_mod4supersetl1_3) == "superset(\"a\", \"b\") length (1 .. 3)") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4subset)); + if( log2str(tspt_setof_mod4subset) == "subset(\"a\", \"b\")") { setverdict(pass)} else { setverdict(fail) } + + log(log2str(tspt_setof_mod4v1ifp)); + if( log2str(tspt_setof_mod4v1ifp) == "{ \"a\" } ifpresent") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4v2ifp)); + if( log2str(tspt_setof_mod4v2ifp) == "{ \"a\", \"b\" } ifpresent") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4v3ifp)); + if( log2str(tspt_setof_mod4v3ifp) == "{ \"a\", \"b\", \"c\" } ifpresent") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4aifp)); + if( log2str(tspt_setof_mod4aifp) == "* ifpresent") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4qifp)); + if( log2str(tspt_setof_mod4qifp) == "? ifpresent") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4oifp)); + if( log2str(tspt_setof_mod4oifp) == "omit ifpresent") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4c0ifp)); + if( log2str(tspt_setof_mod4c0ifp) == "{ complement(omit) } ifpresent") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4c1ifp)); + if( log2str(tspt_setof_mod4c1ifp) == "{ complement(\"a\"), \"b\" } ifpresent") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4c2ifp)); + if( log2str(tspt_setof_mod4c2ifp) == "{ complement(\"a\", \"b\"), \"c\" } ifpresent") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4c3ifp)); + if( log2str(tspt_setof_mod4c3ifp) == "complement({ \"a\" }, { \"a\", \"b\" }, { \"c\" }) ifpresent") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4vlifp)); + if( log2str(tspt_setof_mod4vlifp) == "{ (\"a\", \"b\"), (\"cica\", \"macska\", \"cat\") } ifpresent") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4supersetifp)); + if( log2str(tspt_setof_mod4supersetifp) == "superset(\"a\", \"b\") ifpresent") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4supersetl3ifp)); + if( log2str(tspt_setof_mod4supersetl3ifp) == "superset(\"a\", \"b\") length (3) ifpresent") { setverdict(pass)} else { setverdict(fail) } + log(log2str(tspt_setof_mod4subsetifp)); + if( log2str(tspt_setof_mod4subsetifp) == "subset(\"a\", \"b\") ifpresent") { setverdict(pass)} else { setverdict(fail) } +} + +testcase tc_setof_ModulePar_emb() runs on MC { + log(log2str(t_rsocs(tspt_setof_mod4v1))); + if( log2str(t_rsocs(tspt_setof_mod4v1)) == "{ s := { \"a\" } }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4v2))); + if( log2str(t_rsocs(tspt_setof_mod4v2)) == "{ s := { \"a\", \"b\" } }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4v3))); + if( log2str(t_rsocs(tspt_setof_mod4v3)) == "{ s := { \"a\", \"b\", \"c\" } }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4a))); + if( log2str(t_rsocs(tspt_setof_mod4a)) == "{ s := * }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4q))); + if( log2str(t_rsocs(tspt_setof_mod4q)) == "{ s := ? }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4o))); + if( log2str(t_rsocs(tspt_setof_mod4o)) == "{ s := omit }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4c0))); + if( log2str(t_rsocs(tspt_setof_mod4c0)) == "{ s := { complement(omit) } }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4c1))); + if( log2str(t_rsocs(tspt_setof_mod4c1)) == "{ s := { complement(\"a\"), \"b\" } }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4c2))); + if( log2str(t_rsocs(tspt_setof_mod4c2)) == "{ s := { complement(\"a\", \"b\"), \"c\" } }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4c3))); + if( log2str(t_rsocs(tspt_setof_mod4c3)) == "{ s := complement({ \"a\" }, { \"a\", \"b\" }, { \"c\" }) }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4vl))); + if( log2str(t_rsocs(tspt_setof_mod4vl)) == "{ s := { (\"a\", \"b\"), (\"cica\", \"macska\", \"cat\") } }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4superset))); + if( log2str(t_rsocs(tspt_setof_mod4superset)) == "{ s := superset(\"a\", \"b\") }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4supersetl3))); + if( log2str(t_rsocs(tspt_setof_mod4supersetl3)) == "{ s := superset(\"a\", \"b\") length (3) }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4subset))); + if( log2str(t_rsocs(tspt_setof_mod4subset)) == "{ s := subset(\"a\", \"b\") }") { setverdict(pass)} else { setverdict(fail) } + + + log(log2str(t_rsocs(tspt_setof_mod4v1ifp))); + if( log2str(t_rsocs(tspt_setof_mod4v1ifp)) == "{ s := { \"a\" } ifpresent }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4v2ifp))); + if( log2str(t_rsocs(tspt_setof_mod4v2ifp)) == "{ s := { \"a\", \"b\" } ifpresent }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4v3ifp))); + if( log2str(t_rsocs(tspt_setof_mod4v3ifp)) == "{ s := { \"a\", \"b\", \"c\" } ifpresent }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4aifp))); + if( log2str(t_rsocs(tspt_setof_mod4aifp)) == "{ s := * ifpresent }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4qifp))); + if( log2str(t_rsocs(tspt_setof_mod4qifp)) == "{ s := ? ifpresent }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4oifp))); + if( log2str(t_rsocs(tspt_setof_mod4oifp)) == "{ s := omit ifpresent }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4c0ifp))); + if( log2str(t_rsocs(tspt_setof_mod4c0ifp)) == "{ s := { complement(omit) } ifpresent }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4c1ifp))); + if( log2str(t_rsocs(tspt_setof_mod4c1ifp)) == "{ s := { complement(\"a\"), \"b\" } ifpresent }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4c2ifp))); + if( log2str(t_rsocs(tspt_setof_mod4c2ifp)) == "{ s := { complement(\"a\", \"b\"), \"c\" } ifpresent }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4c3ifp))); + if( log2str(t_rsocs(tspt_setof_mod4c3ifp)) == "{ s := complement({ \"a\" }, { \"a\", \"b\" }, { \"c\" }) ifpresent }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4vlifp))); + if( log2str(t_rsocs(tspt_setof_mod4vlifp)) == "{ s := { (\"a\", \"b\"), (\"cica\", \"macska\", \"cat\") } ifpresent }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4supersetifp))); + if( log2str(t_rsocs(tspt_setof_mod4supersetifp)) == "{ s := superset(\"a\", \"b\") ifpresent }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4supersetl3ifp))); + if( log2str(t_rsocs(tspt_setof_mod4supersetl3ifp)) == "{ s := superset(\"a\", \"b\") length (3) ifpresent }") { setverdict(pass)} else { setverdict(fail) } + log(log2str(t_rsocs(tspt_setof_mod4subsetifp))); + if( log2str(t_rsocs(tspt_setof_mod4subsetifp)) == "{ s := subset(\"a\", \"b\") ifpresent }") { setverdict(pass)} else { setverdict(fail) } + +} + +testcase tc_setof_mod4vlifp_emb() runs on MC { + log(log2str(t_rsocs(tspt_setof_mod4vlifp))); + var RoRSoCS vl_good_values := {{s:=omit}, {s:={"a","cica"} }} + var RoRSoCS vl_wrong_values := { {{"c","cica"}} } + f_checkMatchingValues_rsocs(t_rsocs(tspt_setof_mod4vlifp),vl_good_values,vl_wrong_values); +} + +testcase tc_setof_mod4superset_emb() runs on MC { + log(log2str(t_rsocs(tspt_setof_mod4superset))); + var RoRSoCS vl_good_values := { {s:={"a","cica","b"} }, {s:={"a","b"} } , {s:={"a","b","a", "d", "anything"} } } + var RoRSoCS vl_wrong_values := { {{"b","cica"}}, {{"a","c","anyth"}} } + f_checkMatchingValues_rsocs(t_rsocs(tspt_setof_mod4superset),vl_good_values,vl_wrong_values); +} + +testcase tc_setof_mod4supersetl3_emb() runs on MC { + log(log2str(t_rsocs(tspt_setof_mod4supersetl3))); + var RoRSoCS vl_good_values := { {s:={"a","cica","b"} }, {s:={"a","b","a"} } } + var RoRSoCS vl_wrong_values := { {{"b","cica"}}, {s:={"a","b","c","dada"} } } + f_checkMatchingValues_rsocs(t_rsocs(tspt_setof_mod4supersetl3),vl_good_values,vl_wrong_values); +} + +testcase tc_setof_mod4supersetl1_3_emb() runs on MC { + log(log2str(t_rsocs(tspt_setof_mod4supersetl1_3))); + var RoRSoCS vl_good_values := { {s:={"a","cica","b"} }, {s:={"a","b","a"} }, {s:={"a","b"} } } + var RoRSoCS vl_wrong_values := { {{"b","cica"}}, {s:={"a","b","c","dada"} } } + f_checkMatchingValues_rsocs(t_rsocs(tspt_setof_mod4supersetl1_3),vl_good_values,vl_wrong_values); +} + + +testcase tc_setof_mod4supersetifp_emb() runs on MC { + log(log2str(t_rsocs(tspt_setof_mod4supersetifp))); + var RoRSoCS vl_good_values := {{s:=omit}, {s:={"a","cica","b"} }, {s:={"a","b"} }, {s:={"a","b","b"} } } + var RoRSoCS vl_wrong_values := { {{"a","cica"}} } + f_checkMatchingValues_rsocs(t_rsocs(tspt_setof_mod4supersetifp),vl_good_values,vl_wrong_values); +} + +testcase tc_setof_mod4subset_emb() runs on MC { + log(log2str(t_rsocs(tspt_setof_mod4subset))); + var RoRSoCS vl_good_values := { {s:={}}, {s:={"a"}}, {s:={"b"}}, {s:={"a","b"} } } + var RoRSoCS vl_wrong_values := { {{"b","cica"}} } + f_checkMatchingValues_rsocs(t_rsocs(tspt_setof_mod4subset),vl_good_values,vl_wrong_values); +} + +testcase tc_setof_mod4subsetifp_emb() runs on MC { + log(log2str(t_rsocs(tspt_setof_mod4subsetifp))); + var RoRSoCS vl_good_values := {{s:=omit}, {s:={}},{s:={"a"}}, {s:={"b"}}, {s:={"a","b"}} } + var RoRSoCS vl_wrong_values := { {{"a","cica"}}, {{"a","cica","b"}} } + f_checkMatchingValues_rsocs(t_rsocs(tspt_setof_mod4subsetifp),vl_good_values,vl_wrong_values); +} +//TODO: matching tests + +//========================================================================= +// Control +//========================================================================= + +control { + log("***set of tests ******"); + execute(tc_setof_ModulePar()); + execute(tc_setof_ModulePar_emb()); + execute(tc_setof_mod4vlifp_emb()); + execute(tc_setof_mod4superset_emb()); + execute(tc_setof_mod4supersetl3_emb()); + execute(tc_setof_mod4supersetl1_3_emb()); + execute(tc_setof_mod4supersetifp_emb()); + execute(tc_setof_mod4subset_emb()); + execute(tc_setof_mod4subsetifp_emb()); +} + +} // end of module diff --git a/Regression_Test_java/src/text2ttcn_nolegacy/text2ttcn_1.cfg b/Regression_Test_java/src/text2ttcn_nolegacy/text2ttcn_1.cfg new file mode 100644 index 0000000000000000000000000000000000000000..15057a9e852977d7430b027665a5f837ae5595c1 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn_nolegacy/text2ttcn_1.cfg @@ -0,0 +1,508 @@ +############################################################################### +# 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 +# Baranyi, Botond +# +############################################################################### +#Nolegacy +# Verdict Statistics: 0 none (0 %), 564 pass (100 %), 0 inconc (0 %), 0 fail (0 %), 0 error (0 %) +[LOGGING] +SourceInfoFormat := Stack + +[MODULE_PARAMETERS] + +#boolean +tspt_b_a1 := true +tspt_b_a2 := false +tspt_b_a3 := omit +tspt_b_a4 := * +tspt_b_a5 := ? +tspt_b_a6 := true ifpresent +tspt_b_a7 := false ifpresent +tspt_b_a8 := * ifpresent +tspt_b_a9 := ? ifpresent +tspt_b_a10 := (true,false) +tspt_b_a11 := complement(true) + +#tspt_b_err := xy //error +#tspt_b_err := "apple" +#tspt_b_err := 'apple2' +#tspt_b_err := 12 + +#Type: integer +tspt_i1 := 9 +tspt_i2 := omit +tspt_i3 := * +tspt_i4 := ? +tspt_i5 := (0,1,-1) +tspt_i6 := 9 ifpresent +tspt_i7 := omit ifpresent +tspt_i8 := * ifpresent +tspt_i9 := ? ifpresent +tspt_i10 := (0,1,-1) ifpresent +tspt_i11 := complement(9) +#value list: +#tspt_i_vl := (0,1,-1) + +#Tpe:float +tspt_f1 := 9.00 +tspt_f2 := omit +tspt_f3 := * +tspt_f4 := ? +tspt_f_mod4vl1 := (0.0) +tspt_f_mod4vl3 := (0.0, 1.2, -1.9) +tspt_f6 := 9.00 ifpresent +tspt_f7 := omit ifpresent +tspt_f8 := * ifpresent +tspt_f9 := ? ifpresent +tspt_f10 := (0.0, 1.2, -1.9) ifpresent +tspt_f11 := complement(9.000) +tspt_f12 := complement(9.000) ifpresent +tspt_f13 := (-1.9..3.1) +tspt_f14 := (-1.9..3.1) ifpresent +#Type: bitstring + +tspt_bs_mod4v := '01101'B; + tspt_bs_mod4o := omit; + tspt_bs_mod4a := *; + tspt_bs_mod4q := ?; + tspt_bs_mod4al1 := * length(2); //length restriction + tspt_bs_mod4al2 := * length(2..4); + tspt_bs_mod4ql1 := ? length(2); + tspt_bs_mod4ql2 := ? length(2..4); + //tspt_bs_mod4vl1 := ('01101'B); //TODO for Adam: in line xx, at or before token `)': syntax error, unexpected ')', expecting ',' + tspt_bs_mod4vl2 := ('01101'B,'1010'B); + tspt_bs_mod4vl3 := ('01101'B,'1010'B,'101'B); + tspt_bs_mod4c1 := complement('01101'B) + tspt_bs_mod4c2 := complement('01101'B,'1010'B); + tspt_bs_mod4c3 := complement('01101'B,'1010'B,'101'B); + //tspt_bs_mod4r1 := ("A".."B"); //range not allowed + //tspt_bs_mod4r2 := ("a".."c"); //range not allowed + tspt_bs_mod4pa := '000*111'B + tspt_bs_mod4pq := '000?111'B + + tspt_bs_mod4vifp := '01101'B ifpresent; + tspt_bs_mod4oifp := omit ifpresent; + tspt_bs_mod4aifp := * ifpresent; + tspt_bs_mod4qifp := ? ifpresent; + tspt_bs_mod4al1ifp := * length(2) ifpresent; //length restriction + tspt_bs_mod4al2ifp := * length(2..4) ifpresent; + tspt_bs_mod4ql1ifp := ? length(2) ifpresent; + tspt_bs_mod4ql2ifp := ? length(2..4) ifpresent; + //tspt_bs_mod4vl1ifp := ('01101'B) ifpresent; //TODO for Adam: in line yy, at or before token `)': syntax error, unexpected ')', expecting ',' + tspt_bs_mod4vl2ifp := ('01101'B,'1010'B) ifpresent; + tspt_bs_mod4vl3ifp := ('01101'B,'1010'B,'101'B) ifpresent; + tspt_bs_mod4c1ifp := complement('01101'B) ifpresent + tspt_bs_mod4c2ifp := complement('01101'B,'1010'B) ifpresent; + tspt_bs_mod4c3ifp := complement('01101'B,'1010'B,'101'B) ifpresent; + //tspt_bs_mod4r1ifp := ('A'B .. 'B'B) ifpresent; //range not allowed + //tspt_bs_mod4r2ifp := ('a'B ..'c'B) ifpresent;//range not allowed + tspt_bs_mod4paifp := '000*111'B ifpresent + tspt_bs_mod4pqifp := '000?111'B ifpresent + + +#Type: octetstring + tspt_os_mod4v := 'ABBA'O; + tspt_os_mod4o := omit; + tspt_os_mod4a := *; + tspt_os_mod4q := ?; + tspt_os_mod4al1 := * length(2); //length restriction + tspt_os_mod4al2 := * length(2..4); + tspt_os_mod4ql1 := ? length(2); + tspt_os_mod4ql2 := ? length(2..4); + //tspt_os_mod4vl1 := ('ABBA'O); //TODO for Adam: in line xx, at or before token `)': syntax error, unexpected ')', expecting ',' + tspt_os_mod4vl2 := ('ABBA'O,'baba'O); + tspt_os_mod4vl3 := ('ABBA'O,'baba'O,'B120'O); + tspt_os_mod4c1 := complement('ABBA'O) + tspt_os_mod4c2 := complement('ABBA'O,'baba'O); + tspt_os_mod4c3 := complement('ABBA'O,'baba'O,'B120'O); + //tspt_os_mod4r1 := ("A".."B"); //range not allowed + //tspt_os_mod4r2 := ("a".."c"); //range not allowed + tspt_os_mod4pa := 'abcd*1234'O + tspt_os_mod4pq := 'abcd?1234'O + + tspt_os_mod4vifp := 'ABBA'O ifpresent; + tspt_os_mod4oifp := omit ifpresent; + tspt_os_mod4aifp := * ifpresent; + tspt_os_mod4qifp := ? ifpresent; + tspt_os_mod4al1ifp := * length(2) ifpresent; //length restriction + tspt_os_mod4al2ifp := * length(2..4) ifpresent; + tspt_os_mod4ql1ifp := ? length(2) ifpresent; + tspt_os_mod4ql2ifp := ? length(2..4) ifpresent; + //tspt_os_mod4vl1ifp := ('ABBA'O) ifpresent; //TODO for Adam: in line yy, at or before token `)': syntax error, unexpected ')', expecting ',' + tspt_os_mod4vl2ifp := ('ABBA'O,'baba'O) ifpresent; + tspt_os_mod4vl3ifp := ('ABBA'O,'baba'O,'B120'O) ifpresent; + tspt_os_mod4c1ifp := complement('ABBA'O) ifpresent + tspt_os_mod4c2ifp := complement('ABBA'O,'baba'O) ifpresent; + tspt_os_mod4c3ifp := complement('ABBA'O,'baba'O,'B120'O) ifpresent; + //tspt_os_mod4r1ifp := ('A'O..'B'O) ifpresent; //range not allowed + //tspt_os_mod4r2ifp := ('a'O..'c'O) ifpresent;//range not allowed + tspt_os_mod4paifp := 'abcd*1234'O ifpresent + tspt_os_mod4pqifp := 'abcd?1234'O ifpresent + +#Type: hexstring + + tspt_hs_mod4v := 'ABBA'H; + tspt_hs_mod4o := omit; + tspt_hs_mod4a := *; + tspt_hs_mod4q := ?; + tspt_hs_mod4al1 := * length(2); //length restriction + tspt_hs_mod4al2 := * length(2..4); + tspt_hs_mod4ql1 := ? length(2); + tspt_hs_mod4ql2 := ? length(2..4); + //tspt_hs_mod4vl1 := ('ABBA'H); //TODO for Adam: in line xx, at or before token `)': syntax error, unexpected ')', expecting ',' + tspt_hs_mod4vl2 := ('ABBA'H,'baba'H); + tspt_hs_mod4vl3 := ('ABBA'H,'baba'H,'B12'H); + tspt_hs_mod4c1 := complement('ABBA'H) + tspt_hs_mod4c2 := complement('ABBA'H,'baba'H); + tspt_hs_mod4c3 := complement('ABBA'H,'baba'H,'B12'H); + //tspt_hs_mod4r1 := ("A".."B"); //range not allowed + //tspt_hs_mod4r2 := ("a".."c"); //range not allowed + tspt_hs_mod4pa := 'abc*123'H + tspt_hs_mod4pq := 'abc?123'H + + tspt_hs_mod4vifp := 'ABBA'H ifpresent; + tspt_hs_mod4oifp := omit ifpresent; + tspt_hs_mod4aifp := * ifpresent; + tspt_hs_mod4qifp := ? ifpresent; + tspt_hs_mod4al1ifp := * length(2) ifpresent; //length restriction + tspt_hs_mod4al2ifp := * length(2..4) ifpresent; + tspt_hs_mod4ql1ifp := ? length(2) ifpresent; + tspt_hs_mod4ql2ifp := ? length(2..4) ifpresent; + //tspt_hs_mod4vl1ifp := ('ABBA'H) ifpresent; //TODO for Adam: in line yy, at or before token `)': syntax error, unexpected ')', expecting ',' + tspt_hs_mod4vl2ifp := ('ABBA'H,'baba'H) ifpresent; + tspt_hs_mod4vl3ifp := ('ABBA'H,'baba'H,'B12'H) ifpresent; + tspt_hs_mod4c1ifp := complement('ABBA'H) ifpresent + tspt_hs_mod4c2ifp := complement('ABBA'H,'baba'H) ifpresent; + tspt_hs_mod4c3ifp := complement('ABBA'H,'baba'H,'B12'H) ifpresent; + //tspt_hs_mod4r1ifp := ('A'H..'B'H) ifpresent; //range not allowed + //tspt_hs_mod4r2ifp := ('a'H..'c'H) ifpresent;//range not allowed + tspt_hs_mod4paifp := 'abc*123'H ifpresent + tspt_hs_mod4pqifp := 'abc?123'H ifpresent + +#Type: charstring + tspt_cs_mod4v := "ABBA"; + tspt_cs_mod4o := omit; + tspt_cs_mod4ol := omit length(2); + tspt_cs_mod4a := *; + tspt_cs_mod4q := ?; + tspt_cs_mod4al1 := * length(2); //length restriction + tspt_cs_mod4al2 := * length(2..4); + tspt_cs_mod4ql1 := ? length(2); + tspt_cs_mod4ql2 := ? length(2..4); + //tspt_cs_mod4vl1 := ("ABBA"); //TODO for Adam: in line 67, at or before token `)': syntax error, unexpected ')', expecting ',' + tspt_cs_mod4vl2 := ("ABBA","baba"); + tspt_cs_mod4vl3 := ("ABBA","baba","Bye"); + tspt_cs_mod4c1 := complement("ABBA") + tspt_cs_mod4c2 := complement("ABBA","baba"); + tspt_cs_mod4c3 := complement("ABBA","baba","Bye"); + tspt_cs_mod4r1 := ("A".."B"); //range + tspt_cs_mod4r2 := ("a".."c"); + tspt_cs_mod4pa := pattern "abc*xyz" + tspt_cs_mod4pq := pattern "abc?xyz" + + tspt_cs_mod4vifp := "ABBA" ifpresent; + tspt_cs_mod4oifp := omit ifpresent; + tspt_cs_mod4aifp := * ifpresent; + tspt_cs_mod4qifp := ? ifpresent; + tspt_cs_mod4al1ifp := * length(2) ifpresent; //length restriction + tspt_cs_mod4al2ifp := * length(2..4) ifpresent; + tspt_cs_mod4ql1ifp := ? length(2) ifpresent; + tspt_cs_mod4ql2ifp := ? length(2..4) ifpresent; + //tspt_cs_mod4vl1ifp := ("ABBA") ifpresent; //TODO for Adam: in line 86, at or before token `)': syntax error, unexpected ')', expecting ',' + tspt_cs_mod4vl2ifp := ("ABBA","baba") ifpresent; + tspt_cs_mod4vl3ifp := ("ABBA","baba","Bye") ifpresent; + tspt_cs_mod4c1ifp := complement("ABBA") ifpresent + tspt_cs_mod4c2ifp := complement("ABBA","baba") ifpresent; + tspt_cs_mod4c3ifp := complement("ABBA","baba","Bye") ifpresent; + tspt_cs_mod4r1ifp := ("A".."B") ifpresent; //range + tspt_cs_mod4r2ifp := ("a".."c") ifpresent; + tspt_cs_mod4paifp := pattern "abc*xyz" ifpresent + tspt_cs_mod4pqifp := pattern "abc?xyz" ifpresent + +#type: universal charstring + tspt_ucs_mod4v := "ABBA"; + tspt_ucs_mod4o := omit; + tspt_ucs_mod4ol := omit length(2); + tspt_ucs_mod4a := *; + tspt_ucs_mod4q := ?; + tspt_ucs_mod4al1 := * length(2); //length restriction + tspt_ucs_mod4al2 := * length(2..4); + tspt_ucs_mod4ql1 := ? length(2); + tspt_ucs_mod4ql2 := ? length(2..4); + //tspt_ucs_mod4vl1 := ("ABBA"); //TODO for Adam: in line 67, at or before token `)': syntax error, unexpected ')', expecting ',' + tspt_ucs_mod4vl2 := ("Ãdám","Éva"); + tspt_ucs_mod4vl3 := ("ABBA","baba","Bye"); + tspt_ucs_mod4c1 := complement("ABBA") + tspt_ucs_mod4c2 := complement("ABBA","baba"); + tspt_ucs_mod4c3 := complement("ABBA","baba","Bye"); + tspt_ucs_mod4r1 := ("A".."B"); //range + tspt_ucs_mod4r2 := ("a".."c"); + tspt_ucs_mod4pa := pattern "abc*xyz" + tspt_ucs_mod4pq := pattern "abc?xyz" + + tspt_ucs_mod4vifp := "ABBA" ifpresent; + tspt_ucs_mod4oifp := omit ifpresent; + tspt_ucs_mod4aifp := * ifpresent; + tspt_ucs_mod4qifp := ? ifpresent; + tspt_ucs_mod4al1ifp := * length(2) ifpresent; //length restriction + tspt_ucs_mod4al2ifp := * length(2..4) ifpresent; + tspt_ucs_mod4ql1ifp := ? length(2) ifpresent; + tspt_ucs_mod4ql2ifp := ? length(2..4) ifpresent; + //tspt_ucs_mod4vl1ifp := ("ABBA") ifpresent; //TODO for Adam: in line 86, at or before token `)': syntax error, unexpected ')', expecting ',' + tspt_ucs_mod4vl2ifp := ("ABBA","baba") ifpresent; + tspt_ucs_mod4vl3ifp := ("ABBA","baba","Bye") ifpresent; + tspt_ucs_mod4c1ifp := complement("ABBA") ifpresent + tspt_ucs_mod4c2ifp := complement("ABBA","baba") ifpresent; + tspt_ucs_mod4c3ifp := complement("ABBA","baba","Bye") ifpresent; + tspt_ucs_mod4r1ifp := ("A".."B") ifpresent; //range + tspt_ucs_mod4r2ifp := ("a".."c") ifpresent; + tspt_ucs_mod4paifp := pattern "abc*xyz" ifpresent + tspt_ucs_mod4pqifp := pattern "abc?xyz" ifpresent + + +############### Type:REC #################################### +tspt_rec_mod4empty := {} +tspt_rec_mod4v := {1,1.0,"ABBA",'0100'B} +tspt_rec_mod4a := *; +tspt_rec_mod4q := ?; +tspt_rec_mod4o := omit; +tspt_rec_mod4vr := { (1..2), ?, "ABBA", '0100'B } //not final value! +tspt_rec_mod4vl2x2 := { 1, 1.0, ("ABBA","baba"),('0100'B,'01001'B) } +tspt_rec_mod4omitx4 := { omit, omit, omit, omit } +tspt_rec_mod4r := ({1,1.0,"ABBA",'0100'B}, {2,2.0,"baba",'01001'B}) +tspt_rec_mod4vr := {1,1.0,("ABBA","baba"),'0100'B} +tspt_rec_mod4c := complement( {1,1.0,("ABBA","baba"),'0100'B} ) +tspt_rec_mod4vl := { 1, -,("ABBA","baba"), -} +tspt_rec_mod4vq := { ?, -,-, '0100'B} + +tspt_rec_mod4cspattern := { *, -,pattern "abc*xyz", '0100'B} + +tspt_rec_mod4cspatternbs := { cs := pattern "abc*xyz"} +tspt_rec_mod4cspatternbs := { bs := '0100'B} + +tspt_rec_mod4cspatternbs2 := { i := -, f := -, cs := pattern "abc*xyz", bs:= '0100'B } + +tspt_mod4pattern_mixed_order := { f := -, cs := pattern "abc*xyz", bs:= '0100'B, i := - } +//== ifpresent +tspt_rec_mod4emptyifp := {} ifpresent +tspt_rrec_mod4emptyifp := { rec:= {} ifpresent } +tspt_rec_mod4vifp := {1 ifpresent,1.0 ifpresent,"ABBA" ifpresent,'0100'B ifpresent} +tspt_rec_mod4aifp := * ifpresent; //???? TR ??? +tspt_rec_mod4qifp := ? ifpresent; //???? TR ??? +tspt_rec_mod4oifp := omit ifpresent; //???? TR ??? +tspt_rec_mod4vrifp := { (1..2) ifpresent, ? ifpresent, "ABBA" ifpresent, '0100'B ifpresent } +tspt_rec_mod4vl2x2ifp := { 1 ifpresent, 1.0 ifpresent, ("ABBA" ifpresent,"baba" ifpresent),('0100'B,'01001'B) ifpresent } +tspt_rec_mod4omitx4ifp := { omit, omit, omit, omit } ifpresent +tspt_rec_mod4rifp := ({1 ifpresent,1.0 ifpresent,"ABBA" ifpresent,'0100'B ifpresent}, {2,2.0,"baba",'01001'B}) +tspt_rec_mod4cifp := complement( {1 ifpresent,1.0 ifpresent,("ABBA","baba") ifpresent,'0100'B ifpresent} ) +tspt_rec_mod4vlifp := { 1 ifpresent, -,("ABBA","baba") ifpresent, -} +tspt_rec_mod4vqifp := { ?, -,-, '0100'B ifpresent} + +tspt_rec_mod4cspatternifp := { * ifpresent, -,pattern "abc*xyz" ifpresent, '0100'B ifpresent} + +tspt_rec_mod4cspatternbsifp := { cs := pattern "abc*xyz" ifpresent} +tspt_rec_mod4cspatternbsifp := { bs := '0100'B ifpresent} + +tspt_rec_mod4cspatternbs2ifp := { i := -, f := -, cs := pattern "abc*xyz" ifpresent, bs:= '0100'B ifpresent} + +tspt_mod4pattern_mixed_orderifp := { f := -, cs := pattern "abc*xyz" ifpresent, bs:= '0100'B ifpresent, i := - } +//== +#Type: REC2 +tspt_REC2_2 := {-,-} +tspt_REC2_3 := { *, -, 2 ifpresent } +tspt_REC2_4 := { b:=?, cs:=-} //ugly spacing:) +tspt_REC2_5 := { b:=?, cs:= ? length(1), i := * } + +#Type: record of +tspt_recof_i_mod4v0 := {}; +tspt_recof_i_mod4v1 := {1}; +tspt_recof_i_mod4v2 := {1,2}; +tspt_recof_i_mod4v3 := {1,2,3}; +tspt_recof_i_mod4v3a := {1,*,3}; +tspt_recof_i_mod4v3q := {1,?,3}; +tspt_recof_i_mod4vl3 := {(1,2),2,(3,4)}; //value list +tspt_recof_i_mod4vl := ( {1,2,3}, {2,2,4} ) +tspt_recof_i_mod4v10 := {1,2,3,4,5,6,7,8,9,10}; +tspt_recof_i_mod4o := omit; +tspt_recof_i_mod4a := *; +tspt_recof_i_mod4q := ?; +tspt_recof_i_mod4r := {1,(1..3)}; //range +//tspt_recof_i_mod4cu := { 1, complement(1,2,3) } //3->2 elements --undefined behavior, result: { permutation(1, complement(1, 2, 3) } +tspt_recof_i_mod4cu := { 1, complement(1,2,3),3,4 } //3->2 elements --undefined behavior, result: { permutation(1, complement(1, 2, 3) } +tspt_recof_i_mod4c := { 1, complement(1,2,3),1,1 } //3->4 elements +tspt_recof_i_mod4cm1 := { 1, complement(1,2,3),1} //3->3 elements +tspt_recof_i_mod4cm2 := { 1, complement(1,2,3),1,1,1} //3->5 elements +tspt_recof_i_mod4lv := ? length(3) +tspt_recof_i_mod4lr := ? length(3..5) //length range +tspt_recof_i_mod4p := { permutation( 1, 2, 3), 10 } +tspt_recof_i_mod4rifp := {1,(1..3)} ifpresent +tspt_recof_i_mod4vlifp := ( {1,2,3}, {2,2,4} ) ifpresent + +#type: array +tspt_array_i3_mod4a := * +tspt_array_i3_mod4q := ? +tspt_array_i3_mod4o := omit +tspt_array_i3_mod4v0 := {-,-,-} +tspt_array_i3_mod4v1:= {1,-,-} +tspt_array_i3_mod4v2:= {1,2,-} +tspt_array_i3_mod4v3v := {0, 1, 2} +//tspt_array_i3_mod4v4 := {0, 1, 2, 3} +tspt_array_i3_mod4v3a := {0, *, 2} +tspt_array_i3_mod4v3q := {?, 1, 2} +//tspt_array_i3_mod4v3o := {omit, 1, 2} //error +tspt_array_i3_mod4v3vl := {0, 1, (1,2)} //value list +tspt_array_i3_mod4vl := ( {0,1,2},{9,10,11}) +tspt_array_i3_mod4v3r := {0, 1, (1..3)} //range +tspt_array_i3_mod4v3mix := {(0,1), 1, (1..3)} +tspt_array_i3_mod4v3c := {(0,1), 1, complement(2,3)} +tspt_array_i3_mod4field1 := {0, -, -} + +tspt_array_i3_mod4aifp := * ifpresent +tspt_array_i3_mod4qifp := ? ifpresent +tspt_array_i3_mod4v0ifp := omit ifpresent //not error ? +tspt_array_i3_mod4v1ifp := {1} ifpresent //not error +tspt_array_i3_mod4v2ifp := {1,2} ifpresent //noterror +tspt_array_i3_mod4v3vifp := {0, 1, 2} ifpresent +//tspt_array_i3_mod4v4 := {0, 1, 2, 3} ifpresent +tspt_array_i3_mod4v3aifp := {0, *, 2} ifpresent +tspt_array_i3_mod4v3qifp := {?, 1, 2} ifpresent +//tspt_array_i3_mod4v3o := {omit, 1, 2} //error +tspt_array_i3_mod4v3vlifp := {0, 1, (1,2)} ifpresent //value list +tspt_array_i3_mod4vlifp := ( {0,1,2},{9,10,11}) ifpresent +tspt_array_i3_mod4v3rifp := {0, 1, (1..3)} ifpresent //range +tspt_array_i3_mod4v3mixifp := {(0,1), 1, (1..3)} ifpresent +tspt_array_i3_mod4v3cifp := {(0,1), 1, complement(2,3)} ifpresent +tspt_array_i3_mod4field1ifp := {0, -, -} ifpresent + +//=== SET=== +tspt_set_mod4v1 := { b:=true }; +tspt_set_mod4v2 := { b:=true, cs:= "sth" }; +tspt_set_mod4v3 := { b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=99} +tspt_set_mod4a := *; +tspt_set_mod4q := ?; +tspt_set_mod4o := omit; +tspt_set_mod4c1 := complement({ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=99}) +tspt_set_mod4c2 := complement({ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=99}) ifpresent +tspt_set_mod4c0 := complement(omit) +tspt_set_mod4c3 := complement({ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=0},{ b:=true, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?,i:=1},{ b:=true,i:=2, cs:= "sth", f:=0.0, bs:=omit, os:=?,hs:=?}) + +tspt_setof_mod4v1 := { "a" } +tspt_setof_mod4v2 := { "a", "b"} +tspt_setof_mod4v3 := { "a","b","c"} +tspt_setof_mod4a := * +tspt_setof_mod4q := ?; +tspt_setof_mod4o := omit; +tspt_setof_mod4c0 := {complement(omit)}; +tspt_setof_mod4c1 := {complement("a"),"b"}; +tspt_setof_mod4c2 := {complement("a","b"),"c"}; +tspt_setof_mod4c3 := complement({"a"}, {"a","b"},{"c"}); +tspt_setof_mod4vl := { ("a","b"),("cica","macska","cat") } +tspt_setof_mod4superset := superset ("a", "b") +tspt_setof_mod4subset := subset ("a", "b") +tspt_setof_mod4supersetl3 := superset ("a", "b") length(3) +tspt_setof_mod4supersetl1_3 := superset ("a", "b") length(1..3) + +tspt_setof_mod4v1ifp := { "a" } ifpresent +tspt_setof_mod4v2ifp := { "a", "b"} ifpresent +tspt_setof_mod4v3ifp := { "a","b","c"} ifpresent +tspt_setof_mod4aifp := * ifpresent +tspt_setof_mod4qifp := ? ifpresent +tspt_setof_mod4oifp := omit ifpresent +tspt_setof_mod4c0ifp := {complement(omit)} ifpresent +tspt_setof_mod4c1ifp := {complement("a"),"b"} ifpresent +tspt_setof_mod4c2ifp := {complement("a","b"),"c"} ifpresent +tspt_setof_mod4c3ifp := complement({"a"}, {"a","b"},{"c"}) ifpresent +tspt_setof_mod4vlifp := { ("a","b"),("cica","macska","cat") } ifpresent +tspt_setof_mod4supersetifp := superset ("a", "b") ifpresent +tspt_setof_mod4supersetl3ifp := superset ("a", "b") length(3) ifpresent +tspt_setof_mod4subsetifp := subset ("a", "b") ifpresent +//enum +tspt_enum_mod4v := first +tspt_enum_mod4a := * +tspt_enum_mod4q := ? +tspt_enum_mod4o := omit +tspt_enum_mod4c0:= ? #illegal: complement(omit); +tspt_enum_mod4c1:=complement(first); +tspt_enum_mod4c2:=complement(first,second); +tspt_enum_mod4vl1 := first +tspt_enum_mod4vl2 := (first, second ) + +tspt_enum_mod4vifp := first ifpresent +tspt_enum_mod4aifp := * ifpresent +tspt_enum_mod4qifp := ? ifpresent +tspt_enum_mod4oifp := omit ifpresent +tspt_enum_mod4c0ifp := complement(omit) ifpresent +tspt_enum_mod4c1ifp := complement(first) ifpresent +tspt_enum_mod4c2ifp := complement(first,second) ifpresent +tspt_enum_mod4vl1ifp := first ifpresent +tspt_enum_mod4vl2ifp := (first, second ) ifpresent + +//union +tspt_union_mod4v_b := { b := true } +tspt_union_mod4v_i := { i := 1 } +tspt_union_mod4v_f := { f := 1.0 } +tspt_union_mod4v_bs := { bs := '01101'B } +tspt_union_mod4v_os := { os := 'ABBA'O } +tspt_union_mod4v_hs := { hs := 'ABBA'H } +tspt_union_mod4v_cs := { cs := "ABBA" } +tspt_union_mod4v_r := { r := { 1, 1.0, "ABBA",'0100'B } } +tspt_union_mod4v_roi := { roi := { 1 } } +tspt_union_mod4v_s_uninit := { s := { b := true } } +tspt_union_mod4v_s := { s:= { b:=true, i:=1,f:=1.0,bs:='01101'B, os:='ABBA'O, hs:='ABBA'H, cs:="ABBA" } } +tspt_union_mod4v_socs := { socs := { "ABBA"} } +tspt_union_mod4v_e := { e := first } +tspt_union_mod4v_u := { u := { i := 1 } } + +tspt_union_mod4a := * +tspt_union_mod4q := ? +tspt_union_mod4o := omit + +tspt_union_mod4v_bifp := { b := true } ifpresent + +tspt_union_mod4v_bifp := { b := true } ifpresent +tspt_union_mod4v_iifp := { i := 1 } ifpresent +tspt_union_mod4v_fifp := { f := 1.0 } ifpresent +tspt_union_mod4v_bsifp := { bs := '01101'B } ifpresent +tspt_union_mod4v_osifp := { os := 'ABBA'O } ifpresent +tspt_union_mod4v_hsifp := { hs := 'ABBA'H } ifpresent +tspt_union_mod4v_csifp := { cs := "ABBA" } ifpresent +tspt_union_mod4v_rifp := { r := { 1, 1.0, "ABBA",'0100'B } } ifpresent +tspt_union_mod4v_roiifp := { roi := { 1 } } ifpresent +tspt_union_mod4v_s_uninitifp := { s := { b := true } } ifpresent +tspt_union_mod4v_sifp := { s:= { b:=true, i:=1,f:=1.0,bs:='01101'B, os:='ABBA'O, hs:='ABBA'H, cs:="ABBA" } } ifpresent +tspt_union_mod4v_socsifp := { socs := { "ABBA"} } ifpresent +tspt_union_mod4v_eifp := { e := first } ifpresent +tspt_union_mod4v_uifp := { u := { i := 1 } } ifpresent + +tspt_union_mod4aifp := * ifpresent +tspt_union_mod4qifp := ? ifpresent +tspt_union_mod4oifp := omit ifpresent +[EXECUTE] +array_test.control +boolean_test.control +integer_test.control +float_test.control +bitstring_test.control +octetstring_test.control +hexstring_test.control +charstring_test.control +record_test.control +recordof_test.control +set_test.control +setof_test.control +enum_test.control +ucharstring_test.control +union_test.control +objid_test.control + + +#To debug the faulty testcases: +#record_test.tc_REC_string2ttcn_empty +record_test.tc_RREC_string2ttcn_oifp #TODO: wrong error message diff --git a/Regression_Test_java/src/text2ttcn_nolegacy/text2ttcn_2.cfg b/Regression_Test_java/src/text2ttcn_nolegacy/text2ttcn_2.cfg new file mode 100644 index 0000000000000000000000000000000000000000..46e4425d4b660f1d95b387da185020555a772327 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn_nolegacy/text2ttcn_2.cfg @@ -0,0 +1,4 @@ +[ORDERED_INCLUDE] +"../text2ttcn_1.cfg" +[EXECUTE] +component_test.control diff --git a/Regression_Test_java/src/text2ttcn_nolegacy/types2.ttcn b/Regression_Test_java/src/text2ttcn_nolegacy/types2.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..e30ebda334ca1c573650676a2d3d73090fa89fd1 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn_nolegacy/types2.ttcn @@ -0,0 +1,254 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +module types2 { + +type component MC {} + + + +group g_boolean { + type record of boolean RoB; +}//g_boolean + +group g_integer { + + type record of integer RoI; + type integer int_1_3 (1..3) + +} //g_integer + +group g_float{ + type record of float RoF + +} //g_float + +group g_bitstring { + type bitstring BitStrings1 ('0'B, '1'B ); + type bitstring BitStrings2 ('00'B, '01'B, '10'B, '11'B); + type bitstring BitStrings_1_2 (BitStrings1, BitStrings2); + + type record of hexstring RoBS; + //wrapper to test charstring in record: + type record RBS { + bitstring bs optional + } + + type record of RBS RoRBS; + + template RBS t_rbs(template bitstring pl_bs) := { bs:=pl_bs } + +}//g_bitstring + +group g_octetstring { + type record of octetstring RoOS; + //wrapper to test charstring in record: + type record ROS { + octetstring os optional + } + + type record of ROS RoROS; + + template ROS t_ros(template octetstring pl_os) := { os:=pl_os } + +}//g_octetstring + +group g_hexstring { + type record of hexstring RoHS; + //wrapper to test charstring in record: + type record RHS { + hexstring hs optional + } + + type record of RHS RoRHS; + + template RHS t_rhs(template hexstring pl_hs) := { hs:=pl_hs } + +}//g_hexstring + +group g_charstring { + + type record of charstring RoCS; + //wrapper to test charstring in record: + type record RCS { + charstring cs optional + } + + type record of RCS RoRCS; + + template RCS t_rcs(template charstring pl_cs) := { cs:=pl_cs } + +}//g_charstring + +group g_universal_charstring { + + type record of universal charstring RoUCS; + //wrapper to test charstring in record: + type record RUCS { + universal charstring ucs optional + } + + type record of RUCS RoRUCS; + + template RUCS t_rucs(template universal charstring pl_ucs) := { ucs:=pl_ucs } + +}//g_charstring + +group g_record { + + //REC + type record REC { + integer i optional, + float f optional, + charstring cs optional, + bitstring bs optional + } + type record of REC RoREC; + + type record RREC { REC rec optional }; + + template RoREC t_rorec(template REC pl_rec) := { pl_rec } + template RREC t_rrec( template REC pl_rec) := { rec := pl_rec } + //REC2 + type record REC2 { + boolean b optional, + charstring cs optional, + int_1_3 i optional + } + type record of REC2 RoREC2; + + //record of boolean, octetstring, hexstring: + type record REC_BOH { + boolean b optional, + octetstring o optional, + hexstring h optional + } + + type record REC_BAI3 { + boolean b optional, + AI3 ai3 optional + } + + template REC t_rec(template integer pl_i, template float pl_f, template charstring pl_cs, template bitstring pl_bs) := { + i:= pl_i, + f:= pl_f, + cs:=pl_cs, + bs:=pl_bs + } + + +}//g_record + +group g_recordof { + // see earlier: type record of integer RoI + type record of RoI RoRoI; + type record of RoB RoRoB; + //type record of float RoF; + type record of RoF RoRoF; + +}//g_recordof + +group g_array { + //array of boolean; + //array of integers; + type integer AI3[3]; + type integer AI2x3[2][3]; + + type record of AI3 RoAI3; + type record of AI2x3 RoAI2x3; + + type record RAI3 { + AI3 ai3 optional + } + + type record of RAI3 RoRAI3; + template RAI3 t_rai3(template AI3 pl_ai3) := { ai3 := pl_ai3 }; + + //array of floats + //array of bitstrings + //array of octetstrings + //array of hexstrings + //array of charstrings + //array of records + //arrays of sets + //arrays of set of + //array of enum + //array of union + //array of anytype + //array of user type + + //see also REC_BAI3 +}//g_array + + +group g_set { + + type set SET { + boolean b optional, + integer i optional, + float f optional, + bitstring bs optional, + octetstring os optional, + hexstring hs optional, + charstring cs optional + } + type record of SET RoSET; + //template RoSET t_roset(template SET pl_set) := { pl_set }; + + type record RSET { SET s optional } + template RSET t_rset(template SET pl_set) := {s:= pl_set }; + type record of RSET RoRSET; + +}//g_set + +group g_setof { + type set of charstring SoCS; + type record of SoCS RoSoCS; + type record RSoCS { SoCS s optional } + template RSoCS t_rsocs(template SoCS pl_s) := { s := pl_s } + type record of RSoCS RoRSoCS + +}//g_setof + +group g_enumerated { + type enumerated MyEnum { first, second, third } + + type record REnum { MyEnum e optional } + template REnum t_renum(template MyEnum pl_e) := { e := pl_e } +}//g_enumerated + +group g_union { + type union U { + boolean b, + integer i, + float f, + bitstring bs, + octetstring os, + hexstring hs, + charstring cs, + REC r, + RoI roi, + SET s, + SoCS socs, + MyEnum e, + U u + } + + type record RU { U u optional } + template RU t_ru(template U pl_u) := { u := pl_u } + +}//g_union + +group g_anytype { + +}//g_anytype + +}//module diff --git a/Regression_Test_java/src/text2ttcn_nolegacy/ucharstring_test.ttcn b/Regression_Test_java/src/text2ttcn_nolegacy/ucharstring_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..1dea71f53e9e9b262e7b7dd017083826ab10016f --- /dev/null +++ b/Regression_Test_java/src/text2ttcn_nolegacy/ucharstring_test.ttcn @@ -0,0 +1,565 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +module ucharstring_test { +//========================================================================= +// Import Part +//========================================================================= + +import from types2 all; +//import from functions all; + +//========================================================================= +// Module Parameters +//========================================================================= +modulepar { + + //modulepar charstrings not modified from cfg file + template universal charstring tspt_ucs_v := "ABBA"; + template universal charstring tspt_ucs_o := omit; + template universal charstring tspt_ucs_a := *; + template universal charstring tspt_ucs_q := ?; + template universal charstring tspt_ucs_al1 := * length(2); //length restriction + template universal charstring tspt_ucs_al2 := * length(2..4); + template universal charstring tspt_ucs_ql1 := ? length(2); + template universal charstring tspt_ucs_ql2 := ? length(2..4); + template universal charstring tspt_ucs_vl1 := ("ABBA"); + template universal charstring tspt_ucs_vl2 := ("ABBA","baba"); + template universal charstring tspt_ucs_vl3 := ("ABBA","baba","Bye"); + template universal charstring tspt_ucs_c1 := complement("ABBA") + template universal charstring tspt_ucs_c2 := complement("ABBA","baba"); + template universal charstring tspt_ucs_c3 := complement("ABBA","baba","Bye"); + template universal charstring tspt_ucs_r1 := ("A".."B"); //range + template universal charstring tspt_ucs_r2 := ("a".."c"); + template universal charstring tspt_ucs_pa := pattern "abc*xyz" + template universal charstring tspt_ucs_pq := pattern "abc?xyz" + + template universal charstring tspt_ucs_vifp := "ABBA" ifpresent; + template universal charstring tspt_ucs_oifp := omit ifpresent; + template universal charstring tspt_ucs_aifp := * ifpresent; + template universal charstring tspt_ucs_qifp := ? ifpresent; + template universal charstring tspt_ucs_al1ifp := * length(2) ifpresent; //length restriction + template universal charstring tspt_ucs_al2ifp := * length(2..4) ifpresent; + template universal charstring tspt_ucs_ql1ifp := ? length(2) ifpresent; + template universal charstring tspt_ucs_ql2ifp := ? length(2..4) ifpresent; + template universal charstring tspt_ucs_vl1ifp := ("ABBA") ifpresent; + template universal charstring tspt_ucs_vl2ifp := ("ABBA","baba") ifpresent; + template universal charstring tspt_ucs_vl3ifp := ("ABBA","baba","Bye") ifpresent; + template universal charstring tspt_ucs_c1ifp := complement("ABBA") ifpresent + template universal charstring tspt_ucs_c2ifp := complement("ABBA","baba") ifpresent; + template universal charstring tspt_ucs_c3ifp := complement("ABBA","baba","Bye") ifpresent; + template universal charstring tspt_ucs_r1ifp := ("A".."B") ifpresent; //range + template universal charstring tspt_ucs_r2ifp := ("a".."c") ifpresent; + template universal charstring tspt_ucs_paifp := pattern "abc*xyz" ifpresent + template universal charstring tspt_ucs_pqifp := pattern "abc?xyz" ifpresent + + //modulepar universal charstrings modified from cfg file + template universal charstring tspt_ucs_mod4v := * //after mod:"ABBA"; + template universal charstring tspt_ucs_mod4o := * //omit; + template universal charstring tspt_ucs_mod4ol := * //omit; + template universal charstring tspt_ucs_mod4a := "A" //*; + template universal charstring tspt_ucs_mod4q := "" //?; + template universal charstring tspt_ucs_mod4al1 := "A" //* length(2); //length restriction + template universal charstring tspt_ucs_mod4al2 := "Original" //mofified for: * length(2..4); + template universal charstring tspt_ucs_mod4ql1 := "Original" //mofified for:? length(2); + template universal charstring tspt_ucs_mod4ql2 := "Original" //mofified for:? length(2..4); + template universal charstring tspt_ucs_mod4vl1 := ("ABBA") //TODO: Adam //It should be mofified for: ("ABBA"); + template universal charstring tspt_ucs_mod4vl2 := "Original" //mofified for:("ABBA","baba"); + template universal charstring tspt_ucs_mod4vl3 := "Original" //mofified for:("ABBA","baba","Bye"); + template universal charstring tspt_ucs_mod4c1 := "Original" //mofified for:complement("ABBA") + template universal charstring tspt_ucs_mod4c2 := "Original" //mofified for:complement("ABBA","baba"); + template universal charstring tspt_ucs_mod4c3 := "Original" //mofified for:complement("ABBA","baba","Bye"); + template universal charstring tspt_ucs_mod4r1 := "Original" //mofified for:("A".."B"); //range + template universal charstring tspt_ucs_mod4r2 := "Original" //mofified for:("a".."c"); + template universal charstring tspt_ucs_mod4pa := "Original" //mofified for:pattern "abc*xyz" + template universal charstring tspt_ucs_mod4pq := "Original" //mofified for:pattern "abc?xyz" + + template universal charstring tspt_ucs_mod4vifp := "Original" //mofified for:"ABBA" ifpresent; + template universal charstring tspt_ucs_mod4oifp := "Original" //mofified for:omit ifpresent; + template universal charstring tspt_ucs_mod4aifp := "Original" //mofified for:* ifpresent; + template universal charstring tspt_ucs_mod4qifp := "Original" //mofified for:? ifpresent; + template universal charstring tspt_ucs_mod4al1ifp := "Original" //mofified for:* length(2) ifpresent; //length restriction + template universal charstring tspt_ucs_mod4al2ifp := "Original" //mofified for:* length(2..4) ifpresent; + template universal charstring tspt_ucs_mod4ql1ifp := "Original" //mofified for:? length(2) ifpresent; + template universal charstring tspt_ucs_mod4ql2ifp := "Original" //mofified for:? length(2..4) ifpresent; + template universal charstring tspt_ucs_mod4vl1ifp := ("ABBA") ifpresent //TODO: Adam //It should be mofified for: ("ABBA"); + template universal charstring tspt_ucs_mod4vl2ifp := "Original" //mofified for:("ABBA","baba") ifpresent; + template universal charstring tspt_ucs_mod4vl3ifp := "Original" //mofified for:("ABBA","baba","Bye") ifpresent; + template universal charstring tspt_ucs_mod4c1ifp := "Original" //mofified for:complement("ABBA") ifpresent + template universal charstring tspt_ucs_mod4c2ifp := "Original" //mofified for:complement("ABBA","baba") ifpresent; + template universal charstring tspt_ucs_mod4c3ifp := "Original" //mofified for:complement("ABBA","baba","Bye") ifpresent; + template universal charstring tspt_ucs_mod4r1ifp := "Original" //mofified for:("A".."B") ifpresent; //range + template universal charstring tspt_ucs_mod4r2ifp := "Original" //mofified for:("a".."c") ifpresent; + template universal charstring tspt_ucs_mod4paifp := "Original" //mofified for:pattern "abc*xyz" ifpresent + template universal charstring tspt_ucs_mod4pqifp := "Original" //mofified for:pattern "abc?xyz" ifpresent + +} + +//========================================================================= +// Templates +//========================================================================= +// not modulepars +template universal charstring t_ucs_v := "ABBA"; +template universal charstring t_ucs_o := omit; +template universal charstring t_ucs_a := *; +template universal charstring t_ucs_q := ?; +template universal charstring t_ucs_al1 := * length(2); //length restriction +template universal charstring t_ucs_al2 := * length(2..4); +template universal charstring t_ucs_ql1 := ? length(2); +template universal charstring t_ucs_ql2 := ? length(2..4); +template universal charstring t_ucs_vl1 := ("ABBA"); +template universal charstring t_ucs_vl2 := ("ABBA","baba"); +template universal charstring t_ucs_vl3 := ("ABBA","baba","Bye"); +template universal charstring t_ucs_c1 := complement("ABBA") +template universal charstring t_ucs_c2 := complement("ABBA","baba"); +template universal charstring t_ucs_c3 := complement("ABBA","baba","Bye"); +template universal charstring t_ucs_r1 := ("A".."B"); //range +template universal charstring t_ucs_r2 := ("a".."c"); +template universal charstring t_ucs_pa := pattern "abc*xyz" +template universal charstring t_ucs_pq := pattern "abc?xyz" + +template universal charstring t_ucs_vifp := "ABBA" ifpresent; +template universal charstring t_ucs_oifp := omit ifpresent; +template universal charstring t_ucs_aifp := * ifpresent; +template universal charstring t_ucs_qifp := ? ifpresent; +template universal charstring t_ucs_al1ifp := * length(2) ifpresent; //length restriction +template universal charstring t_ucs_al2ifp := * length(2..4) ifpresent; +template universal charstring t_ucs_ql1ifp := ? length(2) ifpresent; +template universal charstring t_ucs_ql2ifp := ? length(2..4) ifpresent; +template universal charstring t_ucs_vl1ifp := ("ABBA") ifpresent; +template universal charstring t_ucs_vl2ifp := ("ABBA","baba") ifpresent; +template universal charstring t_ucs_vl3ifp := ("ABBA","baba","Bye") ifpresent; +template universal charstring t_ucs_c1ifp := complement("ABBA") ifpresent +template universal charstring t_ucs_c2ifp := complement("ABBA","baba") ifpresent; +template universal charstring t_ucs_c3ifp := complement("ABBA","baba","Bye") ifpresent; +template universal charstring t_ucs_r1ifp := ("A".."B") ifpresent; //range +template universal charstring t_ucs_r2ifp := ("a".."c") ifpresent; +template universal charstring t_ucs_paifp := pattern "abc*xyz" ifpresent +template universal charstring t_ucs_pqifp := pattern "abc?xyz" ifpresent + +//========================================================================= +// Functions +//========================================================================= + +function f_string2ttcn_rucs_t(in charstring pl_cs, in template RUCS pl_expected_result) { + var template RUCS vl_result; + @try { + string2ttcn(pl_cs,vl_result); + setverdict(pass) + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + log(pl_expected_result); + log(vl_result); + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +function f_string2ttcn_rucs_t_str(in charstring pl_cs, in charstring pl_expected_result) { + var template RUCS vl_result; + @try { + string2ttcn(pl_cs,vl_result); + setverdict(pass) + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + log("Expected result: ", pl_expected_result); + log("Result: ", vl_result); + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } +} + +//template string -> variable conversion +//expected result: error +function f_string2ttcn_rucs_v(in charstring pl_cs, in template RUCS pl_expected_result, in boolean pl_ok_expected) { + var RUCS vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("string2ttcn() failed: ",err_str); + setverdict(fail); + } + if( log2str(pl_expected_result) == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("string2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ",pl_expected_result ); + log("Result: ", vl_result); +} + +//this function is the same but uses +function f_string2ttcn_rucs_v_str(in charstring pl_cs, charstring pl_expected_result, in boolean pl_ok_expected) { + var RUCS vl_result; + if( pl_ok_expected ) { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(pass); + } + @catch(err_str) { + log("str2ttcn() failed: ",err_str); + setverdict(fail); + } + if( pl_expected_result == log2str(vl_result) ) { setverdict(pass) } else { setverdict(fail) } + } + else + { + @try { + string2ttcn(pl_cs, vl_result); + setverdict(fail); + } + @catch(err_str) { + log("str2ttcn() conversion error: ",err_str); + setverdict(pass,"Expected error, ok"); + } + + } + log("Expected result: ", pl_expected_result ); + log("Result: ", vl_result); +} + +//========================================================================= +// Testcases +//========================================================================= + +testcase tc_ucs_ttcn2string_emb() runs on MC { + log(t_rucs(tspt_ucs_mod4v)); + log(ttcn2string(t_rucs(tspt_ucs_mod4v))); + if(ttcn2string(t_rucs(tspt_ucs_mod4v)) != "{ ucs := \"ABBA\" }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4o)); + if(ttcn2string(t_rucs(tspt_ucs_mod4o)) != "{ ucs := omit }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4a)); + if(ttcn2string(t_rucs(tspt_ucs_mod4a)) != "{ ucs := * }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4q)); + if(ttcn2string(t_rucs(tspt_ucs_mod4q)) != "{ ucs := ? }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4al1)); + if(ttcn2string(t_rucs(tspt_ucs_mod4al1)) != "{ ucs := * length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4al2)); + if(ttcn2string(t_rucs(tspt_ucs_mod4al2)) != "{ ucs := * length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4ql1)); + if(ttcn2string(t_rucs(tspt_ucs_mod4ql1)) != "{ ucs := ? length (2) }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4ql2)); + if(ttcn2string(t_rucs(tspt_ucs_mod4ql2)) != "{ ucs := ? length (2 .. 4) }") {setverdict(fail)} else {setverdict(pass)}; + log(">",t_rucs(tspt_ucs_mod4vl1),"<"); + if(ttcn2string(t_rucs(tspt_ucs_mod4vl1)) != "{ ucs := \"ABBA\" }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4vl2)); + if(ttcn2string(t_rucs(tspt_ucs_mod4vl2)) != "{ ucs := (char(0, 0, 0, 193) & \"d\" & char(0, 0, 0, 225) & \"m\", char(0, 0, 0, 201) & \"va\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4vl3)); + if(ttcn2string(t_rucs(tspt_ucs_mod4vl3)) != "{ ucs := (\"ABBA\", \"baba\", \"Bye\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4c1)); + if(ttcn2string(t_rucs(tspt_ucs_mod4c1)) != "{ ucs := complement(\"ABBA\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4c2)); + if(ttcn2string(t_rucs(tspt_ucs_mod4c2)) != "{ ucs := complement(\"ABBA\", \"baba\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4c3)); + if(ttcn2string(t_rucs(tspt_ucs_mod4c3)) != "{ ucs := complement(\"ABBA\", \"baba\", \"Bye\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4r1)); + if(ttcn2string(t_rucs(tspt_ucs_mod4r1)) != "{ ucs := (\"A\" .. \"B\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4r2)); + if(ttcn2string(t_rucs(tspt_ucs_mod4r2)) != "{ ucs := (\"a\" .. \"c\") }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4pa)); + if(ttcn2string(t_rucs(tspt_ucs_mod4pa)) != "{ ucs := pattern \"abc*xyz\" }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4pq)); + if(ttcn2string(t_rucs(tspt_ucs_mod4pq)) != "{ ucs := pattern \"abc?xyz\" }") {setverdict(fail)} else {setverdict(pass)}; + //== + log(t_rucs(tspt_ucs_mod4vifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4vifp)) != "{ ucs := \"ABBA\" ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4oifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4oifp)) != "{ ucs := omit ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4aifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4aifp)) != "{ ucs := * ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4qifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4qifp)) != "{ ucs := ? ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4al1ifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4al1ifp)) != "{ ucs := * length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4al2ifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4al2ifp)) != "{ ucs := * length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4ql1ifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4ql1ifp)) != "{ ucs := ? length (2) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4ql2ifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4ql2ifp)) != "{ ucs := ? length (2 .. 4) ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4vl1ifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4vl1ifp)) != "{ ucs := \"ABBA\" ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4vl2ifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4vl2ifp)) != "{ ucs := (\"ABBA\", \"baba\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4vl3ifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4vl3ifp)) != "{ ucs := (\"ABBA\", \"baba\", \"Bye\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4c1ifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4c1ifp)) != "{ ucs := complement(\"ABBA\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4c2ifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4c2ifp)) != "{ ucs := complement(\"ABBA\", \"baba\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4c3ifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4c3ifp)) != "{ ucs := complement(\"ABBA\", \"baba\", \"Bye\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4r1ifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4r1ifp)) != "{ ucs := (\"A\" .. \"B\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4r2ifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4r2ifp)) != "{ ucs := (\"a\" .. \"c\") ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4paifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4paifp)) != "{ ucs := pattern \"abc*xyz\" ifpresent }") {setverdict(fail)} else {setverdict(pass)}; + log(t_rucs(tspt_ucs_mod4pqifp)); + if(ttcn2string(t_rucs(tspt_ucs_mod4pqifp)) != "{ ucs := pattern \"abc?xyz\" ifpresent }") {setverdict(fail)} else {setverdict(pass)}; +} + +//==== string2ttcn testcases =============================================================== +//These testcases tests if +// 1. string2ttcn can generate the expected template +// 2. string2ttcn can generate the expected value, if possible/required (=true the third arg) +//=========================================================================================== +testcase tc_ucs_string2ttcn_mod4v() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4v)),t_rucs(tspt_ucs_mod4v)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4v)),t_rucs(tspt_ucs_mod4v),true); +} + +testcase tc_ucs_string2ttcn_mod4o() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4o)),t_rucs(tspt_ucs_mod4o)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4o)),t_rucs(tspt_ucs_mod4o),true); +} + +//omit length +testcase tc_ucs_string2ttcn_mod4ol() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4ol)),t_rucs(tspt_ucs_mod4ol)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4ol)),t_rucs(tspt_ucs_mod4ol),false); +} + +testcase tc_ucs_string2ttcn_mod4a() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4a)),t_rucs(tspt_ucs_mod4a)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4a)),t_rucs(tspt_ucs_mod4a),false); +} + +testcase tc_ucs_string2ttcn_mod4q() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4q)),t_rucs(tspt_ucs_mod4q)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4q)),t_rucs(tspt_ucs_mod4q),false); +} + +testcase tc_ucs_string2ttcn_mod4al1() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4al1)),t_rucs(tspt_ucs_mod4al1)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4al1)),t_rucs(tspt_ucs_mod4al1),false); +} + +testcase tc_ucs_string2ttcn_mod4al2() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4al2)),t_rucs(tspt_ucs_mod4al2)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4al2)),t_rucs(tspt_ucs_mod4al2),false); +} + +testcase tc_ucs_string2ttcn_mod4ql1() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4ql1)),t_rucs(tspt_ucs_mod4ql1)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4ql1)),t_rucs(tspt_ucs_mod4ql1),false); +} + +testcase tc_ucs_string2ttcn_mod4ql2() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4ql2)),t_rucs(tspt_ucs_mod4ql2)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4ql2)),t_rucs(tspt_ucs_mod4ql2),false); +} + +testcase tc_ucs_string2ttcn_mod4vl1() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4vl1)),t_rucs(tspt_ucs_mod4vl1)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4vl1)),t_rucs(tspt_ucs_mod4vl1),true); +} + +testcase tc_ucs_string2ttcn_mod4vl2() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4vl2)),t_rucs(tspt_ucs_mod4vl2)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4vl2)),t_rucs(tspt_ucs_mod4vl2),false); +} + +testcase tc_ucs_string2ttcn_mod4vl3() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4vl3)),t_rucs(tspt_ucs_mod4vl3)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4vl3)),t_rucs(tspt_ucs_mod4vl3),false); +} + +testcase tc_ucs_string2ttcn_mod4c1() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4c1)),t_rucs(tspt_ucs_mod4c1)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4c1)),t_rucs(tspt_ucs_mod4c1),false); +} + +testcase tc_ucs_string2ttcn_mod4c2() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4c2)),t_rucs(tspt_ucs_mod4c2)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4c2)),t_rucs(tspt_ucs_mod4c2),false); +} + +testcase tc_ucs_string2ttcn_mod4c3() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4c3)),t_rucs(tspt_ucs_mod4c3)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4c3)),t_rucs(tspt_ucs_mod4c3),false); +} + +testcase tc_ucs_string2ttcn_mod4r1() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4r1)),t_rucs(tspt_ucs_mod4r1)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4r1)),t_rucs(tspt_ucs_mod4r1),false); +} + +testcase tc_ucs_string2ttcn_mod4r2() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4r2)),t_rucs(tspt_ucs_mod4r2)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4r2)),t_rucs(tspt_ucs_mod4r2),false); +} + +testcase tc_ucs_string2ttcn_mod4pa() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4pa)),t_rucs(tspt_ucs_mod4pa)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4pa)),t_rucs(tspt_ucs_mod4pa),false); +} + +testcase tc_ucs_string2ttcn_mod4pq() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4pq)),t_rucs(tspt_ucs_mod4pq)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4pq)),t_rucs(tspt_ucs_mod4pq),false); +} + +// ifp + +testcase tc_ucs_string2ttcn_mod4vifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4vifp)),t_rucs(tspt_ucs_mod4vifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4vifp)),t_rucs(tspt_ucs_mod4vifp),false); +} + +testcase tc_ucs_string2ttcn_mod4oifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4oifp)),t_rucs(tspt_ucs_mod4oifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4oifp)),t_rucs(tspt_ucs_mod4oifp),false); +} + +testcase tc_ucs_string2ttcn_mod4aifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4aifp)),t_rucs(tspt_ucs_mod4aifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4aifp)),t_rucs(tspt_ucs_mod4aifp),false); +} + +testcase tc_ucs_string2ttcn_mod4qifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4qifp)),t_rucs(tspt_ucs_mod4qifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4qifp)),t_rucs(tspt_ucs_mod4qifp),false); +} + +testcase tc_ucs_string2ttcn_mod4al1ifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4al1ifp)),t_rucs(tspt_ucs_mod4al1ifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4al1ifp)),t_rucs(tspt_ucs_mod4al1ifp),false); +} + +testcase tc_ucs_string2ttcn_mod4al2ifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4al2ifp)),t_rucs(tspt_ucs_mod4al2ifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4al2ifp)),t_rucs(tspt_ucs_mod4al2ifp),false); +} + +testcase tc_ucs_string2ttcn_mod4ql1ifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4ql1ifp)),t_rucs(tspt_ucs_mod4ql1ifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4ql1ifp)),t_rucs(tspt_ucs_mod4ql1ifp),false); +} + +testcase tc_ucs_string2ttcn_mod4ql2ifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4ql2ifp)),t_rucs(tspt_ucs_mod4ql2ifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4ql2ifp)),t_rucs(tspt_ucs_mod4ql2ifp),false); +} + +testcase tc_ucs_string2ttcn_mod4vl1ifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4vl1ifp)),t_rucs(tspt_ucs_mod4vl1ifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4vl1ifp)),t_rucs(tspt_ucs_mod4vl1ifp),false); +} + +testcase tc_ucs_string2ttcn_mod4vl2ifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4vl2ifp)),t_rucs(tspt_ucs_mod4vl2ifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4vl2ifp)),t_rucs(tspt_ucs_mod4vl2ifp),false); +} + +testcase tc_ucs_string2ttcn_mod4vl3ifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4vl3ifp)),t_rucs(tspt_ucs_mod4vl3ifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4vl3ifp)),t_rucs(tspt_ucs_mod4vl3ifp),false); +} + +testcase tc_ucs_string2ttcn_mod4c1ifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4c1ifp)),t_rucs(tspt_ucs_mod4c1ifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4c1ifp)),t_rucs(tspt_ucs_mod4c1ifp),false); +} + +testcase tc_ucs_string2ttcn_mod4c2ifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4c2ifp)),t_rucs(tspt_ucs_mod4c2ifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4c2ifp)),t_rucs(tspt_ucs_mod4c2ifp),false); +} + +testcase tc_ucs_string2ttcn_mod4c3ifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4c3ifp)),t_rucs(tspt_ucs_mod4c3ifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4c3ifp)),t_rucs(tspt_ucs_mod4c3ifp),false); +} + +testcase tc_ucs_string2ttcn_mod4r1ifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4r1ifp)),t_rucs(tspt_ucs_mod4r1ifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4r1ifp)),t_rucs(tspt_ucs_mod4r1ifp),false); +} + +testcase tc_ucs_string2ttcn_mod4r2ifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4r2ifp)),t_rucs(tspt_ucs_mod4r2ifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4r2ifp)),t_rucs(tspt_ucs_mod4r2ifp),false); +} + +testcase tc_ucs_string2ttcn_mod4paifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4paifp)),t_rucs(tspt_ucs_mod4paifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4paifp)),t_rucs(tspt_ucs_mod4paifp),false); +} + +testcase tc_ucs_string2ttcn_mod4pqifp() runs on MC { + f_string2ttcn_rucs_t(ttcn2string(t_rucs(tspt_ucs_mod4pqifp)),t_rucs(tspt_ucs_mod4pqifp)); + f_string2ttcn_rucs_v(ttcn2string(t_rucs(tspt_ucs_mod4pqifp)),t_rucs(tspt_ucs_mod4pqifp),false); +} + +control { + + log("***universal charstring tests****"); + //execute(tc_ucs_v()); + //ttcn2string: + execute(tc_ucs_ttcn2string_emb()); + + execute(tc_ucs_string2ttcn_mod4v()); + execute(tc_ucs_string2ttcn_mod4o()); + execute(tc_ucs_string2ttcn_mod4ol()); + execute(tc_ucs_string2ttcn_mod4a()); + execute(tc_ucs_string2ttcn_mod4q()); + execute(tc_ucs_string2ttcn_mod4al1()); + execute(tc_ucs_string2ttcn_mod4al2()); + execute(tc_ucs_string2ttcn_mod4ql1()); + execute(tc_ucs_string2ttcn_mod4ql2()); + execute(tc_ucs_string2ttcn_mod4vl1()); + execute(tc_ucs_string2ttcn_mod4vl2()); + execute(tc_ucs_string2ttcn_mod4vl3()); + execute(tc_ucs_string2ttcn_mod4c1()); + execute(tc_ucs_string2ttcn_mod4c2()); + execute(tc_ucs_string2ttcn_mod4c3()); + execute(tc_ucs_string2ttcn_mod4r1()); + execute(tc_ucs_string2ttcn_mod4r2()); + execute(tc_ucs_string2ttcn_mod4pa()); + execute(tc_ucs_string2ttcn_mod4pq()); + //ttcn2string with ifpresent + execute(tc_ucs_string2ttcn_mod4vifp()); + execute(tc_ucs_string2ttcn_mod4oifp()); + execute(tc_ucs_string2ttcn_mod4aifp()); + execute(tc_ucs_string2ttcn_mod4qifp()); + execute(tc_ucs_string2ttcn_mod4al1ifp()); + execute(tc_ucs_string2ttcn_mod4al2ifp()); + execute(tc_ucs_string2ttcn_mod4ql1ifp()); + execute(tc_ucs_string2ttcn_mod4ql2ifp()); + execute(tc_ucs_string2ttcn_mod4vl1ifp()); + execute(tc_ucs_string2ttcn_mod4vl2ifp()); + execute(tc_ucs_string2ttcn_mod4vl3ifp()); + execute(tc_ucs_string2ttcn_mod4c1ifp()); + execute(tc_ucs_string2ttcn_mod4c2ifp()); + execute(tc_ucs_string2ttcn_mod4c3ifp()); + execute(tc_ucs_string2ttcn_mod4r1ifp()); + execute(tc_ucs_string2ttcn_mod4r2ifp()); + execute(tc_ucs_string2ttcn_mod4paifp()); + execute(tc_ucs_string2ttcn_mod4pqifp()); + +} + +} //module diff --git a/Regression_Test_java/src/text2ttcn_nolegacy/union_test.ttcn b/Regression_Test_java/src/text2ttcn_nolegacy/union_test.ttcn new file mode 100644 index 0000000000000000000000000000000000000000..7ecf189a74aba2cf37a1e29ad80bd8b5c9038586 --- /dev/null +++ b/Regression_Test_java/src/text2ttcn_nolegacy/union_test.ttcn @@ -0,0 +1,297 @@ +/****************************************************************************** + * 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 + * + ******************************************************************************/ +/* +//AUTHOR: +//DATE: +//VERSION: +*/ +module union_test +{ + +//========================================================================= +// Import Part +//========================================================================= +import from types2 all; +//import from functions2 all; +//========================================================================= +// Module Parameters +//========================================================================= +modulepar{ + template U tspt_union_mod4v_b := { e := first } + template U tspt_union_mod4v_i := { e := first } + template U tspt_union_mod4v_f := { e := first } + template U tspt_union_mod4v_bs := { e := first } + template U tspt_union_mod4v_os := { e := first } + template U tspt_union_mod4v_hs := { e := first } + template U tspt_union_mod4v_cs := { e := first } + template U tspt_union_mod4v_r := { e := first } + template U tspt_union_mod4v_roi := { e := first } + template U tspt_union_mod4v_s := { e := first } + template U tspt_union_mod4v_s_uninit := { e := first } + template U tspt_union_mod4v_socs := { e := first } + template U tspt_union_mod4v_e := { e := first } + template U tspt_union_mod4v_u := { e := first } + + template U tspt_union_mod4a := { e := first } + template U tspt_union_mod4q := { e := first } + template U tspt_union_mod4o := { e := first } + + //union ifpresent + template U tspt_union_mod4v_bifp := { e := first } + template U tspt_union_mod4v_iifp := { e := first } ifpresent + template U tspt_union_mod4v_fifp := { e := first } ifpresent + template U tspt_union_mod4v_bsifp := { e := first } ifpresent + template U tspt_union_mod4v_osifp := { e := first } ifpresent + template U tspt_union_mod4v_hsifp := { e := first } ifpresent + template U tspt_union_mod4v_csifp := { e := first } ifpresent + template U tspt_union_mod4v_rifp := { e := first } ifpresent + template U tspt_union_mod4v_roiifp := { e := first } ifpresent + template U tspt_union_mod4v_sifp := { e := first } ifpresent + template U tspt_union_mod4v_s_uninitifp := { e := first } + template U tspt_union_mod4v_socsifp := { e := first } ifpresent + template U tspt_union_mod4v_eifp := { e := first } ifpresent + template U tspt_union_mod4v_uifp := { e := first } ifpresent + + template U tspt_union_mod4aifp := { e := first } ifpresent + template U tspt_union_mod4qifp := { e := first } ifpresent + template U tspt_union_mod4oifp := { e := first } ifpresent +} +//========================================================================= +// Data Types +//========================================================================= + +// Insert data type defintions here if applicable! +// You can use the data_type skeleton! + +//========================================================================= +// Signatures +//========================================================================= + +// Insert signature definitions here if applicable! +// You can use the signature skeleton! + +//========================================================================= +//Port Types +//========================================================================= + +// Insert port type defintions here if applicable! +// You can use the port_type skeleton! + +//========================================================================= +//Component Types +//========================================================================= + +// Insert component type defintions here if applicable! +// You can use the component_type skeleton! + +//========================================================================= +// Constants +//========================================================================= + +// Insert constants here if applicable! +// You can use the constant skeleton! + +//========================================================================= +// Templates +//========================================================================= + +// Insert templates here if applicable! +// You can use the template skeleton! + +//========================================================================= +// Altsteps +//========================================================================= + +// Insert altsteps here if applicable! +// You can use the altstep skeleton! + +//========================================================================= +// Functions +//========================================================================= + +// Insert functions here if applicable! +// You can use the function skeleton! + +//========================================================================= +// Testcases +//========================================================================= + + +testcase tc_union_ModulePar() runs on MC { + log(log2str(tspt_union_mod4v_b)); + if(log2str(tspt_union_mod4v_b) == "{ b := true }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_i)); + if(log2str(tspt_union_mod4v_i) == "{ i := 1 }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_f)); + if(log2str(tspt_union_mod4v_f) == "{ f := 1.000000 }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_bs)); + if(log2str(tspt_union_mod4v_bs) == "{ bs := '01101'B }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_os)); + if(log2str(tspt_union_mod4v_os) == "{ os := 'ABBA'O }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_hs)); + if(log2str(tspt_union_mod4v_hs) == "{ hs := 'ABBA'H }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_cs)); + if(log2str(tspt_union_mod4v_cs) == "{ cs := \"ABBA\" }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_r)); + if(log2str(tspt_union_mod4v_r) == "{ r := { i := 1, f := 1.000000, cs := \"ABBA\", bs := '0100'B } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_roi)); + if(log2str(tspt_union_mod4v_roi) == "{ roi := { 1 } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_s)); + if(log2str(tspt_union_mod4v_s) == + "{ s := { b := true, i := 1, f := 1.000000, bs := '01101'B, os := 'ABBA'O, hs := 'ABBA'H, cs := \"ABBA\" } }" ) + {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_s_uninit)); + if(log2str(tspt_union_mod4v_s_uninit) == + "{ s := { b := true, i := <uninitialized template>, f := <uninitialized template>, bs := <uninitialized template>, os := <uninitialized template>, hs := <uninitialized template>, cs := <uninitialized template> } }") + {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_socs)); + if(log2str(tspt_union_mod4v_socs) == "{ socs := { \"ABBA\" } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_e)); + if(log2str(tspt_union_mod4v_e) == "{ e := first (0) }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_u)); + if(log2str(tspt_union_mod4v_u) == "{ u := { i := 1 } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4a)); + if(log2str(tspt_union_mod4a) == "*" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4q)); + if(log2str(tspt_union_mod4q) == "?" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4o)); + if(log2str(tspt_union_mod4o) == "omit" ) {setverdict(pass)} else {setverdict(fail)} + + log(log2str(tspt_union_mod4v_bifp)); + if(log2str(tspt_union_mod4v_bifp) == "{ b := true } ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_iifp)); + if(log2str(tspt_union_mod4v_iifp) == "{ i := 1 } ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_fifp)); + if(log2str(tspt_union_mod4v_fifp) == "{ f := 1.000000 } ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_bsifp)); + if(log2str(tspt_union_mod4v_bsifp) == "{ bs := '01101'B } ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_osifp)); + if(log2str(tspt_union_mod4v_osifp) == "{ os := 'ABBA'O } ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_hsifp)); + if(log2str(tspt_union_mod4v_hsifp) == "{ hs := 'ABBA'H } ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_csifp)); + if(log2str(tspt_union_mod4v_csifp) == "{ cs := \"ABBA\" } ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_rifp)); + if(log2str(tspt_union_mod4v_rifp) == "{ r := { i := 1, f := 1.000000, cs := \"ABBA\", bs := '0100'B } } ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_roiifp)); + if(log2str(tspt_union_mod4v_roiifp) == "{ roi := { 1 } } ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_sifp)); + if(log2str(tspt_union_mod4v_sifp) == + "{ s := { b := true, i := 1, f := 1.000000, bs := '01101'B, os := 'ABBA'O, hs := 'ABBA'H, cs := \"ABBA\" } } ifpresent" ) + {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_s_uninitifp)); + if(log2str(tspt_union_mod4v_s_uninitifp) == + "{ s := { b := true, i := <uninitialized template>, f := <uninitialized template>, bs := <uninitialized template>, os := <uninitialized template>, hs := <uninitialized template>, cs := <uninitialized template> } } ifpresent") + {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_socsifp)); + if(log2str(tspt_union_mod4v_socsifp) == "{ socs := { \"ABBA\" } } ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_eifp)); + if(log2str(tspt_union_mod4v_eifp) == "{ e := first (0) } ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4v_uifp)); + if(log2str(tspt_union_mod4v_uifp) == "{ u := { i := 1 } } ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4aifp)); + if(log2str(tspt_union_mod4aifp) == "* ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4qifp)); + if(log2str(tspt_union_mod4qifp) == "? ifpresent" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(tspt_union_mod4oifp)); + if(log2str(tspt_union_mod4oifp) == "omit ifpresent" ) {setverdict(pass)} else {setverdict(fail)} +} + +testcase tc_union_ModulePar_emb() runs on MC { + log(log2str(t_ru(tspt_union_mod4v_b))); + if(log2str(t_ru(tspt_union_mod4v_b)) == "{ u := { b := true } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_i))); + if(log2str(t_ru(tspt_union_mod4v_i)) == "{ u := { i := 1 } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_f))); + if(log2str(t_ru(tspt_union_mod4v_f)) == "{ u := { f := 1.000000 } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_bs))); + if(log2str(t_ru(tspt_union_mod4v_bs)) == "{ u := { bs := '01101'B } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_os))); + if(log2str(t_ru(tspt_union_mod4v_os)) == "{ u := { os := 'ABBA'O } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_hs))); + if(log2str(t_ru(tspt_union_mod4v_hs)) == "{ u := { hs := 'ABBA'H } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_cs))); + if(log2str(t_ru(tspt_union_mod4v_cs)) == "{ u := { cs := \"ABBA\" } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_r))); + if(log2str(t_ru(tspt_union_mod4v_r)) == "{ u := { r := { i := 1, f := 1.000000, cs := \"ABBA\", bs := '0100'B } } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_roi))); + if(log2str(t_ru(tspt_union_mod4v_roi)) == "{ u := { roi := { 1 } } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_s))); + if(log2str(t_ru(tspt_union_mod4v_s)) == + "{ u := { s := { b := true, i := 1, f := 1.000000, bs := '01101'B, os := 'ABBA'O, hs := 'ABBA'H, cs := \"ABBA\" } } }" ) + {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_s_uninit))); + if(log2str(t_ru(tspt_union_mod4v_s_uninit)) == + "{ u := { s := { b := true, i := <uninitialized template>, f := <uninitialized template>, bs := <uninitialized template>, os := <uninitialized template>, hs := <uninitialized template>, cs := <uninitialized template> } } }") + {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_socs))); + if(log2str(t_ru(tspt_union_mod4v_socs)) == "{ u := { socs := { \"ABBA\" } } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_e))); + if(log2str(t_ru(tspt_union_mod4v_e)) == "{ u := { e := first (0) } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_u))); + if(log2str(t_ru(tspt_union_mod4v_u)) == "{ u := { u := { i := 1 } } }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4a))); + if(log2str(t_ru(tspt_union_mod4a)) == "{ u := * }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4q))); + if(log2str(t_ru(tspt_union_mod4q)) == "{ u := ? }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4o))); + if(log2str(t_ru(tspt_union_mod4o)) == "{ u := omit }" ) {setverdict(pass)} else {setverdict(fail)} + + log(log2str(t_ru(tspt_union_mod4v_bifp))); + if(log2str(t_ru(tspt_union_mod4v_bifp)) == "{ u := { b := true } ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_iifp))); + if(log2str(t_ru(tspt_union_mod4v_iifp)) == "{ u := { i := 1 } ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_fifp))); + if(log2str(t_ru(tspt_union_mod4v_fifp)) == "{ u := { f := 1.000000 } ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_bsifp))); + if(log2str(t_ru(tspt_union_mod4v_bsifp)) == "{ u := { bs := '01101'B } ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_osifp))); + if(log2str(t_ru(tspt_union_mod4v_osifp)) == "{ u := { os := 'ABBA'O } ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_hsifp))); + if(log2str(t_ru(tspt_union_mod4v_hsifp)) == "{ u := { hs := 'ABBA'H } ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_csifp))); + if(log2str(t_ru(tspt_union_mod4v_csifp)) == "{ u := { cs := \"ABBA\" } ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_rifp))); + if(log2str(t_ru(tspt_union_mod4v_rifp)) == "{ u := { r := { i := 1, f := 1.000000, cs := \"ABBA\", bs := '0100'B } } ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_roiifp))); + if(log2str(t_ru(tspt_union_mod4v_roiifp)) == "{ u := { roi := { 1 } } ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_sifp))); + if(log2str(t_ru(tspt_union_mod4v_sifp)) == + "{ u := { s := { b := true, i := 1, f := 1.000000, bs := '01101'B, os := 'ABBA'O, hs := 'ABBA'H, cs := \"ABBA\" } } ifpresent }" ) + {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_s_uninitifp))); + if(log2str(t_ru(tspt_union_mod4v_s_uninitifp)) == + "{ u := { s := { b := true, i := <uninitialized template>, f := <uninitialized template>, bs := <uninitialized template>, os := <uninitialized template>, hs := <uninitialized template>, cs := <uninitialized template> } } ifpresent }") + {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_socsifp))); + if(log2str(t_ru(tspt_union_mod4v_socsifp)) == "{ u := { socs := { \"ABBA\" } } ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_eifp))); + if(log2str(t_ru(tspt_union_mod4v_eifp)) == "{ u := { e := first (0) } ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4v_uifp))); + if(log2str(t_ru(tspt_union_mod4v_uifp)) == "{ u := { u := { i := 1 } } ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4aifp))); + if(log2str(t_ru(tspt_union_mod4aifp)) == "{ u := * ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4qifp))); + if(log2str(t_ru(tspt_union_mod4qifp)) == "{ u := ? ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} + log(log2str(t_ru(tspt_union_mod4oifp))); + if(log2str(t_ru(tspt_union_mod4oifp)) == "{ u := omit ifpresent }" ) {setverdict(pass)} else {setverdict(fail)} +} + //========================================================================= + // Control + //========================================================================= + control { + log("***union tests********"); + execute(tc_union_ModulePar()); + execute(tc_union_ModulePar_emb()); + } + +} // end of module