@@ -299,9 +299,10 @@ module.exports = function (chai, _) {
299
299
}
300
300
301
301
function include ( val , msg ) {
302
+ if ( msg ) flag ( this , 'message' , msg ) ;
303
+
302
304
_ . expectTypes ( this , [ 'array' , 'object' , 'string' ] , flag ( this , 'ssfi' ) ) ;
303
305
304
- if ( msg ) flag ( this , 'message' , msg ) ;
305
306
var obj = flag ( this , 'object' )
306
307
, objType = _ . type ( obj ) . toLowerCase ( )
307
308
, isDeep = flag ( this , 'deep' )
@@ -535,8 +536,11 @@ module.exports = function (chai, _) {
535
536
Assertion . addProperty ( 'empty' , function ( ) {
536
537
var val = flag ( this , 'object' )
537
538
, ssfi = flag ( this , 'ssfi' )
539
+ , flagMsg = flag ( this , 'message' )
538
540
, itemsCount ;
539
541
542
+ flagMsg = flagMsg ? flagMsg + ': ' : '' ;
543
+
540
544
switch ( _ . type ( val ) . toLowerCase ( ) ) {
541
545
case 'array' :
542
546
case 'string' :
@@ -549,17 +553,17 @@ module.exports = function (chai, _) {
549
553
case 'weakmap' :
550
554
case 'weakset' :
551
555
throw new AssertionError (
552
- '.empty was passed a weak collection' ,
556
+ flagMsg + '.empty was passed a weak collection' ,
553
557
undefined ,
554
558
ssfi
555
559
) ;
556
560
case 'function' :
557
- var msg = '.empty was passed a function ' + _ . getName ( val ) ;
561
+ var msg = flagMsg + '.empty was passed a function ' + _ . getName ( val ) ;
558
562
throw new AssertionError ( msg . trim ( ) , undefined , ssfi ) ;
559
563
default :
560
564
if ( val !== Object ( val ) ) {
561
565
throw new AssertionError (
562
- '.empty was passed non-string primitive ' + _ . inspect ( val ) ,
566
+ flagMsg + '.empty was passed non-string primitive ' + _ . inspect ( val ) ,
563
567
undefined ,
564
568
ssfi
565
569
) ;
@@ -706,17 +710,19 @@ module.exports = function (chai, _) {
706
710
if ( msg ) flag ( this , 'message' , msg ) ;
707
711
var obj = flag ( this , 'object' )
708
712
, doLength = flag ( this , 'doLength' )
713
+ , flagMsg = flag ( this , 'message' )
709
714
, ssfi = flag ( this , 'ssfi' ) ;
710
715
711
716
if ( doLength ) {
712
- new Assertion ( obj , msg , ssfi , true ) . to . have . property ( 'length' ) ;
717
+ new Assertion ( obj , flagMsg , ssfi , true ) . to . have . property ( 'length' ) ;
713
718
} else {
714
- new Assertion ( obj , msg , ssfi , true ) . is . a ( 'number' ) ;
719
+ new Assertion ( obj , flagMsg , ssfi , true ) . is . a ( 'number' ) ;
715
720
}
716
721
717
722
if ( typeof n !== 'number' ) {
723
+ flagMsg = flagMsg ? flagMsg + ': ' : '' ;
718
724
throw new AssertionError (
719
- 'the argument to above must be a number' ,
725
+ flagMsg + 'the argument to above must be a number' ,
720
726
undefined ,
721
727
ssfi
722
728
) ;
@@ -772,17 +778,19 @@ module.exports = function (chai, _) {
772
778
if ( msg ) flag ( this , 'message' , msg ) ;
773
779
var obj = flag ( this , 'object' )
774
780
, doLength = flag ( this , 'doLength' )
781
+ , flagMsg = flag ( this , 'message' )
775
782
, ssfi = flag ( this , 'ssfi' ) ;
776
783
777
784
if ( doLength ) {
778
- new Assertion ( obj , msg , ssfi , true ) . to . have . property ( 'length' ) ;
785
+ new Assertion ( obj , flagMsg , ssfi , true ) . to . have . property ( 'length' ) ;
779
786
} else {
780
- new Assertion ( obj , msg , ssfi , true ) . is . a ( 'number' ) ;
787
+ new Assertion ( obj , flagMsg , ssfi , true ) . is . a ( 'number' ) ;
781
788
}
782
789
783
790
if ( typeof n !== 'number' ) {
791
+ flagMsg = flagMsg ? flagMsg + ': ' : '' ;
784
792
throw new AssertionError (
785
- 'the argument to least must be a number' ,
793
+ flagMsg + 'the argument to least must be a number' ,
786
794
undefined ,
787
795
ssfi
788
796
) ;
@@ -838,17 +846,19 @@ module.exports = function (chai, _) {
838
846
if ( msg ) flag ( this , 'message' , msg ) ;
839
847
var obj = flag ( this , 'object' )
840
848
, doLength = flag ( this , 'doLength' )
849
+ , flagMsg = flag ( this , 'message' )
841
850
, ssfi = flag ( this , 'ssfi' ) ;
842
851
843
852
if ( doLength ) {
844
- new Assertion ( obj , msg , ssfi , true ) . to . have . property ( 'length' ) ;
853
+ new Assertion ( obj , flagMsg , ssfi , true ) . to . have . property ( 'length' ) ;
845
854
} else {
846
- new Assertion ( obj , msg , ssfi , true ) . is . a ( 'number' ) ;
855
+ new Assertion ( obj , flagMsg , ssfi , true ) . is . a ( 'number' ) ;
847
856
}
848
857
849
858
if ( typeof n !== 'number' ) {
859
+ flagMsg = flagMsg ? flagMsg + ': ' : '' ;
850
860
throw new AssertionError (
851
- 'the argument to below must be a number' ,
861
+ flagMsg + 'the argument to below must be a number' ,
852
862
undefined ,
853
863
ssfi
854
864
) ;
@@ -904,17 +914,19 @@ module.exports = function (chai, _) {
904
914
if ( msg ) flag ( this , 'message' , msg ) ;
905
915
var obj = flag ( this , 'object' )
906
916
, doLength = flag ( this , 'doLength' )
917
+ , flagMsg = flag ( this , 'message' )
907
918
, ssfi = flag ( this , 'ssfi' ) ;
908
919
909
920
if ( doLength ) {
910
- new Assertion ( obj , msg , ssfi , true ) . to . have . property ( 'length' ) ;
921
+ new Assertion ( obj , flagMsg , ssfi , true ) . to . have . property ( 'length' ) ;
911
922
} else {
912
- new Assertion ( obj , msg , ssfi , true ) . is . a ( 'number' ) ;
923
+ new Assertion ( obj , flagMsg , ssfi , true ) . is . a ( 'number' ) ;
913
924
}
914
925
915
926
if ( typeof n !== 'number' ) {
927
+ flagMsg = flagMsg ? flagMsg + ': ' : '' ;
916
928
throw new AssertionError (
917
- 'the argument to most must be a number' ,
929
+ flagMsg + 'the argument to most must be a number' ,
918
930
undefined ,
919
931
ssfi
920
932
) ;
@@ -970,17 +982,19 @@ module.exports = function (chai, _) {
970
982
var obj = flag ( this , 'object' )
971
983
, range = start + '..' + finish
972
984
, doLength = flag ( this , 'doLength' )
985
+ , flagMsg = flag ( this , 'message' )
973
986
, ssfi = flag ( this , 'ssfi' ) ;
974
987
975
988
if ( doLength ) {
976
- new Assertion ( obj , msg , ssfi , true ) . to . have . property ( 'length' ) ;
989
+ new Assertion ( obj , flagMsg , ssfi , true ) . to . have . property ( 'length' ) ;
977
990
} else {
978
- new Assertion ( obj , msg , ssfi , true ) . is . a ( 'number' ) ;
991
+ new Assertion ( obj , flagMsg , ssfi , true ) . is . a ( 'number' ) ;
979
992
}
980
993
981
994
if ( typeof start !== 'number' || typeof finish !== 'number' ) {
995
+ flagMsg = flagMsg ? flagMsg + ': ' : '' ;
982
996
throw new AssertionError (
983
- 'the arguments to within must be numbers' ,
997
+ flagMsg + 'the arguments to within must be numbers' ,
984
998
undefined ,
985
999
ssfi
986
1000
) ;
@@ -1026,6 +1040,7 @@ module.exports = function (chai, _) {
1026
1040
1027
1041
var target = flag ( this , 'object' )
1028
1042
var ssfi = flag ( this , 'ssfi' ) ;
1043
+ var flagMsg = flag ( this , 'message' ) ;
1029
1044
var validInstanceOfTarget = constructor === Object ( constructor ) && (
1030
1045
typeof constructor === 'function' ||
1031
1046
( typeof Symbol !== 'undefined' &&
@@ -1034,9 +1049,10 @@ module.exports = function (chai, _) {
1034
1049
) ;
1035
1050
1036
1051
if ( ! validInstanceOfTarget ) {
1052
+ flagMsg = flagMsg ? flagMsg + ': ' : '' ;
1037
1053
var constructorType = constructor === null ? 'null' : typeof constructor ;
1038
1054
throw new AssertionError (
1039
- 'The instanceof assertion needs a constructor but ' + constructorType + ' was given.' ,
1055
+ flagMsg + 'The instanceof assertion needs a constructor but ' + constructorType + ' was given.' ,
1040
1056
undefined ,
1041
1057
ssfi
1042
1058
) ;
@@ -1165,11 +1181,13 @@ module.exports = function (chai, _) {
1165
1181
1166
1182
var isNested = flag ( this , 'nested' )
1167
1183
, isOwn = flag ( this , 'own' )
1184
+ , flagMsg = flag ( this , 'message' )
1168
1185
, ssfi = flag ( this , 'ssfi' ) ;
1169
1186
1170
1187
if ( isNested && isOwn ) {
1188
+ flagMsg = flagMsg ? flagMsg + ': ' : '' ;
1171
1189
throw new AssertionError (
1172
- 'The "nested" and "own" flags cannot be combined.' ,
1190
+ flagMsg + 'The "nested" and "own" flags cannot be combined.' ,
1173
1191
undefined ,
1174
1192
ssfi
1175
1193
) ;
@@ -1325,8 +1343,9 @@ module.exports = function (chai, _) {
1325
1343
function assertLength ( n , msg ) {
1326
1344
if ( msg ) flag ( this , 'message' , msg ) ;
1327
1345
var obj = flag ( this , 'object' )
1346
+ , flagMsg = flag ( this , 'message' )
1328
1347
, ssfi = flag ( this , 'ssfi' ) ;
1329
- new Assertion ( obj , msg , ssfi , true ) . to . have . property ( 'length' ) ;
1348
+ new Assertion ( obj , flagMsg , ssfi , true ) . to . have . property ( 'length' ) ;
1330
1349
var len = obj . length ;
1331
1350
1332
1351
this . assert (
@@ -1385,8 +1404,9 @@ module.exports = function (chai, _) {
1385
1404
Assertion . addMethod ( 'string' , function ( str , msg ) {
1386
1405
if ( msg ) flag ( this , 'message' , msg ) ;
1387
1406
var obj = flag ( this , 'object' )
1407
+ , flagMsg = flag ( this , 'message' )
1388
1408
, ssfi = flag ( this , 'ssfi' ) ;
1389
- new Assertion ( obj , msg , ssfi , true ) . is . a ( 'string' ) ;
1409
+ new Assertion ( obj , flagMsg , ssfi , true ) . is . a ( 'string' ) ;
1390
1410
1391
1411
this . assert (
1392
1412
~ obj . indexOf ( str )
@@ -1458,7 +1478,10 @@ module.exports = function (chai, _) {
1458
1478
, str
1459
1479
, deepStr = ''
1460
1480
, ok = true
1461
- , mixedArgsMsg = 'when testing keys against an object or an array you must give a single Array|Object|String argument or multiple String arguments' ;
1481
+ , flagMsg = flag ( this , 'message' ) ;
1482
+
1483
+ flagMsg = flagMsg ? flagMsg + ': ' : '' ;
1484
+ var mixedArgsMsg = flagMsg + 'when testing keys against an object or an array you must give a single Array|Object|String argument or multiple String arguments' ;
1462
1485
1463
1486
if ( objType === 'Map' || objType === 'Set' ) {
1464
1487
deepStr = isDeep ? 'deeply ' : '' ;
@@ -1497,7 +1520,7 @@ module.exports = function (chai, _) {
1497
1520
}
1498
1521
1499
1522
if ( ! keys . length ) {
1500
- throw new AssertionError ( 'keys required' , undefined , ssfi ) ;
1523
+ throw new AssertionError ( flagMsg + 'keys required' , undefined , ssfi ) ;
1501
1524
}
1502
1525
1503
1526
var len = keys . length
@@ -1701,8 +1724,9 @@ module.exports = function (chai, _) {
1701
1724
if ( msg ) flag ( this , 'message' , msg ) ;
1702
1725
var obj = flag ( this , 'object' )
1703
1726
, ssfi = flag ( this , 'ssfi' )
1727
+ , flagMsg = flag ( this , 'message' )
1704
1728
, negate = flag ( this , 'negate' ) || false ;
1705
- new Assertion ( obj , msg , ssfi , true ) . is . a ( 'function' ) ;
1729
+ new Assertion ( obj , flagMsg , ssfi , true ) . is . a ( 'function' ) ;
1706
1730
1707
1731
if ( errorLike instanceof RegExp || typeof errorLike === 'string' ) {
1708
1732
errMsgMatcher = errorLike ;
@@ -1938,12 +1962,14 @@ module.exports = function (chai, _) {
1938
1962
function closeTo ( expected , delta , msg ) {
1939
1963
if ( msg ) flag ( this , 'message' , msg ) ;
1940
1964
var obj = flag ( this , 'object' )
1965
+ , flagMsg = flag ( this , 'message' )
1941
1966
, ssfi = flag ( this , 'ssfi' ) ;
1942
1967
1943
- new Assertion ( obj , msg , ssfi , true ) . is . a ( 'number' ) ;
1968
+ new Assertion ( obj , flagMsg , ssfi , true ) . is . a ( 'number' ) ;
1944
1969
if ( typeof expected !== 'number' || typeof delta !== 'number' ) {
1970
+ flagMsg = flagMsg ? flagMsg + ': ' : '' ;
1945
1971
throw new AssertionError (
1946
- 'the arguments to closeTo or approximately must be numbers' ,
1972
+ flagMsg + 'the arguments to closeTo or approximately must be numbers' ,
1947
1973
undefined ,
1948
1974
ssfi
1949
1975
) ;
@@ -2039,10 +2065,11 @@ module.exports = function (chai, _) {
2039
2065
Assertion . addMethod ( 'members' , function ( subset , msg ) {
2040
2066
if ( msg ) flag ( this , 'message' , msg ) ;
2041
2067
var obj = flag ( this , 'object' )
2068
+ , flagMsg = flag ( this , 'message' )
2042
2069
, ssfi = flag ( this , 'ssfi' ) ;
2043
2070
2044
- new Assertion ( obj , msg , ssfi , true ) . to . be . an ( 'array' ) ;
2045
- new Assertion ( subset , msg , ssfi , true ) . to . be . an ( 'array' ) ;
2071
+ new Assertion ( obj , flagMsg , ssfi , true ) . to . be . an ( 'array' ) ;
2072
+ new Assertion ( subset , flagMsg , ssfi , true ) . to . be . an ( 'array' ) ;
2046
2073
2047
2074
var contains = flag ( this , 'contains' ) ;
2048
2075
var ordered = flag ( this , 'ordered' ) ;
@@ -2096,8 +2123,9 @@ module.exports = function (chai, _) {
2096
2123
function oneOf ( list , msg ) {
2097
2124
if ( msg ) flag ( this , 'message' , msg ) ;
2098
2125
var expected = flag ( this , 'object' )
2126
+ , flagMsg = flag ( this , 'message' )
2099
2127
, ssfi = flag ( this , 'ssfi' ) ;
2100
- new Assertion ( list , msg , ssfi , true ) . to . be . an ( 'array' ) ;
2128
+ new Assertion ( list , flagMsg , ssfi , true ) . to . be . an ( 'array' ) ;
2101
2129
2102
2130
this . assert (
2103
2131
list . indexOf ( expected ) > - 1
@@ -2135,15 +2163,16 @@ module.exports = function (chai, _) {
2135
2163
function assertChanges ( target , prop , msg ) {
2136
2164
if ( msg ) flag ( this , 'message' , msg ) ;
2137
2165
var fn = flag ( this , 'object' )
2166
+ , flagMsg = flag ( this , 'message' )
2138
2167
, ssfi = flag ( this , 'ssfi' ) ;
2139
- new Assertion ( fn , msg , ssfi , true ) . is . a ( 'function' ) ;
2168
+ new Assertion ( fn , flagMsg , ssfi , true ) . is . a ( 'function' ) ;
2140
2169
2141
2170
var initial ;
2142
2171
if ( ! prop ) {
2143
- new Assertion ( target , msg , ssfi , true ) . is . a ( 'function' ) ;
2172
+ new Assertion ( target , flagMsg , ssfi , true ) . is . a ( 'function' ) ;
2144
2173
initial = target ( ) ;
2145
2174
} else {
2146
- new Assertion ( target , msg , ssfi , true ) . to . have . property ( prop ) ;
2175
+ new Assertion ( target , flagMsg , ssfi , true ) . to . have . property ( prop ) ;
2147
2176
initial = target [ prop ] ;
2148
2177
}
2149
2178
@@ -2198,20 +2227,21 @@ module.exports = function (chai, _) {
2198
2227
function assertIncreases ( target , prop , msg ) {
2199
2228
if ( msg ) flag ( this , 'message' , msg ) ;
2200
2229
var fn = flag ( this , 'object' )
2230
+ , flagMsg = flag ( this , 'message' )
2201
2231
, ssfi = flag ( this , 'ssfi' ) ;
2202
- new Assertion ( fn , msg , ssfi , true ) . is . a ( 'function' ) ;
2232
+ new Assertion ( fn , flagMsg , ssfi , true ) . is . a ( 'function' ) ;
2203
2233
2204
2234
var initial ;
2205
2235
if ( ! prop ) {
2206
- new Assertion ( target , msg , ssfi , true ) . is . a ( 'function' ) ;
2236
+ new Assertion ( target , flagMsg , ssfi , true ) . is . a ( 'function' ) ;
2207
2237
initial = target ( ) ;
2208
2238
} else {
2209
- new Assertion ( target , msg , ssfi , true ) . to . have . property ( prop ) ;
2239
+ new Assertion ( target , flagMsg , ssfi , true ) . to . have . property ( prop ) ;
2210
2240
initial = target [ prop ] ;
2211
2241
}
2212
2242
2213
2243
// Make sure that the target is a number
2214
- new Assertion ( initial , msg , ssfi , true ) . is . a ( 'number' ) ;
2244
+ new Assertion ( initial , flagMsg , ssfi , true ) . is . a ( 'number' ) ;
2215
2245
2216
2246
fn ( ) ;
2217
2247
@@ -2263,20 +2293,21 @@ module.exports = function (chai, _) {
2263
2293
function assertDecreases ( target , prop , msg ) {
2264
2294
if ( msg ) flag ( this , 'message' , msg ) ;
2265
2295
var fn = flag ( this , 'object' )
2296
+ , flagMsg = flag ( this , 'message' )
2266
2297
, ssfi = flag ( this , 'ssfi' ) ;
2267
- new Assertion ( fn , msg , ssfi , true ) . is . a ( 'function' ) ;
2298
+ new Assertion ( fn , flagMsg , ssfi , true ) . is . a ( 'function' ) ;
2268
2299
2269
2300
var initial ;
2270
2301
if ( ! prop ) {
2271
- new Assertion ( target , msg , ssfi , true ) . is . a ( 'function' ) ;
2302
+ new Assertion ( target , flagMsg , ssfi , true ) . is . a ( 'function' ) ;
2272
2303
initial = target ( ) ;
2273
2304
} else {
2274
- new Assertion ( target , msg , ssfi , true ) . to . have . property ( prop ) ;
2305
+ new Assertion ( target , flagMsg , ssfi , true ) . to . have . property ( prop ) ;
2275
2306
initial = target [ prop ] ;
2276
2307
}
2277
2308
2278
2309
// Make sure that the target is a number
2279
- new Assertion ( initial , msg , ssfi , true ) . is . a ( 'number' ) ;
2310
+ new Assertion ( initial , flagMsg , ssfi , true ) . is . a ( 'number' ) ;
2280
2311
2281
2312
fn ( ) ;
2282
2313
@@ -2315,7 +2346,9 @@ module.exports = function (chai, _) {
2315
2346
* @api public
2316
2347
*/
2317
2348
2318
- function assertDelta ( delta ) {
2349
+ function assertDelta ( delta , msg ) {
2350
+ if ( msg ) flag ( this , 'message' , msg ) ;
2351
+
2319
2352
var msgObj = flag ( this , 'deltaMsgObj' ) ;
2320
2353
var initial = flag ( this , 'initialDeltaValue' ) ;
2321
2354
var final = flag ( this , 'finalDeltaValue' ) ;
0 commit comments