Asserter regexp()

regexp() behavior

Does not contains assertions from the assertions containers.

test
        .value(test.regexp(new RegExp()).hasHeader)
          .isUndefined()
        .value(test.regexp(new RegExp()).hasMessage)
          .isUndefined()
        .value(test.regexp(new RegExp()).isInfinite)
          .isUndefined()
      ;

Assert that the tested value is an instance of RegExp.

test
        .regexp(/foobar/)
        .regexp(new RegExp('foo', 'i'))
        .case('Test failure', function(){
          test
            .exception(function(){
              test.regexp({});
            })
            .exception(function(){
              test.regexp([]);
            })
            .exception(function(){
              test.regexp('');
            })
            .exception(function(){
              test.regexp();
            })
            .exception(function(){
              test.regexp(undefined);
            })
            .exception(function(){
              test.regexp(null);
            })
            .exception(function(){
              test.regexp(true);
            })
            .exception(function(){
              test.regexp(false);
            })
            .exception(function(){
              test.regexp(0);
            })
            .exception(function(){
              test.regexp(1);
            })
            .exception(function(){
              test.regexp('[a-z]');
            })
            .exception(function(){
              test.regexp('/foobar/');
            })
            .exception(function(){
              test.regexp(RegExp);
            })
            .exception(function(){
              test.regexp(new Date());
            })
          ;
        })
      ;

Assertions of regexp()

is(expected).

var regexp = new RegExp(/[a-z]/);
      test
        .regexp(regexp)
          .is(new RegExp(/[a-z]/))
        .exception(function(){
          test.regexp(regexp).is(/A-Z/);
        })
      ;

isNot(expected).

var regexp = new RegExp(/[a-z]/);
      test
        .regexp(regexp)
          .isNot(new RegExp(/[A-Z]/))
        .exception(function(){
          test.regexp(regexp).isNot(/[a-z]/);
        })
      ;

isIdenticalTo(expected).

var
        regexp = new RegExp(/[a-z]/),
        ref = regexp
      ;
      test
        .regexp(regexp)
          .isIdenticalTo(ref)
        .exception(function(){
          test.regexp(regexp).isIdenticalTo(/[a-z]/);
        })
      ;

isNotIdenticalTo(expected).

var regexp = new RegExp(/[a-z]/);
      test
        .regexp(regexp)
          .isNotIdenticalTo(new RegExp(/[a-z]/))
        .exception(function(){
          test.regexp(regexp).isNotIdenticalTo(regexp);
        })
      ;

isEqualTo(expected).

var
        regexp = new RegExp(/[a-z]/),
        ref = regexp
      ;
      test
        .regexp(regexp)
          .isEqualTo(ref)
        .exception(function(){
          test.regexp(regexp).isEqualTo(/[a-z]/);
        })
      ;

isNotEqualTo(expected).

var regexp = new RegExp(/[a-z]/);
      test
        .regexp(regexp)
          .isNotEqualTo(new RegExp(/[a-z]/))
        .exception(function(){
          test.regexp(regexp).isNotEqualTo(regexp);
        })
      ;

match(expected).

var
        regexp = new RegExp(/[a-z]/),
        ref = regexp
      ;
      test
        .regexp(regexp)
          .match(function(reg){
            return reg === ref;
          })
        .exception(function(){
          test.regexp(regexp).match(function(actual){
            return actual.source == '[A-Z]';
          });
        })
      ;

notMatch(expected).

var
        regexp = new RegExp(/[a-z]/),
        ref = regexp
      ;
      test
        .regexp(regexp)
          .notMatch(function(actual){
            var reg = new RegExp(/[a-z]/);
            return reg === ref || reg === actual;
          })
        .exception(function(){
          test.regexp(regexp).notMatch(function(actual){
            return actual.source == '[a-z]';
          });
        })
      ;

isValid(expected).

var
        regexp = new RegExp(/[a-z]/),
        ref = regexp
      ;
      test
        .regexp(regexp)
          .isValid(function(reg){
            return reg === ref;
          })
        .exception(function(){
          test.regexp(regexp).isValid(function(actual){
            return actual.source == '[A-Z]';
          });
        })
      ;

isNotValid(expected).

var
        regexp = new RegExp(/[a-z]/),
        ref = regexp
      ;
      test
        .regexp(regexp)
          .isNotValid(function(actual){
            var reg = new RegExp(/[a-z]/);
            return reg === ref || reg === actual;
          })
        .exception(function(){
          test.regexp(regexp).isNotValid(function(actual){
            return actual.source == '[a-z]';
          });
        })
      ;

isEnumerable(property).

var regexp = new RegExp(/[a-z]/);
      // define an enumerable property
      Object.defineProperty(regexp, 'myCustom', {
        enumerable: true, value: 'static'
      });
      test
        .regexp(regexp)
          .isEnumerable('myCustom')
        .exception(function(){
          test.regexp(regexp).isEnumerable('ignoreCase');
        })
      ;

isNotEnumerable(property).

var regexp = new RegExp(/[a-z]/);
      // define an enumerable property
      Object.defineProperty(regexp, 'myCustom', {
        enumerable: true, value: 'static'
      });
      test
        .regexp(regexp)
          .isNotEnumerable('lastIndex')
          .isNotEnumerable('ignoreCase')
          .isNotEnumerable('multiline')
        .exception(function(){
          test.regexp(regexp).isNotEnumerable('myCustom');
        })
      ;

isFrozen.

var regexp = new RegExp(/[a-z]/);
      Object.freeze(regexp);
      test
        .regexp(regexp)
          .isFrozen()
        .exception(function(){
          test.regexp(/[a-z]/).isFrozen();
        })
      ;

isNotFrozen.

var
        regexp = new RegExp(/[a-z]/),
        regexpFrozen = new RegExp(/[a-z]/)
      ;
      Object.freeze(regexpFrozen);
      test
        .regexp(regexp)
          .isNotFrozen()
        .exception(function(){
          test.regexp(regexpFrozen).isNotFrozen();
        })
      ;

hasProperty(property [, value]).

test
        .regexp(/[a-z]/)
          .hasProperty('lastIndex')
          .hasProperty('constructor')
        .exception(function(){
          test.regexp(/[a-z]/).hasProperty('foo');
        })
      ;

hasNotProperty(property [, value]).

test
  .regexp(/[a-z]/)
    .hasNotProperty('foobar')
  .exception(function(){
    test.regexp(/[a-z]/).hasNotProperty('lastIndex');
  })
;

hasOwnProperty(property [, value]).

test
  .regexp(/[a-z]/)
    .hasOwnProperty('lastIndex')
  .exception(function(){
    test.regexp(/[a-z]/).hasOwnProperty('constructor');
  })
;

hasNotOwnProperty(property [, value]).

test
  .regexp(/[a-z]/)
    .hasNotOwnProperty('constructor')
  .exception(function(){
    test.regexp(/[a-z]/).hasNotOwnProperty('lastIndex');
  })
;

hasKey(key [,value ]).

test
  .regexp(/[a-z]/)
    .hasKey('lastIndex')
    .hasKey('constructor')
  .exception(function(){
    test.regexp(/[a-z]/).hasKey('foo');
  })
;

notHasKey(key [,value]).

test
  .regexp(/[a-z]/)
    .notHasKey('foobar')
  .exception(function(){
    test.regexp(/[a-z]/).notHasKey('lastIndex');
  })
;