github.com/igggame/nebulas-go@v2.1.0+incompatible/nf/nvm/test/contract_date_and_uint.js (about)

     1  // since version 1.0.5
     2  
     3  "use strict";
     4  
     5  var Uint64 = Uint.Uint64;
     6  var Uint128 = Uint.Uint128;
     7  var Uint256 = Uint.Uint256;
     8  var Uint512 = Uint.Uint512;
     9  
    10  var Contract = function() {
    11  
    12  };
    13  
    14  Contract.prototype = {
    15      init: function(){},
    16  
    17      testDate: function() {
    18  
    19          Event.Trigger("testDate.arguments", {
    20  			args: arguments
    21          });
    22  
    23          var date = arguments.length == 0 ? new Date() : new Date(arguments[0]);
    24          var date2 = new Date();
    25          date2.setFullYear(1988);
    26          var data = {
    27              UTC: Date.UTC(),
    28              now: Date.now(),
    29              parse: Date.parse('04 Dec 1995 00:12:00 GMT'),
    30              getUTCDate: date.getUTCDate(),
    31              toJSON: date.toJSON(),
    32              setFullYear: date2.toString(),
    33              height: Blockchain.block.height,
    34              timestamp: Blockchain.block.timestamp,
    35              valueOf: date.valueOf(),
    36              date_toString: date.toString(),
    37              date_getTime: date.getTime(),
    38              date_getFullYear: date.getFullYear(),
    39              equalBlockTime: Blockchain.block.timestamp == (date.getTime() / 1000),
    40              toLocaleString: date.toLocaleString(),
    41              toLocaleDateString: date.toLocaleDateString(),
    42              toLocaleTimeString: date.toLocaleTimeString(),
    43              getTimezoneOffset: date.getTimezoneOffset()
    44          };
    45  
    46          Event.Trigger("Date", {
    47  			data: data
    48          });
    49  
    50          return data;
    51      },
    52  
    53      testUint64: function() {
    54          var n1 = new Uint64("10000");
    55          var n2 = new Uint64("2000000");
    56          var n3 = new Uint512("2000000");
    57  
    58          var overflow = false;
    59          try {
    60              n2.pow(n1);
    61          } catch (err) {
    62              if (err.message === "[Uint64 Error] overflow") {
    63                  overflow = true;
    64              }
    65          }
    66          var underflow = false;
    67          try {
    68              n1.minus(n2);
    69          } catch (err) {
    70              if (err.message === "[Uint64 Error] underflow") {
    71                  underflow = true;
    72              }
    73          }
    74  
    75          var isNaN = false;
    76          try {
    77              n1.div(new Uint64(0));
    78          } catch (err) {
    79              if (err.message === "[Uint64 Error] not an integer") {
    80                  isNaN = true;
    81              }
    82          }
    83  
    84          var isNaN2 = false;
    85          try {
    86              new Uint64(1.2);
    87          } catch (err) {
    88              if (err.message === "[Uint64 Error] not an integer") {
    89                  isNaN2 = true;
    90              }
    91          }
    92  
    93          var incompatible = false;
    94          try {
    95              n1.plus(n3);
    96          } catch (err) {
    97              if (err.message === "[Uint64 Error] incompatible type") {
    98                  incompatible = true;
    99              }
   100          }
   101  
   102          var data = {
   103              "n1": n1.toString(10),
   104              "n2": n2.toString(10),
   105              "n2pown1Overflow": overflow, 
   106              "n1minusn2Underflow": underflow,
   107              "plus": n1.plus(n2).toString(10),
   108              "minus": n2.minus(n1).toString(10),
   109              "mul": n1.mul(n2).toString(10),
   110              "div": n2.div(n1).toString(10),
   111              "mod": n2.mod(n1).toString(10),
   112              "pow": n1.pow(new Uint64(2)).toString(10),
   113              "n2gtn1": n2.cmp(n1) > 0,
   114              "n1isZero": n1.isZero(),
   115              "0isZero": new Uint64(0).isZero(),
   116              "n1div0NaN": isNaN,
   117              "floatNaN": isNaN2,
   118              "incompatible": incompatible
   119          };
   120  
   121          Event.Trigger("Uint64", {
   122  			data: data
   123          });
   124          return data;
   125      }
   126  };
   127  
   128  module.exports = Contract;