Following the commit https://codereview.scilab.org/#/c/17925/, hypermat.tst should...
[scilab.git] / scilab / modules / data_structures / tests / unit_tests / hypermat.tst
1 // =============================================================================
2 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 // Copyright (C) ????-2008 - INRIA
4 //
5 //  This file is distributed under the same license as the Scilab package.
6 // =============================================================================
7 // <-- CLI SHELL MODE -->
8
9 warning("off");
10
11 //extraction
12 Data=list(1:12,(1:12)+rand(1,12)*%i,int32(1:12),(1:12)+%s,rand(1,12)>0.5,string(1:12));
13
14 test=1;
15 msg="Problem with extraction for hypermatrix of type %s in test %d.%d \n";
16 for k=1:size(Data)
17     data=Data(k);td=typeof(data);
18     h=hypermat([2 3 2],data);
19     if h(2,3,2)<>data(12) then mprintf(msg,td,test,k); pause,end
20     if or(h(2,:,2)<>data([8 10 12])) then mprintf(msg,td,test,k); pause,end
21     if or(h($,:,2)<>data([8 10 12])) then mprintf(msg,td,test,k); pause,end
22     if or(h(:,3,2)<>matrix(data([11 12]),-1,1)) then mprintf(msg,test,k); pause,end
23     if or(h(1:2)<>matrix(data([1 2]),-1,1)) then mprintf(msg,td,test,k); pause,end
24     if or(h(1:3)<>matrix(data([1 2 3]),-1,1)) then mprintf(msg,td,test,k); pause,end
25     if or(h(1,2:3)<>data([3 5])) then mprintf(msg,td,test,k); pause,end
26     if or(h(1,4:5)<>data([7 9])) then mprintf(msg,td,test,k); pause,end
27     msgToPrint=msprintf("    test%d.%d completed\n",test,k);write(%io(2),msgToPrint);
28 end
29 //insertion of []
30 test=2;
31 for k=1:size(Data)
32     data=Data(k);td=typeof(data);
33     h=hypermat([2 3 2],data);h1=h;
34     h(2,:,:)=[];
35     if or(size(h)<>[1 3 2]) then mprintf(msg,td,test,k); pause,end
36     if or(h<>h1(1,:,:))  then mprintf(msg,td,test,k); pause,end
37
38     h=hypermat([2 3 2],data);h1=h;
39     h(:,1:2,:)=[];
40     if or(size(h)<>[2 1 2]) then mprintf(msg,td,test,k); pause,end
41     if or(h<>h1(:,3,:))  then mprintf(msg,td,test,k); pause,end
42
43     h=hypermat([2 3 2],data);
44     h(:,:,:)=[];
45     if h<>[] then mprintf(msg,td,test,k); pause,end
46     msgToPrint=msprintf("    test%d.%d completed\n",test,k);write(%io(2),msgToPrint);
47
48 end
49
50
51 msg="Problem with insertion for hypermatrix of type %s in test %d.%d \n";
52 //insertion of a single element
53 test=3;
54 for k=1:size(Data)
55     data=Data(k);td=typeof(data);
56     I=data(1);
57     h=hypermat([2 3 2],data);
58     h(2,3,2)=I;
59     if or(size(h)<>[2 3 2]) then mprintf(msg,td,test,k); pause,end
60     if h(2,3,2)<>I then mprintf(msg,td,test,k); pause,end
61
62     h=hypermat([2 3 2],data);
63     h(2,3)=I;
64     if or(size(h)<>[2 3 2]) then mprintf(msg,td,test,k); pause,end
65     if h(2,3,1)<>I then mprintf(msg,td,test,k); pause,end
66
67     h=hypermat([2 3 2],data);
68     h(2)=I;
69     if or(size(h)<>[2 3 2]) then mprintf(msg,td,test,k); pause,end
70     if h(2,1,1)<>I then mprintf(msg,td,test,k); pause,end
71
72     h=hypermat([2 3 2],data);
73     h(3)=I;
74     if or(size(h)<>[2 3 2]) then mprintf(msg,td,test,k); pause,end
75     if h(1,2,1)<>I then mprintf(msg,td,test,k); pause,end
76
77     h=hypermat([2 3 2],data);
78     h(3)=I;
79     if or(size(h)<>[2 3 2]) then mprintf(msg,td,test,k); pause,end
80     if h(1,2,1)<>I then mprintf(msg,td,test,k); pause,end
81
82     h=hypermat([2 3 2],data);
83     h([3,7])=I;
84     if or(size(h)<>[2 3 2]) then mprintf(msg,td,test,k); pause,end
85     if h(1,2,1)<>I|h(1,1,2)<>I then mprintf(msg,td,test,k); pause,end
86
87     msrExpected = msprintf(_("Submatrix incorrectly defined.\n"));
88     assert_checkerror("h=hypermat([2 3 2],data);h(13:15)=I", msrExpected);
89
90     msgToPrint=msprintf("    test%d.%d completed\n",test,k);write(%io(2),msgToPrint);
91
92 end
93
94
95
96
97 //extension of a 2D matrix to a 3D one
98 test=4;
99 for k=1:size(Data)
100     data=matrix(Data(k),3,-1);td=typeof(data);
101     I=data(1,1);
102     h=data;
103     h(3,4,2)=I;
104     if or(size(h)<>[3 4 2]) then mprintf(msg,td,test,k); pause,end
105     if h(:,:,1)<>data then mprintf(msg,td,test,k); pause,end
106     d=[];d(3,4)=I;
107     if h(:,:,2)<>d then mprintf(msg,td,test,k); pause,end
108     msgToPrint=msprintf("    test%d.%d completed\n",test,k);write(%io(2),msgToPrint);
109 end
110
111
112