Annotation of embedaddon/php/ext/com_dotnet/tests/variants.phpt, revision 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>