55import ucar .ma2 .Array ;
66import ucar .ma2 .DataType ;
77import ucar .ma2 .Index ;
8- import ucar .nc2 .*;
98import ucar .nc2 .Dimension ;
9+ import ucar .nc2 .NetcdfFile ;
10+ import ucar .nc2 .NetcdfFileWriter ;
11+ import ucar .nc2 .Variable ;
1012
1113import java .awt .*;
1214import java .util .List ;
1315import java .util .Map ;
1416
15- import static org .junit .Assert .assertEquals ;
16- import static org .junit .Assert .assertFalse ;
17- import static org .junit .Assert .assertNull ;
17+ import static org .junit .Assert .*;
1818import static org .mockito .ArgumentMatchers .anyInt ;
1919import static org .mockito .ArgumentMatchers .anyString ;
2020import static org .mockito .Mockito .*;
@@ -119,29 +119,8 @@ public void testSetGetDimensions_3D() {
119119
120120 @ Test
121121 public void testMergeData_2D_left () {
122- final Array right = Array .factory (DataType .INT , new int []{3 , 1 });
123- Index index = right .getIndex ();
124- index .set (0 , 0 );
125- right .setInt (index , 1 );
126- index .set (1 , 0 );
127- right .setInt (index , 2 );
128- index .set (2 , 0 );
129- right .setInt (index , 3 );
130-
131- final Array left = Array .factory (DataType .INT , new int []{3 , 2 });
132- index = left .getIndex ();
133- index .set (0 , 0 );
134- left .setInt (index , 4 );
135- index .set (0 , 1 );
136- left .setInt (index , 5 );
137- index .set (1 , 0 );
138- left .setInt (index , 6 );
139- index .set (1 , 1 );
140- left .setInt (index , 7 );
141- index .set (2 , 0 );
142- left .setInt (index , 8 );
143- index .set (2 , 1 );
144- left .setInt (index , 9 );
122+ final Array right = createArray (3 , 1 , 1 );
123+ final Array left = createArray (3 , 2 , 4 );
145124
146125 final Variable variable = mock (Variable .class );
147126 when (variable .getRank ()).thenReturn (3 );
@@ -153,7 +132,7 @@ public void testMergeData_2D_left() {
153132 assertEquals (3 , shape [0 ]);
154133 assertEquals (3 , shape [1 ]);
155134
156- index = merged .getIndex ();
135+ final Index index = merged .getIndex ();
157136 index .set (0 , 0 );
158137 assertEquals (4 , merged .getInt (index ));
159138 index .set (0 , 1 );
@@ -168,29 +147,8 @@ public void testMergeData_2D_left() {
168147
169148 @ Test
170149 public void testMergeData_2D_right () {
171- final Array left = Array .factory (DataType .INT , new int []{3 , 1 });
172- Index index = left .getIndex ();
173- index .set (0 , 0 );
174- left .setInt (index , 6 );
175- index .set (1 , 0 );
176- left .setInt (index , 7 );
177- index .set (2 , 0 );
178- left .setInt (index , 8 );
179-
180- final Array right = Array .factory (DataType .INT , new int []{3 , 2 });
181- index = right .getIndex ();
182- index .set (0 , 0 );
183- right .setInt (index , 0 );
184- index .set (0 , 1 );
185- right .setInt (index , 1 );
186- index .set (1 , 0 );
187- right .setInt (index , 2 );
188- index .set (1 , 1 );
189- right .setInt (index , 3 );
190- index .set (2 , 0 );
191- right .setInt (index , 4 );
192- index .set (2 , 1 );
193- right .setInt (index , 5 );
150+ final Array left = createArray (3 , 1 , 6 );
151+ final Array right = createArray (3 , 2 , 0 );
194152
195153 final Variable variable = mock (Variable .class );
196154 when (variable .getRank ()).thenReturn (3 );
@@ -202,7 +160,7 @@ public void testMergeData_2D_right() {
202160 assertEquals (3 , shape [0 ]);
203161 assertEquals (3 , shape [1 ]);
204162
205- index = merged .getIndex ();
163+ final Index index = merged .getIndex ();
206164 index .set (0 , 0 );
207165 assertEquals (0 , merged .getInt (index ));
208166 index .set (0 , 1 );
@@ -215,6 +173,108 @@ public void testMergeData_2D_right() {
215173 verifyNoMoreInteractions (variable );
216174 }
217175
176+ @ Test
177+ public void testMergeData_3D_left () {
178+ final Array right = createArray_3D (5 , 3 , 1 , 1 );
179+ final Array left = createArray_3D (5 , 3 , 2 , 100 );
180+
181+ final Variable variable = mock (Variable .class );
182+ when (variable .getRank ()).thenReturn (4 );
183+ when (variable .getDataType ()).thenReturn (DataType .INT );
184+
185+ final Array merged = SatelliteFields .mergeData (left , right , 5 , new Rectangle (-1 , 100 , 3 , 3 ), variable );
186+ final int [] shape = merged .getShape ();
187+ assertEquals (3 , shape .length );
188+ assertEquals (5 , shape [0 ]);
189+ assertEquals (3 , shape [1 ]);
190+ assertEquals (3 , shape [2 ]);
191+
192+ final Index index = merged .getIndex ();
193+ index .set (0 , 0 , 0 );
194+ assertEquals (100 , merged .getInt (index ));
195+ index .set (0 , 0 , 1 );
196+ assertEquals (101 , merged .getInt (index ));
197+ index .set (0 , 0 , 2 );
198+ assertEquals (1 , merged .getInt (index ));
199+
200+ index .set (1 , 0 , 0 );
201+ assertEquals (106 , merged .getInt (index ));
202+ index .set (1 , 0 , 1 );
203+ assertEquals (107 , merged .getInt (index ));
204+ index .set (1 , 0 , 2 );
205+ assertEquals (4 , merged .getInt (index ));
206+
207+ verify (variable , times (1 )).getRank ();
208+ verify (variable , times (1 )).getDataType ();
209+ verifyNoMoreInteractions (variable );
210+ }
211+
212+ @ Test
213+ public void testMergeData_3D_right () {
214+ final Array left = createArray_3D (6 , 3 , 1 , 0 );
215+ final Array right = createArray_3D (6 , 3 , 2 , 100 );
216+
217+ final Variable variable = mock (Variable .class );
218+ when (variable .getRank ()).thenReturn (4 );
219+ when (variable .getDataType ()).thenReturn (DataType .INT );
220+
221+ final Array merged = SatelliteFields .mergeData (left , right , 6 , new Rectangle (1438 , 100 , 3 , 3 ), variable );
222+ final int [] shape = merged .getShape ();
223+ assertEquals (3 , shape .length );
224+ assertEquals (6 , shape [0 ]);
225+ assertEquals (3 , shape [1 ]);
226+ assertEquals (3 , shape [1 ]);
227+
228+ final Index index = merged .getIndex ();
229+ index .set (1 , 0 , 0 );
230+ assertEquals (106 , merged .getInt (index ));
231+ index .set (1 , 0 , 1 );
232+ assertEquals (107 , merged .getInt (index ));
233+ index .set (1 , 0 , 2 );
234+ assertEquals (3 , merged .getInt (index ));
235+
236+ index .set (2 , 0 , 0 );
237+ assertEquals (112 , merged .getInt (index ));
238+ index .set (2 , 0 , 1 );
239+ assertEquals (113 , merged .getInt (index ));
240+ index .set (2 , 0 , 2 );
241+ assertEquals (6 , merged .getInt (index ));
242+
243+ verify (variable , times (1 )).getRank ();
244+ verify (variable , times (1 )).getDataType ();
245+ verifyNoMoreInteractions (variable );
246+ }
247+
248+ private Array createArray (int height , int width , int start ) {
249+ final Array array = Array .factory (DataType .INT , new int []{height , width });
250+ Index index = array .getIndex ();
251+ int value = start ;
252+ for (int y = 0 ; y < height ; y ++) {
253+ for (int x = 0 ; x < width ; x ++) {
254+ index .set (y , x );
255+ array .setInt (index , value );
256+ ++value ;
257+ }
258+ }
259+ return array ;
260+ }
261+
262+ private Array createArray_3D (int depth , int height , int width , int start ) {
263+ final Array array = Array .factory (DataType .INT , new int []{depth , height , width });
264+ Index index = array .getIndex ();
265+ int value = start ;
266+ for (int z = 0 ; z < depth ; z ++) {
267+ for (int y = 0 ; y < height ; y ++) {
268+ for (int x = 0 ; x < width ; x ++) {
269+ index .set (z , y , x );
270+ array .setInt (index , value );
271+ ++value ;
272+ }
273+ }
274+ }
275+ return array ;
276+ }
277+
218278 private SatelliteFieldsConfiguration createConfig () {
219279 final SatelliteFieldsConfiguration config = new SatelliteFieldsConfiguration ();
220280 config .set_x_dim (12 );
0 commit comments