<commit_before>var _ = require('lodash');
var iii = require('iii');
var scenarioInvalidException=require('./ScenarioInvalidException.js');

/*
TODO

Fonction qui verifie que un scenario est valide par rapport a une list
*/
function check(modelCode, scenario, prefix) {
  test=true;
  var listOfAtoms=iii.interfaces.listOfAtoms(modelCode,"main");
  res=[];
  for( var i=0;i<listOfAtoms.length;i++){
    if(listOfAtoms[i].direction=='in'){
      res[listOfAtoms[i].name]=listOfAtoms[i].data.name;
    }
  }

  key=_.keys(res);
  values= _.values(res);
  values=_.map(values, function(n) { return n.toLowerCase(); });

 for( var i=0;i<scenario.length;i++){

  scenarioVar =_.keys(scenario[i]);
  console.log("scenarioVar ", scenarioVar);
  scenarioVar=_.map(scenarioVar, function(n) { return prefix+"."+ n; });
   console.log("keys = ",scenarioVar);
   scenarioVal=_.values(scenario[i]);
   console.log("scenarioVal ", scenarioVal);
   console.log("scenarioVar.length ", scenarioVar.length);
   for(var j=0;j<scenarioVal.length;j++){
     console.log("rentrer dans la boucle for");
     listOfAtomicInterfaces(scenarioVal[j],scenarioVar, prefix,j);


  }
  console.log(scenarioVar);
  console.log(scenarioVal);



  var filtered =_.filter(scenarioVar, function(item) {
    return _.contains(key, item);
  });
  var difference=_.difference(scenarioVar, filtered);
  if(difference.length!=0){
    test=false;
 }
}

  if (test==false){
    throw new scenarioInvalidException.ScenarioInvalidException("Scenario Invalid");
  }
}



