1919
2020package org .apache .datasketches .memory .internal ;
2121
22- import static org .apache .datasketches .memory .internal .NonNativeWritableMemoryImplTest .doubleReverseBytes ;
23- import static org .apache .datasketches .memory .internal .NonNativeWritableMemoryImplTest .floatReverseBytes ;
24- import static org .apache .datasketches .memory .internal .ResourceImpl .NATIVE_BYTE_ORDER ;
25- import static org .apache .datasketches .memory .internal .ResourceImpl .NON_NATIVE_BYTE_ORDER ;
22+ import static org .apache .datasketches .memory .internal .UtilForTest .CB ;
23+ import static org .apache .datasketches .memory .internal .UtilForTest .DB ;
24+ import static org .apache .datasketches .memory .internal .UtilForTest .FB ;
25+ import static org .apache .datasketches .memory .internal .UtilForTest .IB ;
26+ import static org .apache .datasketches .memory .internal .UtilForTest .LB ;
27+ import static org .apache .datasketches .memory .internal .UtilForTest .NBO ;
28+ import static org .apache .datasketches .memory .internal .UtilForTest .NNBO ;
29+ import static org .apache .datasketches .memory .internal .UtilForTest .SB ;
2630import static org .testng .Assert .assertEquals ;
2731import static org .testng .Assert .assertTrue ;
2832
29- import java .nio .ByteOrder ;
30-
3133import org .apache .datasketches .memory .Buffer ;
3234import org .apache .datasketches .memory .Memory ;
3335import org .apache .datasketches .memory .WritableBuffer ;
@@ -43,26 +45,34 @@ public class NonNativeWritableBufferImplTest {
4345
4446 @ Test
4547 public void checkPutGetNonNativeCharacters () {
46- char [] srcArray = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 };
48+ char [] srcArray = { 'a' , 'b' , 'c' , 'd' , 'e' , 'f' , 'g' , 'h' };
4749 final int len = srcArray .length ;
4850 final int half = len / 2 ;
49- WritableBuffer wbuf = WritableMemory .allocate (len * Character .BYTES , NON_NATIVE_BYTE_ORDER ).asWritableBuffer ();
50- wbuf .putCharArray (srcArray , 0 , half );
51- wbuf .putCharArray (srcArray , half , half );
51+ final int qtr = len / 4 ;
52+ WritableBuffer wbuf = WritableMemory .allocate (len * CB , NNBO ).asWritableBuffer ();
53+ //put
54+ wbuf .putCharArray (srcArray , 0 , qtr ); //put*Array(src[], srcOff, len)
55+ wbuf .putChar (qtr * CB , srcArray [qtr ]); //put*(add, value)
56+ wbuf .putChar ((qtr + 1 ) * CB , srcArray [qtr + 1 ]); //put*(add, value)
57+ wbuf .setPosition (half * CB );
58+ for (int i = half ; i < len ; i ++) { wbuf .putChar (srcArray [i ]); } //put*(value)
5259 wbuf .resetPosition ();
5360 //confirm
54- WritableBuffer wbuf2 = WritableMemory .allocate (len * Character . BYTES , NATIVE_BYTE_ORDER ).asWritableBuffer ();
55- for (int i = 0 ; i < len * Character . BYTES ; i ++) { wbuf2 .putByte (wbuf .getByte ()); }
61+ WritableBuffer wbuf2 = WritableMemory .allocate (len * CB , NBO ).asWritableBuffer ();
62+ for (int i = 0 ; i < len * CB ; i ++) { wbuf2 .putByte (wbuf .getByte ()); }
5663 wbuf .resetPosition ();
5764 wbuf2 .resetPosition ();
5865 for (int i = 0 ; i < len ; i ++) {
5966 assertTrue (srcArray [i ] == Character .reverseBytes (wbuf2 .getChar ()));
6067 }
61- wbuf2 .resetPosition ();
6268 //get
69+ wbuf2 .resetPosition ();
6370 char [] dstArray = new char [len ];
64- wbuf .getCharArray (dstArray , 0 , half );
65- wbuf .getCharArray (dstArray , half , half );
71+ wbuf .getCharArray (dstArray , 0 , qtr ); //get*Array(dst[], dstOff, len)
72+ dstArray [qtr ] = wbuf .getChar (qtr * CB ); //get*(add)
73+ dstArray [qtr + 1 ] = wbuf .getChar ((qtr + 1 ) * CB ); //get*(add)
74+ wbuf .setPosition (half * CB );
75+ for (int i = half ; i < len ; i ++) { dstArray [i ] = wbuf .getChar (); } //get*()
6676 assertEquals (srcArray , dstArray );
6777 }
6878
@@ -71,23 +81,31 @@ public void checkPutGetNonNativeDoubles() {
7181 double [] srcArray = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 };
7282 final int len = srcArray .length ;
7383 final int half = len / 2 ;
74- WritableBuffer wbuf = WritableMemory .allocate (len * Double .BYTES , NON_NATIVE_BYTE_ORDER ).asWritableBuffer ();
75- wbuf .putDoubleArray (srcArray , 0 , half );
76- wbuf .putDoubleArray (srcArray , half , half );
84+ final int qtr = len / 4 ;
85+ WritableBuffer wbuf = WritableMemory .allocate (len * DB , NNBO ).asWritableBuffer ();
86+ //put
87+ wbuf .putDoubleArray (srcArray , 0 , qtr ); //put*Array(src[], srcOff, len)
88+ wbuf .putDouble (qtr * DB , srcArray [qtr ]); //put*(add, value)
89+ wbuf .putDouble ((qtr + 1 ) * DB , srcArray [qtr + 1 ]); //put*(add, value)
90+ wbuf .setPosition (half * DB );
91+ for (int i = half ; i < len ; i ++) { wbuf .putDouble (srcArray [i ]); } //put*(value)
7792 wbuf .resetPosition ();
7893 //confirm
79- WritableBuffer wbuf2 = WritableMemory .allocate (len * Double . BYTES , NATIVE_BYTE_ORDER ).asWritableBuffer ();
80- for (int i = 0 ; i < len * Double . BYTES ; i ++) { wbuf2 .putByte (wbuf .getByte ()); }
94+ WritableBuffer wbuf2 = WritableMemory .allocate (len * DB , NBO ).asWritableBuffer ();
95+ for (int i = 0 ; i < len * DB ; i ++) { wbuf2 .putByte (wbuf .getByte ()); }
8196 wbuf .resetPosition ();
8297 wbuf2 .resetPosition ();
8398 for (int i = 0 ; i < len ; i ++) {
84- assertTrue (srcArray [i ] == doubleReverseBytes (wbuf2 .getDouble ()));
99+ assertTrue (srcArray [i ] == UtilForTest . doubleReverseBytes (wbuf2 .getDouble ()));
85100 }
86- wbuf2 .resetPosition ();
87101 //get
102+ wbuf2 .resetPosition ();
88103 double [] dstArray = new double [len ];
89- wbuf .getDoubleArray (dstArray , 0 , half );
90- wbuf .getDoubleArray (dstArray , half , half );
104+ wbuf .getDoubleArray (dstArray , 0 , qtr ); //get*Array(dst[], dstOff, len)
105+ dstArray [qtr ] = wbuf .getDouble (qtr * DB ); //get*(add)
106+ dstArray [qtr + 1 ] = wbuf .getDouble ((qtr + 1 ) * DB ); //get*(add)
107+ wbuf .setPosition (half * DB );
108+ for (int i = half ; i < len ; i ++) { dstArray [i ] = wbuf .getDouble (); } //get*()
91109 assertEquals (srcArray , dstArray );
92110 }
93111
@@ -96,23 +114,31 @@ public void checkPutGetNonNativeFloats() {
96114 float [] srcArray = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 };
97115 final int len = srcArray .length ;
98116 final int half = len / 2 ;
99- WritableBuffer wbuf = WritableMemory .allocate (len * Float .BYTES , NON_NATIVE_BYTE_ORDER ).asWritableBuffer ();
100- wbuf .putFloatArray (srcArray , 0 , half );
101- wbuf .putFloatArray (srcArray , half , half );
117+ final int qtr = len / 4 ;
118+ WritableBuffer wbuf = WritableMemory .allocate (len * FB , NNBO ).asWritableBuffer ();
119+ //put
120+ wbuf .putFloatArray (srcArray , 0 , qtr ); //put*Array(src[], srcOff, len)
121+ wbuf .putFloat (qtr * FB , srcArray [qtr ]); //put*(add, value)
122+ wbuf .putFloat ((qtr + 1 ) * FB , srcArray [qtr + 1 ]); //put*(add, value)
123+ wbuf .setPosition (half * FB );
124+ for (int i = half ; i < len ; i ++) { wbuf .putFloat (srcArray [i ]); } //put*(value)
102125 wbuf .resetPosition ();
103126 //confirm
104- WritableBuffer wbuf2 = WritableMemory .allocate (len * Float . BYTES , NATIVE_BYTE_ORDER ).asWritableBuffer ();
105- for (int i = 0 ; i < len * Float . BYTES ; i ++) { wbuf2 .putByte (wbuf .getByte ()); }
127+ WritableBuffer wbuf2 = WritableMemory .allocate (len * FB , NBO ).asWritableBuffer ();
128+ for (int i = 0 ; i < len * FB ; i ++) { wbuf2 .putByte (wbuf .getByte ()); }
106129 wbuf .resetPosition ();
107130 wbuf2 .resetPosition ();
108131 for (int i = 0 ; i < len ; i ++) {
109- assertTrue (srcArray [i ] == floatReverseBytes (wbuf2 .getFloat ()));
132+ assertTrue (srcArray [i ] == UtilForTest . floatReverseBytes (wbuf2 .getFloat ()));
110133 }
111- wbuf2 .resetPosition ();
112134 //get
135+ wbuf2 .resetPosition ();
113136 float [] dstArray = new float [len ];
114- wbuf .getFloatArray (dstArray , 0 , half );
115- wbuf .getFloatArray (dstArray , half , half );
137+ wbuf .getFloatArray (dstArray , 0 , qtr ); //get*Array(dst[], dstOff, len)
138+ dstArray [qtr ] = wbuf .getFloat (qtr * FB ); //get*(add)
139+ dstArray [qtr + 1 ] = wbuf .getFloat ((qtr + 1 ) * FB ); //get*(add)
140+ wbuf .setPosition (half * FB );
141+ for (int i = half ; i < len ; i ++) { dstArray [i ] = wbuf .getFloat (); } //get*()
116142 assertEquals (srcArray , dstArray );
117143 }
118144
@@ -121,23 +147,31 @@ public void checkPutGetNonNativeInts() {
121147 int [] srcArray = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 };
122148 final int len = srcArray .length ;
123149 final int half = len / 2 ;
124- WritableBuffer wbuf = WritableMemory .allocate (len * Integer .BYTES , NON_NATIVE_BYTE_ORDER ).asWritableBuffer ();
125- wbuf .putIntArray (srcArray , 0 , half );
126- wbuf .putIntArray (srcArray , half , half );
150+ final int qtr = len / 4 ;
151+ WritableBuffer wbuf = WritableMemory .allocate (len * IB , NNBO ).asWritableBuffer ();
152+ //put
153+ wbuf .putIntArray (srcArray , 0 , qtr ); //put*Array(src[], srcOff, len)
154+ wbuf .putInt (qtr * IB , srcArray [qtr ]); //put*(add, value)
155+ wbuf .putInt ((qtr + 1 ) * IB , srcArray [qtr + 1 ]); //put*(add, value)
156+ wbuf .setPosition (half * IB );
157+ for (int i = half ; i < len ; i ++) { wbuf .putInt (srcArray [i ]); } //put*(value)
127158 wbuf .resetPosition ();
128159 //confirm
129- WritableBuffer wbuf2 = WritableMemory .allocate (len * Integer . BYTES , NATIVE_BYTE_ORDER ).asWritableBuffer ();
130- for (int i = 0 ; i < len * Integer . BYTES ; i ++) { wbuf2 .putByte (wbuf .getByte ()); }
160+ WritableBuffer wbuf2 = WritableMemory .allocate (len * IB , NBO ).asWritableBuffer ();
161+ for (int i = 0 ; i < len * IB ; i ++) { wbuf2 .putByte (wbuf .getByte ()); }
131162 wbuf .resetPosition ();
132163 wbuf2 .resetPosition ();
133164 for (int i = 0 ; i < len ; i ++) {
134165 assertTrue (srcArray [i ] == Integer .reverseBytes (wbuf2 .getInt ()));
135166 }
136- wbuf2 .resetPosition ();
137167 //get
168+ wbuf2 .resetPosition ();
138169 int [] dstArray = new int [len ];
139- wbuf .getIntArray (dstArray , 0 , half );
140- wbuf .getIntArray (dstArray , half , half );
170+ wbuf .getIntArray (dstArray , 0 , qtr ); //get*Array(dst[], dstOff, len)
171+ dstArray [qtr ] = wbuf .getInt (qtr * IB ); //get*(add)
172+ dstArray [qtr + 1 ] = wbuf .getInt ((qtr + 1 ) * IB ); //get*(add)
173+ wbuf .setPosition (half * IB );
174+ for (int i = half ; i < len ; i ++) { dstArray [i ] = wbuf .getInt (); } //get*()
141175 assertEquals (srcArray , dstArray );
142176 }
143177
@@ -146,23 +180,31 @@ public void checkPutGetNonNativeLongs() {
146180 long [] srcArray = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 };
147181 final int len = srcArray .length ;
148182 final int half = len / 2 ;
149- WritableBuffer wbuf = WritableMemory .allocate (len * Long .BYTES , NON_NATIVE_BYTE_ORDER ).asWritableBuffer ();
150- wbuf .putLongArray (srcArray , 0 , half );
151- wbuf .putLongArray (srcArray , half , half );
183+ final int qtr = len / 4 ;
184+ WritableBuffer wbuf = WritableMemory .allocate (len * LB , NNBO ).asWritableBuffer ();
185+ //put
186+ wbuf .putLongArray (srcArray , 0 , qtr ); //put*Array(src[], srcOff, len)
187+ wbuf .putLong (qtr * LB , srcArray [qtr ]); //put*(add, value)
188+ wbuf .putLong ((qtr + 1 ) * LB , srcArray [qtr + 1 ]); //put*(add, value)
189+ wbuf .setPosition (half * LB );
190+ for (int i = half ; i < len ; i ++) { wbuf .putLong (srcArray [i ]); } //put*(value)
152191 wbuf .resetPosition ();
153192 //confirm
154- WritableBuffer wbuf2 = WritableMemory .allocate (len * Long . BYTES , NATIVE_BYTE_ORDER ).asWritableBuffer ();
155- for (int i = 0 ; i < len * Long . BYTES ; i ++) { wbuf2 .putByte (wbuf .getByte ()); }
193+ WritableBuffer wbuf2 = WritableMemory .allocate (len * LB , NBO ).asWritableBuffer ();
194+ for (int i = 0 ; i < len * LB ; i ++) { wbuf2 .putByte (wbuf .getByte ()); }
156195 wbuf .resetPosition ();
157196 wbuf2 .resetPosition ();
158197 for (int i = 0 ; i < len ; i ++) {
159198 assertTrue (srcArray [i ] == Long .reverseBytes (wbuf2 .getLong ()));
160199 }
161- wbuf2 .resetPosition ();
162200 //get
201+ wbuf2 .resetPosition ();
163202 long [] dstArray = new long [len ];
164- wbuf .getLongArray (dstArray , 0 , half );
165- wbuf .getLongArray (dstArray , half , half );
203+ wbuf .getLongArray (dstArray , 0 , qtr ); //get*Array(dst[], dstOff, len)
204+ dstArray [qtr ] = wbuf .getLong (qtr * LB ); //get*(add)
205+ dstArray [qtr + 1 ] = wbuf .getLong ((qtr + 1 ) * LB ); //get*(add)
206+ wbuf .setPosition (half * LB );
207+ for (int i = half ; i < len ; i ++) { dstArray [i ] = wbuf .getLong (); } //get*()
166208 assertEquals (srcArray , dstArray );
167209 }
168210
@@ -171,72 +213,80 @@ public void checkPutGetNonNativeShorts() {
171213 short [] srcArray = { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 };
172214 final int len = srcArray .length ;
173215 final int half = len / 2 ;
174- WritableBuffer wbuf = WritableMemory .allocate (len * Short .BYTES , NON_NATIVE_BYTE_ORDER ).asWritableBuffer ();
175- wbuf .putShortArray (srcArray , 0 , half );
176- wbuf .putShortArray (srcArray , half , half );
216+ final int qtr = len / 4 ;
217+ WritableBuffer wbuf = WritableMemory .allocate (len * SB , NNBO ).asWritableBuffer ();
218+ //put
219+ wbuf .putShortArray (srcArray , 0 , qtr ); //put*Array(src[], srcOff, len)
220+ wbuf .putShort (qtr * SB , srcArray [qtr ]); //put*(add, value)
221+ wbuf .putShort ((qtr + 1 ) * SB , srcArray [qtr + 1 ]); //put*(add, value)
222+ wbuf .setPosition (half * SB );
223+ for (int i = half ; i < len ; i ++) { wbuf .putShort (srcArray [i ]); } //put*(value)
177224 wbuf .resetPosition ();
178225 //confirm
179- WritableBuffer wbuf2 = WritableMemory .allocate (len * Short . BYTES , NATIVE_BYTE_ORDER ).asWritableBuffer ();
180- for (int i = 0 ; i < len * Short . BYTES ; i ++) { wbuf2 .putByte (wbuf .getByte ()); }
226+ WritableBuffer wbuf2 = WritableMemory .allocate (len * SB , NBO ).asWritableBuffer ();
227+ for (int i = 0 ; i < len * SB ; i ++) { wbuf2 .putByte (wbuf .getByte ()); }
181228 wbuf .resetPosition ();
182229 wbuf2 .resetPosition ();
183230 for (int i = 0 ; i < len ; i ++) {
184231 assertTrue (srcArray [i ] == Short .reverseBytes (wbuf2 .getShort ()));
185232 }
186- wbuf2 .resetPosition ();
187233 //get
234+ wbuf2 .resetPosition ();
188235 short [] dstArray = new short [len ];
189- wbuf .getShortArray (dstArray , 0 , half );
190- wbuf .getShortArray (dstArray , half , half );
236+ wbuf .getShortArray (dstArray , 0 , qtr ); //get*Array(dst[], dstOff, len)
237+ dstArray [qtr ] = wbuf .getShort (qtr * SB ); //get*(add)
238+ dstArray [qtr + 1 ] = wbuf .getShort ((qtr + 1 ) * SB ); //get*(add)
239+ wbuf .setPosition (half * SB );
240+ for (int i = half ; i < len ; i ++) { dstArray [i ] = wbuf .getShort (); } //get*()
191241 assertEquals (srcArray , dstArray );
192242 }
193243
194244 //check Duplicate, Region
195245 @ Test
196246 public void checkDuplicate () {
197247 byte [] bArr = new byte [8 ];
198- WritableMemory wmem = WritableMemory .writableWrap (bArr , NON_NATIVE_BYTE_ORDER );
248+ WritableMemory wmem = WritableMemory .writableWrap (bArr , NNBO );
199249 WritableBuffer wbuf = wmem .asWritableBuffer ();
200250 WritableBuffer wdup = wbuf .writableDuplicate ();
201- assertEquals (wdup .getTypeByteOrder (), NON_NATIVE_BYTE_ORDER );
251+ assertEquals (wdup .getTypeByteOrder (), NNBO );
202252
203253 WritableBuffer wreg = wbuf .writableRegion ();
204- assertEquals (wreg .getTypeByteOrder (), NON_NATIVE_BYTE_ORDER );
254+ assertEquals (wreg .getTypeByteOrder (), NNBO );
205255 }
206256
207257 @ Test
208258 public void checkConversionByteOrder () {
209259 byte [] bArr = new byte [8 ];
210260 bArr [1 ] = 1 ;
211- WritableMemory wmem = WritableMemory .writableWrap (bArr , NON_NATIVE_BYTE_ORDER );
212- assertEquals (wmem .getTypeByteOrder (), NON_NATIVE_BYTE_ORDER );
261+ WritableMemory wmem = WritableMemory .writableWrap (bArr , NNBO );
262+ assertEquals (wmem .getTypeByteOrder (), NNBO );
213263 assertEquals (wmem .getChar (0 ), 1 );
214264
215265 Buffer buf = wmem .asBuffer ();
216- assertEquals (buf .getTypeByteOrder (), NON_NATIVE_BYTE_ORDER ); //
266+ assertEquals (buf .getTypeByteOrder (), NNBO ); //
217267 assertEquals (buf .getChar (0 ), 1 );
218268
219269 Buffer dup = buf .duplicate ();
220- assertEquals (dup .getTypeByteOrder (), NON_NATIVE_BYTE_ORDER );
270+ assertEquals (dup .getTypeByteOrder (), NNBO );
221271 assertEquals (dup .getChar (0 ), 1 );
222272
223273 Buffer reg = buf .region ();
224- assertEquals (reg .getTypeByteOrder (), NON_NATIVE_BYTE_ORDER );
274+ assertEquals (reg .getTypeByteOrder (), NNBO );
225275 assertEquals (reg .getChar (0 ), 1 );
226276
227277 Memory mem = reg .asMemory ();
228- assertEquals (mem .getTypeByteOrder (), NON_NATIVE_BYTE_ORDER );
278+ assertEquals (mem .getTypeByteOrder (), NNBO );
229279 assertEquals (mem .getChar (0 ), 1 );
230280
231281 Memory mreg = mem .region (0 , 8 );
232- assertEquals (mreg .getTypeByteOrder (), NON_NATIVE_BYTE_ORDER );
282+ assertEquals (mreg .getTypeByteOrder (), NNBO );
233283 assertEquals (mreg .getChar (0 ), 1 );
234284 }
235285
236286 @ Test
237287 public void checkPutIntArray () {
238- WritableMemory wmem = WritableMemory .allocate (12 , NON_NATIVE_BYTE_ORDER );
239- WritableBuffer wbuf = wmem .asWritableBuffer (NON_NATIVE_BYTE_ORDER );
288+ WritableMemory wmem = WritableMemory .allocate (12 , NNBO );
289+ WritableBuffer wbuf = wmem .asWritableBuffer (NNBO );
240290
241291 wbuf .putInt (1 );
242292 int [] array = new int [] { 2 };
0 commit comments