Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/java/nio/Buffer/BasicChar.java
41149 views
1
/*
2
* Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
7
* published by the Free Software Foundation.
8
*
9
* This code is distributed in the hope that it will be useful, but WITHOUT
10
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12
* version 2 for more details (a copy is included in the LICENSE file that
13
* accompanied this code).
14
*
15
* You should have received a copy of the GNU General Public License version
16
* 2 along with this work; if not, write to the Free Software Foundation,
17
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18
*
19
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20
* or visit www.oracle.com if you need additional information or have any
21
* questions.
22
*/
23
24
/* Type-specific source code for unit test
25
*
26
* Regenerate the BasicX classes via genBasic.sh whenever this file changes.
27
* We check in the generated source files so that the test tree can be used
28
* independently of the rest of the source tree.
29
*/
30
31
// -- This file was mechanically generated: Do not edit! -- //
32
33
import java.nio.*;
34
35
36
public class BasicChar
37
extends Basic
38
{
39
40
private static final char[] VALUES = {
41
Character.MIN_VALUE,
42
(char) -1,
43
(char) 0,
44
(char) 1,
45
Character.MAX_VALUE,
46
47
48
49
50
51
52
53
54
55
56
57
58
};
59
60
private static void relGet(CharBuffer b) {
61
int n = b.capacity();
62
for (int i = 0; i < n; i++)
63
ck(b, (long)b.get(), (long)((char)ic(i)));
64
b.rewind();
65
}
66
67
private static void relGet(CharBuffer b, int start) {
68
int n = b.remaining();
69
for (int i = start; i < n; i++)
70
ck(b, (long)b.get(), (long)((char)ic(i)));
71
b.rewind();
72
}
73
74
private static void absGet(CharBuffer b) {
75
int n = b.capacity();
76
for (int i = 0; i < n; i++)
77
ck(b, (long)b.get(), (long)((char)ic(i)));
78
b.rewind();
79
}
80
81
private static void bulkGet(CharBuffer b) {
82
int n = b.capacity();
83
char[] a = new char[n + 7];
84
b.get(a, 7, n);
85
for (int i = 0; i < n; i++) {
86
ck(b, (long)a[i + 7], (long)((char)ic(i)));
87
}
88
}
89
90
private static void absBulkGet(CharBuffer b) {
91
int n = b.capacity();
92
int len = n - 7*2;
93
char[] a = new char[n + 7];
94
b.position(42);
95
b.get(7, a, 7, len);
96
ck(b, b.position() == 42);
97
for (int i = 0; i < len; i++) {
98
ck(b, (long)a[i + 7], (long)((char)ic(i)));
99
}
100
}
101
102
private static void relPut(CharBuffer b) {
103
int n = b.capacity();
104
b.clear();
105
for (int i = 0; i < n; i++)
106
b.put((char)ic(i));
107
b.flip();
108
}
109
110
private static void absPut(CharBuffer b) {
111
int n = b.capacity();
112
b.clear();
113
for (int i = 0; i < n; i++)
114
b.put(i, (char)ic(i));
115
b.limit(n);
116
b.position(0);
117
}
118
119
private static void bulkPutArray(CharBuffer b) {
120
int n = b.capacity();
121
b.clear();
122
char[] a = new char[n + 7];
123
for (int i = 0; i < n; i++)
124
a[i + 7] = (char)ic(i);
125
b.put(a, 7, n);
126
b.flip();
127
}
128
129
private static void bulkPutBuffer(CharBuffer b) {
130
int n = b.capacity();
131
b.clear();
132
CharBuffer c = CharBuffer.allocate(n + 7);
133
c.position(7);
134
for (int i = 0; i < n; i++)
135
c.put((char)ic(i));
136
c.flip();
137
c.position(7);
138
b.put(c);
139
b.flip();
140
try {
141
b.put(b);
142
fail("IllegalArgumentException expected for put into same buffer");
143
} catch (IllegalArgumentException e) {
144
if (e.getMessage() == null) {
145
fail("Non-null IllegalArgumentException message expected from"
146
+ " put into same buffer");
147
}
148
}
149
}
150
151
private static void absBulkPutArray(CharBuffer b) {
152
int n = b.capacity();
153
b.clear();
154
int lim = n - 7;
155
int len = lim - 7;
156
b.limit(lim);
157
char[] a = new char[len + 7];
158
for (int i = 0; i < len; i++)
159
a[i + 7] = (char)ic(i);
160
b.position(42);
161
b.put(7, a, 7, len);
162
ck(b, b.position() == 42);
163
}
164
165
//6231529
166
private static void callReset(CharBuffer b) {
167
b.position(0);
168
b.mark();
169
170
b.duplicate().reset();
171
b.asReadOnlyBuffer().reset();
172
}
173
174
175
176
// 6221101-6234263
177
178
private static void putBuffer() {
179
final int cap = 10;
180
181
CharBuffer direct1 = ByteBuffer.allocateDirect(cap).asCharBuffer();
182
CharBuffer nondirect1 = ByteBuffer.allocate(cap).asCharBuffer();
183
direct1.put(nondirect1);
184
185
CharBuffer direct2 = ByteBuffer.allocateDirect(cap).asCharBuffer();
186
CharBuffer nondirect2 = ByteBuffer.allocate(cap).asCharBuffer();
187
nondirect2.put(direct2);
188
189
CharBuffer direct3 = ByteBuffer.allocateDirect(cap).asCharBuffer();
190
CharBuffer direct4 = ByteBuffer.allocateDirect(cap).asCharBuffer();
191
direct3.put(direct4);
192
193
CharBuffer nondirect3 = ByteBuffer.allocate(cap).asCharBuffer();
194
CharBuffer nondirect4 = ByteBuffer.allocate(cap).asCharBuffer();
195
nondirect3.put(nondirect4);
196
}
197
198
199
200
201
private static void bulkPutString(CharBuffer b) {
202
int n = b.capacity();
203
b.clear();
204
StringBuilder sb = new StringBuilder(n + 7);
205
sb.append("1234567");
206
for (int i = 0; i < n; i++)
207
sb.append((char)ic(i));
208
b.put(sb.toString(), 7, 7 + n);
209
b.flip();
210
}
211
212
213
214
private static void checkSlice(CharBuffer b, CharBuffer slice) {
215
ck(slice, 0, slice.position());
216
ck(slice, b.remaining(), slice.limit());
217
ck(slice, b.remaining(), slice.capacity());
218
if (b.isDirect() != slice.isDirect())
219
fail("Lost direction", slice);
220
if (b.isReadOnly() != slice.isReadOnly())
221
fail("Lost read-only", slice);
222
}
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
private static void fail(String problem,
476
CharBuffer xb, CharBuffer yb,
477
char x, char y) {
478
fail(problem + String.format(": x=%s y=%s", x, y), xb, yb);
479
}
480
481
private static void catchNullArgument(Buffer b, Runnable thunk) {
482
tryCatch(b, NullPointerException.class, thunk);
483
}
484
485
private static void catchIllegalArgument(Buffer b, Runnable thunk) {
486
tryCatch(b, IllegalArgumentException.class, thunk);
487
}
488
489
private static void catchReadOnlyBuffer(Buffer b, Runnable thunk) {
490
tryCatch(b, ReadOnlyBufferException.class, thunk);
491
}
492
493
private static void catchIndexOutOfBounds(Buffer b, Runnable thunk) {
494
tryCatch(b, IndexOutOfBoundsException.class, thunk);
495
}
496
497
private static void catchIndexOutOfBounds(char[] t, Runnable thunk) {
498
tryCatch(t, IndexOutOfBoundsException.class, thunk);
499
}
500
501
private static void tryCatch(Buffer b, Class<?> ex, Runnable thunk) {
502
boolean caught = false;
503
try {
504
thunk.run();
505
} catch (Throwable x) {
506
if (ex.isAssignableFrom(x.getClass())) {
507
caught = true;
508
} else {
509
String s = x.getMessage();
510
if (s == null)
511
s = x.getClass().getName();
512
fail(s + " not expected");
513
}
514
}
515
if (!caught) {
516
fail(ex.getName() + " not thrown", b);
517
}
518
}
519
520
private static void tryCatch(char[] t, Class<?> ex, Runnable thunk) {
521
tryCatch(CharBuffer.wrap(t), ex, thunk);
522
}
523
524
public static void test(int level, final CharBuffer b, boolean direct) {
525
526
show(level, b);
527
528
if (direct != b.isDirect())
529
fail("Wrong direction", b);
530
531
// Gets and puts
532
533
relPut(b);
534
relGet(b);
535
absGet(b);
536
bulkGet(b);
537
538
absPut(b);
539
relGet(b);
540
absGet(b);
541
bulkGet(b);
542
543
bulkPutArray(b);
544
relGet(b);
545
546
bulkPutBuffer(b);
547
relGet(b);
548
549
absBulkPutArray(b);
550
absBulkGet(b);
551
552
553
554
bulkPutString(b);
555
relGet(b);
556
b.position(1);
557
b.limit(7);
558
ck(b, b.toString().equals("bcdefg"));
559
560
// CharSequence ops
561
562
b.position(2);
563
ck(b, b.charAt(1), 'd');
564
CharBuffer c = b.subSequence(1, 4);
565
ck(c, c.capacity(), b.capacity());
566
ck(c, c.position(), b.position()+1);
567
ck(c, c.limit(), b.position()+4);
568
ck(c, b.subSequence(1, 4).toString().equals("def"));
569
570
// 4938424
571
b.position(4);
572
ck(b, b.charAt(1), 'f');
573
ck(b, b.subSequence(1, 3).toString().equals("fg"));
574
575
// String ops
576
577
// 7190219
578
b.clear();
579
int pos = b.position();
580
tryCatch(b, BufferOverflowException.class, () ->
581
b.put(String.valueOf(new char[b.capacity() + 1]), 0, b.capacity() + 1)
582
);
583
ck(b, b.position(), pos);
584
relGet(b);
585
586
587
588
// Compact
589
590
relPut(b);
591
b.position(13);
592
b.compact();
593
b.flip();
594
relGet(b, 13);
595
596
// Exceptions
597
598
relPut(b);
599
b.limit(b.capacity() / 2);
600
b.position(b.limit());
601
602
tryCatch(b, BufferUnderflowException.class, () -> b.get());
603
tryCatch(b, BufferOverflowException.class, () -> b.put((char)42));
604
// The index must be non-negative and less than the buffer's limit.
605
catchIndexOutOfBounds(b, () -> b.get(b.limit()));
606
catchIndexOutOfBounds(b, () -> b.get(-1));
607
catchIndexOutOfBounds(b, () -> b.put(b.limit(), (char)42));
608
tryCatch(b, InvalidMarkException.class,
609
() -> b.position(0).mark().compact().reset());
610
611
try {
612
b.position(b.limit() + 1);
613
fail("IllegalArgumentException expected for position beyond limit");
614
} catch (IllegalArgumentException e) {
615
if (e.getMessage() == null) {
616
fail("Non-null IllegalArgumentException message expected for"
617
+ " position beyond limit");
618
}
619
}
620
621
try {
622
b.position(-1);
623
fail("IllegalArgumentException expected for negative position");
624
} catch (IllegalArgumentException e) {
625
if (e.getMessage() == null) {
626
fail("Non-null IllegalArgumentException message expected for"
627
+ " negative position");
628
}
629
}
630
631
try {
632
b.limit(b.capacity() + 1);
633
fail("IllegalArgumentException expected for limit beyond capacity");
634
} catch (IllegalArgumentException e) {
635
if (e.getMessage() == null) {
636
fail("Non-null IllegalArgumentException message expected for"
637
+ " limit beyond capacity");
638
}
639
}
640
641
try {
642
b.limit(-1);
643
fail("IllegalArgumentException expected for negative limit");
644
} catch (IllegalArgumentException e) {
645
if (e.getMessage() == null) {
646
fail("Non-null IllegalArgumentException message expected for"
647
+ " negative limit");
648
}
649
}
650
651
// Exceptions in absolute bulk and slice operations
652
653
catchNullArgument(b, () -> b.get(7, null, 0, 42));
654
catchNullArgument(b, () -> b.put(7, (char[])null, 0, 42));
655
656
char[] tmpa = new char[42];
657
catchIndexOutOfBounds(b, () -> b.get(7, tmpa, -1, 42));
658
catchIndexOutOfBounds(b, () -> b.get(7, tmpa, 42, 1));
659
catchIndexOutOfBounds(b, () -> b.get(7, tmpa, 41, -1));
660
catchIndexOutOfBounds(b, () -> b.get(-1, tmpa, 0, 1));
661
catchIndexOutOfBounds(b, () -> b.get(b.limit(), tmpa, 0, 1));
662
catchIndexOutOfBounds(b, () -> b.get(b.limit() - 41, tmpa, 0, 42));
663
664
catchIndexOutOfBounds(b, () -> b.put(7, tmpa, -1, 42));
665
catchIndexOutOfBounds(b, () -> b.put(7, tmpa, 42, 1));
666
catchIndexOutOfBounds(b, () -> b.put(7, tmpa, 41, -1));
667
catchIndexOutOfBounds(b, () -> b.put(-1, tmpa, 0, 1));
668
catchIndexOutOfBounds(b, () -> b.put(b.limit(), tmpa, 0, 1));
669
catchIndexOutOfBounds(b, () -> b.put(b.limit() - 41, tmpa, 0, 42));
670
671
catchIndexOutOfBounds(b, () -> b.slice(-1, 7));
672
catchIndexOutOfBounds(b, () -> b.slice(b.limit() + 1, 7));
673
catchIndexOutOfBounds(b, () -> b.slice(0, -1));
674
catchIndexOutOfBounds(b, () -> b.slice(7, b.limit() - 7 + 1));
675
676
// Values
677
678
b.clear();
679
b.put((char)0);
680
b.put((char)-1);
681
b.put((char)1);
682
b.put(Character.MAX_VALUE);
683
b.put(Character.MIN_VALUE);
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
b.flip();
702
ck(b, b.get(), 0);
703
ck(b, b.get(), (char)-1);
704
ck(b, b.get(), 1);
705
ck(b, b.get(), Character.MAX_VALUE);
706
ck(b, b.get(), Character.MIN_VALUE);
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
// Comparison
735
b.rewind();
736
CharBuffer b2 = CharBuffer.allocate(b.capacity());
737
b2.put(b);
738
b2.flip();
739
b.position(2);
740
b2.position(2);
741
if (!b.equals(b2)) {
742
for (int i = 2; i < b.limit(); i++) {
743
char x = b.get(i);
744
char y = b2.get(i);
745
if (x != y
746
747
748
749
750
751
752
) {
753
out.println("[" + i + "] " + x + " != " + y);
754
}
755
}
756
fail("Identical buffers not equal", b, b2);
757
}
758
if (b.compareTo(b2) != 0) {
759
fail("Comparison to identical buffer != 0", b, b2);
760
}
761
b.limit(b.limit() + 1);
762
b.position(b.limit() - 1);
763
b.put((char)99);
764
b.rewind();
765
b2.rewind();
766
if (b.equals(b2))
767
fail("Non-identical buffers equal", b, b2);
768
if (b.compareTo(b2) <= 0)
769
fail("Comparison to shorter buffer <= 0", b, b2);
770
b.limit(b.limit() - 1);
771
772
b.put(2, (char)42);
773
if (b.equals(b2))
774
fail("Non-identical buffers equal", b, b2);
775
if (b.compareTo(b2) <= 0)
776
fail("Comparison to lesser buffer <= 0", b, b2);
777
778
// Check equals and compareTo with interesting values
779
for (char x : VALUES) {
780
CharBuffer xb = CharBuffer.wrap(new char[] { x });
781
if (xb.compareTo(xb) != 0) {
782
fail("compareTo not reflexive", xb, xb, x, x);
783
}
784
if (!xb.equals(xb)) {
785
fail("equals not reflexive", xb, xb, x, x);
786
}
787
for (char y : VALUES) {
788
CharBuffer yb = CharBuffer.wrap(new char[] { y });
789
if (xb.compareTo(yb) != - yb.compareTo(xb)) {
790
fail("compareTo not anti-symmetric",
791
xb, yb, x, y);
792
}
793
if ((xb.compareTo(yb) == 0) != xb.equals(yb)) {
794
fail("compareTo inconsistent with equals",
795
xb, yb, x, y);
796
}
797
if (xb.compareTo(yb) != Character.compare(x, y)) {
798
799
800
801
802
803
804
fail("Incorrect results for CharBuffer.compareTo",
805
xb, yb, x, y);
806
}
807
if (xb.equals(yb) != ((x == y) || ((x != x) && (y != y)))) {
808
fail("Incorrect results for CharBuffer.equals",
809
xb, yb, x, y);
810
}
811
}
812
}
813
814
// Sub, dup
815
816
relPut(b);
817
relGet(b.duplicate());
818
b.position(13);
819
relGet(b.duplicate(), 13);
820
relGet(b.duplicate().slice(), 13);
821
relGet(b.slice(), 13);
822
relGet(b.slice().duplicate(), 13);
823
824
// Slice
825
826
b.position(5);
827
CharBuffer sb = b.slice();
828
checkSlice(b, sb);
829
b.position(0);
830
CharBuffer sb2 = sb.slice();
831
checkSlice(sb, sb2);
832
833
if (!sb.equals(sb2))
834
fail("Sliced slices do not match", sb, sb2);
835
if ((sb.hasArray()) && (sb.arrayOffset() != sb2.arrayOffset())) {
836
fail("Array offsets do not match: "
837
+ sb.arrayOffset() + " != " + sb2.arrayOffset(), sb, sb2);
838
}
839
840
int bPos = b.position();
841
int bLim = b.limit();
842
843
b.position(7);
844
b.limit(42);
845
CharBuffer rsb = b.slice();
846
b.position(0);
847
b.limit(b.capacity());
848
CharBuffer asb = b.slice(7, 35);
849
checkSlice(rsb, asb);
850
851
b.position(bPos);
852
b.limit(bLim);
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
// Read-only views
886
887
b.rewind();
888
final CharBuffer rb = b.asReadOnlyBuffer();
889
if (!b.equals(rb))
890
fail("Buffer not equal to read-only view", b, rb);
891
show(level + 1, rb);
892
893
catchReadOnlyBuffer(b, () -> relPut(rb));
894
catchReadOnlyBuffer(b, () -> absPut(rb));
895
catchReadOnlyBuffer(b, () -> bulkPutArray(rb));
896
catchReadOnlyBuffer(b, () -> bulkPutBuffer(rb));
897
catchReadOnlyBuffer(b, () -> absBulkPutArray(rb));
898
899
// put(CharBuffer) should not change source position
900
final CharBuffer src = CharBuffer.allocate(1);
901
catchReadOnlyBuffer(b, () -> rb.put(src));
902
ck(src, src.position(), 0);
903
904
catchReadOnlyBuffer(b, () -> rb.compact());
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
// 7199551
926
catchReadOnlyBuffer(b, () -> rb.put(new String(new char[rb.remaining() + 1])));
927
catchReadOnlyBuffer(b, () -> rb.append(new String(new char[rb.remaining() + 1])));
928
929
930
931
if (rb.getClass().getName().startsWith("java.nio.Heap")) {
932
catchReadOnlyBuffer(b, () -> rb.array());
933
catchReadOnlyBuffer(b, () -> rb.arrayOffset());
934
if (rb.hasArray()) {
935
fail("Read-only heap buffer's backing array is accessible", rb);
936
}
937
}
938
939
// Bulk puts from read-only buffers
940
941
b.clear();
942
rb.rewind();
943
b.put(rb);
944
945
946
947
948
949
950
951
952
953
954
955
relPut(b); // Required by testViews
956
957
958
959
960
961
962
}
963
964
965
966
private static void testStr() {
967
final String s = "abcdefghijklm";
968
int start = 3;
969
int end = 9;
970
final CharBuffer b = CharBuffer.wrap(s, start, end);
971
show(0, b);
972
ck(b, b.toString().equals(s.substring(start, end)));
973
ck(b, b.toString().equals("defghi"));
974
ck(b, b.isReadOnly());
975
catchReadOnlyBuffer(b, () -> b.put('x'));
976
ck(b, start, b.position());
977
ck(b, end, b.limit());
978
ck(b, s.length(), b.capacity());
979
b.position(6);
980
ck(b, b.subSequence(0,3).toString().equals("ghi"));
981
982
// absolute bulk get
983
char[] c = new char[end + 1 - (start - 1) + 1]; // [start - 1, end + 1]
984
b.limit(end + 2);
985
b.get(start - 1, c, 0, c.length);
986
for (int i = 0; i < c.length; i++)
987
ck(b, c[i], s.charAt(start - 1 + i));
988
989
// The index, relative to the position, must be non-negative and
990
// smaller than remaining().
991
catchIndexOutOfBounds(b, () -> b.charAt(-1));
992
catchIndexOutOfBounds(b, () -> b.charAt(b.remaining()));
993
// The index must be non-negative and less than the buffer's limit.
994
catchIndexOutOfBounds(b, () -> b.get(b.limit()));
995
catchIndexOutOfBounds(b, () -> b.get(-1));
996
// The start must be non-negative and no larger than remaining().
997
catchIndexOutOfBounds(b, () -> b.subSequence(-1, b.remaining()));
998
catchIndexOutOfBounds(b, () -> b.subSequence(b.remaining() + 1, b.remaining()));
999
1000
// The end must be no smaller than start and no larger than
1001
// remaining().
1002
catchIndexOutOfBounds(b, () -> b.subSequence(2, 1));
1003
catchIndexOutOfBounds(b, () -> b.subSequence(0, b.remaining() + 1));
1004
1005
// The offset must be non-negative and no larger than <array.length>.
1006
catchIndexOutOfBounds(b, () -> CharBuffer.wrap(s, -1, s.length()));
1007
catchIndexOutOfBounds(b, () -> CharBuffer.wrap(s, s.length() + 1, s.length()));
1008
catchIndexOutOfBounds(b, () -> CharBuffer.wrap(s, 1, 0));
1009
catchIndexOutOfBounds(b, () -> CharBuffer.wrap(s, 0, s.length() + 1));
1010
}
1011
1012
1013
1014
public static void test(final char [] ba) {
1015
int offset = 47;
1016
int length = 900;
1017
final CharBuffer b = CharBuffer.wrap(ba, offset, length);
1018
show(0, b);
1019
ck(b, b.capacity(), ba.length);
1020
ck(b, b.position(), offset);
1021
ck(b, b.limit(), offset + length);
1022
1023
// The offset must be non-negative and no larger than <array.length>.
1024
catchIndexOutOfBounds(ba, () -> CharBuffer.wrap(ba, -1, ba.length));
1025
catchIndexOutOfBounds(ba, () -> CharBuffer.wrap(ba, ba.length + 1, ba.length));
1026
catchIndexOutOfBounds(ba, () -> CharBuffer.wrap(ba, 0, -1));
1027
catchIndexOutOfBounds(ba, () -> CharBuffer.wrap(ba, 0, ba.length + 1));
1028
1029
// A NullPointerException will be thrown if the array is null.
1030
tryCatch(ba, NullPointerException.class,
1031
() -> CharBuffer.wrap((char []) null, 0, 5));
1032
tryCatch(ba, NullPointerException.class,
1033
() -> CharBuffer.wrap((char []) null));
1034
}
1035
1036
private static void testAllocate() {
1037
// An IllegalArgumentException will be thrown for negative capacities.
1038
catchIllegalArgument((Buffer) null, () -> CharBuffer.allocate(-1));
1039
try {
1040
CharBuffer.allocate(-1);
1041
} catch (IllegalArgumentException e) {
1042
if (e.getMessage() == null) {
1043
fail("Non-null IllegalArgumentException message expected for"
1044
+ " attempt to allocate negative capacity buffer");
1045
}
1046
}
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
}
1059
1060
public static void test() {
1061
testAllocate();
1062
test(0, CharBuffer.allocate(7 * 1024), false);
1063
test(0, CharBuffer.wrap(new char[7 * 1024], 0, 7 * 1024), false);
1064
test(new char[1024]);
1065
1066
1067
1068
1069
1070
1071
1072
testStr();
1073
1074
1075
callReset(CharBuffer.allocate(10));
1076
1077
1078
1079
putBuffer();
1080
1081
}
1082
1083
}
1084
1085