// Copyright 2009 the Sputnik authors.  All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.

/*---
info: |
    The production CharacterClassEscape :: W evaluates by returning the set of all characters not
    included in the set returned by CharacterClassEscape :: w
es5id: 15.10.2.12_A4_T5
description: non-w
---*/

var non_w = "\f\n\r\t\v~`!@#$%^&*()-+={[}]|\\:;'<,>./? " + '"';
var regexp_W = /\W/g;
var k = 0;
while (regexp_W.exec(non_w) !== null) {
   k++;
}

assert.sameValue(non_w.length, k, 'The value of non_w.length is expected to equal the value of k');

var non_W = "_0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";

assert.sameValue(
  /\W/.exec(non_W),
  null,
  '/W/.exec(""_0123456789_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"") must return null'
);