UNPKG

@moomfe/zenjs

Version:

ZenJS 是一个高性能的 JavaScript 工具库。

219 lines (205 loc) 6.85 kB
describes.push({ name: 'Math', describe: [ { name: '$random', describe: [ { name: 'Do not pass parameters, default random 0 to 9', it: function(){ var set = new Set(); var res; for( var i = 0; i < 1000; i++ ){ compare( res = Math.$random(), 0, 9 ).should.true; set.add( res ); } set.size.should.equals( 10 ); for( i = 0; i < 10; i++ ){ set.has( i ).should.true; } } }, { name: 'Pass in a positive integer', it: function(){ var set = new Set(); var res; for( var i = 0; i < 3700; i++ ){ compare( res = Math.$random( 36 ), 0, 36 ).should.true; set.add( res ); } set.size.should.equals( 37 ); for( i = 0; i <= 36; i++ ){ set.has( i ).should.true; } } }, { name: 'Pass in two positive integers', it: function(){ var set = new Set(); var res; for( var i = 100; i < 5100; i++ ){ compare( res = Math.$random( 100, 150 ), 100, 150 ).should.true; set.add( res ); } set.size.should.equals( 51 ); for( i = 100; i <= 150; i++ ){ set.has( i ).should.true; } } }, { name: 'Pass in a negative integer', it: function(){ var set = new Set(); var res; for( var i = 0; i < 1000; i++ ){ compare( res = Math.$random( -9 ), -9, 0 ).should.true; set.add( res ); } set.size.should.equals( 10 ); for( i = -9; i <= 0; i++ ){ set.has( i ).should.true; } } }, { name: 'Pass in two negative integers', it: function(){ var set = new Set(); var res; for( var i = 0; i < 5100; i++ ){ compare( res = Math.$random( -100, -150 ), -150, -100 ).should.true; set.add( res ); } set.size.should.equals( 51 ); for( i = -150; i <= -100; i++ ){ set.has( i ).should.true; } } }, { name: 'The first is a positive integer and the second is a negative integer', it: function(){ var set = new Set(); var res; for( var i = 0; i < 5100; i++ ){ compare( res = Math.$random( 14, -36 ), -36, 14 ).should.true; set.add( res ); } set.size.should.equals( 51 ); for( i = -36; i <= 14; i++ ){ set.has( i ).should.true; } } }, { name: 'The first is a negative integer and the second is a positive integer', it: function(){ var set = new Set(); var res; for( var i = 0; i < 5100; i++ ){ compare( res = Math.$random( -36, 14 ), -36, 14 ).should.true; set.add( res ); } set.size.should.equals( 51 ); for( i = -36; i <= 14; i++ ){ set.has( i ).should.true; } } } ] }, { name: '$add / $jia', describe: [ { name: 'Normal use', it: function(){ Math.$add( 0, 1 ).should.equals( 1 ); Math.$add( 1, 2 ).should.equals( 3 ); Math.$add( 9007199254740990, 1 ).should.equals( 9007199254740991 ); Math.$add( 9007199254740990, 992800745259010 ).should.equals( 10000000000000000 ); } }, { name: 'Fractional precision problem', it: function(){ Math.$add( 0.2, 0.1 ).should.equals( 0.3 ); Math.$add( 0.7, 0.2 ).should.equals( 0.9 ); Math.$add( 1.000007, 0.1 ).should.equals( 1.100007 ); Math.$add( 22.77, 10 ).should.equals( 32.77 ); Math.$add( 2.777, 10 ).should.equals( 12.777 ); } } ] }, { name: '$subtract / $jian', describe: [ { name: 'Normal use', it: function(){ Math.$subtract( 1, 0 ).should.equals( 1 ); Math.$subtract( 2, 1 ).should.equals( 1 ); Math.$subtract( 9007199254740991, 1 ).should.equals( 9007199254740990 ); Math.$subtract( 10000000000000000, 9007199254740990 ).should.equals( 992800745259010 ); } }, { name: 'Fractional precision problem', it: function(){ Math.$subtract( 0.3, 0.1 ).should.equals( 0.2 ); Math.$subtract( 0.7, 0.2 ).should.equals( 0.5 ); Math.$subtract( 1.000007, 0.1 ).should.equals( 0.900007 ); } } ] }, { name: '$multiply / $cheng', describe: [ { name: 'Normal use', it: function(){ Math.$multiply( 1, 0 ).should.equals( 0 ); Math.$multiply( 2, 1 ).should.equals( 2 ); Math.$multiply( 10, 5 ).should.equals( 50 ); } }, { name: 'Fractional precision problem', it: function(){ Math.$multiply( 32.77, 10 ).should.equals( 327.7 ); Math.$multiply( 12.32, 7 ).should.equals( 86.24 ); Math.$multiply( 1.1, 56 ).should.equals( 61.6 ); } } ] }, { name: '$divide / $chu', describe: [ { name: 'Normal use', it: function(){ Math.$divide( 2, 1 ).should.equals( 2 ); Math.$divide( 10, 2 ).should.equals( 5 ); } }, { name: 'Fractional precision problem', it: function(){ Math.$divide( 33.77, 10 ).should.equals( 3.377 ); Math.$divide( 0.222222, 0.5 ).should.equals( 0.444444 ); } } ] }, { name: '$mean', describe: [ { name: 'Normal use', it: function(){ Math.$mean( 2, 4, 6 ).should.equals( 4 ); Math.$mean( -1, 1 ).should.equals( 0 ); Math.$mean( -1, 3 ).should.equals( 1 ); } }, { name: 'The same can solve the accuracy problem', it: function(){ Math.$mean( 0.1, 0.2 ).should.equals( 0.15 ); Math.$mean( 0.1, 0.2, 33.47, 0, 0, 0, 0, 0, 0, 0 ).should.equals( 3.377 ); } } ] } ] });