Annotation of embedaddon/php/ext/com_dotnet/tests/variants.phpt, revision 1.1.1.1
1.1 misho 1: --TEST--
2: COM: General variant tests
3: --SKIPIF--
4: <?php # vim:ft=php
5: if (!extension_loaded("com_dotnet")) print "skip COM/.Net support not present"; ?>
6: --FILE--
7: <?php // $Id: variants.phpt 242949 2007-09-26 15:44:16Z cvs2svn $
8: error_reporting(E_ALL);
9:
10: $v = new VARIANT();
11: if (VT_EMPTY != variant_get_type($v)) {
12: echo "VT_EMPTY: bork\n";
13: }
14:
15: $values = array(VT_I4 => 42, VT_R8 => 3.5, VT_BSTR => "hello", VT_BOOL => false);
16: $binary_ops = array('add', 'cat', 'sub', 'mul', 'and', 'div',
17: 'eqv', 'idiv', 'imp', 'mod', 'or', 'pow', 'xor');
18:
19: foreach ($values as $t => $val) {
20: $v = new VARIANT($val);
21: if ($t != variant_get_type($v)) {
22: printf("Bork: [%d] %d: %s\n", $t, variant_get_type($v), $val);
23: print $v . "\n";
24: }
25: $results = array();
26:
27: foreach ($values as $op2) {
28: echo "--\n";
29: foreach ($binary_ops as $op) {
30: try {
31: echo "$op: " . call_user_func('variant_' . $op, $v, $op2) . "\n";
32: } catch (com_exception $e) {
33: echo "$op:\n";
34: echo "\tvariant_$op($v, $op2)\n";
35: echo "\texception " . $e->getMessage();
36: printf("\tcode %08x\n\n", $e->getCode());
37: }
38: }
39: }
40: }
41:
42: echo "OK!";
43: ?>
44: --EXPECT--
45: --
46: add: 84
47: cat: 4242
48: sub: 0
49: mul: 1764
50: and: 42
51: div: 1
52: eqv: -1
53: idiv: 1
54: imp: -1
55: mod: 0
56: or: 42
57: pow: 1.50130937545297E+68
58: xor: 0
59: --
60: add: 45.5
61: cat: 423.5
62: sub: 38.5
63: mul: 147
64: and: 0
65: div: 12
66: eqv: -47
67: idiv: 10
68: imp: -43
69: mod: 2
70: or: 46
71: pow: 480145.116863642
72: xor: 46
73: --
74: add:
75: variant_add(42, hello)
76: exception Type mismatch.
77: code 80020005
78:
79: cat: 42hello
80: sub:
81: variant_sub(42, hello)
82: exception Type mismatch.
83: code 80020005
84:
85: mul:
86: variant_mul(42, hello)
87: exception Type mismatch.
88: code 80020005
89:
90: and:
91: variant_and(42, hello)
92: exception Type mismatch.
93: code 80020005
94:
95: div:
96: variant_div(42, hello)
97: exception Type mismatch.
98: code 80020005
99:
100: eqv:
101: variant_eqv(42, hello)
102: exception Type mismatch.
103: code 80020005
104:
105: idiv:
106: variant_idiv(42, hello)
107: exception Type mismatch.
108: code 80020005
109:
110: imp:
111: variant_imp(42, hello)
112: exception Type mismatch.
113: code 80020005
114:
115: mod:
116: variant_mod(42, hello)
117: exception Type mismatch.
118: code 80020005
119:
120: or:
121: variant_or(42, hello)
122: exception Type mismatch.
123: code 80020005
124:
125: pow:
126: variant_pow(42, hello)
127: exception Type mismatch.
128: code 80020005
129:
130: xor:
131: variant_xor(42, hello)
132: exception Type mismatch.
133: code 80020005
134:
135: --
136: add: 42
137: cat: 42False
138: sub: 42
139: mul: 0
140: and: 0
141: div:
142: variant_div(42, )
143: exception Division by zero.
144: code 80020012
145:
146: eqv: -43
147: idiv:
148: variant_idiv(42, )
149: exception Division by zero.
150: code 80020012
151:
152: imp: -43
153: mod:
154: variant_mod(42, )
155: exception Division by zero.
156: code 80020012
157:
158: or: 42
159: pow: 1
160: xor: 42
161: --
162: add: 45.5
163: cat: 3.542
164: sub: -38.5
165: mul: 147
166: and: 0
167: div: 8.33333333333333E-02
168: eqv: -47
169: idiv: 0
170: imp: -5
171: mod: 4
172: or: 46
173: pow: 7.09345573078604E+22
174: xor: 46
175: --
176: add: 7
177: cat: 3.53.5
178: sub: 0
179: mul: 12.25
180: and: 4
181: div: 1
182: eqv: -1
183: idiv: 1
184: imp: -1
185: mod: 0
186: or: 4
187: pow: 80.2117802289664
188: xor: 0
189: --
190: add:
191: variant_add(3.5, hello)
192: exception Type mismatch.
193: code 80020005
194:
195: cat: 3.5hello
196: sub:
197: variant_sub(3.5, hello)
198: exception Type mismatch.
199: code 80020005
200:
201: mul:
202: variant_mul(3.5, hello)
203: exception Type mismatch.
204: code 80020005
205:
206: and:
207: variant_and(3.5, hello)
208: exception Type mismatch.
209: code 80020005
210:
211: div:
212: variant_div(3.5, hello)
213: exception Type mismatch.
214: code 80020005
215:
216: eqv:
217: variant_eqv(3.5, hello)
218: exception Type mismatch.
219: code 80020005
220:
221: idiv:
222: variant_idiv(3.5, hello)
223: exception Type mismatch.
224: code 80020005
225:
226: imp:
227: variant_imp(3.5, hello)
228: exception Type mismatch.
229: code 80020005
230:
231: mod:
232: variant_mod(3.5, hello)
233: exception Type mismatch.
234: code 80020005
235:
236: or:
237: variant_or(3.5, hello)
238: exception Type mismatch.
239: code 80020005
240:
241: pow:
242: variant_pow(3.5, hello)
243: exception Type mismatch.
244: code 80020005
245:
246: xor:
247: variant_xor(3.5, hello)
248: exception Type mismatch.
249: code 80020005
250:
251: --
252: add: 3.5
253: cat: 3.5False
254: sub: 3.5
255: mul: 0
256: and: 0
257: div:
258: variant_div(3.5, )
259: exception Division by zero.
260: code 80020012
261:
262: eqv: -5
263: idiv:
264: variant_idiv(3.5, )
265: exception Division by zero.
266: code 80020012
267:
268: imp: -5
269: mod:
270: variant_mod(3.5, )
271: exception Division by zero.
272: code 80020012
273:
274: or: 4
275: pow: 1
276: xor: 4
277: --
278: add:
279: variant_add(hello, 42)
280: exception Type mismatch.
281: code 80020005
282:
283: cat: hello42
284: sub:
285: variant_sub(hello, 42)
286: exception Type mismatch.
287: code 80020005
288:
289: mul:
290: variant_mul(hello, 42)
291: exception Type mismatch.
292: code 80020005
293:
294: and:
295: variant_and(hello, 42)
296: exception Type mismatch.
297: code 80020005
298:
299: div:
300: variant_div(hello, 42)
301: exception Type mismatch.
302: code 80020005
303:
304: eqv:
305: variant_eqv(hello, 42)
306: exception Type mismatch.
307: code 80020005
308:
309: idiv:
310: variant_idiv(hello, 42)
311: exception Type mismatch.
312: code 80020005
313:
314: imp:
315: variant_imp(hello, 42)
316: exception Type mismatch.
317: code 80020005
318:
319: mod:
320: variant_mod(hello, 42)
321: exception Type mismatch.
322: code 80020005
323:
324: or:
325: variant_or(hello, 42)
326: exception Type mismatch.
327: code 80020005
328:
329: pow:
330: variant_pow(hello, 42)
331: exception Type mismatch.
332: code 80020005
333:
334: xor:
335: variant_xor(hello, 42)
336: exception Type mismatch.
337: code 80020005
338:
339: --
340: add:
341: variant_add(hello, 3.5)
342: exception Type mismatch.
343: code 80020005
344:
345: cat: hello3.5
346: sub:
347: variant_sub(hello, 3.5)
348: exception Type mismatch.
349: code 80020005
350:
351: mul:
352: variant_mul(hello, 3.5)
353: exception Type mismatch.
354: code 80020005
355:
356: and:
357: variant_and(hello, 3.5)
358: exception Type mismatch.
359: code 80020005
360:
361: div:
362: variant_div(hello, 3.5)
363: exception Type mismatch.
364: code 80020005
365:
366: eqv:
367: variant_eqv(hello, 3.5)
368: exception Type mismatch.
369: code 80020005
370:
371: idiv:
372: variant_idiv(hello, 3.5)
373: exception Type mismatch.
374: code 80020005
375:
376: imp:
377: variant_imp(hello, 3.5)
378: exception Type mismatch.
379: code 80020005
380:
381: mod:
382: variant_mod(hello, 3.5)
383: exception Type mismatch.
384: code 80020005
385:
386: or:
387: variant_or(hello, 3.5)
388: exception Type mismatch.
389: code 80020005
390:
391: pow:
392: variant_pow(hello, 3.5)
393: exception Type mismatch.
394: code 80020005
395:
396: xor:
397: variant_xor(hello, 3.5)
398: exception Type mismatch.
399: code 80020005
400:
401: --
402: add: hellohello
403: cat: hellohello
404: sub:
405: variant_sub(hello, hello)
406: exception Type mismatch.
407: code 80020005
408:
409: mul:
410: variant_mul(hello, hello)
411: exception Type mismatch.
412: code 80020005
413:
414: and:
415: variant_and(hello, hello)
416: exception Type mismatch.
417: code 80020005
418:
419: div:
420: variant_div(hello, hello)
421: exception Type mismatch.
422: code 80020005
423:
424: eqv:
425: variant_eqv(hello, hello)
426: exception Type mismatch.
427: code 80020005
428:
429: idiv:
430: variant_idiv(hello, hello)
431: exception Type mismatch.
432: code 80020005
433:
434: imp:
435: variant_imp(hello, hello)
436: exception Type mismatch.
437: code 80020005
438:
439: mod:
440: variant_mod(hello, hello)
441: exception Type mismatch.
442: code 80020005
443:
444: or:
445: variant_or(hello, hello)
446: exception Type mismatch.
447: code 80020005
448:
449: pow:
450: variant_pow(hello, hello)
451: exception Type mismatch.
452: code 80020005
453:
454: xor:
455: variant_xor(hello, hello)
456: exception Type mismatch.
457: code 80020005
458:
459: --
460: add:
461: variant_add(hello, )
462: exception Type mismatch.
463: code 80020005
464:
465: cat: helloFalse
466: sub:
467: variant_sub(hello, )
468: exception Type mismatch.
469: code 80020005
470:
471: mul:
472: variant_mul(hello, )
473: exception Type mismatch.
474: code 80020005
475:
476: and:
477: variant_and(hello, )
478: exception Type mismatch.
479: code 80020005
480:
481: div:
482: variant_div(hello, )
483: exception Type mismatch.
484: code 80020005
485:
486: eqv:
487: variant_eqv(hello, )
488: exception Type mismatch.
489: code 80020005
490:
491: idiv:
492: variant_idiv(hello, )
493: exception Type mismatch.
494: code 80020005
495:
496: imp:
497: variant_imp(hello, )
498: exception Type mismatch.
499: code 80020005
500:
501: mod:
502: variant_mod(hello, )
503: exception Type mismatch.
504: code 80020005
505:
506: or:
507: variant_or(hello, )
508: exception Type mismatch.
509: code 80020005
510:
511: pow:
512: variant_pow(hello, )
513: exception Type mismatch.
514: code 80020005
515:
516: xor:
517: variant_xor(hello, )
518: exception Type mismatch.
519: code 80020005
520:
521: --
522: add: 42
523: cat: False42
524: sub: -42
525: mul: 0
526: and: 0
527: div: 0
528: eqv: -43
529: idiv: 0
530: imp: -1
531: mod: 0
532: or: 42
533: pow: 0
534: xor: 42
535: --
536: add: 3.5
537: cat: False3.5
538: sub: -3.5
539: mul: 0
540: and: 0
541: div: 0
542: eqv: -5
543: idiv: 0
544: imp: -1
545: mod: 0
546: or: 4
547: pow: 0
548: xor: 4
549: --
550: add:
551: variant_add(0, hello)
552: exception Type mismatch.
553: code 80020005
554:
555: cat: Falsehello
556: sub:
557: variant_sub(0, hello)
558: exception Type mismatch.
559: code 80020005
560:
561: mul:
562: variant_mul(0, hello)
563: exception Type mismatch.
564: code 80020005
565:
566: and:
567: variant_and(0, hello)
568: exception Type mismatch.
569: code 80020005
570:
571: div:
572: variant_div(0, hello)
573: exception Type mismatch.
574: code 80020005
575:
576: eqv:
577: variant_eqv(0, hello)
578: exception Type mismatch.
579: code 80020005
580:
581: idiv:
582: variant_idiv(0, hello)
583: exception Type mismatch.
584: code 80020005
585:
586: imp:
587: variant_imp(0, hello)
588: exception Type mismatch.
589: code 80020005
590:
591: mod:
592: variant_mod(0, hello)
593: exception Type mismatch.
594: code 80020005
595:
596: or:
597: variant_or(0, hello)
598: exception Type mismatch.
599: code 80020005
600:
601: pow:
602: variant_pow(0, hello)
603: exception Type mismatch.
604: code 80020005
605:
606: xor:
607: variant_xor(0, hello)
608: exception Type mismatch.
609: code 80020005
610:
611: --
612: add: 0
613: cat: FalseFalse
614: sub: 0
615: mul: 0
616: and: 0
617: div:
618: variant_div(0, )
619: exception Out of present range.
620: code 8002000a
621:
622: eqv: -1
623: idiv:
624: variant_idiv(0, )
625: exception Division by zero.
626: code 80020012
627:
628: imp: -1
629: mod:
630: variant_mod(0, )
631: exception Division by zero.
632: code 80020012
633:
634: or: 0
635: pow: 1
636: xor: 0
637: OK!
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>