d688d44a06420f725c29eeb34c20cdded5850ebf
[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 //extraction
10 Data=list(1:12,(1:12)+rand(1,12)*%i,int32(1:12),(1:12)+%s,rand(1,12)>0.5,string(1:12));
11
12 test=1;
13 msg="Problem with extraction for hypermatrix of type %s in test %d.%d \n";
14 for k=1:size(Data)
15     data=Data(k);td=typeof(data);
16     h=hypermat([2 3 2],data);
17     if h(2,3,2)<>data(12) then mprintf(msg,td,test,k); pause,end
18     if or(h(2,:,2)<>data([8 10 12])) then mprintf(msg,td,test,k); pause,end
19     if or(h($,:,2)<>data([8 10 12])) then mprintf(msg,td,test,k); pause,end
20     if or(h(:,3,2)<>matrix(data([11 12]),-1,1)) then mprintf(msg,test,k); pause,end
21     if or(h(1:2)<>matrix(data([1 2]),-1,1)) then mprintf(msg,td,test,k); pause,end
22     if or(h(1:3)<>matrix(data([1 2 3]),-1,1)) then mprintf(msg,td,test,k); pause,end
23     if or(h(1,2:3)<>data([3 5])) then mprintf(msg,td,test,k); pause,end
24     if or(h(1,4:5)<>data([7 9])) then mprintf(msg,td,test,k); pause,end
25     msgToPrint=msprintf("    test%d.%d completed\n",test,k);write(%io(2),msgToPrint);
26 end
27 //insertion of []
28 test=2;
29 for k=1:size(Data)
30     data=Data(k);td=typeof(data);
31     h=hypermat([2 3 2],data);h1=h;
32     h(2,:,:)=[];
33     if or(size(h)<>[1 3 2]) then mprintf(msg,td,test,k); pause,end
34     if or(h<>h1(1,:,:))  then mprintf(msg,td,test,k); pause,end
35
36     h=hypermat([2 3 2],data);h1=h;
37     h(:,1:2,:)=[];
38     if or(size(h)<>[2 1 2]) then mprintf(msg,td,test,k); pause,end
39     if or(h<>h1(:,3,:))  then mprintf(msg,td,test,k); pause,end
40
41     h=hypermat([2 3 2],data);
42     h(:,:,:)=[];
43     if h<>[] then mprintf(msg,td,test,k); pause,end
44     msgToPrint=msprintf("    test%d.%d completed\n",test,k);write(%io(2),msgToPrint);
45
46 end
47
48
49 msg="Problem with insertion for hypermatrix of type %s in test %d.%d \n";
50 //insertion of a single element
51 test=3;
52 for k=1:size(Data)
53     data=Data(k);td=typeof(data);
54     I=data(1);
55     h=hypermat([2 3 2],data);
56     h(2,3,2)=I;
57     if or(size(h)<>[2 3 2]) then mprintf(msg,td,test,k); pause,end
58     if h(2,3,2)<>I then mprintf(msg,td,test,k); pause,end
59
60     h=hypermat([2 3 2],data);
61     h(2,3)=I;
62     if or(size(h)<>[2 3 2]) then mprintf(msg,td,test,k); pause,end
63     if h(2,3,1)<>I then mprintf(msg,td,test,k); pause,end
64
65     h=hypermat([2 3 2],data);
66     h(2)=I;
67     if or(size(h)<>[2 3 2]) then mprintf(msg,td,test,k); pause,end
68     if h(2,1,1)<>I then mprintf(msg,td,test,k); pause,end
69
70     h=hypermat([2 3 2],data);
71     h(3)=I;
72     if or(size(h)<>[2 3 2]) then mprintf(msg,td,test,k); pause,end
73     if h(1,2,1)<>I then mprintf(msg,td,test,k); pause,end
74
75     h=hypermat([2 3 2],data);
76     h(3)=I;
77     if or(size(h)<>[2 3 2]) then mprintf(msg,td,test,k); pause,end
78     if h(1,2,1)<>I then mprintf(msg,td,test,k); pause,end
79
80     h=hypermat([2 3 2],data);
81     h([3,7])=I;
82     if or(size(h)<>[2 3 2]) then mprintf(msg,td,test,k); pause,end
83     if h(1,2,1)<>I|h(1,1,2)<>I then mprintf(msg,td,test,k); pause,end
84
85     msrExpected = msprintf(_("Submatrix incorrectly defined.\n"));
86     assert_checkerror("h=hypermat([2 3 2],data);h(13:15)=I", msrExpected);
87
88     msgToPrint=msprintf("    test%d.%d completed\n",test,k);write(%io(2),msgToPrint);
89
90 end
91
92
93
94
95 //extension of a 2D matrix to a 3D one
96 test=4;
97 for k=1:size(Data)
98     data=matrix(Data(k),3,-1);td=typeof(data);
99     I=data(1,1);
100     h=data;
101     h(3,4,2)=I;
102     if or(size(h)<>[3 4 2]) then mprintf(msg,td,test,k); pause,end
103     if h(:,:,1)<>data then mprintf(msg,td,test,k); pause,end
104     d=[];d(3,4)=I;
105     if h(:,:,2)<>d then mprintf(msg,td,test,k); pause,end
106     msgToPrint=msprintf("    test%d.%d completed\n",test,k);write(%io(2),msgToPrint);
107 end
108
109
110