Skip to content

Instantly share code, notes, and snippets.

@uupaa
Created May 22, 2015 20:41
Show Gist options
  • Select an option

  • Save uupaa/3eec0c6bd58b47913a92 to your computer and use it in GitHub Desktop.

Select an option

Save uupaa/3eec0c6bd58b47913a92 to your computer and use it in GitHub Desktop.
Test.js fragement code
Test["toHex"]      = Test_toHex;        // Test#toHex(a:TypedArray|Array, fixedDigits:Integer = 0):NumberStringArray
Test["likeArray"]  = Test_likeArray;    // Test#likeArray(a:TypedArray|Array, b:TypedArray|Array, fixedDigits:Integer = 0):Boolean
Test["likeObject"] = Test_likeObject;   // Test#likeObject(a:Object, b:Object):Boolean


function Test_toHex(a,             // @arg TypedArray|Array
                    fixedDigits) { // @arg Integer = 0 - floatingNumber.toFixed(fixedDigits)
                                   // @arg NumberStringArray - ["00", "01"]                  (Uint8Array)
                                   //                          ["0000", "0001", ...]         (Uint16Array)
                                   //                          ["00000000", "00000001", ...] (Uint32Array)
                                   //                          ["12.3", "0.1", ...]          (Float64Array)
    var fix    = fixedDigits || 0;
    var type   = Array.isArray(a) ? "Array" : Object.prototype.toString.call(a);
    var result = [], i = 0, iz = a.length;
    var bytes  = /8/.test(type) ? 2 : /32/.test(type) ? 8 : 4;

    if (/float/.test(type)) {
        for (; i < iz; ++i) {
            result.push( (0x100000000 + a[i]).toString(16).slice(-bytes) );
        }
    } else {
        for (; i < iz; ++i) {
            result.push( fix ? a[i].toFixed(fix) : a[i] );
        }
    }
    return result;
}

function Test_likeArray(a,             // @arg TypedArray|Array
                        b,             // @arg TypedArray|Array
                        fixedDigits) { // @arg Integer = 0 - floatingNumber.toFixed(fixedDigits)
                                       // @ret Boolean
    fixedDigits = fixedDigits || 0;
    if (a.length !== b.length) {
        return false;
    }
    for (var i = 0, iz = a.length; i < iz; ++i) {
        if (fixedDigits) {
            if ( a[i].toFixed(fixedDigits) !== b[i].toFixed(fixedDigits) ) {
                return false;
            }
        } else {
            if ( a[i] !== b[i] ) {
                return false;
            }
        }
    }
    return true;
}

function Test_likeObject(a,   // @arg Object
                         b) { // @arg Object
    return JSON.stringify(a) === JSON.stringify(b);
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment