HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux wordpress-ubuntu-s-2vcpu-4gb-fra1-01 5.4.0-169-generic #187-Ubuntu SMP Thu Nov 23 14:52:28 UTC 2023 x86_64
User: root (0)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/zaklada/html/node_modules/babel-jest/node_modules/js-tokens/test/index.js
// Copyright 2014, 2015 Simon Lydell
// X11 (“MIT”) Licensed. (See LICENSE.)

var fs       = require("fs")
var util     = require("util")
var assert   = require("assert")
var jsTokens = require("../")


suite("jsTokens", function() {

  test("is a regex", function() {
    assert(util.isRegExp(jsTokens))
  })

})


suite("jsTokens.matchToToken", function() {

  test("is a function", function() {
    assert.equal(typeof jsTokens.matchToToken, "function")
  })

})


suite("tokens", function() {

  function token(name, fn) {
    suite(name, fn.bind(null, matchHelper.bind(null, name)))
  }

  function matchHelper(type, string, expected, extra) {
    extra = extra || {}
    if (typeof expected === "object") {
      extra = expected
      expected = undefined
    }
    jsTokens.lastIndex = 0
    var token = jsTokens.matchToToken(jsTokens.exec(string))

    test(string, function() {
      if (expected === false) {
        assert.notEqual(token.type, type)
      } else {
        assert.equal(token.type, type)
        assert.equal(
          token.value,
          (typeof expected === "string" ? expected : string)
        )
        if ("closed" in extra) {
          assert.equal(token.closed, extra.closed)
        } else if (type === "string") {
          assert.equal(token.closed, true)
        }
      }
    })
  }


  token("whitespace", function(match) {

    match(" ")
    match("    ")
    match(" a", " ")
    match("\t")
    match("\t\t\t")
    match("\ta", "\t")
    match("\n")
    match("\n\n\n")
    match("\na", "\n")
    match("\r")
    match("\r\r\r")
    match("\ra", "\r")
    match(" \t\n\r \r\n")
    match(" \t\n\r \r\n-1", " \t\n\r \r\n")
    match("\f")
    match("\v")

    match("\u00a0")
    match("\u1680")
    match("\u180e")
    match("\u2000")
    match("\u2001")
    match("\u2002")
    match("\u2003")
    match("\u2004")
    match("\u2005")
    match("\u2006")
    match("\u2007")
    match("\u2008")
    match("\u2009")
    match("\u200a")
    match("\u2028")
    match("\u2029")
    match("\u202f")
    match("\u205f")
    match("\u3000")

  })


  token("comment", function(match) {

    match("//")
    match("//comment")
    match("// comment")
    match("//comment ")
    match("///")
    match("//**//")
    match("//comment\n", "//comment")
    match("//comment\r", "//comment")
    match("//comment\u2028", "//comment")
    match("//comment\u2029", "//comment")
    match("//comment\r\n", "//comment")
    match("//comment \n", "//comment ")
    match("//comment\t\n", "//comment\t")

    match("/**/", {closed: true})
    match("/*comment*/", {closed: true})
    match("/* comment */", {closed: true})
    match("/***/", {closed: true})
    match("/*/*/", {closed: true})
    match("/*\n\r\u2028\u2029 \r\n*/", {closed: true})

    match("/*", {closed: false})
    match("/*/", {closed: false})
    match("/*unclosed", {closed: false})
    match("/*unclosed\nnew Line(this == code ? true : false)", {closed: false})

  })


  token("string", function(match) {

    match("''")
    match('""')
    match("``")
    match("'string'")
    match('"string"')
    match("`string`")
    match("'\\''")
    match('"\\""')
    match("`\\``")
    match("'\\\\''", "'\\\\'")
    match('"\\\\""', '"\\\\"')
    match("`\\\\``", "`\\\\`")
    match("'\\\\\\''")
    match('"\\\\\\""')
    match("`\\\\\\``")
    match("'\\u05aF'")
    match('"\\u05aF"')
    match("`\\u05aF`")
    match("'invalid escape sequence is OK: \\u'")
    match('"invalid escape sequence is OK: \\u"')
    match("`invalid escape sequence is OK: \\u`")
    match("'\\\n'")
    match('"\\\n"')
    match("`\\\n`")
    match("'\\\r'")
    match('"\\\r"')
    match("`\\\r`")
    match("'\\\u2028'")
    match('"\\\u2028"')
    match("`\\\u2028`")
    match("'\\\u2029'")
    match('"\\\u2029"')
    match("`\\\u2029`")
    match("'\\\r\n'")
    match('"\\\r\n"')
    match("`\\\r\n`")
    match("'string'code'another string'", "'string'")
    match('"string"code"another string"', '"string"')
    match("`string`code`another string`", "`string`")
    match("'\"'")
    match("'`'")
    match('"\'"')
    match('"`"')
    match("`'`")
    match('`"`')

    match("'", {closed: false})
    match('"', {closed: false})
    match("`", {closed: false})
    match("'unclosed", {closed: false})
    match('"unclosed', {closed: false})
    match("`unclosed", {closed: false})
    match("'\n", "'", {closed: false})
    match('"\n', '"', {closed: false})
    match("`\n", {closed: false})
    match("'\r", "'", {closed: false})
    match('"\r', '"', {closed: false})
    match("`\r", {closed: false})
    match("'\u2028", "'", {closed: false})
    match('"\u2028', '"', {closed: false})
    match("`\u2028", {closed: false})
    match("'\u2029", "'", {closed: false})
    match('"\u2029', '"', {closed: false})
    match("`\u2029", {closed: false})
    match("'\r\n", "'", {closed: false})
    match('"\r\n', '"', {closed: false})
    match("`\r\n", {closed: false})
    match("'\\\n", {closed: false})
    match('"\\\n', {closed: false})
    match("`\\\n", {closed: false})
    match("'\\\r", {closed: false})
    match('"\\\r', {closed: false})
    match("`\\\r", {closed: false})
    match("'\\\u2028", {closed: false})
    match('"\\\u2028', {closed: false})
    match("`\\\u2028", {closed: false})
    match("'\\\u2029", {closed: false})
    match('"\\\u2029', {closed: false})
    match("`\\\u2029", {closed: false})
    match("'\\\r\n", {closed: false})
    match('"\\\r\n', {closed: false})
    match("`\\\r\n", {closed: false})

    match("'${}'")
    match('"${}"')
    match("`${}`")
    match("'${a}'")
    match('"${a}"')
    match("`${a}`")
    match("'a${b}c'")
    match('"a${b}c"')
    match("`a${b}c`")
    match("'${'a'}'", "'${'")
    match('"${"a"}"', '"${"')
    match("`${`a`}`")
    match("`${`${a}`}`")
    match("`${fn({a: b})}`")
    match("`${fn({a: '{'})}`")
    match("`a${}${a}${ `${b\r}` + `${`c`}` } d $${\n(x=>{return x*2})(4)}$`")
    match("`\\${{{}}}a`")

    match("`a ${b c`.length", {closed: false})
    match("`a ${`b${c`} d`.length", {closed: false})
    match("`a ${ {c:d } e`.length", {closed: false})

  })


  token("regex", function(match) {

    match("//", false)
    match("/a/")
    match("/\\//")
    match("/\\\\//", "/\\\\/")
    match("/\\\\\\//")
    match("/[/]/")
    match("/[\\]]/")
    match("/[\\]/]/")
    match("/[\\\\]/]/", "/[\\\\]/")
    match("/[\\\\\\]/]/")
    match(/\\u05aF/)
    match("/invalid escape sequence is OK: \\u/")
    match("/?foo/")
    match("/*foo/", false)

    match("/a/g")
    match("/a/m")
    match("/a/i")
    match("/a/y")
    match("/a/u")
    match("/a/gmiyu")
    match("/a/myg")
    match("/a/e", false)
    match("/a/invalidFlags", false)
    match("/a/f00", false)

    match("/\n/", false)
    match("/\r/", false)
    match("/\u2028/", false)
    match("/\u2029/", false)
    match("/\r\n/", false)
    match("/\\\n/", false)
    match("/\\\r/", false)
    match("/\\\u2028/", false)
    match("/\\\u2029/", false)
    match("/\\\r\n/", false)
    match("/[\n]/", false)
    match("/[\r]/", false)
    match("/[\u2028]/", false)
    match("/[\u2029]/", false)
    match("/[\r\n]/", false)
    match("/[\\\n]/", false)
    match("/[\\\r]/", false)
    match("/[\\\u2028]/", false)
    match("/[\\\u2029]/", false)
    match("/[\\\r\n]/", false)

    match("/a/", "/a/")
    match("/a/g", "/a/g")
    match("/a/;", "/a/")
    match("/a/g;", "/a/g")
    match("/a/ ;", "/a/")
    match("/a/g ;", "/a/g")
    match("/a/, b", "/a/")
    match("/a/g, b", "/a/g")
    match("/a/ , b", "/a/")
    match("/a/g , b", "/a/g")
    match("/a/.exec(b)", "/a/")
    match("/a/g.exec(b)", "/a/g")
    match("/a/ .exec(b)", "/a/")
    match("/a/g .exec(b)", "/a/g")
    match("/a/['exec'](b)", "/a/")
    match("/a/g['exec'](b)", "/a/g")
    match("/a/ ['exec'](b)", "/a/")
    match("/a/g ['exec'](b)", "/a/g")
    match("/a/]", "/a/")
    match("/a/g]", "/a/g")
    match("/a/ ]", "/a/")
    match("/a/g ]", "/a/g")
    match("/a/)", "/a/")
    match("/a/g)", "/a/g")
    match("/a/ )", "/a/")
    match("/a/g )", "/a/g")
    match("/a/}", "/a/")
    match("/a/g}", "/a/g")
    match("/a/ }", "/a/")
    match("/a/g }", "/a/g")

    match("/a/+=b", "/a/")
    match("/a/ +=b", "/a/")
    match("/a/-=b", "/a/")
    match("/a/ -=b", "/a/")
    match("/a/*b", "/a/")
    match("/a/ *b", "/a/")
    match("/a/ *=b", "/a/")
    match("/a//b", "/a/")
    match("/a/ /b", "/a/")
    match("/a/ /=b", "/a/")
    match("/a/%b", "/a/")
    match("/a/ %b", "/a/")
    match("/a/%=b", "/a/")
    match("/a/ %=b", "/a/")
    match("/a/&b", "/a/")
    match("/a/ &b", "/a/")
    match("/a/&=b", "/a/")
    match("/a/ &=b", "/a/")
    match("/a/&&b", "/a/")
    match("/a/ &&b", "/a/")
    match("/a/|b", "/a/")
    match("/a/ |b", "/a/")
    match("/a/|=b", "/a/")
    match("/a/ |=b", "/a/")
    match("/a/||b", "/a/")
    match("/a/ ||b", "/a/")
    match("/a/^b", "/a/")
    match("/a/ ^b", "/a/")
    match("/a/^=b", "/a/")
    match("/a/ ^=b", "/a/")
    match("/a/<b", "/a/")
    match("/a/ <b", "/a/")
    match("/a/<=b", "/a/")
    match("/a/ <=b", "/a/")
    match("/a/<<b", "/a/")
    match("/a/ <<b", "/a/")
    match("/a/<<=b", "/a/")
    match("/a/ <<=b", "/a/")
    match("/a/>b", "/a/")
    match("/a/ >b", "/a/")
    match("/a/>=b", "/a/")
    match("/a/ >=b", "/a/")
    match("/a/>>b", "/a/")
    match("/a/ >>b", "/a/")
    match("/a/>>=b", "/a/")
    match("/a/ >>=b", "/a/")
    match("/a/>>>b", "/a/")
    match("/a/ >>>=b", "/a/")
    match("/a/>>>=b", "/a/")
    match("/a/ >>>b", "/a/")
    match("/a/!=b", "/a/")
    match("/a/ !=b", "/a/")
    match("/a/!==b", "/a/")
    match("/a/ !==b", "/a/")
    match("/a/=b", "/a/")
    match("/a/ =b", "/a/")
    match("/a/==b", "/a/")
    match("/a/ ==b", "/a/")
    match("/a/===b", "/a/")
    match("/a/ ===b", "/a/")

    match("/a/?b:c", "/a/")
    match("/a/ ? b : c", "/a/")
    match("/a/:c", "/a/")
    match("/a/g:c", "/a/g")
    match("/a/ : c", "/a/")
    match("/a/g : c", "/a/g")

    match("/a///", "/a/")
    match("/a/g//", "/a/g")
    match("/a/ //", "/a/")
    match("/a/g //", "/a/g")
    match("/a//**/", "/a/")
    match("/a/g/**/", "/a/g")
    match("/a/ /**/", "/a/")
    match("/a/g /**/", "/a/g")

    match("/a/g''", "/a/g")
    match("/a/g ''", "/a/g")

    match('/a/g""', "/a/g")
    match('/a/g ""', "/a/g")

    match("/a//b/", "/a/")
    match("/a/ /b/", "/a/")

    match("/a/g 0", "/a/g")
    match("/a/g 0.1", "/a/g")
    match("/a/g .1", "/a/g")
    match("/a/g 0x1", "/a/g")

    match("/a/g e", "/a/g")
    match("/a/g _", "/a/g")
    match("/a/g $", "/a/g")
    match("/a/g é", "/a/g")
    match("/a/g \\u0080", "/a/g")

  })


  token("number", function(match) {

    match("1")
    match("1.")
    match("1..", "1.")
    match("0.1")
    match(".1")
    match("0.1.", "0.1")

    match("-1", false)
    match("-1.", false)
    match("-1..", false)
    match("-0.1", false)
    match("-.1", false)
    match("-0.1.", false)
    match("-", false)

    match("1e1")
    match("1.e1")
    match("1.e1.", "1.e1")
    match("0.1e1")
    match(".1e1")
    match("0.1e1.", "0.1e1")

    match("1e+1")
    match("1e-1")
    match("1e0123")
    match("1e0.123", "1e0")
    match("1e0x123", "1e0")
    match("1E1")
    match("1E+1")
    match("1E-1")
    match("1E0123")
    match("1E0.123", "1E0")
    match("1E0x123", "1E0")
    match("1E0o123", "1E0")
    match("1E0b123", "1E0")

    match("e1", false)
    match("e+1", false)
    match("e-1", false)
    match("E1", false)
    match("E+1", false)
    match("E-1", false)

    match("-e1", false)
    match("-e+1", false)
    match("-e-1", false)
    match("-E1", false)
    match("-E+1", false)
    match("-E-1", false)

    match("0x1")
    match("0xa")
    match("0x015cF")
    match("0x1e1")
    match("0x1E1")
    match("0x1g1", "0x1")

    match("0X1")
    match("0Xa")
    match("0X015cF")
    match("0X1e1")
    match("0X1E1")
    match("0X1g1", "0X1")

    match("-0x1", false)
    match("-0xa", false)
    match("-0x015cF", false)
    match("-0x1e1", false)
    match("-0x1E1", false)
    match("-0x1g1", false)

    match("0x", "0")
    match("1x1", "1")
    match("0x1.", "0x1")
    match("0x1.1", "0x1")
    match("0.0x1", "0.0")
    match(".0x1", ".0")

    match("0o1")
    match("0oa", "0")
    match("0o01574")
    match("0o1e1", "0o1")
    match("0o1E1", "0o1")
    match("0o1g1", "0o1")

    match("0O1")
    match("0Oa", "0")
    match("0O01574")
    match("0O1e1", "0O1")
    match("0O1E1", "0O1")
    match("0O1g1", "0O1")

    match("-0o1", false)
    match("-0oa", false)
    match("-0o01574", false)
    match("-0o1e1", false)
    match("-0o1E1", false)
    match("-0o1g1", false)

    match("0o", "0")
    match("1o1", "1")
    match("0o1.", "0o1")
    match("0o1.1", "0o1")
    match("0.0o1", "0.0")
    match(".0o1", ".0")

    match("0b1")
    match("0ba", "0")
    match("0b01011")
    match("0b1e1", "0b1")
    match("0b1E1", "0b1")
    match("0b1g1", "0b1")

    match("0B1")
    match("0Ba", "0")
    match("0B01011")
    match("0B1e1", "0B1")
    match("0B1E1", "0B1")
    match("0B1g1", "0B1")

    match("-0b1", false)
    match("-0ba", false)
    match("-0b01011", false)
    match("-0b1e1", false)
    match("-0b1E1", false)
    match("-0b1g1", false)

    match("0b", "0")
    match("1b1", "1")
    match("0b1.", "0b1")
    match("0b1.1", "0b1")
    match("0.0b1", "0.0")
    match(".0b1", ".0")

  })


  token("name", function(match) {

    match("$")
    match("_")
    match("a")
    match("z")
    match("A")
    match("Z")
    match("å")
    match("π")
    match("0", false)
    match("0a", false)
    match("$0")
    match("_0")
    match("a0")
    match("z0")
    match("A0")
    match("Z0")
    match("å0")
    match("π0")
    match("a_56åπ")
    match("Iñtërnâtiônàlizætiøn☃💩") // The last character is Pile of poo.

    match("a\u00a0", "a")
    match("a\u1680", "a")
    match("a\u180e", "a")
    match("a\u2000", "a")
    match("a\u2001", "a")
    match("a\u2002", "a")
    match("a\u2003", "a")
    match("a\u2004", "a")
    match("a\u2005", "a")
    match("a\u2006", "a")
    match("a\u2007", "a")
    match("a\u2008", "a")
    match("a\u2009", "a")
    match("a\u200a", "a")
    match("a\u2028", "a")
    match("a\u2029", "a")
    match("a\u202f", "a")
    match("a\u205f", "a")
    match("a\u3000", "a")

    match("\\u0000")
    match("\\u15cF")
    match("\\u15cG", false)
    match("\\u000", false)
    match("\\u00000")
    match("a\\u0000b")

    match("\\u{0}")
    match("\\u{01}")
    match("\\u{012}")
    match("\\u{0123}")
    match("\\u{01234}")
    match("\\u{012345}")
    match("\\u{0123456}", false)
    match("\\u{15cF}")
    match("\\u{15cG}", false)
    match("a\\u{0000}b")

    match("\\x09", false)

  })


  token("punctuator", function(match) {

    match("+")
    match("++")
    match("+=")
    match("++=", "++")
    match("-")
    match("--")
    match("-=")
    match("--=", "--")
    match("*")
    match("**", "*")
    match("*=")
    match("**=", "*")
    match("/")
    match("//", false)
    match("/=")
    match("//=", false)
    match("%")
    match("%%", "%")
    match("%=")
    match("%%=", "%")
    match("&")
    match("&&")
    match("&=")
    match("&&=", "&&")
    match("|")
    match("||")
    match("|=")
    match("||=", "||")
    match("^")
    match("^^", "^")
    match("^=")
    match("^^=", "^")
    match("<")
    match("<<")
    match("<<<", "<<")
    match("<=")
    match("<<=")
    match(">")
    match(">>")
    match(">>>")
    match(">=")
    match(">>=")
    match(">>>=")
    match("!")
    match("!=")
    match("!==")
    match("!===", "!==")
    match("=")
    match("==")
    match("===")

    match("=>")
    match("==>", "==")
    match("=>>", "=>")

    match("...")
    match("..", ".")
    match(".")
    match("....", "...")

    match("?")
    match(":")
    match("~")

    match(";")
    match(".")
    match(",")
    match("[")
    match("]")
    match("(")
    match(")")
    match("{")
    match("}")

    match("/a/()", "/")
    match("/a/g()", "/")
    match("/a/ ()", "/")
    match("/a/g ()", "/")
    match("/a/{}", "/")
    match("/a/g{}", "/")
    match("/a/ {}", "/")
    match("/a/g {}", "/")

    match("/a/+b", "/")
    match("/a/ +b", "/")
    match("/a/++b", "/")
    match("/a/ ++b", "/")
    match("/a/-b", "/")
    match("/a/ -b", "/")
    match("/a/--b", "/")
    match("/a/ --b", "/")
    match("/a/!b", "/")
    match("/a/ !b", "/")
    match("/a/~b", "/")
    match("/a/ ~b", "/")

    match("/a/g+b", "/")
    match("/a/g +b", "/")
    match("/a/g+=b", "/")
    match("/a/g +=b", "/")
    match("/a/g++", "/")
    match("/a/g ++", "/")
    match("/a/g-b", "/")
    match("/a/g -b", "/")
    match("/a/g-=b", "/")
    match("/a/g -=b", "/")
    match("/a/g--", "/")
    match("/a/g --", "/")
    match("/a/g*b", "/")
    match("/a/g *b", "/")
    match("/a/g *=b", "/")
    match("/a/g/b", "/")
    match("/a/g /b", "/")
    match("/a/g /=b", "/")
    match("/a/g%b", "/")
    match("/a/g %b", "/")
    match("/a/g%=b", "/")
    match("/a/g %=b", "/")
    match("/a/g&b", "/")
    match("/a/g &b", "/")
    match("/a/g&=b", "/")
    match("/a/g &=b", "/")
    match("/a/g&&b", "/")
    match("/a/g &&b", "/")
    match("/a/g|b", "/")
    match("/a/g |b", "/")
    match("/a/g|=b", "/")
    match("/a/g |=b", "/")
    match("/a/g||b", "/")
    match("/a/g ||b", "/")
    match("/a/g^b", "/")
    match("/a/g ^b", "/")
    match("/a/g^=b", "/")
    match("/a/g ^=b", "/")
    match("/a/g<b", "/")
    match("/a/g <b", "/")
    match("/a/g<=b", "/")
    match("/a/g <=b", "/")
    match("/a/g<<b", "/")
    match("/a/g <<b", "/")
    match("/a/g<<=b", "/")
    match("/a/g <<=b", "/")
    match("/a/g>b", "/")
    match("/a/g >b", "/")
    match("/a/g>=b", "/")
    match("/a/g >=b", "/")
    match("/a/g>>b", "/")
    match("/a/g >>b", "/")
    match("/a/g>>=b", "/")
    match("/a/g >>=b", "/")
    match("/a/g>>>b", "/")
    match("/a/g >>>=b", "/")
    match("/a/g>>>=b", "/")
    match("/a/g >>>b", "/")
    match("/a/g!=b", "/")
    match("/a/g !=b", "/")
    match("/a/g!==b", "/")
    match("/a/g !==b", "/")
    match("/a/g=b", "/")
    match("/a/g =b", "/")
    match("/a/g==b", "/")
    match("/a/g ==b", "/")
    match("/a/g===b", "/")
    match("/a/g ===b", "/")

    match("/a/g?b:c", "/")
    match("/a/g ? b : c", "/")

    match("/a/''", "/")
    match("/a/ ''", "/")

    match('/a/""', "/")
    match('/a/ ""', "/")

    match("/a/g/b/", "/")
    match("/a/g /b/", "/")

    match("/a/0", "/")
    match("/a/ 0", "/")
    match("/a/0.1", "/")
    match("/a/ 0.1", "/")
    match("/a/.1", "/")
    match("/a/ .1", "/")

    match("/a/e", "/")
    match("/a/ e", "/")
    match("/a/_", "/")
    match("/a/ _", "/")
    match("/a/$", "/")
    match("/a/ $", "/")
    match("/a/é", "/")
    match("/a/ é", "/")
    match("/a/\\u0080", "/")
    match("/a/ \\u0080", "/")

    match("/a/ge", "/")
    match("/a/g_", "/")
    match("/a/g$", "/")
    match("/a/gé", "/")
    match("/a/g0", "/")
    match("/a/g\\u0080", "/")

  })


  token("invalid", function(match) {

    match("")
    match("@")
    match("#")
    match("\\")
    match("\\xa9", "\\")
    match("\u0000")
    match("\u007F")

  })

})


suite("tokenization", function() {

  function testFile(file) {
    var contents = fs.readFileSync("test/fixtures/" + file + ".js").toString()
    var expected = require("./fixtures/" + file + ".json")
    var actual = contents.match(jsTokens)
    test(file + ".js", function() {
      assert.deepEqual(actual, expected)
      assert.equal(actual.join(""), contents)
    })
  }

  testFile("base64")
  testFile("errors")
  testFile("regex")
  testFile("division")

})