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;