it("should convert any random date",function(){

        var dates_to_check =[
            new Date(1,1,1601),
            new Date(14,7,1789),
            new Date(14,4,1929),
            new Date(14,4,1968),
            new Date(14,4,1972),
            new Date(14,4,2172)
        ];
        for(var i=0;i<100;i++) {
            dates_to_check.push(ec.randomDateTime());
        }
        var date,check_date, check_date_bn;
        var bs = new BinaryStream();
        for(var i=0;i<dates_to_check.length;i++) {
            date = dates_to_check[i];
            var hl  = date_time.bn_dateToHundredNanoSecondFrom1601(date);
            var hl_bn = bn_dateToHundredNanoSecondFrom1601_big_number(date);

            check_date    = date_time.bn_hundredNanoSecondFrom1601ToDate(hl[0],hl[1]);
            check_date_bn = bn_hundredNanoSecondFrom1601ToDate_big_number(hl[0],hl[1]);

            check_date.toString().should.eql(date.toString());

            ec.isValidUInt32(hl[0]).should.eql(true);
            ec.isValidUInt32(hl[1]).should.eql(true);
            ec.encodeDateTime(date,bs);
            bs.rewind();
        }
    });
 it("bn_dateToHundredNanoSecondFrom1601 should return n=(number of nanosecond in a single day) for January, 2nd 1601 00:00:00 UTC", function () {
     var date = new Date(Date.UTC(1601, 0, 2, 0, 0, 0 ));
     var nano = date_time.bn_dateToHundredNanoSecondFrom1601(date);
     var value = 24 * 60 * 60 * 1000 * 10000; // number of nanosecond in a single day
     nano[0].should.equal(Math.floor(value / 0x100000000));
     nano[1].should.equal(value % 0x100000000);
 });
    it("should ensure that fast method (bn_hundredNanoSecondFrom1601ToDate) is faster than slow method",function(done) {


        var date = new Date(2014, 0, 1);
        var nano = date_time.bn_dateToHundredNanoSecondFrom1601(date);

        var bench = new Benchmarker();
        bench.add('bn_hundredNanoSecondFrom1601ToDate_safe', function() {
            bn_hundredNanoSecondFrom1601ToDate_big_number(nano[0],nano[1]);

        })
        .add('bn_hundredNanoSecondFrom1601ToDate_fast', function() {
                date_time.bn_hundredNanoSecondFrom1601ToDate(nano[0],nano[1]);
        })
        .on('cycle', function(message) {
            console.log(message);
        })
        .on('complete', function() {

            console.log(' Fastest is ' + this.fastest.name);
            console.log(' Speed Up : x', this.speedUp);
            this.fastest.name.should.eql("bn_hundredNanoSecondFrom1601ToDate_fast");
            done();
        })
        .run();

    });
    it("should check that slow and fast method produce same result",function() {

        var date = new Date(2014, 0, 1);
        var nano1 = bn_dateToHundredNanoSecondFrom1601_big_number(date);
        var nano2 = date_time.bn_dateToHundredNanoSecondFrom1601(date);
        nano1.should.eql(nano2);
    });
    it("bn_dateToHundredNanoSecondFrom1601 should return 0x019DB1DE-D53E8000 = 116444736000000000 for January, 1st 1970 00:00:00 UTC", function () {

        var date = new Date(Date.UTC(1970, 0, 1, 0, 0, 0));
        var nano = date_time.bn_dateToHundredNanoSecondFrom1601(date);
        var verif = bn_dateToHundredNanoSecondFrom1601_big_number(date);
        //xx console.log(date.toUTCString(), "0x0"+nano[0].toString(16),"0x"+nano[1].toString(16),nano,verif[0].toString(16),verif[1].toString(16));
        nano[0].should.equal(0x019DB1DE); // hi
        nano[1].should.equal(0xD53E8000); // lo

    });
    it("should handle 100 nanoseconds", function () {

        var date1 = new Date(Date.UTC(2013, 11, 12, 7, 36, 6));
        date1.toISOString().should.eql("2013-12-12T07:36:06.000Z");
        var t1 = date1.getTime();
        var q1 = date_time.bn_dateToHundredNanoSecondFrom1601(date1);

        // construct the same date with 713 millisecond more ...
        var date2 = new Date(Date.UTC(2013, 11, 12, 7, 36, 6));
        date2.setMilliseconds(713);
        date2.toISOString().should.eql("2013-12-12T07:36:06.713Z");
        var t2 = date2.getTime();
        var q2 = date_time.bn_dateToHundredNanoSecondFrom1601(date2);

        (t2 - t1).should.eql(713," there must be a difference of 713 milliseconds");

        (q2[1] - q1[1]).should.eql(7130000,"there must be a difference of 7130000 nanseconds");

    });
Пример #7
0
    it("should create a BrowseRequest with correct default value in  viewDescription", function () {
        var browseRequest = new browse_service.BrowseRequest({
            view: {},
            requestedMaxReferencesPerNode: 1,
            nodesToBrowse: [{}]
        });
        // by default timeStamp shall be set to minDate
        browseRequest.view.viewId.toString().should.eql("ns=0;i=0");
        browseRequest.view.viewVersion.should.eql(0);

        // timestamp shall be minDate( 01/01/1601) to satisfy the .NET server
        // implementation.
        var date_time = require("lib/misc/date_time");
        date_time.bn_dateToHundredNanoSecondFrom1601(browseRequest.view.timestamp).should.eql([0, 0]);
    });
 it("bn_dateToHundredNanoSecondFrom1601 should return 0 for January, 1st 1601 00:00:00 UTC", function () {
     var date = new Date(Date.UTC(1601, 0, 1, 0, 0, 0));
     var nano = date_time.bn_dateToHundredNanoSecondFrom1601(date);
     nano[0].should.equal(0);
     nano[1].should.equal(0);
 });
        .add('bn_dateToHundredNanoSecondFrom1601_fast', function() {

            var date = new Date(2014, 0, 1);
            var nano = date_time.bn_dateToHundredNanoSecondFrom1601(date);

        })