3 // Test memset style array assignments.
5 extern(C
) int printf(const char*, ...);
7 /**************************************/
13 char[] a
= new char[dim
];
31 for (i
= 0; i
< a2
.length
; i
++)
36 for (i
= 0; i
< a3
.length
; i
++)
41 for (i
= 0; i
< a4
.length
; i
++)
46 for (i
= 0; i
< a8
.length
; i
++)
51 for (i
= 0; i
< a27
.length
; i
++)
52 assert(a27
[i
] == 'x');
55 for (i
= 0; i
< b1
.length
; i
++)
63 printf("i = %d, j = %d\n", i
, j
);
66 assert(a23
[15] == 'x');
67 assert(a23
[16] == 'c');
68 assert(a23
[17] == 'c');
69 assert(a23
[18] == 'c');
70 assert(a23
[19] == 'x');
71 assert(a23
[20] == 'x');
74 /**************************************/
78 short[] func2(int dim
)
80 short[] a
= new short[dim
];
94 assert(a1
[0] == 0x1234);
98 for (i
= 0; i
< a2
.length
; i
++)
99 assert(a2
[i
] == 0x1234);
103 for (i
= 0; i
< a3
.length
; i
++)
104 assert(a3
[i
] == 0x1234);
108 for (i
= 0; i
< a4
.length
; i
++)
109 assert(a4
[i
] == 0x1234);
113 for (i
= 0; i
< a8
.length
; i
++)
114 assert(a8
[i
] == 0x1234);
118 for (i
= 0; i
< a27
.length
; i
++)
119 assert(a27
[i
] == 0x1234);
121 func2(33)[] = 0x5678;
122 for (i
= 0; i
< b2
.length
; i
++)
123 assert(b2
[i
] == 0x5678);
126 short[23] a23
= 0x1234;
129 a23
[i
++..++j
] = 0x4554;
130 printf("i = %d, j = %d\n", i
, j
);
133 assert(a23
[15] == 0x1234);
134 assert(a23
[16] == 0x4554);
135 assert(a23
[17] == 0x4554);
136 assert(a23
[18] == 0x4554);
137 assert(a23
[19] == 0x1234);
138 assert(a23
[20] == 0x1234);
141 /**************************************/
147 int[] a
= new int[dim
];
161 assert(a1
[0] == 0x12345678);
165 for (i
= 0; i
< a2
.length
; i
++)
166 assert(a2
[i
] == 0x12345678);
170 for (i
= 0; i
< a3
.length
; i
++)
171 assert(a3
[i
] == 0x12345678);
175 for (i
= 0; i
< a4
.length
; i
++)
176 assert(a4
[i
] == 0x12345678);
180 for (i
= 0; i
< a8
.length
; i
++)
181 assert(a8
[i
] == 0x12345678);
185 for (i
= 0; i
< a27
.length
; i
++)
186 assert(a27
[i
] == 0x12345678);
188 func3(33)[] = 0x56781234;
189 for (i
= 0; i
< b3
.length
; i
++)
190 assert(b3
[i
] == 0x56781234);
193 int[23] a23
= 0x12345678;
196 a23
[i
++..++j
] = 0x45546776;
197 printf("i = %d, j = %d\n", i
, j
);
200 assert(a23
[15] == 0x12345678);
201 assert(a23
[16] == 0x45546776);
202 assert(a23
[17] == 0x45546776);
203 assert(a23
[18] == 0x45546776);
204 assert(a23
[19] == 0x12345678);
205 assert(a23
[20] == 0x12345678);
208 /**************************************/
212 long[] func4(int dim
)
214 long[] a
= new long[dim
];
227 a1
[] = 0x123456789ABCDEF0;
228 assert(a1
[0] == 0x123456789ABCDEF0);
231 a2
[] = 0x123456789ABCDEF0;
232 for (i
= 0; i
< a2
.length
; i
++)
233 assert(a2
[i
] == 0x123456789ABCDEF0);
236 a3
[] = 0x123456789ABCDEF0;
237 for (i
= 0; i
< a3
.length
; i
++)
238 assert(a3
[i
] == 0x123456789ABCDEF0);
241 a4
[] = 0x123456789ABCDEF0;
242 for (i
= 0; i
< a4
.length
; i
++)
243 assert(a4
[i
] == 0x123456789ABCDEF0);
246 a8
[] = 0x123456789ABCDEF0;
247 for (i
= 0; i
< a8
.length
; i
++)
248 assert(a8
[i
] == 0x123456789ABCDEF0);
251 a27
[] = 0x123456789ABCDEF0;
252 for (i
= 0; i
< a27
.length
; i
++)
253 assert(a27
[i
] == 0x123456789ABCDEF0);
255 func4(33)[] = 0x5678889911223344;
256 for (i
= 0; i
< b4
.length
; i
++)
257 assert(b4
[i
] == 0x5678889911223344);
260 long[23] a23
= 0x123456789ABCDEF0;
263 a23
[i
++..++j
] = 0x567888991122334B;
264 printf("i = %d, j = %d\n", i
, j
);
267 assert(a23
[15] == 0x123456789ABCDEF0);
268 assert(a23
[16] == 0x567888991122334B);
269 assert(a23
[17] == 0x567888991122334B);
270 assert(a23
[18] == 0x567888991122334B);
271 assert(a23
[19] == 0x123456789ABCDEF0);
272 assert(a23
[20] == 0x123456789ABCDEF0);
275 /**************************************/
279 real[] func5(int dim
)
281 real[] a
= new real[dim
];
295 assert(a1
[0] == 31234);
299 for (i
= 0; i
< a2
.length
; i
++)
300 assert(a2
[i
] == 31234);
304 for (i
= 0; i
< a3
.length
; i
++)
305 assert(a3
[i
] == 31234);
309 for (i
= 0; i
< a4
.length
; i
++)
310 assert(a4
[i
] == 31234);
314 for (i
= 0; i
< a8
.length
; i
++)
315 assert(a8
[i
] == 31234);
319 for (i
= 0; i
< a27
.length
; i
++)
320 assert(a27
[i
] == 31234);
323 for (i
= 0; i
< b5
.length
; i
++)
324 assert(b5
[i
] == 35678);
327 real[23] a23
= 31234;
330 a23
[i
++..++j
] = 34554e+4;
331 printf("i = %d, j = %d\n", i
, j
);
334 assert(a23
[15] == 31234);
335 assert(a23
[16] == 34554e+4);
336 assert(a23
[17] == 34554e+4);
337 assert(a23
[18] == 34554e+4);
338 assert(a23
[19] == 31234);
339 assert(a23
[20] == 31234);
342 /**************************************/
349 ABC abc1
= { a
:1, b
:2, c
:3, d
:4 };
350 ABC abc2
= { a
:7, b
:6, c
:8, d
:9 };
351 ABC abc3
= { a
:5, b
:10, c
:11, d
:12 };
357 ABC
[] a
= new ABC
[dim
];
371 assert(a1
[0] == abc1
);
375 for (i
= 0; i
< a2
.length
; i
++)
376 assert(a2
[i
] == abc1
);
380 for (i
= 0; i
< a3
.length
; i
++)
381 assert(a3
[i
] == abc1
);
385 for (i
= 0; i
< a4
.length
; i
++)
386 assert(a4
[i
] == abc1
);
390 for (i
= 0; i
< a8
.length
; i
++)
391 assert(a8
[i
] == abc1
);
395 for (i
= 0; i
< a27
.length
; i
++)
396 assert(a27
[i
] == abc1
);
399 for (i
= 0; i
< b6
.length
; i
++)
400 assert(b6
[i
] == abc2
);
406 a23
[i
++..++j
] = abc3
;
407 printf("i = %d, j = %d\n", i
, j
);
410 assert(a23
[15] == abc1
);
411 assert(a23
[16] == abc3
);
412 assert(a23
[17] == abc3
);
413 assert(a23
[18] == abc3
);
414 assert(a23
[19] == abc1
);
415 assert(a23
[20] == abc1
);
418 /**************************************/
422 bool[] func7(int dim
)
424 bool[] a
= new bool[dim
];
442 for (i
= 0; i
< a2
.length
; i
++)
447 for (i
= 0; i
< a3
.length
; i
++)
452 for (i
= 0; i
< a4
.length
; i
++)
457 for (i
= 0; i
< a8
.length
; i
++)
462 for (i
= 0; i
< a27
.length
; i
++)
466 assert(b7
.length
== 33);
467 for (i
= 0; i
< b7
.length
; i
++)
471 //printf("b7.ptr = %p, b7.length = %d\n", b7.ptr, b7.length);
472 assert(b7
.length
== 33);
473 for (i
= 0; i
< b7
.length
; i
++)
475 //printf("b7[%d] = %d\n", i, b7[i]);
486 printf("i = %d, j = %d\n", i
, j
);
489 assert(a23
[15] == 1);
490 assert(a23
[16] == 0);
491 assert(a23
[17] == 0);
492 assert(a23
[18] == 0);
493 assert(a23
[19] == 1);
494 assert(a23
[20] == 1);
498 /**************************************/
500 bool[] slice8(bool[] b
)
511 assert(b2
.length
== 8);
512 assert(b2
[1] == true);
514 assert(b2
[1] == false);
518 /**************************************/
520 bool[] slice9(bool[] b
, int i
, int j
)
532 assert(b2
.length
== 9);
533 assert(b2
[1] == true);
534 assert(b2
[8] == true);
537 assert(b2
[1] == false);
538 assert(b2
[8] == false);
542 /**************************************/
544 bool* foo10(bool[] b
, int i
)
559 assert(*pb
== false);
562 /**************************************/
564 bool* foo11(bool[] b
, int i
)
577 assert(pb
[1] == true);
579 assert(pb
[1] == false);
583 /**************************************/
585 bool* foo12(bool[] b
, int i
)
599 assert(pb
[1] == true);
601 assert(pb
[1] == false);
604 /**************************************/
606 bool* foo13(bool* b
, int i
)
618 pb
= foo13(b
.ptr
, 8);
619 assert(pb
[1] == true);
621 assert(pb
[1] == false);
624 /**************************************/
634 /**************************************/
645 /**************************************/
647 void foo16(bool[] b1
, bool[] b2
)
649 b1
[0..3] = b2
[8..11];
654 static bool[16] b1
= [1,1,0,1,0,0,0,0];
655 static bool[16] b2
= [0,0,0,0,0,0,0,0, 0,0,1,0,1,1,1,1];
658 assert(b1
[0] == false);
659 assert(b1
[1] == false);
660 assert(b1
[2] == true);
661 assert(b1
[3] == true);
662 assert(b1
[4] == false);
663 assert(b1
[5] == false);
664 assert(b1
[6] == false);
665 assert(b1
[7] == false);
666 assert(b1
[8] == false);
669 /**************************************/
681 /**************************************/
687 b |
= cast(bool)(3 + c
);
692 /**************************************/
697 for (i
= 0; i
< 10; i
++){
703 foreach(char[] p
; args
){
704 version(dummy
) int i
;
708 /**************************************/