function listOfAtomicInterfaces(scenarioVal,scenarioVar, prefix,indice) {
  console.log("prefix ", prefix);
  console.log("scenarioVar.length", scenarioVar);
  var tailleScenarioVar=scenarioVar.length;
  switch (typeof scenarioVal) {

    case "object":
      console.log("cas objet");
      var key = _.keys(scenarioVal);
        console.log("key ",key);
      var value=_.values(scenarioVal);
        console.log("value ", value);
        console.log("indice ",indice);
      prefix=scenarioVar[indice]    ;  //scenariovar est une seule case
        console.log("nouveau prefix ", prefix);
      key=_.map(key, function(n) { return prefix+"."+ n; });  //main.a.c
      console.log("nouveau key ", key);
      scenarioVar[indice]=key[0];
      console.log("scenarioVar.length", scenarioVar.length);
      console.log("nouveauo scenarioVar ", scenarioVar);
      scenarioVal=value[0];
      console.log("nouveau scenarioVal", scenarioVal);
      listOfAtomicInterfaces(scenarioVal,scenarioVar, prefix,indice);
      return {scenarioVar,scenarioVal};

       break;
    default:
    console.log("cas simple");
    console.log("nouveau scenarioVar", scenarioVar);
      return scenarioVar;<commit_msg>fonction check supporte le cas des interfaces composites<commit_after>var _ = require('lodash');
var iii = require('iii');
var scenarioInvalidException=require('./ScenarioInvalidException.js');

/*
TODO
Fonction qui verifie que un scenario est valide par rapport a une list
*/
function check(modelCode, scenario, prefix) {
  test=true;
  var listOfAtoms=iii.interfaces.listOfAtoms(modelCode,"main");
  res=[];
  for( var i=0;i<listOfAtoms.length;i++){
    if(listOfAtoms[i].direction=='in'){
      res[listOfAtoms[i].name]=listOfAtoms[i].data.name;
    }
  }

  key=_.keys(res);
  values= _.values(res);
  values=_.map(values, function(n) { return n.toLowerCase(); });

 for( var i=0;i<scenario.length;i++){

  scenarioVar =_.keys(scenario[i]);
  console.log("scenarioVar ", scenarioVar);
  scenarioVar=_.map(scenarioVar, function(n) { return prefix+"."+ n; });
   console.log("keys = ",scenarioVar);
   scenarioVal=_.values(scenario[i]);
   console.log("scenarioVal ", scenarioVal);
   console.log("scenarioVar.length ", scenarioVar.length);
   for(var j=0;j<scenarioVal.length;j++){
     console.log("rentrer dans la boucle for");
     listOfAtomicInterfaces(scenarioVal[j],scenarioVar, prefix,j);


  }
  console.log(scenarioVar);
  console.log(scenarioVal);



  var filtered =_.filter(scenarioVar, function(item) {
    return _.contains(key, item);
  });
  var difference=_.difference(scenarioVar, filtered);
  if(difference.length!=0){
    test=false;
 }
}

  if (test==false){
    throw new scenarioInvalidException.ScenarioInvalidException("Scenario Invalid");
  }
}



function listOfAtomicInterfaces(scenarioVal,scenarioVar, prefix,indice) {
  console.log("prefix ", prefix);
  console.log("scenarioVar.length", scenarioVar);
  var tailleScenarioVar=scenarioVar.length;
  switch (typeof scenarioVal) {

    case "object":
      console.log("cas objet");
      var key = _.keys(scenarioVal);
        console.log("key ",key);
      var value=_.values(scenarioVal);
        console.log("value ", value);
        console.log("indice ",indice);
      prefix=scenarioVar[indice]    ;  //scenariovar est une seule case
        console.log("nouveau prefix ", prefix);
      key=_.map(key, function(n) { return prefix+"."+ n; });  //main.a.c
      console.log("nouveau key ", key);
      scenarioVar[indice]=key[0];
      console.log("scenarioVar.length", scenarioVar.length);
      console.log("nouveauo scenarioVar ", scenarioVar);
      scenarioVal=value[0];
      console.log("nouveau scenarioVal", scenarioVal);
      listOfAtomicInterfaces(scenarioVal,scenarioVar, prefix,indice);
      return {scenarioVar,scenarioVal};


       break;
    default:
    console.log("cas simple");
    //console.log("nouveau scenarioVal", scenarioVal);
      return {scenarioVar,scenarioVal};
      break;
  }
}





module.exports.check = check;var _ = require('lodash');
var iii = require('iii');
var scenarioInvalidException=require('./ScenarioInvalidException.js');

/*
TODO
Fonction qui verifie que un scenario est valide par rapport a une list
*/
function check(modelCode, scenario, prefix) {
  test=true;
  var listOfAtoms=iii.interfaces.listOfAtoms(modelCode,"main");
  res=[];
  for( var i=0;i<listOfAtoms.length;i++){
    if(listOfAtoms[i].direction=='in'){
      res[listOfAtoms[i].name]=listOfAtoms[i].data.name;
    }
  }

  key=_.keys(res);
  values= _.values(res);
  values=_.map(values, function(n) { return n.toLowerCase(); });
  var tabValeurs=[];
 for( var i=0;i<scenario.length;i++){

  scenarioVar =_.keys(scenario[i]);
  console.log("scenarioVar ", scenarioVar);
  scenarioVar=_.map(scenarioVar, function(n) { return prefix+"."+ n; });
   console.log("keys = ",scenarioVar);
   scenarioVal=_.values(scenario[i]);
   console.log("scenarioVal ", scenarioVal);
   console.log("scenarioVar.length ", scenarioVar.length);
   for(var j=0;j<scenarioVal.length;j++){
     console.log("rentrer dans la boucle for");
     listOfAtomicInterfaces(scenarioVal[j],scenarioVar, prefix,j,tabValeurs);


  }
  console.log(scenarioVar);
  console.log(tabValeurs);
  res=[];

  for( k=res.length; k<tabValeurs.length;k++){
    console.log(scenarioVar[k]);
    console.log(tabValeurs[k]);
    res[scenarioVar[k]]=tabValeurs[k];
  }
  console.log(res);



  var filtered =_.filter(scenarioVar, function(item) {
    return _.contains(key, item);
  });
  var difference=_.difference(scenarioVar, filtered);
  if(difference.length!=0){
    test=false;
 }


}


  if (test==false){
    throw new scenarioInvalidException.ScenarioInvalidException("Scenario Invalid");
  }

}



function listOfAtomicInterfaces(scenarioVal,scenarioVar, prefix,indice,tabValeurs) {
  console.log("prefix ", prefix);
  console.log("scenarioVar.length", scenarioVar);
  var tailleScenarioVar=scenarioVar.length;
  switch (typeof scenarioVal) {

    case "object":
      console.log("cas objet");
      var key = _.keys(scenarioVal);
        console.log("key ",key);
      var value=_.values(scenarioVal);
        console.log("value ", value);
        console.log("indice ",indice);
      prefix=scenarioVar[indice]    ;  //scenariovar est une seule case
        console.log("nouveau prefix ", prefix);
      key=_.map(key, function(n) { return prefix+"."+ n; });  //main.a.c
      console.log("nouveau key ", key);
      scenarioVar[indice]=key[0];
      console.log("scenarioVar.length", scenarioVar.length);
      console.log("nouveauo scenarioVar ", scenarioVar);
      scenarioVal=value[0];
      console.log("nouveau scenarioVal", scenarioVal);
      listOfAtomicInterfaces(scenarioVal,scenarioVar, prefix,indice,tabValeurs);
      return {scenarioVar,scenarioVal};

       break;
    default:
    console.log("cas simple");
    console.log("nouveau scenarioVal", scenarioVal);
    tabValeurs[indice]=scenarioVal;
      return scenarioVar;
{'fraction_non_alphanumeric': 0.15436005625879043, 'fraction_numerical': 0.002109704641350211, 'mean_word_length': 4.270537368746139, 'pattern_counts': {'":': 3, '<': 13, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '7021541', 'n_tokens_mistral': 2865, 'n_tokens_neox': 2803, 'n_words': 490}