1
0
Fork 0
mirror of https://github.com/jashkenas/coffeescript.git synced 2022-11-09 12:23:24 -05:00
jashkenas--coffeescript/test/regexps.coffee

64 lines
1.3 KiB
CoffeeScript
Raw Normal View History

2010-12-29 00:48:54 -05:00
# Regular Expression Literals
# ---------------------------
2011-01-03 04:17:00 -05:00
# TODO: add method invocation tests: /regex/.toString()
2010-12-29 14:06:57 -05:00
# * Regexen
# * Heregexen
2010-12-29 00:48:54 -05:00
test "basic regular expression literals", ->
ok 'a'.match(/a/)
ok 'a'.match /a/
ok 'a'.match(/a/g)
ok 'a'.match /a/g
test "division is not confused for a regular expression", ->
eq 2, 4 / 2 / 1
a = 4
b = 2
g = 1
eq 2, a / b/g
a = 10
b = a /= 4 / 2
eq a, 5
2010-12-29 00:48:54 -05:00
obj = method: -> 2
two = 2
eq 2, (obj.method()/two + obj.method()/two)
i = 1
eq 2, (4)/2/i
eq 1, i/i/i
test "#764: regular expressions should be indexable", ->
eq /0/['source'], ///#{0}///['source']
test "#584: slashes are allowed unescaped in character classes", ->
ok /^a\/[/]b$/.test 'a//b'
test "#1724: regular expressions beginning with `*`", ->
throws -> CoffeeScript.compile '/*/'
2010-12-29 00:48:54 -05:00
2011-03-11 21:41:12 -05:00
# Heregexe(n|s)
2010-12-29 00:48:54 -05:00
test "a heregex will ignore whitespace and comments", ->
eq /^I'm\x20+[a]\s+Heregex?\/\/\//gim + '', ///
^ I'm \x20+ [a] \s+
Heregex? / // # or not
///gim + ''
test "an empty heregex will compile to an empty, non-capturing group", ->
eq /(?:)/ + '', /// /// + ''
test "#1724: regular expressions beginning with `*`", ->
throws -> CoffeeScript.compile '/// * ///'
test "empty regular expressions with flags", ->
fn = (x) -> x
a = "" + //i
fn ""
eq '/(?:)/i', a