/****************************************************************************** * Copyright (c) 2000-2016 Ericsson Telecom AB * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Adrien Kirjak – initial implementation * ** @version 0.0.1 ** @purpose 1:22.2.3, lazy variable in sender redirect ** @verdict pass accept, ttcn3verdict:pass *****************************************************************/ // The following requirements are tested: // If a variable referenced in the value, sender or @index clause is a lazy or fuzzy // variable, the expression assigned to this variable is equal to the result produced // by the trigger operation i.e. later evaluation of the lazy or fuzzy variable does not // lead to repeated invocation of the trigger operation. module Sem_220203_TriggerOperation_024 { type integer address; type port P message { inout integer; } with {extension "internal"} type component GeneralComp { port P p; } testcase TC_Sem_220203_TriggerOperation_024() runs on GeneralComp { var @lazy address v_addr; connect(self:p, self:p); p.send(1) to 1; p.send(2) to 2; p.send(3) to 3; p.trigger(integer:?) -> sender v_addr; if (v_addr == 1) { // evaluation of @lazy (receive shall not be called again) alt { [] p.receive(integer:2) { setverdict(pass); } [] p.receive { setverdict(fail); } } } else { setverdict(fail); } } control { execute(TC_Sem_220203_TriggerOperation_024(), 5.0); } }