@@ -18,20 +18,38 @@ describe('optimizeCallback', function () {
1818 } )
1919
2020 const arrayOfNumbers = [ 1 , 2 , 3 ]
21+ const matrixOfNumbers = math . matrix ( arrayOfNumbers )
22+ const sparseMatrixOfNumbers = math . matrix ( arrayOfNumbers , 'sparse' )
2123 const name = 'myFunction'
2224
2325 it ( 'should find the right number of arguments for a function' , function ( ) {
2426 const optimizedUnary = optimizeCallback ( unaryCallback , arrayOfNumbers , name , false )
2527 assert . strictEqual ( optimizedUnary . isUnary , true )
2628 const optimizedTernary = optimizeCallback ( ternaryCallback , arrayOfNumbers , name , false )
2729 assert . strictEqual ( optimizedTernary . isUnary , false )
30+ const optimizedUnaryMatrix = optimizeCallback ( unaryCallback , matrixOfNumbers , name , false )
31+ assert . strictEqual ( optimizedUnaryMatrix . isUnary , true )
32+ const optimizedTernaryMatrix = optimizeCallback ( ternaryCallback , matrixOfNumbers , name , false )
33+ assert . strictEqual ( optimizedTernaryMatrix . isUnary , false )
34+ const optimizedUnarySparseMatrix = optimizeCallback ( unaryCallback , sparseMatrixOfNumbers , name , false )
35+ assert . strictEqual ( optimizedUnarySparseMatrix . isUnary , true )
36+ const optimizedTernarySparseMatrix = optimizeCallback ( ternaryCallback , sparseMatrixOfNumbers , name , false )
37+ assert . strictEqual ( optimizedTernarySparseMatrix . isUnary , false )
2838 } )
2939
3040 it ( 'should find the right number of arguments for a typed function' , function ( ) {
3141 const optimizedTypedUnary = optimizeCallback ( typedUnaryCallback , arrayOfNumbers , name , false )
3242 assert . strictEqual ( optimizedTypedUnary . isUnary , true )
3343 const optimizedTypedTernary = optimizeCallback ( typedTernaryCallback , arrayOfNumbers , name , false )
3444 assert . strictEqual ( optimizedTypedTernary . isUnary , false )
45+ const optimizedTypedUnaryMatrix = optimizeCallback ( typedUnaryCallback , matrixOfNumbers , name , false )
46+ assert . strictEqual ( optimizedTypedUnaryMatrix . isUnary , true )
47+ const optimizedTypedTernaryMatrix = optimizeCallback ( typedTernaryCallback , matrixOfNumbers , name , false )
48+ assert . strictEqual ( optimizedTypedTernaryMatrix . isUnary , false )
49+ const optimizedTypedUnarySparseMatrix = optimizeCallback ( typedUnaryCallback , sparseMatrixOfNumbers , name , false )
50+ assert . strictEqual ( optimizedTypedUnarySparseMatrix . isUnary , true )
51+ const optimizedTypedTernarySparseMatrix = optimizeCallback ( typedTernaryCallback , sparseMatrixOfNumbers , name , false )
52+ assert . strictEqual ( optimizedTypedTernarySparseMatrix . isUnary , false )
3553 } )
3654
3755 it ( 'should return unary functions as unary when isUnary is set to true' , function ( ) {
@@ -45,5 +63,28 @@ describe('optimizeCallback', function () {
4563 assert . strictEqual ( optimizedTypedTernary . isUnary , true )
4664 } )
4765
66+ it ( 'should run the optimized callback' , function ( ) {
67+ const optimizedUnary = optimizeCallback ( unaryCallback , arrayOfNumbers , name , false )
68+ assert . strictEqual ( optimizedUnary . fn ( 1 ) , 2 )
69+ const optimizedTernary = optimizeCallback ( ternaryCallback , arrayOfNumbers , name , false )
70+ assert . strictEqual ( optimizedTernary . fn ( 1 , 2 , 3 ) , 7 )
71+ const optimizedTypedUnary = optimizeCallback ( typedUnaryCallback , arrayOfNumbers , name , false )
72+ assert . strictEqual ( optimizedTypedUnary . fn ( 1 ) , 2 )
73+ const optimizedTypedTernary = optimizeCallback ( typedTernaryCallback , arrayOfNumbers , name , false )
74+ assert . strictEqual ( optimizedTypedTernary . fn ( 1 , 2 , 3 ) , 7 )
75+ const optimizedUnaryMatrix = optimizeCallback ( unaryCallback , matrixOfNumbers , name , false )
76+ assert . strictEqual ( optimizedUnaryMatrix . fn ( 1 ) , 2 )
77+ const optimizedTernaryMatrix = optimizeCallback ( ternaryCallback , matrixOfNumbers , name , false )
78+ assert . strictEqual ( optimizedTernaryMatrix . fn ( 1 , 2 , 3 ) , 7 )
79+ const optimizedTypedUnaryMatrix = optimizeCallback ( typedUnaryCallback , matrixOfNumbers , name , false )
80+ assert . strictEqual ( optimizedTypedUnaryMatrix . fn ( 1 ) , 2 )
81+ const optimizedTypedTernaryMatrix = optimizeCallback ( typedTernaryCallback , matrixOfNumbers , name , false )
82+ assert . strictEqual ( optimizedTypedTernaryMatrix . fn ( 1 , 2 , 3 ) , 7 )
83+ const optimizedUnarySparseMatrix = optimizeCallback ( unaryCallback , sparseMatrixOfNumbers , name , false )
84+ assert . strictEqual ( optimizedUnarySparseMatrix . fn ( 1 ) , 2 )
85+ const optimizedTernarySparseMatrix = optimizeCallback ( ternaryCallback , sparseMatrixOfNumbers , name , false )
86+ assert . strictEqual ( optimizedTernarySparseMatrix . fn ( 1 , 2 , 3 ) , 7 )
87+ } )
88+
4889}
4990)
0 commit comments