///////////////////////////////////////////////////////////////////////////////
//                                                                           //
// 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                                 //
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////
// Module: EPTF_Common_IndexArray_Test_Testcases
//
// Purpose:
//   This module contains functions for testing IndexArray
//
// Module Parameters:
//
//  Module depends on:
// 
// Current Owner:
//    Bence molnar (ebenmol)
//
// Last Review Date:
//    2009-09-07
//
//  Detailed Comments:
//    -
///////////////////////////////////////////////////////////
module EPTF_Common_IndexArray_Test_Functions {

import from EPTF_Common_IndexArray_Test_Definitions all;

//==================================================
// f_EPTF_Common_Test_SetverdictFromBool
//==================================================
function f_EPTF_Common_Test_setVerdictFromBool(in boolean pl_result) runs on EPTF_Common_Test_CT
{
  if(pl_result==true) {
    setverdict(pass)
  } else {
    setverdict(fail)
  }
}

}
