View Javadoc
1   /*
2    * #%L
3    * IsisFish
4    * 
5    * $Id: SimulationPreScriptTest.java 4156 2014-12-09 11:27:18Z echatellier $
6    * $HeadURL: https://svn.codelutin.com/isis-fish/tags/isis-fish-4.4.0.2/src/test/java/fr/ifremer/isisfish/simulator/SimulationPreScriptTest.java $
7    * %%
8    * Copyright (C) 2009 - 2011 Ifremer, Code Lutin, Chatellier Eric
9    * %%
10   * This program is free software: you can redistribute it and/or modify
11   * it under the terms of the GNU General Public License as
12   * published by the Free Software Foundation, either version 3 of the 
13   * License, or (at your option) any later version.
14   * 
15   * This program is distributed in the hope that it will be useful,
16   * but WITHOUT ANY WARRANTY; without even the implied warranty of
17   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18   * GNU General Public License for more details.
19   * 
20   * You should have received a copy of the GNU General Public 
21   * License along with this program.  If not, see
22   * <http://www.gnu.org/licenses/gpl-3.0.html>.
23   * #L%
24   */
25  
26  package fr.ifremer.isisfish.simulator;
27  
28  import java.lang.reflect.InvocationTargetException;
29  import java.util.Collections;
30  import java.util.List;
31  
32  import org.apache.commons.beanutils.BeanUtils;
33  import org.apache.commons.beanutils.ConvertUtilsBean;
34  import org.junit.Assert;
35  import org.junit.Test;
36  import org.nuiton.math.matrix.MatrixFactory;
37  import org.nuiton.math.matrix.MatrixND;
38  import org.nuiton.math.matrix.MatrixNDImpl;
39  
40  import fr.ifremer.isisfish.AbstractIsisFishTest;
41  import fr.ifremer.isisfish.entities.Population;
42  import fr.ifremer.isisfish.entities.PopulationImpl;
43  import fr.ifremer.isisfish.util.ConverterUtil;
44  
45  /**
46   * Test for simulation prescript.
47   * 
48   * @author chatellier
49   * @version $Revision: 4156 $
50   * 
51   * Last update : $Date: 2014-12-09 12:27:18 +0100 (Tue, 09 Dec 2014) $
52   * By : $Author: echatellier $
53   */
54  public class SimulationPreScriptTest extends AbstractIsisFishTest {
55  
56      /**
57       * Test que les chaine represantant des matrices sont correctement
58       * transformée en MatrixND.
59       * 
60       * @throws IllegalAccessException
61       * @throws InvocationTargetException
62       */
63      @Test
64      public void testMatrixFactorBeanUtils() throws IllegalAccessException, InvocationTargetException {
65          String factorAsString = "[isisfish.population.capturability,[10, 3],[\"isisfish.population.group\", \"isisfish.population.season\"],[[org.nuiton.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.PopulationGroup#1223471369174#0.28237914052272917), org.nuiton.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.PopulationGroup#1223471369077#0.6322222161721446), org.nuiton.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.PopulationGroup#1223471369117#0.9144815378932778), org.nuiton.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.PopulationGroup#1223471369145#0.40303037362612626), org.nuiton.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.PopulationGroup#1223471369157#0.7385235788350787), org.nuiton.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.PopulationGroup#1223471369129#0.7322508787399089), org.nuiton.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.PopulationGroup#1223471369123#0.9794507456491978), org.nuiton.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.PopulationGroup#1223471369109#0.6142040515900707), org.nuiton.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.PopulationGroup#1223471369163#0.4236915489033358), org.nuiton.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.PopulationGroup#1223471369151#0.9128085136422524)], [org.nuiton.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.PopulationSeasonInfo#1223471369187#0.14365248282751242), java.lang.String(org.nuiton.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.PopulationSeasonInfo#1223471369341#0.8526969683760768)), java.lang.String(org.nuiton.topia.persistence.TopiaEntity(fr.ifremer.isisfish.entities.PopulationSeasonInfo#1223471369569#0.18989201268161482))]],[[0.0, 0.0, 0.0], [2.2001803893501406E-4, 1.7501434915285209E-4, 1.0300844550139294E-4], [6.600541168050422E-4, 0.0023401918686724223, 0.0011700959343362112], [4.040331260442985E-4, 0.002400196788381971, 0.0014301172530775913], [2.2401836691565065E-4, 0.002060168910027859, 7.160587085339548E-4], [9.530781413866745E-5, 0.0017101402117221545, 4.380359138797098E-4], [6.710550187517929E-5, 0.0011800967542878026, 2.830232046300408E-4], [3.530289442911816E-5, 7.840642842047773E-4, 1.6901385718189713E-4], [2.030166450173084E-5, 6.250512469744717E-4, 1.1600951143846195E-4], [1.0200836350623379E-5, 4.0103288005882107E-4, 8.360685479530534E-5]]]";
66          Population p = new PopulationImpl();
67          p.setCapturability(MatrixFactory.getInstance().create("ee" , new List[]{ Collections.singletonList("eee")}));
68          
69          ConvertUtilsBean beanUtils = ConverterUtil.getConverter(null);
70          Object value = beanUtils.convert(factorAsString, MatrixNDImpl.class);
71          BeanUtils.setProperty(p, "capturability", value);
72          
73          Assert.assertNotNull(value);
74          Assert.assertTrue(value instanceof MatrixND);
75      }
76  }