PHP WebShell

Текущая директория: /opt/BitGoJS/node_modules/asmcrypto.js/test

Просмотр файла: dummy.js

module("dummy");

test( "dummy test", function () {
    ok( true, "Passed!" );
});

test( "add with carry proparation", function () {
    var a = 0xad4e6ae6, b = 0xedfdecc8, c = 1, d = 0x19b4c57af, dc = 1,
        r = 0, rc = 0, u = 0, v = 0;

    r = (a + c)|0, rc = (r>>>0) < (a>>>0) ? 1 : 0;
    r = (b + r)|0, rc = (r>>>0) < (b>>>0) ? 1 : rc;
    equal( r>>>0, d>>>0, "adc32 result ok" );
    equal( rc, dc, "adc32 carry ok" );

    u = ( (a & 0xffff) + (b & 0xffff)|0 ) + c|0;
    v = ( (a >>> 16) + (b >>> 16)|0 ) + (u >>> 16)|0;
    r = (u & 0xffff) | (v << 16);
    rc = v >>> 16;
    equal( r>>>0, d>>>0, "adc16x2 result ok" );
    equal( rc, dc, "adc16x2 carry ok" );
});

if ( Math.imul ) {
    test( "multiply and add", function () {
        var imul = Math.imul,
            x = 0xad4e6ae6, y = 0xedfdecc8, z = 0x9b4c57af,
            h = 0xa11d7fc2, l = 0xde69e35f,
            u = 0, v = 0, w = 0,
            rh = 0, rl = 0;

        u = imul( x & 0xffff, y & 0xffff ) + (z & 0xffff) | 0;
        v = imul( x & 0xffff, y >>> 16 ) + (z >>> 16) | 0;
        w = ( imul( x >>> 16, y & 0xffff ) + (v & 0xffff) | 0 ) + (u >>> 16) | 0;
        rh = ( imul( x >>> 16, y >>> 16 ) + (v >>> 16) | 0 ) + (w >>> 16) | 0;
        rl = (w << 16) | (u & 0xffff);

        equal( h>>>0, rh>>>0, "high part is ok" );
        equal( l>>>0, rl>>>0, "low part is ok" );
    });

    test( "divide with remainder", function () {
        var n0 = 0xad4e6ae6, n1 = 0xedfdecc8, d0 = 0xeeddccbb, q0 = 0xff101123, r0 = 0x39b30255;

        var qh, ql, rh, rl, w0, w1, n, dh, dl, c, imul = Math.imul;

        dh = d0 >>> 16, dl = d0 & 0xffff;

        n = n1;
        qh = ( n / dh )|0, rh = n % dh;
        while ( ( (rh|0) < 0x10000 )
            & ( ( qh == 0x10000 ) | ( (imul(qh,dl)>>>0) > (((rh<<16)|(n0>>>16))>>>0) ) ) )
        {
            qh = (qh-1)|0;
            rh = (rh+dh)|0;
        }
        w0 = imul(qh, dl)|0;
        w1 = (w0 >>> 16) + imul(qh, dh)|0;
        w0 = w0 << 16;
        n = (n0-w0)|0, c = ( (n>>>0) > (n0>>>0) )|0, n0 = n;
        n = (n1-c)|0, c = ( (n>>>0) > (n1>>>0) )|0, n1 = (n-w1)|0, c = ( (n1>>>0) > (n>>>0) )|c;
        if ( c ) {
            qh = (qh-1)|0;
            n = (n0+(d0<<16))|0, c = ( (n>>>0) < (n0>>>0) )|0, n0 = n;
            n = (n1+c)|0, c = !n, n1 = (n+dh)|0, c = ( (n1>>>0) < (n>>>0) )|c;
        }

        n = (n1 << 16) | (n0 >>> 16);
        ql = ( n / dh )|0, rl = n % dh;
        while ( ( (rl|0) < 0x10000 )
            & ( ( ql == 0x10000 ) | ( (imul(ql,dl)>>>0) > (((rl << 16)|(n0 & 0xffff))>>>0) ) ) )
        {
            ql = (ql-1)|0;
            rl = (rl+dh)|0;
        }
        w0 = imul(ql, dl)|0;
        w1 = (w0 >>> 16) + imul(ql, dh)|0;
        w0 = (w1 << 16) | (w0 & 0xffff);
        w1 = w1 >>> 16;
        n = (n0-w0)|0, c = ( (n>>>0) > (n0>>>0) )|0, n0 = n;
        n = (n1-c)|0, c = ( (n>>>0) > (n1>>>0) )|0, n1 = (n-w1)|0, c = ( (n1>>>0) > (n>>>0) )|c;
        if ( c ) {
            ql = (ql-1)|0;
            n = (n0+d0)|0, c = ( (n>>>0) < (n0>>>0) )|0, n0 = n;
            n1 = (n1+c)|0;
        }

        equal( ((qh<<16)|ql)>>>0, q0, "quotient ok" );
        equal( n0>>>0, r0, "remainder ok" );
    });

    test( "imul", function () {
        equal( Math.imul(-338592732,968756475)|0, 787375948, "imul works fine" );
    });
}
else {
    skip( "multiply and add" );
    skip( "divide with remainder" );
    skip( "imul" );
}

