* Javasci supports sparse datatypes retrieval (Javasci is able to retrieve
[scilab.git] / scilab / modules / javasci / tests / java / org / scilab / tests / modules / javasci / testReadWrite.java
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2010 - DIGITEO - Sylvestre LEDRU
4  *
5  * This file must be used under the terms of the CeCILL.
6  * This source file is licensed as described in the file COPYING, which
7  * you should have received as part of this distribution.  The terms
8  * are also available at
9  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10  *
11  */
12 package org.scilab.tests.modules.javasci;
13
14 import org.testng.annotations.*;
15
16 import java.util.Arrays;
17 import java.util.Map;
18
19 import org.scilab.modules.javasci.Scilab;
20 import org.scilab.modules.javasci.JavasciException;
21 import org.scilab.modules.javasci.JavasciException.InitializationException;
22 import org.scilab.modules.javasci.JavasciException.UnsupportedTypeException;
23 import org.scilab.modules.javasci.JavasciException.UndefinedVariableException;
24 import org.scilab.modules.types.ScilabType;
25 import org.scilab.modules.types.ScilabDouble;
26 import org.scilab.modules.types.ScilabBoolean;
27 import org.scilab.modules.types.ScilabMList;
28 import org.scilab.modules.types.ScilabString;
29 import org.scilab.modules.types.ScilabSparse;
30 import org.scilab.modules.types.ScilabTypeEnum;
31
32 public class testReadWrite {
33     private Scilab sci;
34
35     /* 
36      * This method will be called for each test.
37      * with @AfterMethod, this ensures that all the time the engine is closed
38      * especially in case of error.
39      * Otherwise, the engine might be still running and all subsequent tests
40      * would fail.
41      */ 
42     @BeforeMethod
43     public void open() throws NullPointerException, JavasciException {
44         sci = new Scilab();
45         assert sci.open() == true;
46     }
47
48     @Test(sequential = true) 
49     public void putAndGetDoubleTest() throws NullPointerException, JavasciException {
50         double [][]a={{21.2, 22.0, 42.0, 39.0},{23.2, 24.0, 44.0, 40.0}};
51         ScilabDouble aOriginal = new ScilabDouble(a);
52         sci.put("a",aOriginal);
53         assert sci.exec("somme = sum(a);") == true;
54
55         ScilabDouble aFromScilab = (ScilabDouble)sci.get("a");
56
57         assert aFromScilab.equals(aOriginal);
58     }
59
60     @Test(sequential = true) 
61     public void putAndGetComplexDoubleTest() throws NullPointerException, JavasciException {
62         double [][]a={{21.2, 22.0, 42.0, 39.0},{23.2, 24.0, 44.0, 40.0}};
63         double [][]aImg={{212.2, 221.0, 423.0, 393.0},{234.2, 244.0, 441.0, 407.0}};
64
65         ScilabDouble aOriginal = new ScilabDouble(a, aImg);
66         sci.put("a",aOriginal);
67
68         ScilabDouble aFromScilab = (ScilabDouble)sci.get("a");
69
70         assert aFromScilab.equals(aOriginal);
71     }
72
73
74
75     @Test(sequential = true) 
76     public void putAndGetBooleanTest() throws NullPointerException, JavasciException {
77         boolean [][]a={{true, true, false, false},{true, false, true, false}};
78         ScilabBoolean aOriginal = new ScilabBoolean(a);
79         sci.put("a",aOriginal);
80
81         ScilabBoolean aFromScilab = (ScilabBoolean)sci.get("a");
82
83         assert aFromScilab.equals(aOriginal);
84     }
85
86     @Test(sequential = true) 
87     public void putAndGetStringTest() throws NullPointerException, JavasciException {
88         String [][]a={{"String1", "String2", "String3", "String4"},
89                       {"String5", "String6", "My String 7", "String8"}};
90         ScilabString aOriginal = new ScilabString(a);
91         sci.put("a",aOriginal);
92
93         assert sci.exec("checksize = and(size(a)==[2,4]);") == true;
94
95         ScilabBoolean checksize = (ScilabBoolean)sci.get("checksize");
96         assert checksize.getData()[0][0] == true;
97
98         ScilabString aFromScilab = (ScilabString)sci.get("a");
99
100         assert aFromScilab.equals(aOriginal);
101     }
102
103 //    @Test(sequential = true, expectedExceptions = UnsupportedTypeException.class)
104     @Test(sequential = true)
105     public void ReadSparseTypeTest() throws NullPointerException, JavasciException {
106         assert sci.exec("W=sparse([1,2;4,5;3,10],[1,2,3]);") == true;
107         assert sci.getVariableType("W") == ScilabTypeEnum.sci_sparse;
108         ScilabSparse aFromScilab = (ScilabSparse)sci.get("W");
109         assert aFromScilab.toString().equals("sparse([1, 2 ; 3, 10 ; 4, 5], [1.0 ; 3.0 ; 2.0], [4, 10])");
110         assert sci.exec("AZE= "+aFromScilab.toString());
111         ScilabSparse aFromScilab2 = (ScilabSparse)sci.get("AZE");
112
113                 assert Arrays.deepEquals(aFromScilab.getFullRealPart(), aFromScilab2.getFullRealPart()) == true;
114
115         
116     }
117
118     @Test(sequential = true)
119     public void ReadStructTest() throws NullPointerException, JavasciException {
120         assert sci.exec("myDate=struct('day',25,'month' ,'DEC','year',2006)") == true;
121         assert sci.getVariableType("myDate") == ScilabTypeEnum.sci_mlist;
122
123         ScilabMList myDate = (ScilabMList)sci.get("myDate");
124         assert myDate.toString().equals("mlist([\"st\", \"dims\", \"day\", \"month\", \"year\"], int32([1, 1]), [25.0], [\"DEC\"], [2006.0])");
125         assert myDate.getHeight() == 1;
126         assert myDate.getWidth() == 5;
127         assert myDate.getVarName().equals("myDate");
128         assert myDate.getMListType().equals("st");
129         Map<String, ScilabType> listFields = myDate.getMListFields();
130         ScilabString month = (ScilabString)listFields.get("month");
131         assert month.getData()[0][0].equals("DEC");
132         ScilabDouble year = (ScilabDouble)listFields.get("year");
133         assert year.getRealPart()[0][0] == 2006.0;
134         ScilabDouble day = (ScilabDouble)listFields.get("day");
135         assert day.getRealPart()[0][0] == 25.0;
136
137     }
138
139     @Test(sequential = true, expectedExceptions = UndefinedVariableException.class)
140     public void UndefinedVariableExceptionTest() throws NullPointerException, JavasciException {
141         sci.get("undefinedVar"); /* Will launch an UnsupportedTypeException exception */
142     }
143
144     /**
145      * See #open()
146      */
147     @AfterMethod
148     public void close() {
149         sci.close();
150         
151     }
152 }