@@ -24,7 +24,9 @@ assert.ok = (function (callback) {
24
24
} ) ( assert . ok ) ;
25
25
26
26
assert . match = function ( actual , expected , message ) {
27
- if ( ! actual . match ( expected ) ) assert . fail ( actual , expected , message || "expected {actual} to match {expected}" , "match" , assert . match ) ;
27
+ if ( ! expected . test ( actual ) ) {
28
+ assert . fail ( actual , expected , message || "expected {actual} to match {expected}" , "match" , assert . match ) ;
29
+ }
28
30
} ;
29
31
assert . matches = assert . match ;
30
32
@@ -42,9 +44,37 @@ assert.include = function (actual, expected, message) {
42
44
} ;
43
45
assert . includes = assert . include ;
44
46
47
+ assert . isEmpty = function ( actual , message ) {
48
+ if ( ( isObject ( actual ) && Object . keys ( actual ) . length > 0 ) || actual . length > 0 ) {
49
+ assert . fail ( actual , 0 , message || "expected {actual} to be empty" , "length" , assert . isEmpty ) ;
50
+ }
51
+ } ;
52
+
53
+ assert . isArray = function ( actual , message ) {
54
+ assertTypeOf ( actual , 'array' , message || "expected {actual} to be an Array" , assert . isArray ) ;
55
+ } ;
56
+ assert . isObject = function ( actual , message ) {
57
+ assertTypeOf ( actual , 'object' , message || "expected {actual} to be an Object" , assert . isObject ) ;
58
+ } ;
59
+ assert . isNumber = function ( actual , message ) {
60
+ assertTypeOf ( actual , 'number' , message || "expected {actual} to be a Number" , assert . isNumber ) ;
61
+ } ;
62
+ assert . isString = function ( actual , message ) {
63
+ assertTypeOf ( actual , 'string' , message || "expected {actual} to be a String" , assert . isString ) ;
64
+ } ;
65
+ assert . typeOf = function ( actual , expected , message ) {
66
+ assertTypeOf ( actual , expected , message , assert . typeOf ) ;
67
+ } ;
68
+
45
69
//
46
70
// Utility functions
47
71
//
72
+ function assertTypeOf ( actual , expected , message , caller ) {
73
+ if ( typeOf ( actual ) !== expected ) {
74
+ assert . fail ( actual , expected , message || "expected {actual} to be of type {expected}" , "typeOf" , caller ) ;
75
+ }
76
+ } ;
77
+
48
78
function isArray ( obj ) {
49
79
return Array . isArray ( obj ) ;
50
80
}
@@ -57,3 +87,17 @@ function isObject (obj) {
57
87
return typeof ( obj ) === 'object' && obj instanceof Object && ! isArray ( obj ) ;
58
88
}
59
89
90
+ // A better `typeof`
91
+ function typeOf ( value ) {
92
+ var s = typeof ( value ) ,
93
+ types = [ Object , Array , String , RegExp , Number , Function , Boolean , Date ] ;
94
+
95
+ if ( s === 'object' || s === 'function' ) {
96
+ if ( value ) {
97
+ types . forEach ( function ( t ) {
98
+ if ( value instanceof t ) { s = t . name . toLowerCase ( ) }
99
+ } ) ;
100
+ } else { s = 'null' }
101
+ }
102
+ return s ;
103
+ }
0 commit comments