test( "Math.random()", function () {
    var r = Math.random();
    ok( typeof r === 'number', "r is number" );
    ok( r >= 0 && r < 1, "0 <= r < 1" );
});

testIf( true, "Conditional test should pass", function () {
    ok( true, "Passed!" );
});

testIf( false, "Conditional test should skip", function () {
    ok( false, "Failed!" );
});

testIf( asmCrypto.string_to_bytes, "asmCrypto.string_to_bytes", function ( ) {
    var bytes = asmCrypto.string_to_bytes("String not containing Unicode character");
    ok( bytes, "No exception on non-Unicode string" );

    try {
        var bytes = asmCrypto.string_to_bytes("String containing Unicode character: Ͼ");
        ok( false, "No exception on Unicode string")
    }
    catch ( e ) {
        ok( e instanceof Error, "Exception thrown on Unicode string" );
        ok( e.message.match(/wide character/i), "Exception message is about wide character" );
    }

    var bytes = asmCrypto.string_to_bytes( "\ud83d\ude80\u2665\u03ffa", true ); // Unicode ROCKET + BLACK HEART SUIT + GREEK CAPITAL REVERSED DOTTED LUNATE SIGMA SYMBOL + LATIN SMALL LETTER A 
    equal( asmCrypto.bytes_to_hex(bytes), "f09f9a80e299a5cfbf61", "Encode into UTF8 byte array" );
});

testIf( asmCrypto.bytes_to_string, "asmCrypto.bytes_to_string", function ( ) {
    var bytes = asmCrypto.hex_to_bytes("f09f9a80e299a5cfbf61");

    var str = asmCrypto.bytes_to_string( bytes, false );
    equal( str.length, 10, "Binary string length is ok" );
    equal( str, "\xf0\x9f\x9a\x80\xe2\x99\xa5\xcf\xbf\x61", "Binary string content is ok" );

    var str = asmCrypto.bytes_to_string( bytes, true );
    equal( str.length, 5, "Characters string length is ok" );
    equal( str, "\ud83d\ude80\u2665\u03ffa", "Characters string content is ok" );

    try {
        var str = asmCrypto.bytes_to_string( bytes.subarray(0,3), true );
        ok( false, "No exception on malformed UTF8 byte array" );
    }
    catch ( e ) {
        ok( e instanceof Error, "Exception thrown on malformed UTF8 byte array" );
        ok( e.message.match(/Malformed UTF8 character/i), "Exception message is about malformed UTF8 character" );
    }
});

Выполнить команду


Для локальной разработки. Не используйте в интернете!