|
|
|
@ -66,10 +66,10 @@ fn concat() {
|
|
|
|
|
eprintln!("{}", forward(&mut engine, init)); |
|
|
|
|
|
|
|
|
|
let a = forward(&mut engine, "hello.concat(world, nice)"); |
|
|
|
|
assert_eq!(a, "Hello, world! Have a nice day."); |
|
|
|
|
assert_eq!(a, "\"Hello, world! Have a nice day.\""); |
|
|
|
|
|
|
|
|
|
let b = forward(&mut engine, "hello + world + nice"); |
|
|
|
|
assert_eq!(b, "Hello, world! Have a nice day."); |
|
|
|
|
assert_eq!(b, "\"Hello, world! Have a nice day.\""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#[test] |
|
|
|
@ -83,7 +83,7 @@ fn generic_concat() {
|
|
|
|
|
eprintln!("{}", forward(&mut engine, init)); |
|
|
|
|
|
|
|
|
|
let a = forward(&mut engine, "number.concat(' - 50', ' = 50')"); |
|
|
|
|
assert_eq!(a, "100 - 50 = 50"); |
|
|
|
|
assert_eq!(a, "\"100 - 50 = 50\""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#[allow(clippy::unwrap_used)] |
|
|
|
@ -118,14 +118,14 @@ fn repeat() {
|
|
|
|
|
|
|
|
|
|
forward(&mut engine, init); |
|
|
|
|
|
|
|
|
|
assert_eq!(forward(&mut engine, "empty.repeat(0)"), ""); |
|
|
|
|
assert_eq!(forward(&mut engine, "empty.repeat(1)"), ""); |
|
|
|
|
assert_eq!(forward(&mut engine, "empty.repeat(0)"), "\"\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "empty.repeat(1)"), "\"\""); |
|
|
|
|
|
|
|
|
|
assert_eq!(forward(&mut engine, "en.repeat(0)"), ""); |
|
|
|
|
assert_eq!(forward(&mut engine, "zh.repeat(0)"), ""); |
|
|
|
|
assert_eq!(forward(&mut engine, "en.repeat(0)"), "\"\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "zh.repeat(0)"), "\"\""); |
|
|
|
|
|
|
|
|
|
assert_eq!(forward(&mut engine, "en.repeat(1)"), "english"); |
|
|
|
|
assert_eq!(forward(&mut engine, "zh.repeat(2)"), "中文中文"); |
|
|
|
|
assert_eq!(forward(&mut engine, "en.repeat(1)"), "\"english\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "zh.repeat(2)"), "\"中文中文\""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#[test] |
|
|
|
@ -144,7 +144,7 @@ fn repeat_throws_when_count_is_negative() {
|
|
|
|
|
} |
|
|
|
|
"# |
|
|
|
|
), |
|
|
|
|
"RangeError: repeat count cannot be a negative number" |
|
|
|
|
"\"RangeError: repeat count cannot be a negative number\"" |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -164,7 +164,7 @@ fn repeat_throws_when_count_is_infinity() {
|
|
|
|
|
} |
|
|
|
|
"# |
|
|
|
|
), |
|
|
|
|
"RangeError: repeat count cannot be infinity" |
|
|
|
|
"\"RangeError: repeat count cannot be infinity\"" |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -184,7 +184,7 @@ fn repeat_throws_when_count_overflows_max_length() {
|
|
|
|
|
} |
|
|
|
|
"# |
|
|
|
|
), |
|
|
|
|
"RangeError: repeat count must not overflow maximum string length" |
|
|
|
|
"\"RangeError: repeat count must not overflow maximum string length\"" |
|
|
|
|
); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -196,11 +196,11 @@ fn repeat_generic() {
|
|
|
|
|
|
|
|
|
|
forward(&mut engine, init); |
|
|
|
|
|
|
|
|
|
assert_eq!(forward(&mut engine, "(0).repeat(0)"), ""); |
|
|
|
|
assert_eq!(forward(&mut engine, "(1).repeat(1)"), "1"); |
|
|
|
|
assert_eq!(forward(&mut engine, "(0).repeat(0)"), "\"\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "(1).repeat(1)"), "\"1\""); |
|
|
|
|
|
|
|
|
|
assert_eq!(forward(&mut engine, "(1).repeat(5)"), "11111"); |
|
|
|
|
assert_eq!(forward(&mut engine, "(12).repeat(3)"), "121212"); |
|
|
|
|
assert_eq!(forward(&mut engine, "(1).repeat(5)"), "\"11111\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "(12).repeat(3)"), "\"121212\""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#[test] |
|
|
|
@ -215,7 +215,7 @@ fn replace() {
|
|
|
|
|
|
|
|
|
|
forward(&mut engine, init); |
|
|
|
|
|
|
|
|
|
assert_eq!(forward(&mut engine, "a"), "2bc"); |
|
|
|
|
assert_eq!(forward(&mut engine, "a"), "\"2bc\""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#[test] |
|
|
|
@ -238,11 +238,11 @@ fn replace_with_function() {
|
|
|
|
|
|
|
|
|
|
forward(&mut engine, init); |
|
|
|
|
|
|
|
|
|
assert_eq!(forward(&mut engine, "a"), "ecmascript is awesome!"); |
|
|
|
|
assert_eq!(forward(&mut engine, "a"), "\"ecmascript is awesome!\""); |
|
|
|
|
|
|
|
|
|
assert_eq!(forward(&mut engine, "p1"), "o"); |
|
|
|
|
assert_eq!(forward(&mut engine, "p2"), "o"); |
|
|
|
|
assert_eq!(forward(&mut engine, "p3"), "l"); |
|
|
|
|
assert_eq!(forward(&mut engine, "p1"), "\"o\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "p2"), "\"o\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "p3"), "\"l\""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#[test] |
|
|
|
@ -311,10 +311,10 @@ fn match_all() {
|
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
assert_eq!(forward(&mut engine, "groupMatches.length"), "2"); |
|
|
|
|
assert_eq!(forward(&mut engine, "groupMatches[0][1]"), "e"); |
|
|
|
|
assert_eq!(forward(&mut engine, "groupMatches[0][2]"), "st1"); |
|
|
|
|
assert_eq!(forward(&mut engine, "groupMatches[0][3]"), "1"); |
|
|
|
|
assert_eq!(forward(&mut engine, "groupMatches[1][3]"), "2"); |
|
|
|
|
assert_eq!(forward(&mut engine, "groupMatches[0][1]"), "\"e\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "groupMatches[0][2]"), "\"st1\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "groupMatches[0][3]"), "\"1\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "groupMatches[1][3]"), "\"2\""); |
|
|
|
|
|
|
|
|
|
assert_eq!( |
|
|
|
|
forward( |
|
|
|
@ -332,9 +332,9 @@ fn match_all() {
|
|
|
|
|
|
|
|
|
|
forward(&mut engine, init); |
|
|
|
|
|
|
|
|
|
assert_eq!(forward(&mut engine, "matches[0][0]"), "football"); |
|
|
|
|
assert_eq!(forward(&mut engine, "matches[0][0]"), "\"football\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "matches[0].index"), "6"); |
|
|
|
|
assert_eq!(forward(&mut engine, "matches[1][0]"), "foosball"); |
|
|
|
|
assert_eq!(forward(&mut engine, "matches[1][0]"), "\"foosball\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "matches[1].index"), "16"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -352,60 +352,66 @@ fn test_match() {
|
|
|
|
|
|
|
|
|
|
forward(&mut engine, init); |
|
|
|
|
|
|
|
|
|
assert_eq!(forward(&mut engine, "result1[0]"), "Quick Brown Fox Jumps"); |
|
|
|
|
assert_eq!(forward(&mut engine, "result1[1]"), "Brown"); |
|
|
|
|
assert_eq!(forward(&mut engine, "result1[2]"), "Jumps"); |
|
|
|
|
assert_eq!( |
|
|
|
|
forward(&mut engine, "result1[0]"), |
|
|
|
|
"\"Quick Brown Fox Jumps\"" |
|
|
|
|
); |
|
|
|
|
assert_eq!(forward(&mut engine, "result1[1]"), "\"Brown\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "result1[2]"), "\"Jumps\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "result1.index"), "4"); |
|
|
|
|
assert_eq!( |
|
|
|
|
forward(&mut engine, "result1.input"), |
|
|
|
|
"The Quick Brown Fox Jumps Over The Lazy Dog" |
|
|
|
|
"\"The Quick Brown Fox Jumps Over The Lazy Dog\"" |
|
|
|
|
); |
|
|
|
|
|
|
|
|
|
assert_eq!(forward(&mut engine, "result2[0]"), "T"); |
|
|
|
|
assert_eq!(forward(&mut engine, "result2[1]"), "Q"); |
|
|
|
|
assert_eq!(forward(&mut engine, "result2[2]"), "B"); |
|
|
|
|
assert_eq!(forward(&mut engine, "result2[3]"), "F"); |
|
|
|
|
assert_eq!(forward(&mut engine, "result2[4]"), "J"); |
|
|
|
|
assert_eq!(forward(&mut engine, "result2[5]"), "O"); |
|
|
|
|
assert_eq!(forward(&mut engine, "result2[6]"), "T"); |
|
|
|
|
assert_eq!(forward(&mut engine, "result2[7]"), "L"); |
|
|
|
|
assert_eq!(forward(&mut engine, "result2[8]"), "D"); |
|
|
|
|
|
|
|
|
|
assert_eq!(forward(&mut engine, "result3[0]"), "T"); |
|
|
|
|
assert_eq!(forward(&mut engine, "result2[0]"), "\"T\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "result2[1]"), "\"Q\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "result2[2]"), "\"B\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "result2[3]"), "\"F\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "result2[4]"), "\"J\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "result2[5]"), "\"O\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "result2[6]"), "\"T\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "result2[7]"), "\"L\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "result2[8]"), "\"D\""); |
|
|
|
|
|
|
|
|
|
assert_eq!(forward(&mut engine, "result3[0]"), "\"T\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "result3.index"), "0"); |
|
|
|
|
assert_eq!( |
|
|
|
|
forward(&mut engine, "result3.input"), |
|
|
|
|
"The Quick Brown Fox Jumps Over The Lazy Dog" |
|
|
|
|
"\"The Quick Brown Fox Jumps Over The Lazy Dog\"" |
|
|
|
|
); |
|
|
|
|
assert_eq!(forward(&mut engine, "result4[0]"), "B"); |
|
|
|
|
assert_eq!(forward(&mut engine, "result4[0]"), "\"B\""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#[test] |
|
|
|
|
fn trim() { |
|
|
|
|
let realm = Realm::create(); |
|
|
|
|
let mut engine = Interpreter::new(realm); |
|
|
|
|
assert_eq!(forward(&mut engine, "'Hello'.trim()"), "Hello"); |
|
|
|
|
assert_eq!(forward(&mut engine, "' \nHello'.trim()"), "Hello"); |
|
|
|
|
assert_eq!(forward(&mut engine, "'Hello \n\r'.trim()"), "Hello"); |
|
|
|
|
assert_eq!(forward(&mut engine, "' Hello '.trim()"), "Hello"); |
|
|
|
|
assert_eq!(forward(&mut engine, "'Hello'.trim()"), "\"Hello\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "' \nHello'.trim()"), "\"Hello\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "'Hello \n\r'.trim()"), "\"Hello\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "' Hello '.trim()"), "\"Hello\""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#[test] |
|
|
|
|
fn trim_start() { |
|
|
|
|
let realm = Realm::create(); |
|
|
|
|
let mut engine = Interpreter::new(realm); |
|
|
|
|
assert_eq!(forward(&mut engine, "'Hello'.trimStart()"), "Hello"); |
|
|
|
|
assert_eq!(forward(&mut engine, "' \nHello'.trimStart()"), "Hello"); |
|
|
|
|
assert_eq!(forward(&mut engine, "'Hello \n'.trimStart()"), "Hello \n"); |
|
|
|
|
assert_eq!(forward(&mut engine, "' Hello '.trimStart()"), "Hello "); |
|
|
|
|
assert_eq!(forward(&mut engine, "'Hello'.trimStart()"), "\"Hello\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "' \nHello'.trimStart()"), "\"Hello\""); |
|
|
|
|
assert_eq!( |
|
|
|
|
forward(&mut engine, "'Hello \n'.trimStart()"), |
|
|
|
|
"\"Hello \n\"" |
|
|
|
|
); |
|
|
|
|
assert_eq!(forward(&mut engine, "' Hello '.trimStart()"), "\"Hello \""); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#[test] |
|
|
|
|
fn trim_end() { |
|
|
|
|
let realm = Realm::create(); |
|
|
|
|
let mut engine = Interpreter::new(realm); |
|
|
|
|
assert_eq!(forward(&mut engine, "'Hello'.trimEnd()"), "Hello"); |
|
|
|
|
assert_eq!(forward(&mut engine, "' \nHello'.trimEnd()"), " \nHello"); |
|
|
|
|
assert_eq!(forward(&mut engine, "'Hello \n'.trimEnd()"), "Hello"); |
|
|
|
|
assert_eq!(forward(&mut engine, "' Hello '.trimEnd()"), " Hello"); |
|
|
|
|
assert_eq!(forward(&mut engine, "'Hello'.trimEnd()"), "\"Hello\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "' \nHello'.trimEnd()"), "\" \nHello\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "'Hello \n'.trimEnd()"), "\"Hello\""); |
|
|
|
|
assert_eq!(forward(&mut engine, "' Hello '.trimEnd()"), "\" Hello\""); |
|
|
|
|
} |
|
|
|
|